Arduino PPM to PWM converter

Hi all!

I'm not sure if this is the correct place to post but can can anyone head me in a direction for a PPM to PWM converter using arduino? maybe share some code?


I don't know of any code to do this but it would be possible using one of the faster boards such as Teensy, Zero, or Due. You would monitor the PPM signal using direct port manipulation. Watch the signal for the beginning of the first channels sync pulse then on the next transition, turn on the PWM pulse and reset it on the next transition of the PPM signal. Keep doing this for the number of channels sent or reset when the idle level lasts for the break time between PPM sequences.

so you dont think that it would be doable with a arduino mini pro?

It can be done but there will be a slight time delay between the PWM output and the PPM transitions. There may also be an error in the time width reproduction of the output vs the original input. If you have a good scope then it's worth a try. Sync on the PPM signal and watch for a delay and jitter on the PWM output.


This post will give you some ideas. I used a Mega in this project but the scheme still applies to the 328P family.

Sorry to mention this but it has the atmega168, what makes the code specific for the different chips, or are there any? is it just the processing speed or something? sorry got off topic :wink: also how much of a latency are you talking about?

The 168 chips may use an 8MHz clock and may aggravate the output quality. It's still worth a try.

Use pins 5, 6, and 7 then use PORTD bits 5, 6, and 7.

In my original post I think I mentioned a delay. With the 168, it may double. A little delay is OK as it's consistent but jitter may be a problem.

Do you know if your RC radio outputs positive or negative logic PPM?

yes it's a 8MHz not sure if it is positive or negetive logic PPM, sorry!

I have found alternate way of doing the task at hand! thanks for all the help!

I have found alternate way of doing the task at hand! thanks for all the help!

Please describe your solution for the benefit of other readers.