Hey everyone! Very long time, no posts! This will hopefully be the beginning of a revival of my blog, since I will probably have more time after finishing high school and starting college. Where am I going? Michigan Tech! Yes, that place in Michigan that’s pretty much as far as you can go before you hit Canada and where summer is about a week long. As you can probably guess, I’m studying electrical engineering. I really like it there and have met some great people that share my obsession for electronics.

Updates. The quadcopter is not done :/. It probably won’t get done either. I was quite close to getting it flying, but it would just sit on the ground and spin in circles. I built another(!) LED cube, this time with blue LEDs. I made a nice set of circuit boards for driving it, with the circuit still copied from the Instructable I followed for the first one.

LED Cube Control Boards
LED Cube Control Boards

Running the test program to verify everything is good.

LED Cube Testing

A (not very good) picture of the cube running the main program.

LED Cube

Well that’s all I have at the moment. I’m working on a big LED installation for our dorm room next semester. All I’ll say right now is it involves ethernet, a teensy 3.1, and 12 meters of Adafruit Neopixel LED strip.

tinyCopter Updates

I finally got the revision C control boards in the mail, along with a Ponoko order for some lasercut acrylic. I won’t go into detail over the new boards, because I did that in a previous post, but the new ones have USB for debugging and uploading new programs from Xmegaduino.That was the goal, at least. I figured that the RTS line on the FT232 would be used as reset, like normal. This is not the case, however. The DTR line is. Oh well. Luckily, I can use my AVRISPmkII clone to upload programs just as easily. There is also one other issue, and that is that I used some 0402 resistors accidentally. You can see in the first picture by the headers that I had to improvise with some 0603’s.

The acrylic plates that I got from Ponoko are great. They don’t serve any real purpose, but I figured that it would look cool and protect the control board from flying debris in the event of a crash. To get the shape exactly the same as the PCB, I exported only the dimension layer in EAGLE, brought it into SolidWorks to clean it up and create a .dxf file that Inkscape would like, and imported into it the template from Ponoko.

I’m also (finally) starting to work on modifying the AeroQuad code for use on my Xmega. For someone new to actual AVR programming (setting up registers and bit-level operations), work is going slowly, but I’m getting there. I hope to be flying in a week or two.

tinyCopter Revision C Main Board

tinyCopter Revision C Main Board

tinyCopter Revision C Main Board

I was also on Adafruit’s weekly show-and-tell. You can watch the video here.

Revision C Updates

Along with any revision comes along changes, and this one is no different. First off, let me start off by saying that I am not abandoning the MPU-6050. It is a excellent chip, but it is not all-powerful. I am moving to a more traditional setup with this revision, with a separate accelerometer, gyroscope, and magnetometer. The accelerometer will be an ADXL345 from Analog Devices, the gyroscope will be the venerable ITG-3200 from InvenSense, and the magnetometer will be the HMC5883 from Honeywell. The reason for the switch to this setup is because of the lack of examples for the MPU-6050, and because I found out about the AeroQuad project.

The Xmega is also getting downsized. I finally came to the conclusion that I don’t need ALL of the pins on an A3, so an A4 will be replacing it. This is both to help reduce the size of the board, and to become compatible with the Akafuino X, an Arduino compatible powered by an Xmega A4. Also, just for kicks, I am going to overclock it. I’ve heard of people going as high as 80MHz with the Xmega, so I might as well give it a try. The specific one that I plan on using is the version with USB capability, but I will just use a FT232 for communication.

There will also be multiple ways to power the board. All options go through an AP1117 3.3V regulator, but now there is more than one way to get there. The main input is through a standard JST connector. The secondary input comes from the BEC circuit on one of the motor ESC’s. The third option isn’t useful during flight, but is there anyway, and that is through USB.

So, quite a big turn in the project at this point, but I think these changes will be for the best. I (and many of my friends) want to see this thing fly, and fly well. Development will continue on Rev B, as I want to get that MPU-6050 up in the air.

This thing is looking to be quite a dense bugger.

tinyCopter Updates

