Sunday, March 30, 2014

Spektrum DX6i - backlight and timer hack

This post is just to make people aware of a project that I did a while back.
I was annoyed that the Spektrum DX6i remote that I had did not provide the useful timer features of the DX8i. That is, the countdown timer should be automatically activated when the throttle is actuated instead of requiring the user to manually pull on the trainer switch.

Hardware and firmware side together this hack took me around one hour to complete so it should take you much less should you consider to perform it.

I've spent another hour retrofitting the display backlight and adding that functionality to the firmware as well.

Features:
- one PIC10F222 (<1$ in single units)
- can detect whether single-pitch (plane mode) or collective pitch is used
- starts timer on throttle up, stops it when throttle is removed
- backlight is activated when the menu wheel is moved, deactivated after 5s
- inactivity warning: after 90s of no usage the remote beeps at you
- features can be disabled at startup by powering up the remote with the throttle in the high position


Pictures and details after the break:
The throttle position detection is done by using the integrated ADC and connecting to the wiper on the potentiometer.
The code detects how the remote is start up, depending on the throttle position:
- minimum (wiper <= 0.5V) - normal pitch mode
- middle (wiper 1.5V +/- 0.2V) - collective pitch mode
- high (>3V) - disabled

All the actions are done by setting the trainer switch high for ~100ms and then low for ~100ms. In flight mode this starts the counter, in menu mode this is done twice in order to simulate a beeping warning.

There's only one screen of code so be sure to check it out:


Wiring was done with hot glue and just sticking the wires in the sockets because the remote was still under warranty. I had no issue with this, it has been running fine for more than one year.




The chip was affixed to the shell using hot glue again and a socket, in case I need to reprogram it. I didn't need to.


I don't have any pictures of the backlight mod, I just bought a 3-5 EUR amber backlight that was the same size as the display, if anyone is interested I will search for the shop link.

Backlight consumption is a few milliamps so probably it can be left on all the time and the extra pin can be used for something else (like vibration motor).

Do not rely on the remote's timer for accurate timing, it seems to be only indicative. Also my code has a lot of assumptions and the timing is also imprecise to make it more robust.

5 comments:

  1. Hi, I am interested in your work. I have some issues of wiring these GPIOs of the PIC10f222 MCU to the PCB of DX6i remote control. In your picture, I believe there are five coloured wires (white, blue, orange, yellow and ??). How to connect these wires to the PCB of DX6i, could you please enlighten me? Thanks very much.

    ReplyDelete
    Replies
    1. There's a wiki page describing where to get the signals from:
      https://code.google.com/p/dx6i-enhancements/wiki/Hardware

      GP0 -> Trainer switch, red cable
      GP1 -> Throttle potentiometer wiper, orange cable
      Vdd -> 3.3V, taken for example from the Throttle pot red wire.
      Vss -> 0.0V, GND, taken from almost anywhere there is a black cable going.

      I don't remember off the top of my head, I would need to open the remote again. I'll do it if you cannot figure out from this comments how it would be wired.
      How to figure out by yourself: power up the remote and look for a black cable or GND marking, this would be the ground. With a multimeter, probe around for 3.3V. All the potentiometers have this. Then probe for another voltage that changes when the stick is moved, this will be the wiper.

      Delete
    2. Thanks for your reply. However, you also mentioned to control the backlight (I assume you have modified to add a backlight kit to DX6i, did you use the Turnigy Backlight Kit from HobbyKing?). I couldn't figure how to wire GP2 (according to the source code) to the backlight control. Thanks again!

      Delete
    3. Hi, I just did it the simple way, I power up directly the backlight from GP2 through a 700 ohm resistor, yielding about 5mA which is enough. You can go with a lower resistor or even no resistor at all for maximum brightness.

      Delete
    4. The backlight was from reichelt.de (part number starts with LEDX) but any similar backlight would do. Make sure it is LED-based and not the inverter type.

      Delete