Current limiting in DC motor driver - Page 1
Forum section: electronics / projects

author: luigi
author_rank: Newbie
timestamp: April 26, 2017, 06:38:54 am
content: Hey everybody!I am new here, and here is my first topic:I am driving a DC brushed motor with a H-Bridge IC from Infineon PN: IFX9201SGThe motor is connected to the H-Bridge through a shielded 20 AWG cable 3 meters long.I am using PWM at2000KHz2KHz to control the speed of the motor.The whole circuit is connected to a 24V DC power supply capable of 40Amps (more than 200A peak).The circuits input is protected with a circuit breaker.The bridge is capable to drive up to 6A continuously.The motor running makes the circuit to draw 2 Amps. (consider the circuit consumption irrelevant)However, it is possible that the motor eventually will lock because some mechanical problem on the mechanical load attached to the shaft.The IFX9201SG has a built-in current protection to deal with overcurrent.The peak current during the PWM ON time is around 4A when the motor is running normally (measured with an oscilloscope using 1ohm shunt resistor)The current in the motor during stall is 20 Amps(at 24V) measured connecting the motor in a power supply directly and locking the shaft.During normal operation I am ramping UP and down the PWM for about 300ms when the motor is starting, stopping or reversing direction.The circuit has many constraints. The most remarkable are the space limitation and lack of forced ventilation within a small case.My concerns are:How reliable would you consider the current limitation on the mentioned IC?Using a PTC in series with the bridge input would improve durability?The IC allows overcurrent for a small interval (5us-13us). Would be that, time enough to destroy the chip in some circunstance?In this particular case, durability is more important than the motor performance.I would compromise max speed and/or torque to obtain higher durability. (thinking about the PTC)Thanks!!

author: H.O
author_rank: Frequent Contributor
timestamp: April 26, 2017, 07:03:07 am
content: Looking briefly at the datasheet that chip seems to be pretty robust. It will actively try to limit the output current at 8A (typ) and in case the current does go above 11.5A (typ) it trips the short circuit protection and latches the output off. I don't think there's much you can do externally to protect the driver further. But if the MOTOR doesn't survive a continuous current of 8A you might want to do something about that. Nice little driver chip, makes me want to play with one!

author: Ian.M
author_rank: Super Contributor
timestamp: April 26, 2017, 07:49:55 am
content: The only issue I can see is there is no way of adjusting the current limit or monitoring the actual motor current. You might do better to find a H-bridge that allows that so you can set a safe hardware limit with more derating than the standard application, and so you can implement closed loop current control to manage the acceleration when starting and braking the motor and detect and react to increases in motor current to achieve the same speed so that mechanical deterioration that will lead to motor stalling or overloading can be detected before it becomes critical.

author: capt bullshot
author_rank: Super Contributor
timestamp: April 26, 2017, 08:25:43 am
content: From my experience, I'd consider the driver chip indestructible by overload, overtemperature or output short circuit conditions. You should avoid exposing the driver to such conditions in a regular manner, this may lead to excessive temperature cycles which degrade or destroy the chip on the long way (but it's supposed to be a very long way)

author: daqq
author_rank: Super Contributor
timestamp: April 26, 2017, 08:43:27 am
content: QuoteAre you sure you didn't add a few extra zeros there?If current monitoring is critical to you I would advise getting either an H bridge that allows for use of an external shunt resistor or use a current monitoring device in series with the power (such as some Hall devices from allegro or a shunt resistor + amplifier).

author: Zero999
author_rank: Super Contributor
timestamp: April 26, 2017, 09:04:07 am
content: Quote from: daqq on April 26, 2017, 08:43:27 amYes, I think the original poster meant 2000Hz or 2kHz. lol

author: luigi
author_rank: Newbie
timestamp: April 26, 2017, 04:29:16 pm
content: Quote from: Hero999 on April 26, 2017, 09:04:07 amYes, sorry guys my mistake... It is 2000 HzQuote from: capt bullshot on April 26, 2017, 08:25:43 amI have few boards working with this chip already and driving the motors with no problem so far.The reality seems to agree with you and with the datasheet.But you know, there is always a voice in my head that tells me to be careful with the current...However, I have to agree with you too.Quote from: Ian.M on April 26, 2017, 07:49:55 amIndeed that sounds like the only improvement I could make.I am running out of space (the PCB is the size of a smartphone), but yeah... it will have some layout challenges.

author: Siwastaja
author_rank: Super Contributor
timestamp: April 26, 2017, 04:58:33 pm
content: To treat this as a "protection" is fundamentally flawed.Rotor speed = 0 is a perfectly normal operating condition, and always happens at startup.Yes, you can ramp up the PWM to take care of the startup condition, but that's only one normal condition patched; several others remain. The ramps also need careful adjustment.Another option is really totally oversizing the drive so that it withstands the full stall current defined by the motor DC resistance. In this condition, the motor iron naturally saturates, and produces so much heat the windings will be dead in no time (think about 24V*20A); the same full stall torque would be available with much lower power - but then you need active current limiting.So, what you'd really want, is a real motor drive. This means it can actively control current - and current equals torque.So you can adjust both torque and speed, neat, and you'll never exceed the design torque of the motor, and all this happens automatically when you have a current mode controller!BTW, this is exactly the same situation as in a DC/DC controller. The output cap starting at 0V present the same almost short circuit like load as the motor does. This is properly solved using a current feedback; in best case, a real current mode converter. Exactly the same can be done with a motor controller, since it's nothing more than a buck converter, with motor being the inductor and motor rpm being a massive "capacitor" in the output.The simplest/cheapest approach I have used to get areal, proper current limit is a low-value shunt (last time I used 0.001ohm for up to 40A motor current) in the bridge ground leg, followed by a current shunt amplifier, followed by a fast comparator. Comparator reference value is generated with an RC DAC from an MCU PWM pin. Comparator output goes to an interrupt pin. By setting the RC DAC PWM value, current limit threshold can be freely set. When the motor current exceeds this limit, an interrupt is very quickly generated, which allows you to even terminate the on-going motor PWM period if necessary; in practice, it's enough to just lower the duty cycle when this happens. "Critical" code will be only a few lines. This will work very nicely if you bump up the PWM freq a bit from your 2 kHz, so that the motor current doesn't have time to rise too much even if you react on the next PWM cycle. It's easier to code that way.This is not a protection; it's the fundamentally right way, something called a motor driver. Then you can add your own soft protections, such as; turn it off if torque (motor current) exceeds x A for y seconds. During this time, the heat output is much less because it's actively current limited to a practical level, still giving the torque youneed.