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.
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 |
* 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.
You may find a more up-to-date version of this tutorial at the d474 blog