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: 37693

Comment by Ramsundhar on August 16, 2010 at 7:48am
Your Project is Awesome...Can ArduIMU interfaced with Ardu Autopilot????
Comment by zoobi doobi on October 29, 2010 at 10:41pm
hey dude....your the only one who has posted comment on this blog...
can u please give julio's personal email id o contact no;. its urgent
Comment by Dzalwawlam on April 7, 2011 at 9:23pm
Hi Jose Julio..i'm a newbie i'm doing this quadcopter with 1.15v code with some modification..but there is some problem..when i throttle up, the roll angle tend to positive side..the higher the throttle, the roll angle increase..when i lower the throttle the roll angle tend to zero (center)..i place my quadcopter on a platform for single axis this happened?anyone who can help me?
Comment by Santosh Pingale on April 17, 2011 at 2:54pm
This is good build, What does rotor to rotor distance mean? As it is mentioned somewhere that its 28CM.

@Rana: can you accept my request please..?
Comment by Sebastian Gralla on April 17, 2011 at 3:18pm
it's 64cm on this quad, it's the distance between the most furthest motors
Comment by Santosh Pingale on April 27, 2011 at 8:38am
Oh thanks sebastian.

Does this build use Kalman Filter for Gyro and accelerometer data?
Comment by Peter Seddon on April 27, 2011 at 9:17am
No it uses DCM.

Comment by Santosh Pingale on April 27, 2011 at 10:34am
Thanks Peter,

How does DCM work, any information in short, I have searched using google but mathematical terms are really tedious to work on!
and I just downloaded the code, going to have a brief look at it.
Comment by MANGIRDAS on May 1, 2011 at 9:51am

Hey all. Maybe somebody can explain to me, how Jose connect only one BEC power wire (red one) to power, and other 3 use only ground (black) and white (pwm control)? so it means he power only one bec? or bec take power from battery directly to power logical circuit? 


Comment by Peter Seddon on May 1, 2011 at 9:59am
The BEC on an ESC provides power when the ESC is connected to main flight battery which is how the rest of the electronics (IMU etc) are powered. If you allow the BEC on each of the ESC's to supply power they can 'fight each other' causing problems so three are disconnected (the red lead). The PWM signal is the white lead and that comes from the IMU.

The DCM is complex but this may help



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

Join DIY Drones

© 2019   Created by Chris Anderson.   Powered by

Badges  |  Report an Issue  |  Terms of Service