Connecting servo to Arduino over long distance – Servo not working anymore

arduinoservo

Recently I bought a couple of Makeblock's large servo's. I am not really familiar with Makeblock's products, I am a big fan of Arduino's and Raspberry's. But I have not used these servo's before.
For a project I'm currently working on I connected the servo's as described in the scheme below.

But here's the weird thing: everything worked for about an hour, both testing on 20cm as on the desired 12meter distance, just switching between 70 and 100 degrees. Unfortunately, one of the servo's started 'hitching': it was just moving up and down a couple of degrees, very fast. Even helping manually did not resolved the issue. After switching off the power and the arduino and restarting everything, the servo completely stopped working. It just doesn't do anything.
Later the exact same thing happened to the second servo….

I'm guessing I'm making a very n00b mistake here but I am completely lost (is it even possible to control the servo using a normal Arduino, instead of the maker board)?
So before blowing up yet another servo I figured to ask the experts for some advice, being you 🙂

Any thoughts and suggestions would be more welcome!

Edit: just had the chance to measure the output. Both the Arduino output as the other side of the 10m cable show the following:
enter image description here

enter image description here

Best Answer

Passing this low-voltage low-current signal over long range can be problematic. Try checking the signal with the oscilloscope first (on the servo end), see if you still can see nice square waveform used to drive the servo.

Not sure why your servo died, probably it was just receiving wrong commands driving it back and forth, putting too much stress on it which eventually destroyed it.

Normally you don't send signal like servo commands over long range, they will likely be corrupted, but it depends on case to case basis. What you do - you add one more arduino in close proximity to your servos, use robust communication protocol and cable between your main arduino and servo driver arduino like CAN, RS-232, USB or ethernet. Other option is to use differential signalling.

Having long DC power cable is also undesirable, because long cables will have some considerable resistance, so you'll see voltage drop on servo end and just waste energy. This calculator suggest that you should use 6AWG wire for 12m at 6V and 10A, this is a really thick wire. Check what voltage you have at servo end, probably you just have damaged servos because of undervoltage.

There are some CAN-bus, RS-232 Arduino shields. RS-232 is the easiest, haven't tried them though.

Related Topic