1
\$\begingroup\$

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 :smile:

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

\$\endgroup\$
  • \$\begingroup\$ According to your comment it seems like a nice power supply. Disregard from my answer. However, you are still using the Arduino onboard regulator. Isn't 6 V too low voltage for the regulator to make the MCU +5V rail (after the regulator)? The dropout of the regulator seem to be really on the limits for what it can handle. \$\endgroup\$ – Dejvid_no1 Nov 24 '15 at 20:53
1
\$\begingroup\$

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.

\$\endgroup\$
  • \$\begingroup\$ Just posted the result of oscilloscope test; no notable difference that suggest signal noise. \$\endgroup\$ – Dennis Hunink Nov 29 '15 at 15:51
  • \$\begingroup\$ You don't even need a full Arduino at the far end. Just use a small AVR such as the ATtiny85 or ATtiny4313. \$\endgroup\$ – Ignacio Vazquez-Abrams Nov 29 '15 at 16:13
  • \$\begingroup\$ @DennisHunink maybe check power line as well, but test will be relevant only under the load. \$\endgroup\$ – DikobrAz Nov 30 '15 at 18:30
0
\$\begingroup\$

I will be guessing some things here because of lack of input, but:

It appears that you use some kind of voltage regulator 6V/10A from the VIN pin of the Arduino Uno? If this is a linear regulator and your are using a VIN of 12V (lots of guessing), then you are likely to heat it up pretty much. The VIN pin is connected via a diode D1 on the Arduino Uno board to the DC input jack. This diode is only rated for 1 A.

According to the servo data it has a running current of 0.45 A and a stall current of 2.5 A. Three servos running would draw 1.35 A. The power dissipated by the voltage regulator would (with my assumptions) be (VIN - diode_drop - Output_voltage)*current : (12-0.7-6)*1.35 = 7 Watt approx. If any of theese servos are loaded the current will increase a lot, and of course the power dissipated by the regulator. Even 7 Watt is a lot if you're not using proper cooling.

My guess is that you're either overloading, overheating your 6 V regulator and the diode on the Arduino. Possibly also your power supply but you have not supplied any data about it.

\$\endgroup\$
  • \$\begingroup\$ The power supply present in the scheme is powering 6V to both the Arduino (indeed using the vIN port) and the three servo's. It has a maximum of 10A. The power supply I'm using is this one, which can be adjusted to deliver 5V or 6V (couldn't find specifications of the manufacturer though): abc-led.nl/webshop/led-adapters--drivers--voedingen/detail/410/… \$\endgroup\$ – Dennis Hunink Nov 24 '15 at 20:45
  • \$\begingroup\$ Your input voltage is too low for reliable operation of the Arduino's regulator. That is probably not your only issue, but you need to fix it. The arduino is designed for simplicity, not efficient battery operation. \$\endgroup\$ – Chris Stratton Nov 24 '15 at 21:04

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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