I've been able to hook up a Futaba S3003 servo directly to my Arduino and it works perfectly. However, when I power it with an external 6 volt DC power supply (instead of the Arduino's onboard 5V) it fails to work.

I'm assuming I need to translate the 5v "language" of the Arduino to the 6v "language" that the servo now uses. Pretty new to this. Any and all help is greatly appreciated.

EDIT: My question, generalized, is how do I use an external power supply, that's more than 5V, with a servo and control it with an Arduino?

Here's a photo of how it's setup (and working). Running on 5V

  • \$\begingroup\$ I wouldn't expect a servo to work when connected directly an I/O pin, because the microcontroller can (usually) only source about 40mA of current. Post a schematic to show how you've connected it in both situations. \$\endgroup\$ – JYelton Dec 18 '12 at 20:34
  • 2
    \$\begingroup\$ I believe the arduino is used only to generate the ppm wave used to drive the servo. Please explain what do you mean with "it does not work". Does the servo make any noise? I suspect the culript is the external 6V psu. \$\endgroup\$ – Vladimir Cravero Dec 18 '12 at 21:54
  • \$\begingroup\$ @JYelton added a photo and a generalized question. \$\endgroup\$ – Kevin Mark Dec 19 '12 at 2:38
  • \$\begingroup\$ @VladimirCravero the servo will move a little bit (it twitches, at first) when I initially hooked up to the external but that's about it. I'm thinking I need some additional component in my circuit. \$\endgroup\$ – Kevin Mark Dec 19 '12 at 2:39

The servo on the external 6V source may be failing to work becasue you failed to interconnect the GND of the MCU board to the GND of the external supply.

  • \$\begingroup\$ After doing some more research it looks like this may the underlying issue. Testing now. \$\endgroup\$ – Kevin Mark Dec 19 '12 at 3:51

Here's how I have mine wired, same scenario:

enter image description here

You won't need the mosfet / diode deal if you don't need to power it off completely.


I have a 6 servo robot arm, so I power off a giant 6 volt battery.

All you have to do is short the grounds of the arduino and the servo battery together, and it should work. also, MAKE SURE YOU ARE SENDING THE SERVO SIGNAL BEFORE CONNECTING THE POWER. OR they WILL blow up. I lost a few hundred

  • 1
    \$\begingroup\$ Really? Odd that my servos don't behave that way. \$\endgroup\$ – ExcitingProjects Dec 23 '12 at 8:00
  • \$\begingroup\$ can you describe what you mean by not behaving? are they just shakey, or do they not move at all, or what? This SHOULD work just fine, so maybe a description of what is going on could hellp \$\endgroup\$ – lkrasner Dec 23 '12 at 15:51
  • 1
    \$\begingroup\$ I have turned the power on to my servo before powering my microcontroller quite a few times and I've witnessed no adverse effects. \$\endgroup\$ – Kevin Mark Dec 27 '12 at 3:56

Be careful. You can burn your arduino doing that. Arduino can't hold the amperes needed to power the stronger servos. I don't really remember but it holds just 500 mili amperes. It's better to do the following:

1 - get one 6 votls battery and plug the positive wire (generally red) to the positive of the battery.

2 - plug the negative wire of the servo to one gnd pin of arduino.

3 - plug the signal wire (yellow or white) to one pwm pin of arduino (the ones with a '~' sign.

  • 2
    \$\begingroup\$ This doesn't answer the question. Also, RC servos do not run off normal PWM. \$\endgroup\$ – Matt Young Aug 3 '13 at 3:06
  • \$\begingroup\$ @MattYoung - RC servos do run off of a PWM signal. There's really no such thing as "normal" PWM - there are schemes that go to full duty cycle, and schemes that only use variations in a very small duty cycle, which is what an RC servo needs. Both can benefit from connection to a pin with a suitable hardware timer, as that avoids the need for software to precisely end the pulse itself, even if software might need to trigger the start of each output cycle. \$\endgroup\$ – Chris Stratton Sep 3 '16 at 15:43
  • \$\begingroup\$ @ChrisStratton I strongly disagree. Servos position is encoded in pulse width varying from .5-1.5 ms. To an extent, what the repetition frequency is doesn't matter. Analog sevos are good up to 50Hz, digital are usually good to ~300Hz. Sure, you can use a PWM module for that, if you have a 16 bit PWM. Anything less won't give enough granularity. Don't ever change your PWM frequency, or anything duty cycle vs. angle will immediately be wrong. I really have no interest in addressing the rest of the pedantry. \$\endgroup\$ – Matt Young Sep 4 '16 at 15:17
  • \$\begingroup\$ Your recommendation is backwards. You notice that the small duty cycle is challenging, and reject hardware assistance entirely, ignoring that using hardware to define the more critical of the two edges can still be useful - especially if you want to drive more than one servo, since software can start all the pulses together and let them finish automatically. \$\endgroup\$ – Chris Stratton Sep 4 '16 at 16:01

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.