When a DC motor gets stuck and can't spin anymore, its current usage increases. What I want to do is to detect that current increase and turn off the motor.

My motor current is 180 mA.

  1. Is there any way to use Hall effect sensors for that?
  2. Do I need arduino, or can I do it without programing?
  3. If possible, please direct me to a example circuit or article to explore more about this.
  • 1
    \$\begingroup\$ Do electric windows on a car use an arduino for turning off the current when the window hits the end stop? \$\endgroup\$
    – Andy aka
    Commented Apr 12, 2018 at 9:29
  • \$\begingroup\$ They at least have a current detection so they reverse the direction if someone has his arm inbetween the window and the frame. \$\endgroup\$
    – Janka
    Commented Apr 12, 2018 at 9:31
  • 1
    \$\begingroup\$ Bar? Yes of course. Sense the current and tell the controller to stop driving the motor. \$\endgroup\$
    – winny
    Commented Aug 4, 2018 at 11:10
  • 1
    \$\begingroup\$ You need to go back and carefully read @Olin Lathrop's answer to your previous question. "In your case of 180 mA operating current, a series current sense resistor should be the first thing to look at." He also mentioned analog electronics. My simple alternative would be to use an operational amplifier circuit driving a little relay. Others may think something else is the simplest. That alternative is only for a low voltage, low current motor. At some power level, you need the isolation provided by a hall effect solution. \$\endgroup\$
    – user80875
    Commented Aug 4, 2018 at 14:48
  • \$\begingroup\$ @Andy aka Obviously they don't...but in what way did he/she imply he/she wishes to make something in a professional way? I suppose you simply wanted to hand more information about how it's done by consumer designs and did not intend some kind of mock. \$\endgroup\$ Commented Aug 4, 2018 at 15:52

6 Answers 6

detect that "current increase" and stop/turn off the motor.

Yes, that's possible. Many real systems actually work that way. This is often the case when the motor opens and closes something so that there are hard stops both ways. When the moving thing gets to the end of its travel, the motor stalls and the current goes up. The control system senses this and shuts off the motor.

Of course the motor and its electrical drive have to be able to handle the stall current for a few seconds at least, and you need a way to sense the current. The mechanical system also needs to be able to handle the full motor torque without breaking or wedging.

is there anyway to use hall effect sensors for that?

Yes. If your motor has Hall sensors to detect position, then you can easily determine when the position is no longer changing.

Hall sensors can also be used to sense current. That can be useful when the current is high, like 10s of Amps or more. In your case of 180 mA operating current, a series current sense resistor should be the first thing to look at.

do i need arduino

No. No one ever needs a arduino.

can do it without programing?

We don't know what you can do. With enough effort, sensing motor current over some threshold can be done with analog electronics, even with vacuum tubes if desired. However, using a microcontroller is the obvious and simple way to implement such a control system today.

Consider just the single issue of wanting to sense the current being over a threshold for long enough to not be a glitch, like 2 seconds. Such timing can be accomplished with analog electronics, but is much easier and more flexible when implemented by firmware running on a microcontroller.

  • \$\begingroup\$ "We don't know what you can do." hahaha. thx \$\endgroup\$ Commented Apr 12, 2018 at 11:36
  • \$\begingroup\$ @MCG: Same comment as a minute ago. \$\endgroup\$ Commented Apr 13, 2018 at 10:39
  • \$\begingroup\$ And same replies from me \$\endgroup\$
    – MCG
    Commented Apr 13, 2018 at 13:28

The best method I have used to implement is a servo control method with expected with encoder computed velocity and current feedback.

Since these are linear relationships and the acceleration is controlled by a constant current and speed is detected with acceleration computed , there is no doubt when a fault occurs from stiction, interference or other cause.

With a heat rise time constant, transient anomalies much shorter than this time may be ignored <<1s so this custom delay is filtered in the error limit detector before power is cutoff.

Since DC motors draw upto 10x the current and power on full start or brake, at least 2 measurements of current, speed and time must be detected and preferably 3. If only 2 then more computations are needed.

If only using a PTC in series with the motor then some voltage loss and torque is compromised but is the cheapest solution. There are reliability trade offs as the life expectancy of a Polyfuse is known to have limited operations. and not to relied on for constant operation unless custom designed with supplier support. Ref


If worried about the current peak or the mechanical torque peak you can do it in reverse: limit the current to a bit more than what the motor needs in normal operation and watch for motor voltage to sink to detect the stall.


Current is pretty proportional to torque. You could measure the current but…

The simplest way to "detect" such a stuck failure is putting a fuse in the motor circuit, and a LED plus resistor across this fuse. As soon the fuse is blown, the LED will light up, and the small current through the LED will not be enough to move the motor. It's simply another 10Ω resistor in series then.

You may replace the LED with an optocouple to detect the blown fuse with a µC.

The downside is you will have to replace the fuse each time you had a stuck failure, but maybe it's not so bad at all because these stuck failures also damage the mechanics and the motor commutator.

  • \$\begingroup\$ thx but fuse is not exactly what im looking for... \$\endgroup\$ Commented Apr 12, 2018 at 9:32

The high current of a stalled motor is similar to the high current at startup (because both have the rotor stationary). Usually, one wants the motor to take high current for short startup times, but not for longer stalls. The easy way to do this is with a thermal switch, often coupled to a red 'reset' button.

These switchesresettable breaker can be made to accept overcurrent for a limited time, then switch off, until reset.


Well, current is one of the things you can very easily sense.

In the simplest case: a fuse will melt when there's overcurrent!

I don't think you want to replace a fuse every time that happens. An automatic, resettable current breaker (like you probably have in your home to protect your circuits) would do the job, too.

Of course, winny is right, and normally, a motor is controlled by some kind of motor controller. You could sense the current going into the motor e.g. with a current transformer or a shunt resistor, and use the resulting information to turn of the motor controller.

  • \$\begingroup\$ Large AC motors often have adjustable thermal overload devices. I assume these would work equally well for DC, and they can be configured to either require manual resetting after a fault, or to automatically reclose after cooling down. \$\endgroup\$ Commented Aug 4, 2018 at 15:27

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.