Hey guys,

First time posting something here! Thanks in advance for any help!

Background: I'm working on a senior design project to create a motion sensing board that will act as a controller for a quadcopter. So when the board tilts, the quadcopter tilts in that same direction.

My choice of uC with autopilot software on it is going to be the PX4 I believe.

The PX4 says it expects some CPPM signal from the receiver. Because I won't be using a typical receiver, I will have some uC onboard the quadcopter (arduino probably) that will take the data from my own receiver and translate it into CPPM for the PX4.

My question: What does the PX4 believe the CPPM to be? Does it think that the CPPM signal is the power that should be sent to the motors? Or does it believe that signal to be sort of like a servo position...i.e. the qaudcopter should be tilted sideways if two of the PPM's are larger that the other two?

Thanks again for any assistance,


Views: 595

Replies to This Discussion

CPPM represents the position of the control sticks and switches on the users RC transmitter.

you don't even need to do that, It's not easy to do the timings for PPM.  You can just send the MAVLINK commands to the serial port on the Pixhawk. For APM you can use RC_OVERIDE. for PX4 you should ask them which MAVLink control messages they support

see https://gitter.im/PX4/Firmware to chat with them

Thanks for the replies so far guys. On my lunch break right now for work, later this evening though I'll check out that link Bill.

I've looked into the MAVLINK commands a little bit and it seems pretty difficult.

Out of curiosity, why do you think it would be difficult to do the timings for the ppm? I'm pretty well versed in programming, and this seems like a simple bit-banging practice.


There's a c header library you can include to handle the MAVLink protocol. It's pretty straight forward. See mavlink.org

For PPM you need to send a micro second accurate pulses in a 20ms frame. You can look at the ppm encoder project to example on how to do that. The thing is you can't stop sending the train. And you'll burn your CPU cycles maintaining it. None left for other stuff to do.

If you have the programming skills MAVLINK is easy.


© 2019   Created by Chris Anderson.   Powered by

Badges  |  Report an Issue  |  Terms of Service