Some time ago I design and build a development board to play with. It uses an AVR ATMega 8535 microcontroller, that has plenty of cool features.
This board has a buzzer, 4×4 keypad, lcd, two leds, a pressure sensor and a expansion connector. It runs a program that:
- Take samples from the eight ADC channels (625 samples/sec for every channel).
- Send sample data through the serial port.
- Reads key inputs (and do a “beep”).
- Display the analog level from an ADC channel in the LCD. Keys 1 to 8 select the channel.
- Display air pressure and estimated altitude, when press button 16.
It also has a bootloader that allow easy updates (a program that allows send the code trough the serial port without special hardware).
Also time ago, I begin to develop a java program to show the input data in the PC. I left unfinished, and now that I want to test some sensors, I decided to make it usable. Tough not completely finished, now it will be useful.
To test the ADC, the board has a pot that allows swing between 0 and 5 volts, but I wanted to look something more interesting, so build a simple sine function generator around the XR2206 chip.
This chip powers from 10 to 26 to volts (is use 12V), and the output is centered around half that. You can control the signal amplitude and try to lower the signal center (changing resistors values), but that saturates the signal at the lower level. So I took the basic application’s circuit, added some jumpers and a shift stage. Then build and after adjusting the amplitude and shift I get a nice signal between 0.2 and 4.8 volts, ready to feed my AVR board (please note that you shouldn’t use TL072, but a rail to rail opamp rather). That’s how it look:
Due to the fact the serial of most computers is limited to 115200 bps, and that every sample takes two bytes, the max samples I can send per second is 5000, hence 625 per channel. Even low, it’s nevertheless useful for a lot of things.
Future enhancements will include showing two or more channels in the same window and the option of selecting the channels to acquire and so increasing the sampling speed per channel.