Summary of Multichannel USB Analog Sensor using ATMega48 Microcontroller
The author revisits homemade electrophysiology equipment to create an elegant, multi-functional device. This project establishes a foundation for future ECG, EEG, and EGG systems by developing a 5-channel USB analog sensor. The design focuses on minimalism, cost-effectiveness, and cross-platform compatibility using Linux and Windows without special drivers. It utilizes a microcontroller with native Python software for real-time signal visualization, avoiding complex surface-mount soldering by employing standard FTDI cables.
Parts used in the Multichannel USB Analog Sensor:
- ATMega48 Microcontroller
- USB FTDI serial-to-USB cable
- Header pins
- Max232 level converter (initially used)
- Python libraries
Sometimes it’s tempting to re-invent the wheel to make a device function exactly the way you want. I am re-visiting the field of homemade electrophysiology equipment, and although I’ve already published a home made electocardiograph (ECG), I wish to revisit that project and make it much more elegant, while also planning for a pulse oximeter, an electroencephalograph (EEG), and an electrogastrogram (EGG). This project is divided into 3 major components: the low-noise microvoltage amplifier, a digital analog to digital converter with PC connectivity, and software to display and analyze the traces. My first challenge is to create that middle step, a device to read voltage (from 0-5V) and send this data to a computer.
This project demonstrates a simple solution for the frustrating problem of sending data from a microcontroller to a PC with a USB connection. My solution utilizes a USB FTDI serial-to-usb cable, allowing me to simply put header pins on my device which I can plug into providing the microcontroller-computer link. This avoids the need for soldering surface-mount FTDI chips (which gets expensive if you put one in every project). FTDI cables are inexpensive (about $11 shipped on eBay) and I’ve gotten a lot of mileage out of mine and know I will continue to use it for future projects. If you are interested in MCU/PC communication, consider one of these cables as a rapid development prototyping tool. I’m certainly enjoying mine!
It is important to me that my design is minimalistic, inexpensive, and functions natively on Linux and Windows without installing special driver-related software, and can be visualized in real-time using native Python libraries, such that the same code can be executed identically on all operating systems with minimal computer-side configuration. I’d say I succeeded in this effort, and while the project could use some small touches to polish it up, it’s already solid and proven in its usefulness and functionality.
This is my final device. It’s reading voltage on a single pin, sending this data to a computer through a USB connection, and custom software (written entirely in Python, designed to be a cross-platform solution) displays the signal in real time. Although it’s capable of recording and displaying 5 channels at the same time, it’s demonstrated displaying only one. Let’s check-out a video of it in action:
This 5-channel realtime USB analog sensor, coupled with custom cross-platform open-source software, will serve as the foundation for a slew of electrophysiological experiments, but can also be easily expanded to serve as an inexpensive multichannel digital oscilloscope. While more advanced solutions exist, this has the advantage of being minimally complex (consisting of a single microchip), inexpensive, and easy to build.
To the right is my working environment during the development of this project. You can see electronics, my computer, microchips, and coffee, but an intriguingly odd array of immunological posters in the background. I spent a couple weeks camping-out in a molecular biology laboratory here at UF and got a lot of work done, part of which involved diving into electronics again. At the time this photo was taken, I hadn’t worked much at my home workstation. It’s a cool picture, so I’m holding onto it.
Below is a simplified description of the circuit schematic that is employed in this project. Note that there are 6 ADC (analog to digital converter) inputs on the ATMega48 IC, but for whatever reason I ended-up only hard-coding 5 into the software. Eventually I’ll go back and re-declare this project a 6-channel sensor, but since I don’t have six things to measure at the moment I’m fine keeping it the way it is. RST, SCK, MISO, and MOSI are used to program the microcontroller and do not need to be connected to anything for operation. The max232 was initially used as a level converter to allow the micro-controller to communicate with a PC via the serial port. However, shortly after this project was devised an upgrade was used to allow it to connect via USB. Continue reading for details…
For more detail: Multichannel USB Analog Sensor using ATMega48 Microcontroller
- How does the device connect the microcontroller to the PC?
The solution uses a USB FTDI serial-to-USB cable with header pins to provide the link. - Can this project run on both Linux and Windows?
Yes, the design functions natively on both operating systems without installing special driver-related software. - What programming language is used for the custom software?
The software is written entirely in Python to ensure a cross-platform solution. - How many channels can the device display simultaneously?
The device is capable of recording and displaying five channels at the same time. - Why did the author choose FTDI cables over surface-mount chips?
FTDI cables are inexpensive and avoid the need for expensive soldering of surface-mount FTDI chips. - Does the ATMega48 IC have unused inputs?
Yes, the chip has six ADC inputs, but only five were hard-coded into the software initially. - What was the initial purpose of the max232 component?
The max232 was initially used as a level converter to allow communication via the serial port. - Can this device be expanded beyond its current function?
Yes, it can be easily expanded to serve as an inexpensive multichannel digital oscilloscope.


