ArduIMU Quadcopter part II (mini)

Hi all,
I have finished my second quadcopter with ArduIMU. This time is a "mini" version with only 28cm from rotor to rotor and has the new Jordi´s magnetometer integrated!.
This tiny machine is fantastic, with a great stability. Look at the hands-off part of the video inside house!!
Very funny :-) Video:

Motors: 1811 2000Kv 10grams brushless motors
Props: standard 5x3
ESCs : Turnigy 6A
Batt : 2S610 Lipo
Weight (RTF) : 180grams
Again it´s a very cheap and easy setup. Because I use standard propellers I mounted left and right motors with some twist. I´d really love arduIMU flat hardware...

Look at the PPM output Rx, Is this a new 2.4Ghz receiver form DIYDrones?
No, it´s a "lighweight" (4.1grams) mix between Spektrum AR6110 Rx and Jordi´s PPM encoder. This is nice for DIY projects...

The code is improved from the old version. This one has the magnetometer integrated so now we don´t have drift
on yaw axis, better implementation for the D term on the PID controler (more responsive to user inputs), same safety improvements, fast ESCs update rate (166Hz), new PID tunning...

But this history had an interesting lesson for me... The prototype you see here are really the second one, the first one was a dissaster... (flys bad...)
Do you want to know the "small" difference between them? This:

For the first one, I use an U shaped aluminium arms to save some weight. Well this shape is very bad in torsion and generates a lot of vibrations. This vibrations saturate the gyros (our gyros are quite sensible on vibrations because the low internal resonant frecuency). You could see here a graph of the gyro output value vs Throttle and you can see clearly the effect...

I change the arms to the square shape (8x8mm) and problem gone!! Perfect stability... :-) Vibrations are our enemy (Lesson learned)

Here is the new source code: (see notes.txt inside)
Schematic (conections): Photo1 Photo2
Old post (first version) here

New ArduPilot Mega will be a perfect platform for Quad´s also, so stay tuned...


E-mail me when people leave their comments –

You need to be a member of diydrones to add comments!

Join diydrones


  • Jose!
    Are you planning to add GPS later?
  • Sorry, and I is lost.
  • Hello José Julio. Thank you for all.
    My e mail is
    Si sabes español puedes mandarme los email que quieras.

    construi un quadroptero con el código de miniquad y volava pero no era capaz de estabilizarlo y no respondía bien a las ordenens de la radio y al cabo de unos dias 2 motores se fundierón. Ahora tengo 4 motores más potentes pero el ArduIMU lo rompi y viene otro de camino.

    Muchas gracias por vuestra atención. ¿Sois de California?

  • Developer
    You are right Thomas... It´s a good idea, thanks for the explanation.
    Abel, Nice to hear more Spain people here!!
    This is the way I adjusted PID:
    First I use D and I terms = 0. I start increasing P until the quad is unstable (I do this in my hand). Then leave P at about half this value. Then I start increasing D so the quad respond quickly to the movements... If you increase too much D term, the noise in the gyros makes the quad unstable. Again try to find a value that works but it´s stable (again with the quad in my hand). Finaly I use a little amount of I term to "self trimming".
    With this setup I start the first flights and start an iterative process to fine tuning the PID values.

    Hope this helps... If you like I can send you a mail in spanish...
  • hello to all from Spain.
    This is my first post on this blog and web in general.
    I wish somebody would explain to me how the PID is calibrated? for I have built a quadroptero but I can not work well at all.
  • This is a awesome project using few components incredible job Jose... Hey anyway you can modify code for use with three motors like tricopter.. Thanks
  • hola a todos desde España.
    Este es mi primer post en este blog y en web en general.
    Me gustaría que alguien me explicara ¿cómo se calibra los PID? pues he construido un quadroptero pero no consigo que funcione bien del todo. is a premium name - but it could be yours!
  • Admin

    "Dave, Morli, here are some details about the AR6110 and PPM encoding mix.

    First I remove some pins on the AR6110 (this is really optional, to save weight...) I remove most GND and 5V pins (only left one) and also I left the pins for the bind plug. To remove the pins it´s easy if you remove first the small black plastics that join the 3 pins of each channel.
    So you need one GND, one +5V and all the signal pins from the AR6110. In order to solder to the PPM board you need to bend slightly to fit (there are different spacing between channels on AR6110 and PPM encoder).

    Here are some high resolution photos, so I think you could see this better. Photo1 Photo2

    Hope this help


    You really do not have to mess up the AR6110 if you use female headers on the PPM decoder that allow you to mate with the pins on the receiver. Also, there is no misalignment issue between the pins on the receiver and the PPM decoder board. Doing it this way allows you to move the decoder to other receivers if your present receiver fails.

    Just a thought.

  • Developer
    Hi Fouad and Yun
    Good news that you resolve your problem with the radio, it´s strange...
    Yun, yes you need to adjust the throttle range of the ESC´s. This is usually explained on the ESC instructions. This is how I do it: I take one ESC, connect to a Receiver (throttle channel), move the throttle stick to top, then connect the battery to the ESC, (the ESC do some beeps) and then I move the stick to bottom. This programs the throttle range of the ESC. Now repeat the same on the other ESC´s to be sure that all have the same throttle range.
  • Thanks Yun.
    I shifted all receiver channels to PPM encoder mapping by one (RCV ch1 = PPM ch2 ,...)and added one line in the code and it works now. (by the way max number of channels = 8)
    I'm still straggling with the tuning. Although I purchase 5 of the same type motor in one shipment but it seems that they perform different for the same input values. (:
This reply was deleted.