My first Quadcopter

Finished Quadcopter completely made out of carbon and aluminium parts.
I build my first Quadcopter as a matura thesis at the gymnasium in Wattwil. I had next to no experience in robotics and micro-controller but nevertheless very interested in both subjects. My goal was to build a Quadcopter by myself including hard- and software. I found it quite hard to get a micro-controller doing what i want. Even getting an LED to blink took me several weeks. More and more i got acquainted with the programming language C++ and the operating system Windows CE 5.0/6.0. At the end of my thesis the Quadcopter was fixated in a cardanic gimbal and the control algorithm was good enough to withstand minor physical disruptions and interference. I continued the Quadcopter-Project at SJF (Schweizer Jugend forscht) and got the predicate "very good". After the matura final exams i started working at Acutronic where i was developing test software for motion simulators in LabVIEW. I used that knowledge to implement in my Quadcopter-Project and created a GUI which allows you to control the Quadcopter with the Computer.

Matura Thesis:    Maturaarbeit Quadrocopter
SJF Thesis:         SJF Quadrocopter
SJF Abstract:      SJF Ausschreibung
Pressebericht:     Flieg Quadrocopter - Bis zum Mond?, (KSW)

Controller

In the following chapter I describe the hardware used on the newest model with the new micro-controller. I tried different configurations and the current one is the best until now. The brain of the Quadcopter is a Colibri Tegra 2 Module from the company Toradex. It is based on a NVIDIA Tegra 2 ARM Cortex A9 Dual Core processor with 1GHz and 512 MB Flash memory. It runs Windows Embedded Compact 7.0 but also the older versions of Win CE 5 and 6. As carrier board i use the Iris board. It s quite small (10x7cm) and has most of the connectors needed. Here a small list of the connections available with this board:

  • Ethernet 10/100 Mbit
  • Serial Interface (3x RS232)
  • I2C-Bus, 4x PWMs, 8x GPIO's and SPI on header
  • DVI Connedtor
  • Audio Line-In/-Out, Mic
  • LCD Interface RGB and LVDS
Here is a Picture showing the complete setup of the electronics:
Quadrocopter brain with Toradex Iris board, USB-Hub, W-LAN connection, status LEDs and 3-Axis Gyroscope on top.

On the left is a header with the 4x PWM and I2C connectors. I built a little adapter board which carries some LEDs, a gyroscope and the motor controllers.
Toradex Iris Board with Tegra T2 Colibri Module
The white box in the background is a digital multimeter and oscilloscope. I used it to measure the PWM signals to ensure they are working correctly and have the correct pulse width as well as period. This was in the first version of the Quadcopter quite a big issue and i had to build another adapter module which reduces the frequency of the PWM signal for every motor by the factor 8. Servos and RC motor controllers normally use a PWM frequency of 50 Hz and a pulse width of 1-2ms.

In this case i had to go to a higher frequency in order to get the maximum resolution of the signal. The resolution of one period is constant. If i decrease the period but stay with the same pulse with i get a higher resolution for the pulse only. Right now i have a period time of about 5 milliseconds and the pulse is about 1-2 ms. Unfortunately my motor controllers don't work with a higher frequency than 200 Hz.

Here is an overview of the built-in electronics with the faster Colibri T20 module. The old one was a PXA 300 with the Tellurium board which was replaced here with the Iris board:
Not all sensors were implemented unfortunately. The GPS System was never tested at all. There were always problems with the control and stabilization of the systems so I never got to the point implementing it.

Gyroscope

3-Axis Gyroscope on breakout board

To keep the Quadcopter in the air there are some sensors needed which can measure the current position. Unfortunately it is quite hard to measure the position accurately and things like GPS can only be used outdoor and are very slow and inaccurate. Therefore the quadrocopter has some other sensor he uses if he gets tilted which are so fast that the position doesn't change that much. This sensor is called gyroscope. It measures the change of angle and sends it to the microcontroller via I2C bus. What you see in the picture below is a 3-Axis Gyroscope with temperature sensor. It is very small. :)

