7 Channel Encoder Mods for a GD-19
Posted: 04 May 2020, 06:41
First I want to thank Phil for his 7 channel Arduino encoder documentation and sketch! Converting an old Heathkit GD-19 is proving to be a fun project!
After playing with the newest 7 channel "Dipswitch" encoder program, I wanted to make some changes to make it more practical for the GD-19 conversion. Note, this is still in the "Nano on a Breadboard" state, and not installed in the transmitter case yet.
1. The channel 7 servo slow routine was reassigned to the output of channel 5 (A4). This way a 6 channel receiver can be used and still take advantage of the switch controlled channel with the servo slow routine.
2. The aileron pot wiper is hardwired to both the aileron channel 1 input (A0) and also the channel 6 input (A5). This was done to simplify dual aileron servo setups with a 6 channel receiver and eliminate the need for a Y-harness.
3. Unfortunately, using the same input source, channel 1 and channel 6 travel in opposite directions, which doesn't really work for dual aileron servos. This was solved by changing the program to have channel 6 run in reverse of the original sketch. Now both the aileron channel and channel 6 travel the same direction.
4. Since the dual aileron setup uses channels 1 and 6, and the switched servo slow output uses channel 5, this leaves the thumbwheel control on the front transmitter case controlling channel 7. So on a 6 channel receiver, the thumbwheel is controlling a ghost channel 7. However the convenience of the dual aileron servo setup is well worth the sacrifice of losing the thumbwheel control.
5. For single servo ailerons, the thumbwheel channel 5 input (A4) is mapped to the output of channel 6 (A5). This lets the thumbwheel control on the front of the case operate the channel 6 (A5) output on a 6 channel receiver. Channel 7 (A6) now becomes the second aileron servo, but this channel is ignored on a 6 channel receiver. This routine is enabled by grounding pin D2. Otherwise the second dual aileron servo defaults to channel 6 (A5) output.
6. Holding the aileron stick to one side on startup now reverses both the aileron channel 1 (A0) and channel 6 (A5). Phil pulled a fast one on me here. For awhile this only reversed channel 6 one time after a calibration. Then it would only reverse the aileron channel 1 (A0) after that, until the next calibration routine was initiated. It took me awhile to find out where he disabled reversing of channel 6 and edit it out. Now the reversing sequence works on both channels every time, just like it's supposed to.
7. I'm still confused about why the default PPM Pulse Length (PPM_PulseLen) is set to 300. As a long time Taranis X9D+ user with DM9 module experience, I'm familiar with the need for the pulse length to be set to 400 for Spektrum instead of the default value of 300. I've tried both pulse lengths with the AnyLink2, and they both seem to work. I guess my question is why was the default pulse length chosen to be 300? Is 300 the default for FrSky ACCST? How do I determine which pulse length is the best choice for the AnyLink2?
So far I'm very pleased with the simplicity and capability of the Arduino encoder! It far surpasses the capabilities of the original GD-19, but will only require the addition of one or two new external switches, which won't spoil the original look of the transmitter (other than a 2.4 antenna).
The Arduino is a far better solution than my original idea of transplanting the guts of a Spektrum DX5e into the GD-19. It's been fun so far, and will no doubt only get better!
After playing with the newest 7 channel "Dipswitch" encoder program, I wanted to make some changes to make it more practical for the GD-19 conversion. Note, this is still in the "Nano on a Breadboard" state, and not installed in the transmitter case yet.
1. The channel 7 servo slow routine was reassigned to the output of channel 5 (A4). This way a 6 channel receiver can be used and still take advantage of the switch controlled channel with the servo slow routine.
2. The aileron pot wiper is hardwired to both the aileron channel 1 input (A0) and also the channel 6 input (A5). This was done to simplify dual aileron servo setups with a 6 channel receiver and eliminate the need for a Y-harness.
3. Unfortunately, using the same input source, channel 1 and channel 6 travel in opposite directions, which doesn't really work for dual aileron servos. This was solved by changing the program to have channel 6 run in reverse of the original sketch. Now both the aileron channel and channel 6 travel the same direction.
4. Since the dual aileron setup uses channels 1 and 6, and the switched servo slow output uses channel 5, this leaves the thumbwheel control on the front transmitter case controlling channel 7. So on a 6 channel receiver, the thumbwheel is controlling a ghost channel 7. However the convenience of the dual aileron servo setup is well worth the sacrifice of losing the thumbwheel control.
5. For single servo ailerons, the thumbwheel channel 5 input (A4) is mapped to the output of channel 6 (A5). This lets the thumbwheel control on the front of the case operate the channel 6 (A5) output on a 6 channel receiver. Channel 7 (A6) now becomes the second aileron servo, but this channel is ignored on a 6 channel receiver. This routine is enabled by grounding pin D2. Otherwise the second dual aileron servo defaults to channel 6 (A5) output.
6. Holding the aileron stick to one side on startup now reverses both the aileron channel 1 (A0) and channel 6 (A5). Phil pulled a fast one on me here. For awhile this only reversed channel 6 one time after a calibration. Then it would only reverse the aileron channel 1 (A0) after that, until the next calibration routine was initiated. It took me awhile to find out where he disabled reversing of channel 6 and edit it out. Now the reversing sequence works on both channels every time, just like it's supposed to.
7. I'm still confused about why the default PPM Pulse Length (PPM_PulseLen) is set to 300. As a long time Taranis X9D+ user with DM9 module experience, I'm familiar with the need for the pulse length to be set to 400 for Spektrum instead of the default value of 300. I've tried both pulse lengths with the AnyLink2, and they both seem to work. I guess my question is why was the default pulse length chosen to be 300? Is 300 the default for FrSky ACCST? How do I determine which pulse length is the best choice for the AnyLink2?
So far I'm very pleased with the simplicity and capability of the Arduino encoder! It far surpasses the capabilities of the original GD-19, but will only require the addition of one or two new external switches, which won't spoil the original look of the transmitter (other than a 2.4 antenna).
The Arduino is a far better solution than my original idea of transplanting the guts of a Spektrum DX5e into the GD-19. It's been fun so far, and will no doubt only get better!