I'm trying to limit power used by servos. The application is such that I don't mind if the servo's position drifts a bit, so I just use an N-MOSFET to shut it off when not in use. A conversation on an Arduino forum brought up the following concern:

Blocking the current flow path on the ground lead may force voltage/current to flow back thru the servo control wire back thru the Arduino to the common ground between the Arduino and servo power supply. If the servo starts to heat up or behave erratically, this might be the reason. I haven't tried it, but a P-MOSFET on the servo power supply might be another choice.

I am seeing some erratic servo behavior, though I think it has more to do with some sort of reset not happening when I bring power back on. Is the logic in the quote sound? Here's a snippet of the current servo control circuit:


simulate this circuit – Schematic created using CircuitLab

  • \$\begingroup\$ Does your arduino run from 6V? \$\endgroup\$
    – Andy aka
    Commented May 27, 2014 at 7:37
  • \$\begingroup\$ yeah, it does.. \$\endgroup\$
    – kolosy
    Commented May 27, 2014 at 14:17
  • \$\begingroup\$ @kolosy has your circuit worked with the N-mosfet? \$\endgroup\$
    – Sathees
    Commented Aug 13, 2015 at 19:02
  • \$\begingroup\$ @Sathees The circuit above worked. The erratic behavior I was seeing was due to a specific Arduino issue, not the n-mosfet. \$\endgroup\$
    – kolosy
    Commented Aug 14, 2015 at 3:24
  • \$\begingroup\$ Why do you need the diode? \$\endgroup\$
    – Mokus
    Commented May 4, 2020 at 19:50

2 Answers 2


I don't see how that would happen. The control wire is an input, it probably has some clamping protection diodes somewhere, but I don't think it can source (or sink) an appreciable amount of current.
If you want to be extra sure set the Arduino pin as an input when you turn off the mosfet: little or no current can flow in a microcontroller input, so there would be no path for current that would come from \$V_{cc}\$ to go anywhere.


Sorry i know this is an old post but i wanted to offer my two cents: I have used this configuration, normally when i turn off the mosfet i just detach the servo so i have a little function called moveServo(byte degree) that turns on mosfet, attaches the servo, waits a calculated length of time and then turns off the mosfet and performs servo.detach(), it works like a charm


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.