I had some trouble to get this sensor to work since i had no idea what I2C bus was. After some trying and reading the manual of the sensor and the microcontroller a hundred times i slowly got the hang of it. :-)
I found some example code for I2C on the Toradex website and was able to implement it.
The Gyro requires 2 wires for I2C communication and 2 wires are needed to supply power.

I bought the gyroscope at Sparkfun which is an electronic shop in America. Its quite cheap and already mounted on a breakout board.

Accelerometer

USB-Accelerometer from the Toradex Oak sensor family.
This sensor measures accelerations in all 3 axis. It can be used to measure the current angle the Quadcopter has against the horizon. This is possible because we have the constant acceleration caused by gravity. If the sensor is tilted the acceleration in the z-Axis will be reduced but for example the one in the y-axis rises a little bit. This data can be used to calculate the current angle the sensor has.

The black box on the right is the actual sensor. The chip in the middle drives the USB connection and already filters the data in a basic fashion and calculates the current angles. Since this sensor needs connection via USB i had to shorten a corresponding cable down in order to save weight. :)

Frame

At first I build a cardanic gimbal system to develop the control algorithms. I used aluminium rods to build two squares and attached the rotors to them. A camera tripod was used to hold the contraption. The final system looked like the following:

The first complete frame I built was very simple. I used two aluminium pipes and screwed them together in the middle. Additional holes were drilled at the end of each pipe to mount the motors. It looked like this:

Adding all the electronics to it this was the final product:
I did a lot of tests with it and I got it hovering in the air. It could not hold position and drifted away fairly easily. The frame was quite weak in some positions and the motor mounts began to bend. Also the landing gear wasn't very good so I decided to buy a frame from stock and customize some parts and plates to fit the Toradex flight controller on it.

As you can see all parts are made out of carbon and aluminium. The CFK parts are drilled out with a CNC machine. I bought the basic frame from Hobbyking and added my own CFK mounting plate.
The first mounting plate has a hole in the middle to put cables through. on the edges there are four nylon spacers which provide enough distance to the bottom side of the Toradex Iris module.

Upon the module there are larger spacers which will hold the second mounting plate. The processor itself is quite powerful but for this application there is no active cooling needed. The power can be provided by a transformation during testing and also by the LiPo accumulator during flight.

The second carbon plate is mounted on top of the Colibri Module. The Accelerometer is attached using two sided adhesive tape and some foam between to reduce vibration. The sensor is also secured with two cable ties. The three big spacers in the middle are used to tighten the USB-Hub to the Quadrocopter and the little ones are to mount the adapter platine.

In the end the adapter platine and USB-Hub are connected. Then the motor controllers can be plugged in on the adapter board as well as the gyroscope and the status LEDs. The hub is connected to the accelerometer, the WIFI adapter and a wireless mouse / keyboard to control the Quadcopter during flight. Now the only thing left is to attach the battery and write some useful software.






Programming


As a safety measurement the propellers are removed during basic programming. :-)

The Quadcopter is programed by an external computer which is NOT shown in the picture above. There you only see the Quadcopters itself connected to a TFT display. The Quadcopter itself is connected to the computer via USB and acts as a slave device. The program is written in C or C++ and compiled and sent to the ARM microcontroller. I am uing Visual Studio 2005 which works perfectly with Windows 7.

As I mentioned the screen you see is the Quadcopter itself. It runs Windows Embedded Compact 7 basically works like a normal computer. It is very nice to have such an easy accessible file system. I can add and remove files over the USB connection like i would with an USB-Stick. In addition I can simply plug in a mass storage device or and SD-Card to the Quadcopter itself. Therefore I can for example put all my configuration variables in a text file and easily switch between versions and change them WITHOUT A SECOND COMPUTER or recompiling the program.


LabVIEW GUI

To control the quadcopter I programmed an Interface with LabVIEW. It runs on a local pc and connects to the quadcopter using UDP over WIFI. One is able to read our different parameters as well as any sensor data using data plots. Different settings of the control loop can be made as well. In addition there is a live 3D model depicting the current orientation of the quad.
An example how the code looks directly behind the main window:


Thats it for this page, there is much more but this is an old project I started in my last year of the gymnasium and worked on during the following year after matura. Please check out the newer quadcopter of which i made many videos and is much more awesome. :D