Table of Contents

Choosing an AVR Microcontroller for Data Acquisition

Arduino is a wonderful platform for designers, artists and anybody who doesn't want to spend hours picking out chips and learning the AVR toolchain. But for tasks that require high-speed data acquisition, the Arduino has a fatal flaw: no built-in USB means that funneling data to a PC is sub-optimal. The Arduino uses an FTDI chip to do serial to USB conversion, which doesn't allow you you to take full advantage of USB speed.

The new Arduino UNO uses the ATmega8u2 for serial to USB conversion, but it's unclear whether there are hidden bottlenecks according to posts on the Arduino forum. Moreover, the Arduino is quite large and it's smaller alternatives, such as the Arduino Pro Mini and the Arduino Nano are still using the FTDI approach.

AVR offers a number of ATmega chips with A/D converters + built-in USB capability that can give you better data throughput. This page collects notes on how to find and use these chips.

ATmega Chips with A/D + USB Support

Atmel offers a range of chips with built-in USB support, but not all of them have A/D converters. The chips in the table below have either 8 or 12 10-bit A/D converts each.

Chip A/D PWM Flash RTC IO Pins
AT90USB1286 8 9 128 Yes 48
AT90USB1287 8 9 128 Yes 48
AT90USB646 8 9 64 Yes 48
AT90USB647 8 9 64 Yes 48
ATmega16U4 12 8 16 No 26
ATmega32U4 12 8 32 No 26
Packages: TQFP/VQFN 64/44
USB: LS/FS Device (+OTG)
Fmax: 16MHz
Vcc: 2.7V-5.5V

Breakout Boards

* The Teensy 2.0 board from PJRC provides a breakout for the ATmega32u4 along with a bootloader, lots of documentation, example code and support for Arduino via "teensyduino". Thanks to the “halfkay” bootloader, the Teensy can be programmed over USB.

Libraries

References on A/D Conversion

You may find a more up-to-date version of this tutorial at the d474 blog