DIY- xESC Adapter [Ver1.0 w/ATmega8]

This Arduino based DIY is for everyone who would wants to run aeroplane ESCs with a surface radios. It goes in between the ESC and Rx. Although, there is already an adapter called Pistix available in the market for the same purpose, I couldn’t find any schematics or instructions about it to build one myself. With some help, I came up with something similar. How the adapter works: An aeroplane ESC needs 0% throttle indication at startup, but since a surface radio throttle is set at about 25% by default, it makes the ESC beep as a warning to set the throttle to 0%. For the aeroplane ESC to work, you can either mechanically modify the Tx by setting the default position of the throttle to 0% or if that is not possible, you can do it the software way; the adapter takes the 25% signal coming from the Rx and remaps it to 0%, as an indication of ‘no throttle’ to the ESC. Materials required: 1) ATmega8 or equivalent microcontroller- 1 nos 2) 16MHz crystal- 1 nos 3) 22pF ceramic capacitors- 2 nos 4) Servo extender- 1 nos 5) PCB Additionally, you’ll need a programmer to burn the code on to the ATmega8. I used an Arduino UNO board for the same. The Arduino code and the schematic can be downloaded from here– Tested the adapter on my air boat, works flawlessly! I used an ATmega8-16PU microcontroller for this project, couldn’t get the code to run on an surface-mount ATtiny45-20PU, if some electronics genius on here can do that, it can physically reduce the size of the adapter to less than half. I couldn’t have done this project without help from Trishit Ghatak and PeterH (Arduino forum)





6 thoughts on “DIY- xESC Adapter [Ver1.0 w/ATmega8]

      1. Did you get any compile errors on your ATTiny?

        What speed did you have it running? 1m, 8m, 20M? Did you burn the bootloader successfully to set the fuses?

        I recently did a project using ATTiny. One thing that is worth doing is to compile a blink sketch and check that the blinking is in time. This confirms that you set your fuses correctly. You dont need special equipment to measure it, if the fuses are run the blink will either be ultra slow or a constant led (through persistance of vision)

  1. I think that I can see the problem. Your code uses the Servo Library which utilises the 16bit timers on the Arduino’s microprocessor. (That is why it only works on certain pins). The AtTiny45 and AtTiny85 have only 8bit timers.

    You can get round this by either using the SoftwareServo library which does not rely on a timer (Not sure if PulseIN will play well with this or not.
    There is also a library called servo8bit which might be OK for you… Beware of the limitations though!

  2. Correct. I figured it was the Servo library, but wasn’t sure about the details on how to fix it.
    I’ll try the Servo8bit library and see if it’s going to work. Thanks for the pointer!

  3. I tried the Servo8Bit library, I could upload the sketch on to the Tiny45 without any errors. The ESC starts up properly with all the normal beeps, but when I increase throttle on the radio, nothing happens, the motor doesn’t run. I’m guessing, the pulseIn() isn’t working right.
    While I was at it, I came across SoftwareServo library, but Servo8Bit seems to work much better for my application.

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )


Connecting to %s