Choosing Appropriate Microcontroller for Quadcopter

Hi everyone,

I recently decided to try building a quadcopter from scratch. I'm currently in the planning phase and am having trouble choosing a microcontroller. My setup will consist of a 9DOF IMU (accel,gyro,mag), four ESCs for the motors, a standard transmitter/receiver setup and eventually (hopefully) a GPS module, etc.

What I want to know is if the arudino uno is fast enough to deal with all this info and if it has enough memory for the software. It needs to process all the info from the IMU, the GPS and the receiver, and relay instructions back to the ESCs. If it's not fast enough, then the quadcopter won't be very responsive or stable. Also, I would like to be able to program more advanced algorithms eventually (like making it somewhat autonomous), so it needs to have enough memory. I'm not really aware of how big these programs can get.

Please let me know if you need any more info.


Yes, we need you to not have mulitple topics for the same question 8)
If I can find the other one I will merge them.

I'd go with something between the 32K offered by the Uno and the 256K offered by a Mega - a 1284P. 128K of memory, and more importantly 16K of SRAM, twice that of a Mega. 32 IO pins, dual hardware serial ports. And you can use a 20 MHz crystal if you want a little more performance, lots of topics here on making the software changes for that (up from 16MHz).

You might want to have a look at the Aeroquad forum.
It's an open source quadcopter. You can take as much as you want of it. If you are building from complete scratch, you can have a look at general principles and advice. If you are not strong on programming, you can use their examples, or even the complete package.

The Arduino of choice for a full featured 'quad (alt hold, heading hold, position hold, etc.) is the Atmega 2650, but smaller Ardinos have been used in machines with less capability.

You can, of course, use anything in between or even go to the ARM-bases Arduino Due, but with much less support from the forum.

Their advice on an ARM-based quad is to go with the 168MHz AeroQuad 32 board, which is not Arduino Compatible.