Whoops! This was supposed to be posted almost a week ago! Ah well…

So, time for some updates on tinyCopter. I finally ordered propellers! The ones I got are GWS 3-blade 7×3.5 in both normal and reverse rotation. I ordered them from RC Dude Hobbies, and they shipped all the way from Nevada to Michigan in just 2 days! And that was standard shipping! I am really happy with their service, and will order from them in the future.

Once I got the props installed on the motors, I fired one up, using my Arduino to generate the servo signals. I had the copter in my vice, so I loosened it up and upped the throttle. The end started to pull upward, indicating that with all four motors going, there will be plenty of lift.

tinyCopter - Propellers

You can also see in the picture a purple PCB next to the battery. That is a 2 cell LiPo charger based on the LT3652 from Linear. I have it set to the full 2 amp charging current it supports, and my 1300mAH battery says it is rated for a 5C charging current – which seems quite high if you ask me – so I should be good to go there. Still, I might charge it outside the first couple of times, just to be extra safe. You can find the files for it up on GitHub.

Revision C Design

I’ve started to work on revision C of the tinyCopter control board. There are a couple changes that I’m making, so I’ll go over those.

First, I moved the GPS module out from under the xmega. This way I shouldn’t have to deal with interference issues. Since I had trouble with my on-board power supply, I replaced the TPS61200 boost converter with an AP1117 3.3V linear regulator. I also added two LED’s to be used for status indicators. I’m also shrinking the main part of the board to reduce weight a little.

Re-routing the board for revision C. The board shape is also different.

tinyCopter is ALIVE! (sorta)

Progress! This is exciting. After struggling with a pesky compiler issue, I managed to get an LED blinking on my tinyCopter control board. Yes, I managed to get a 32MHz microcontroller with 256K of flash and 16K of RAM to blink an LED. Good use of resources there folks.

Anyway, the issue that I have been having – and it is still there, trust me – is in the creation of a custom board definition for Xmegaduino for my specific setup. Xmegaduino comes with a couple of options for boards, but all of them use the xmega A1. I have a xmega A3. I didn’t think that there would be any issues because the devices in the A series all have the same basic peripherals, just different pin-counts. The problem, however would soon show up.

I got the board definition finished and just copied the pins_arduino header file from a Sparkfun variant just to see if my variant would compile. Cue the obscure compile error! I looked at the error and it said ‘TCF1’ undeclared. What?! The blink sketch I tried compiled just fine for the Sparkfun board, why won’t it work for mine?!  I went back and took a look at the only thing that I changed in my board defintion from the Sparkfun one. It was the MCU type, obviously. I had changed it to atxmega256a3, because that is the device that I am using. When I changed it back to atxmega128a1, which is what the Sparkfun board has, the code compiled perfectly. Then I went digging through the avrdude header files for various devices and found the one for my xmega a3. I searched ‘TCF1’ and it was RIGHT THERE! I don’t know what the issue is, so if anyone else does, please let me know.

You probably read that and though that I never got anything to work. The issue is still there,  so what I did was set the board in Xmegaduino to the Sparkfun one, found the compiled .hex file, and burned it to my chip using AVR Studio. It’s a pain in the butt, but if I can’t get the ‘TCF1’ undeclared issue sorted out, this will have to do.

The point of this post is to say that now I can work on the code for my quadcopter.

Updates and Tennis Ball Mortar

Now that school is out, I will have more time to work on my projects. First off, I got a new AVR programmer so now I can get to work on the quadcopter control board. I also started putting together the frame. I started over on the 74C922 emulator because I was having trouble with my previous code. The code for the power supply is slowly getting worked on, but I think I may re-do some parts of it because they aren’t as efficient as I would like. So far on that I can: use the display, set the output voltage and current with the DAC, read the drawn current and output voltage with the ADC, read the button inputs, and read the encoders. To do: Make the voltage output match the read voltage from ADC and make a simple menu system for controlling the supply.

On a completely unrelated note, my friend and I had some fun with my tennis ball mortar. Check it out below!