variable pitch quad

My question is the APM 2.0 and APM planner capable of controlling my bird? Four servos control the pitch of each rotor and the esc will run in the constant RPM mode.

Right now, I have the servos connected respectively to outputs 1-4 and by moving the throttle channel to mid point my blades move to zero pitch. The servos then respond correctly to any motion of the APM. All fine for testing but not correct.

Problem one, when the throttle channel is moved below a certain point, the servos jump to full negative pitch. I assume this is for "motor off"

Problem two, what to do with the esc leads. My power comes from the BEC so kinda need it connected to the output buss. What I want, is to toggle a channel and command the APM to raise the motor RPM to operating speed slowly and hold it.

Problem three, at least for the near future, I doubt I will ever want more than one or two degree of negative pitch and then, only in roll, pitch or collective. For yaw they must stop at zero.

See my profile for photos.

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

Join diydrones

Email me when people reply –


  • Dan, I just took a first crack at creating this code. You can see it in my clone here:

    This is not finished.  Do not attempt to fly it.  Bad things will happen.

    If you have a look at the changes I'm making, you might start to see how the code works.  If you compiled this and uploaded, you should see in MP a bunch of new parameters named VPQ_<blahblah>.  These are going to be related to the servos.

  • Ken, what do you want to do for motor RPM speed control?  Are you going to use an ESC with a governor?  Or do you just want to run it wide open?  Or you can run a collective-pitch-to-throttle curve.

  • Hi! Very nice project!

    I don't know if it helps but there is a multiwii version for quads with variable pitch.

    Perhaps there is some idea in the code that can be used.

    So long

    Kraut Rob

  • Dan, so do you want to fly this as an X or a + ?

  • This is a great idea and I already had a simple details worked out.

    You can basically use the the stock code for quad.

    The first major change required is to change update rate coming out of the APM to a value the servos can handle (we go really fast for the ESCs). That's easy enough and well documented. Here is a thread semi related where he complained a servo plugged into the APM did not respond on the normal ESC output but we expect that.

    another thread, first comment

    More clues on how to adjust here:

    This might be the right thread-hopefully a developer chimes in:

    Next, mechanical setup:

    Adjust each of the servos so that when sent the low throttle position, they move the pitch system to nearly neutral with very little pitch (tip, a servo adjuster/tester pwm device makes this easy). Then ensure max PWM then adjusts the linkage to the maximum reasonable pitch. Again this mechanical setup will require that you adjust the pivot points on the linkage arms mechanically to give you the correct throw, rather than doing it in software. I know that counter intuitive but I'm of the thought, leave the code alone, this way as improvements come out, you don't have to recode a separate branch and maintain it. Make the machine match the code.

    You could govern the central motor if you want at the ESC but don't think it is necesary. Just arm the motor to spin up when the quad arms from the radio (Hint, I think the LED code would make this easy) . Or alternatively somehow mix with a device to determine the average PWM of all 4 channels and drive the motor if you wanted to add variable RPM.

    Or, I guess being creative, you could mix traditional heli and multirotor, such that the stabilization code comes from mutlirotor code but the throttle curve (much like traditional heli) is mixed in. This seems to be very complex at best and unless you just want to program for days and nights, not the best aproach IMHO.


    I've been really curious to try this as it would be trivial to buy 4 belt driven tailrotors with tubes, turn them vertical and bigger blades and drive the whole setup with a single motor. Again, I think this would work on basically stock code. No need to re-invent the wheel. Some shopping on Hobby King for cheap tail rotors looks like this is not an unreasonable aproach.


  • 3692499017?profile=original

  • T3

    A VVP copter is not very easy.  First you need four ESCs that have good governors, hard to find.  Or your can use one motor to drive all motors.  If you have all props turning at the same RPM than you can adjust the servos so 1000 micro seconds gives you neutral pitch and connect the servos to the motor control PWMs.  An extra channel with a potentiometer can be use to control motor(s).  This type of setup has worked  for some.

    There is a couple of threads in the OpenPilot forum you could look at.

    good luck.

  • Yes, R_Lefebvre, I do.

    I chose the APM platform because I am very familiar with the ATMEL/Arduino platform. I have another project I developed hardware and software to control a green house robot. It is in production now. I am currently using arduino-0022 and code in C/C++. I have looked a bit at the APM code and it looks to be well documented but have not got into the general flow of the code.

    Right now my goal it to get my quad in the air and see. IF it flies, how much it will lift and how maneuverable it is. It may need a diet or bigger rotors. So far, everything has been mathematics and they say two to one thrust ratio. We shall see. It has been designed such that is it easy to increase rotor diameter for more thrust if needed. Right now, each rotor is five blades and about 10 inches in diameter and the quad is 26" in diameter. Current flying weight is 2450 grams. Rotors turn at over 6000rpm.


  • Dan, I think you're going to need a custom program to get this to work.  What you need will be a blend of TradHeli and Quad code.  Do you know how to compile and upload manually?  I'm interested in helping you with this project if you are.

    I'd have to create a new frame type like:

    #define FRAME_CONFIG VP_QUAD and you'd upload that.

  • Hello. For problem 2, just know that you can "manage" motors rpms without using the APM

    just only with your transmitter and "all the motors" leaded to the same "signal".

    In a heli model on your transmitter you can use throttle curves ...

    In a variable pitch quad, all the motors should run at the same rpm. Only pitch varies on each prop.

    Problem 3 : Why do you use "variable pitch" if you don't want to use negative ?

    Not sure the complexity of variable pitch props is really "adequate" in this case ...

    The only thing it will help is the landing, that can be lot smoother with variable pitch props.

    And for the Yaw, the APM wil add/remove pitch to do the same function with normal props.

    Everything will just work the same with the "torque" generated ...

    And for problem One, if you separate throttle and pitch, the full negative pitch at start is normal.

    Your stick is full negative so the pitch is full negative too.

    It wont' cause any problem if your throttle is at zero at this point.

    Throttle will graduately increase with the pitch depending on your throttle curves.

    Then in flight, you can fly inverted if run a throttle curve with non zero value at full negative ( flat curve ).

    In my opinion, the only real advantage of variable pitch, is to fly inverted

    or do some "tricks" in flight, like flips or other 3D heli movements.


This reply was deleted.