Quadcopter Update

As I have done many times in the past, I’ve moved onto the second revision of a project before the first one is ever finished. This time, it’s the quadcopter controller design. I upgraded to an ATXMega256A3 for it’s 32MHz clock speed, 7 USARTs, 16 ADC channels, 2 of which can be used as DACs, and a plethora of other goodies. I decided to go with an XMega because it is pretty much the next step after a plain Mega, and because of the Xmegarduino project. It is pretty much what it sounds like, a port of Arduino for the XMega series of chips.

Also, I changed my sensor selection slightly. I am now going to use the MPU-6050 from InvenSense. This awesome device packs a 3-axis accelerometer and 3-axis gyroscope on the same die, and communicates via I2C. This is great, because the XMega has two I2C ports. I know that one can very easily chain up to 128 devices onto a single bus, but having just one device makes things easier, especially because of the pull-up resistors needed. Sparkfun seems to be the only place to get this chip, and InvenSense has been known to be lax about releasing information, but I (probably) won’t need access to the much bragged-about MotionFusion capabilities.

For power, I plan on using this LiPo battery from Adafruit. I don’t know all that much about batteries, but it seems like this one would work fine. Please let me know otherwise. There is an on-board boost/buck converter for providing a nice, even 3.3 volts to power everything. I am using the TPS61200 from TI because it can accept anywhere from 0.3 to 5.5 volts input and has a maximum current output of 1.2 amps. I have the under voltage lock-out set to 3.05 volts, to prevent the LiPo from going too low.

I will admit, the controller PCB will also make a great general-purpose breakout board for the XMega, but my main goal is to build a quadcopter. Schematics and board files will be posted when they are done.

3 thoughts on “Quadcopter Update

  1. If you want to save yourself some time and headache, Fabio uses the MPU6050 chip for the FreeIMU v4 and he’s already “cracked” the code to getting all the bits working. I’ve made a couple of the FreeIMU’s and they work great (although the tiny little chip is a pain to solder on).

    Having two I2C channel would be nice because if you make the ESC’s using a separate microcontroller, you can run then on the second channel and have a chance of surviving if the sensors being down the other I2C channel.

      • Excellent! Thank you very much! I haven’t actually started on the code yet, but I will add Fabio’s site to my bookmarks. I have also been taking a look at the i2cdevlib and the code for the MPU-6050 here: https://github.com/jrowberg/i2cdevlib .

        As for the ESC’s, are you talking about using a separate microcontroller in order to keep control of the motors if there is a failure of the I2C bus of some sort? That may be a good idea for me to implement, even if requires the extra effort. Wouldn’t want the copter going berserk and slamming into the ceiling if there is interference or something ;).

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s