|Jun 20, 2011, 03:41 PM|
Poor man's Spectrum DM8 module
Although I already have Spectrum DX6i for playing with my Bind-N-Fly toys like Blade MSR I always wanted to control them with a normal radio with nice gimbals and decent programming, namely my newly aquired well used old trusty Futaba 9CHP.
Inspired by that thread I thought wat da heck, I have everything to do that: not needed E-Flite LP4DSM - check, Arduino Pro Mini - check, soldering station - check, donor for plastic case and 5 pin connector not needed Futaba module - check.
Well, as I never repeat the design as it is, always changing/modifying/rewriting/adding something, it was the same for this project. So I'll try to list all things that I changed.
For a transmitter I used a low power DSM2 TX module ripped off of my RTF Parkzone P-51 Mustang LP4DSM which I never used and probably never will.
Main processing is done by a Sparkfun Arduino Pro Mini 328 running at 3.3V/8MHz, it was chosen in order to save some power over the 5V/16MHz one. Processing power at 8MHz is more than enough to do the job.
As a voltage regulator I used LM1117 Low Dropout Voltage Regulator in SOT-223 package which I had laying around.
Instead of two LEDs I used two-color red/green LED which I also already had, saves some space and just looks cool.
Other components are nothing special, just regular 1/8 or 1/4-Watt resistors and one capacitor. You can vary the values quite deliberately, for instance LED current limiting resistors can be anywhere from 100 to 300-400 ohms, and instead of 10Kohm you can use anything in 3K-15K range. The only place where resistors need to be exact is voltage regulator, they have to maintain the same ratio, i.e. they can be 100/180 ohm, 150/270 ohm, 240/430 ohm, 560ohm/1kohm, you've got the idea.
Everything is mounted on a RadioShack Grid-Style PC Board with 371 Holes cut down to size, and connected with simple wrap wires and cut off pieces of resistors legs.
Binding procedure is done by holding the Bind button while turning the radio on, LED will flash red about four times per second, after receiver is successfully binded you can release it. During normal operation green LED blinks shortly every second.
So here you will find attached all the pictures including modified schematic, mounted board, and also an Arduino sketch in zip archive.
Few notes about the project and changes from the original idea:
- total current is about 45mA, voltage regulator was getting a little bit hot because it dissipates around 0.3W (7V*0.045A), nothing major as regulator can hold well above the temperature when it will burn your finger, but just to be on the safe side i helped it a little bit with a bunch of solder underneath it, now it is barely warm;
- for some reason I decided to implement failsafe mode in the code in case PPM signal is lost, which should never happen in the real life when the module is plugged into the radio, so feel free to delete it if you like, it is GPL anyway;
- for debugging purposes change the line at the very beginning to #define DEBUG and then open serial terminal, you will see the output in both hex and decimal values for all channels;
- most of the pins can be changed, except two: PPM input should always go to pin 8 (Timer1 interrupt) and DSM2 TX input should be connected to Arduino TX pin (pin D1) for obvious reasons, but I changed other pins just to shorten the wires to a button and LEDs;
- all other technical details about what the program does you can find inside the sketch, I tried to put as many comments as I could;
- well maybe I forgot something but that's what the comments are for, so you can ask questions or read the original thread, there are tons of information there.
|Jul 26, 2011, 04:12 PM|
Joined Jan 2010
Poor mans Spektrum DM8 Module
I found your blog very interesting as I am trying to do the same thing with my FF9. I have a few questions though:
1. It looks like you set up your circuit as a replacement module rather than via the trainer socket. Is that correct?
2. The futaba ppm pulse is negative going. Does the software automatically recognise this?
3. I measure the PPM out from the trainer socket and got about 4V. According to the AT328 data sheet maximum input is Vcc+0.5V. This just about fits, but do you think a level shifter is needed to reduce this to say 3v?
Thanks for you efforts and input.
|Jul 27, 2011, 01:43 AM|
Ian, yes, I have Futaba 9C so the module was made to fit into a standard Futaba interchangeable module box, I used the case with the antenna from another module that I didn't need. But the same board also can be used as an outside box with the cable that plugs into a trainer port.
Negative/positive PPM really shouldn't matter since we are measuring each channel period length from one edge to the next one, so results would be the exactly the same. I used capture using falling edge, but there is an option in the code that you can change to trigger interrupt by rising edge, see lines 123-124.
Futaba 9C outputs PPM to the module using open collector, so that's why I have a pull-up resistor R4, but if your signal from PPM is about 4V it is totally fine to connect it directly to pin 8 and remove R4, Arduino should handle it just fine.
|May 06, 2012, 03:07 PM|
Great Project. Thanks
Unfortunately I am not able to get it to work. I've got it it in bind mode (red flashes 4/sec) My Futaba 7U says its has RF attached, also green flashes 1/sec
I am using a DX4E module (verified working)
I am running a 5V UBEC from 9.6 (tx) to a 3.3v reg from the DX4E
Any thoughts, voltages are fine, I'm using your code as published, nothing else.
Appreciate any help
|May 07, 2012, 11:07 AM|
It's hard to tell, unfortunately I don't have any experience with DX4E.
You can try to ask in the main thread, I remember someone used DX4E before:
|May 10, 2012, 02:33 PM|
Thanks for the reply, I have no swapped to the MLP4DSM module with the same results.
As far ast the code goes....only the one PPMtoDSM2 is needed?
|May 11, 2012, 02:45 PM|
Yes, there is just one file PPMtoDSM.pde
Not sure what else to suggest... if you use Arduino Pro Mini 3.3V/8MHz it should work without changes, in case of 16MHz CPU you would need to change TICKS_PER_uS value to 2.
I see that you got debug values printed on the screen so I assume the input works, and I hope you switched from debug mode back to a normal mode when you feed signal to DSM2 module (line with #define DE_BUG).
I never used AR6400 but it should not be different from any other Spektrum receivers... What happens with the receiver when you try to bind it? Is it just blinking waiting for TX signal?
|May 12, 2012, 04:00 PM|
WooHOO we have working module. I had added the TX pin after soldering the arduino to the PCBoard, and my thru connection was flaky at best. After resoldering on top we have full functioning spektrum module. Thanks for all the help along the way
|Category||Thread||Thread Starter||Forum||Replies||Last Post|
|Discussion||Thermal Scout - Poor Man's Vario?||aeajr||Thermal||131||Mar 07, 2014 04:18 PM|
|Sold||Futaba 9CAP Transmitter with 2.4 Spectrum DM8 module||TheEdge||Aircraft - General - Radio Equipment (FS/W)||2||Jun 05, 2011 09:43 PM|
|Question||Poor man's OSD on EBAY?||Art Newland||FPV Talk||3||Apr 29, 2011 07:34 AM|
|Discussion||Poor man's triangle race for northeast||eschlitzkus||Scale Sailplanes||8||Mar 06, 2011 07:13 AM|
|Sold||***SOLD***Spectrum DM8 Air Module||tronyony||Aircraft - General - Radio Equipment (FS/W)||3||Feb 14, 2009 03:31 PM|