Is this the quadrotor week? :-)
Hi all, on Christmas holidays I have started my DIY project to construct a cheap (but good performance) quadcopter based on ArduIMU hardware only.

I have used standard props (NO counter rotating) that are easy to get and if we want construct the quad on other size you have no problems finding the right prop. To compensate for torque I mount front and rear motor with a small angle (about 6º, see Photos). I first use this concept on this project ( six years ago!!...

Size: 64cm (motor to motor). We can dissasembly front and rear arms with one screw (easy transport)
Weigth: 850g
4x TowerPro2410-9T+ESC18A+Prop1047 combo 4x$15 = $60
3S2200 Lipo Batt = $13
Aluminium and building materials = $12
ArduIMU = $99
Full: $185

Note how small seems the ArduIMU PCB on this quad! and how clean is this setup. We can construct really tiny quads this way and if we use standard props we have a wide range of motors and props to choose...

The first test I did on this project was the vibration test of the ArduIMU with motors running and with the new firmware (I use r20) there are no problems with this. Because we have 4 motors running there are more noise on accelerometers (it´s normal) so I added a new low pass filter on the accels and also adjust the gains for drift corrections...

The main loop with IMU code and PID controls for roll, pitch and yaw runs at 70Hz and the PWM outputs for ESC´s have a 125Hz rate. As always, adjust the PID gains is a very important task . D term is really important for a quad and I am using directly the raw gyro readings (bias corrected) to feed the D term in order to make it more responsive.

The most difficult part was the developing of the function to generate the PWM pulses for the ESC´s because we need 4 PWM servo outputs with very good precision (1-2us) and at a high rate (now is 125Hz).
This code generate more than 10,000 interrupts per second (only ADC generates more than 8,800) so in this enviroment is difficult to generate precise pulses.
The solution was to use the Timer2 overflow interrupt and a "trick" based on Timer 1 counter readings to achieve this high precision. I have also one (or two) more standard servo output for future applications (camera stabilization?)
The radio input is done via the ICP pin and interrupts so high precision is achieved (1us). We need to feed a PPM signal (directly from Rx or via the new Jordi´s PPM encoder...)

On the future we can use the magnetometer of ArduIMU, but now the yaw is like having a Heading hold gyro (note that quads have slower yaw response than helis)

This is the first stage on the development process of this project but I have made some tests with good results.

-More tests, outdoor tests...
-Add ArduIMU magnetometer to correct yaw drift
-Add GPS for position control...
-Add Ultrasonic rangefinger for automatic take-off / landing...
-Add camera with stabilization...
-Find time to all this projects... :-)

Here is the code and some notes:
Some link to photos: Photo1,Photo2,Photo3,Photo4

Jose Julio.

Views: 38948

Comment by Simon Wood on January 12, 2010 at 4:59pm
Very nice. I've been looking at the ArduIMU code but haven't quite got my head around it yet.
Comment by Rana on January 12, 2010 at 7:02pm
Thats really nice !
You have to have a magnetic sensor and pressure sensor on board for better flight control.
Here is one such open source Quadrocopter design known as UAVX by Prof. GK Egan;

This has all such sensors as mentioned above with RTL feature; and mine of same design is available here;

Comment by Thomas J Coyle III on January 12, 2010 at 7:03pm

Very elegant design. Simple yet effective. Sort of a slimmed down version of the Aeroquad where you have combined the processor and sensors on one board instead of two.

Comment by Rana on January 12, 2010 at 7:41pm
You have used same propellers and not counter rotating one by adjusting the angle of two motors slightly tilted, this idea is just superb !
Hats off to you for such a simple but great idea implementation as it is really difficult to get counter rotating props.
Comment by Jack Crossfire on January 12, 2010 at 8:57pm
The problem with it was the angles had to be superbly accurate or it would get unbalanced. Any hard landing would throw them off. Unless you had a fully servo gimbaled propeller, it was easier to use square tubing & maxxprod propellers.
Comment by Simon Wood on January 12, 2010 at 9:31pm
could you add a known angle (with a shim or the like under one side) when mounting the motor to a square section, that way there would be no chance of any slipping/rotation on any 'incidents'.


Comment by Ryan Beall on January 12, 2010 at 10:11pm
Awesome work man! I'll take a look at the code for sure!

Comment by Ryan Beall on January 12, 2010 at 10:14pm
Code looks great! I might have to do some testing of this. Alt hold etc.

Comment by Ryan Beall on January 12, 2010 at 10:19pm
You should really think about making an all inclusive board just for this project (with mag etc)
Comment by mook on January 12, 2010 at 10:46pm
Can someone tell me if this would work or not: is it possible to have two of the props rotate the other way (but with props angled reverse) to have a net zero torque about the center?


You need to be a member of DIY Drones to add comments!

Join DIY Drones

© 2020   Created by Chris Anderson.   Powered by

Badges  |  Report an Issue  |  Terms of Service