0
\$\begingroup\$

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:

schematic

simulate this circuit – Schematic created using CircuitLab

\$\endgroup\$
  • \$\begingroup\$ Does your arduino run from 6V? \$\endgroup\$ – Andy aka May 27 '14 at 7:37
  • \$\begingroup\$ yeah, it does.. \$\endgroup\$ – kolosy May 27 '14 at 14:17
  • \$\begingroup\$ @kolosy has your circuit worked with the N-mosfet? \$\endgroup\$ – Sathees Aug 13 '15 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 Aug 14 '15 at 3:24
1
\$\begingroup\$

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.

\$\endgroup\$
0
\$\begingroup\$

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

\$\endgroup\$

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.