Posted by Chris Anderson on December 11, 2009 at 10:52pm
The best way to read RC signals is PPM, which is a sequential stream where each channel is output in turn on a single wire. But traditionally the only way you can get that is to open up your RC receiver and solder a wire to a special pin. Fortunately the Paparazzi team designed a board that will convert up to 8 channels of regular PWM servo signals to one PPM signal, with no RC hacking required. We've now modified it a bit to work with our failsfe multiplexer and released a version as a DIY Drones product ($24.95).
BTW, the forthcoming ArduPilot Mega will use this technique, as well.
From the product description:"This improved & reduced PPM encoder board, based on a Paparazzi design, plugs into the servo output ports on a R/C receiver and encodes them into a PPM pulse suitable for the paparazzi autopilot and other projects. This allows you to use any R/C equipment with the paparazzi autopilot or read up to 8 servos with a single I/O pin of your uController. Modifications to the R/C receiver are not necessary. Connect the wires from your receivers channels to the PPM and one wire to the PPM in of your system. If you decide to use the tiny board to power the receiver, make sure you put-in a jumper and plug something between the 8th channel and the receiver.
The whole project is based around the ATMEL ATMEGA168/328 AVR processor and all timing is done
within interrupts so accuracy and stability is optimized
It is now also possible to select the PPM waveform shift, negative or positive.
Firmware is free and was created by Hendrix and Moa, with tiny modifications by Jordi Muñoz that allows control an extra failsafe multiplexer.
Well.. I ran into another snag. First of all, I had to reassign the channels on the Futaba xmtter -- at elast temporarily -- to get throttle on channel 3. Now the PPM encoder blinks on power on. But... when I look at the channel output on the quad's controller (it's an MK Flight Ctrl Me), all the channels stay at 2/3 of their range. They respond to remote control by going to their maximum value when I activate their corresponding control, but they will never fall below 2/3. It appears as if the PPM encoder does not issue a signal level proportional to the input, expect in the range 2/3 to full on. Did I miss something when I updated the firmware? (BTW, in answer to your qeustion, no, I did not find the tutorial... I actually read the instructions in the AVR Studio :-))
Quick update... I managed to figure it out. I updated both board with the firmware. One of the boards is on the quad and blinks. I think I still have some inverted channels... but nothing that I can't handle. Thanks a lot for your help.
Also, just to make sure... The 16Mhz version has a crystal on the board which appears as a metallic rectangle between the CPU and the row of servos solder pads... Is that right?
Use AVR ISP II. When you've got one we can point you to a tutorial in how to use it. Alternatively, We'd be happy to do it for you if you return the board.
Ok... So after trying a number of things, I came to the conclusion that I have to reprogram the PPM encoder. I don't have much experience with the Arduino, but I am a software engineer. What would be the easiest solution in terms of an AVR programmer? Again, thanks for the help... It is much appreciated considering that I am a little tired of looking at the finished quad that's just sitting there because it can't see the RC signals :-)
Frederic
About the ppm encoder and receiver compatibility:
It does not matter how the servo pulses are presented at the input as long as they are within the 800 to 2200 microseconds limit (can be changed).
They can come each one at a time, all of them at the same time (PCM), overlapping, in any odd order etc.
The reading of the input pulses is done in parallel so the order is not important.
Chris
Chris,
Thanks a lot for taking the time to illustrate this (especially with a video!)... It confirms what I thought. My LED stays solid even when the transmitter is turned on and the receiver light turns to greeen (there is a status LED on the Futaba FASST receivers). I guess that my next step is to try and flash the board following the instructions posted earlier in this forum. I will keep you posted.
Nicholas: great suggestion... Unfortuantely, the Futaba in question outputs overlapping signals (...well, I think...)
The problem is probably that the wrong firmware is flashed or the fuses are not correctly set.
The ppm encoder can handle servo input at any order, sequential, coming in at any mixed order or all at the same time.
there are two versions the one with out a crystal that runs at 8 Mhz and one with a crystal that runs at 16 mhz
(this gives much better accuracy and jitter free operation) so you need to flash the correct firmware (8 Mhz or the 16 Mhz) and set the clock source fuse.
I suspect that you have the wrong firmware loaded or the fuses are not set correctly.
We have build too many of those for use with the Paparazzi autopilot and all of them work fine with any receiver there is out there ppm, 2.4 ghz, PCM etc.
A steady led means that the cpu is up and running but it does not see valid servo pulses at the input (wrong firmware or fuses).
At startup it scans all inputs connected or not for a valid 800 to 2000 microsecond pulse.
As soon as it detects a pulse the code knows that the receiver is up and running so the it proceeds to detect what channels are actually connected to the ppm encoder board.
Chris
Pulse AS
Pulse AS - automatisert identifikasjon av skjult risiko
Comments
Frederic
It does not matter how the servo pulses are presented at the input as long as they are within the 800 to 2200 microseconds limit (can be changed).
They can come each one at a time, all of them at the same time (PCM), overlapping, in any odd order etc.
The reading of the input pulses is done in parallel so the order is not important.
Chris
Thanks a lot for taking the time to illustrate this (especially with a video!)... It confirms what I thought. My LED stays solid even when the transmitter is turned on and the receiver light turns to greeen (there is a status LED on the Futaba FASST receivers). I guess that my next step is to try and flash the board following the instructions posted earlier in this forum. I will keep you posted.
Nicholas: great suggestion... Unfortuantely, the Futaba in question outputs overlapping signals (...well, I think...)
Frederic
The ppm encoder can handle servo input at any order, sequential, coming in at any mixed order or all at the same time.
there are two versions the one with out a crystal that runs at 8 Mhz and one with a crystal that runs at 16 mhz
(this gives much better accuracy and jitter free operation) so you need to flash the correct firmware (8 Mhz or the 16 Mhz) and set the clock source fuse.
I suspect that you have the wrong firmware loaded or the fuses are not set correctly.
We have build too many of those for use with the Paparazzi autopilot and all of them work fine with any receiver there is out there ppm, 2.4 ghz, PCM etc.
A steady led means that the cpu is up and running but it does not see valid servo pulses at the input (wrong firmware or fuses).
At startup it scans all inputs connected or not for a valid 800 to 2000 microsecond pulse.
As soon as it detects a pulse the code knows that the receiver is up and running so the it proceeds to detect what channels are actually connected to the ppm encoder board.
Chris