Maker Pro
Maker Pro

Arduino Motor Stall protection with PPTC

Hi all, it's been a while!

The last few days I've been researching "stall protection" (for a robot with arduino connected to motor through H bridge) and there's a lot of information but it's kinda all over the place... so many different theories!

I'm wondering if a PPTC is my best option? It's hopefully a best of both worlds as i think it offers a) instant fail-safe hardware disconnect on stall (i.e. it doesn't require the arduino to turn off the power to the motor) and b) as long as my circuit works, it still lets the arduino "see" that a stall has occured (i.e. so it can then stop whatever control it is sending e.g. "stop moving forward" and thus stop the motor through software and/or send a "reverse" directive or whatever...)

stall idea.jpg
So above is my theory. Forgive crude drawing: the motor is at 7.2v. The PPTC return path has a parallel circuit: one straight to ground, the other path with two largish resistors: I wanna analogue read the voltage between the two resistors ("sensing zone")

PPTC ok = current flow and voltage difference between sensing zone and ground. Analogue read = X
PPTC triggered due to stall = no current flow, and voltage in sensing zone = 0/ground. Analogue read = 0

Is this a sensible approach? (to be fair I haven't laid out the whole circuit, there's a 5V regulator off the 7.2 source, then a raspberry pi, and then the arduino connected to the raspberry pi via USB... hence desire for good stall protection lest the raspberry pi has to fight too hard for current).

Thanks for your help!
 
Hi all, it's been a while!

The last few days I've been researching "stall protection" (for a robot with arduino connected to motor through H bridge) and there's a lot of information but it's kinda all over the place... so many different theories!

I'm wondering if a PPTC is my best option? It's hopefully a best of both worlds as i think it offers a) instant fail-safe hardware disconnect on stall (i.e. it doesn't require the arduino to turn off the power to the motor) and b) as long as my circuit works, it still lets the arduino "see" that a stall has occured (i.e. so it can then stop whatever control it is sending e.g. "stop moving forward" and thus stop the motor through software and/or send a "reverse" directive or whatever...)

View attachment 25337
So above is my theory. Forgive crude drawing: the motor is at 7.2v. The PPTC return path has a parallel circuit: one straight to ground, the other path with two largish resistors: I wanna analogue read the voltage between the two resistors ("sensing zone")

PPTC ok = current flow and voltage difference between sensing zone and ground. Analogue read = X
PPTC triggered due to stall = no current flow, and voltage in sensing zone = 0/ground. Analogue read = 0

Is this a sensible approach? (to be fair I haven't laid out the whole circuit, there's a 5V regulator off the 7.2 source, then a raspberry pi, and then the arduino connected to the raspberry pi via USB... hence desire for good stall protection lest the raspberry pi has to fight too hard for current).

Thanks for your help!
Please redraw the circuit, I see scribbles in red... and the two resistors are paralleled with a wire, they will have 0V present.
You also need to have a common in place for the Microcontroller and H-Bridge Logic to behave properly.
If you want the Microcontroller to probe the votlage output from the H-Bridge, you should also have the same common on the second power supply that is powering the motor. Don't forget to condition the signal going to the analogue in on the Arduino. It's in the path of a heavy inductive load and may be subjected to high voltage spikes.
 
mm yeah good point (with current just going to ground). Sorry forgive the crude circuit: they would have a common ground but just wanted to get across there's essentially a 7.2v circuit and a 5v circuit

hmm back to drawing board. I read somewhere PPTC's takes seconds to work too so that's a bit crap. Im reading multiple posts asking this question and am surprised there's not a commonly used method. Some people say "use a current sensing circuit" then don't say what they mean... argh.

Perhaps sending the "stall" or stop via accelerometers and or rotary encoders is the easiest way to go I just wish there was also an easy "fail safe" just in case I screw up my arduino code!
 
mm yeah good point (with current just going to ground). Sorry forgive the crude circuit: they would have a common ground but just wanted to get across there's essentially a 7.2v circuit and a 5v circuit

hmm back to drawing board. I read somewhere PPTC's takes seconds to work too so that's a bit crap. Im reading multiple posts asking this question and am surprised there's not a commonly used method. Some people say "use a current sensing circuit" then don't say what they mean... argh.

Perhaps sending the "stall" or stop via accelerometers and or rotary encoders is the easiest way to go I just wish there was also an easy "fail safe" just in case I screw up my arduino code!
Well... those poly fuses are used in the original RaspberryPi models as well, and in addition to have a slow response, they are commonly bypassed as they have created voltage drops and odd behaviour with their implementation. Not saying they are a bad thing to use, but there must be a better option.
As far as current sensing or stall sensing is concerned, I would suggest against only measuring a single point as was done in the original drawing. It's an H-Bridge, so the voltage present at your resistors might be as high as 7.2V is the motor changes direction. Some H-Bridge drivers actually have a 'Fault' pin that changes state if it's entered an over-current condition which you could monitor much more easily than trying to put a shunt resistor in series with the motor considering the voltage could vary considerably.
 
For future readers stumbling on this topic, this looks quite nice https://www.robotgear.com.au/Produc...-3Amp-MC33926-Motor-Driver-Shield-for-Arduino

Bit expensive but does an important job
I was thinking of something like the DRV8829, but that looks like it's easy to work with for your application.
You will find that some of the simpler Stepper Motor drivers have multiple outputs that can either drive a single stepper or a pair of brushless motors with each output. That's what I was banking on with the DRV8829.

Glad you found a part though :D
Happy tinkering
 
Top