0

So I have four Electronic Speed Controllers (ESC's), each connected to a motor. I am building a drone with an Arduino UNO board as my flight controller. For convenience, I have soldered the signal wires on each of the four ESC's onto the bottom of the Arduino where the Arduino's pin headers are soldered on. The serial ground pins on the ESC's are soldered to the ground pins on the Arduino.

The ESC's I am using can be found here.

In order to change settings on my ESC's, I am trying to use this Turnigy USB linker to connected to the BLHeli software on my computer. The linker has a signal and a ground wire for Serial Communication, as well as a positive wire (I think this is just to fit the connector on ESC's with a BEC, but mine are OPTO, and have none). To connect the USB Linker to an ESC, I should be able to plug it into appropriate female pin headers on the Arduino using some breadboard-type jumper cables.

At least that's what I thought...

Whenever I try to connect to an ESC with the BLHeli software, I get a message: Please Connect ESC and power up or cycle power.

Earlier, I was able to make the connection and change the settings on my ESC's when they weren't connected to the Arduino board, but now that they are soldered and hot-glued on there, they won't work. So the question is: What is the Arduino doing to the Serial connection, and how can I fix it without desoldering my ESC's whenever I need to change some settings?

Now before you ask:

  • Yes, the ESC is powered up and connected to a motor. It gives me a happy beeping sound.
  • Yes, I definitely have the signal and ground wires connected correctly. I have been trying to figure this out for days, and have even tried switching them.
  • The Arduino is turned off when I try to connect an ESC to the USB Linker.
  • Only one ESC is powered on at a time.

Maybe the Arduino has some kind of protection circuit for the IC that is messing up the signal, or maybe the ESC's have something similar that's messing it up too, because some of the ground wires are connected together. I'm going to have a very difficult time figuring this out myself, so hopefully someone out there has an idea of what's going on.

Thanks for any help you have to offer.

-- Ember

3
  • Hey, Russell, already gave some good advice. I just want to add that, as far as I understand you are able to control the ESC from your Arduino, so why make your life more complicated with this programmer thing. I got some of ESC's from Robbe and didn't want to buy a programmer. You can quickly write a program that allows you to program the ESC with your Arduino. For example a short program with severals commands you write serially. That gives you also much more control over your thing, what can be useful when testing. Commented Jan 21, 2017 at 10:02
  • That would be nice, but I couldn't find any information on what type of commands to send the esc through serial. I might be able to write a program that mimics programming the esc through the transmitter, but that seems like a lot of work. I think what I'll do is order some jst xh 2-pin connectors and solder those to the arduino and the esc. That way I can take it all apart and program the esc's whenever I need to.
    – Ember
    Commented Jan 22, 2017 at 5:40
  • It's really not look here: hobbyking.com/media/file/708075066X189350X31.pdf Go to "program example" there is exactly written how it's done. You only need commands for top and bottom position, I guess you have that already, otherwise how would you drive drone ;) But it's on you..good luck what ever you try :D Commented Jan 22, 2017 at 10:47

2 Answers 2

1

I can offer general advice without reference to specific implementations.

By driving the Arduino pins when it is powered off you are potentially exceeding it's maximum rated specifications for voltage on any ping, and possibly for current into a pin, and you risk damaging it.
When the Arduino is powered down its Vdd pin and power supply rail will be at about 0.0 volts and will be loaded to ground by power supply capacitors and various other items connected to Vdd - including the OUTPUT of the Vdd voltage regulator in many cases.
Each Arduino pin is connected to the Vdd rail by a body / protection diode. To drive the pin high you must also raise Vdd to high-1 diode drop and must drive the Vdd rail load from your signal line via the body diode.
If your programmer has the ability to do this there is a reasonable chance that you may damage the body diode. For extra points, a very capable signal input MIGHT damage the Arduino's voltage regulator and possibly other on board devices - but I'd think that to be unlikely.

The technically best solution is to disconnect the Arduino's relevant pins when programming. As you obviously would rather not do that, then ...

Probable solution: If you power on the Arduino and run a program which ensures that the relevant pins are set to input mode then it should work as required. IF the Arduino default program sets the relevant pins to inputs then just powering it on should suffice, but odds are that the serial port pins are not both configured as inputs.
If the Arduino has a USB to serial port IC or other devices connected to the pins in question then you will need to also ensure that they do not load the pin excessively and that they will not be damaged by programming signals. eg if you were trying to drive the Arduinos serial RX_in pin which was connected to the TX_out pin of a USB-Serial IC then the programmer would be attempting to drive the USB-serial output pin and this must be dealt with in some way.

Checklist:

  • Is there something else connected to this pin.

If so

  • What state is it in during ESC programming

  • Will it be damaged by programming

  • Will it affect programming.

  • What action is thus needed.

1
  • Thanks for the reply! I uploaded code to my arduino that did nothing except set the esc pins to inputs. This seemed to do something, because I got some weird beeping coming from the esc when I tried to connect. The esc still can't connect though...
    – Ember
    Commented Jan 21, 2017 at 2:22
0

As far as I can tell, it is not possible to program a Turnigy Multistar ESC while it is connected in parallel to any pins on an Arduino. Whether the Arduino is off, or the pins are set to input, output, HIGH, or LOW, the signal is disrupted somehow.

Solution: Don't do what I did and solder the ESC's to your Arduino unless you want to de-solder them to change settings. Sticking some wires into the Arduino's pin headers will not make a strong connection, so I would recommend soldering some sort of strong JST connectors to the pins on the Arduino.

Hope this all helped, and good luck,

-- Ember

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.