I recently Purchased a few Pololu Stepper Motor Drivers, and they have a VERY nifty little current limiting feature on them.
What i would like to know is what type / technique of current limiting do they use? I would like to try and replicate this feature my self?
Would i be able to do it with a 555 timer , pot and a transistor to control the pwm?
I have googled allot and tried to find out how this is done, but i have not had much success. maybe because i dont know exactly what im looking for.
But what i want to do, is to be able to set a certain Amp limit and then regardless of my motor driver voltage the current must not exceed my limit.
If any one could please enlighten me with any info on the topic i would greatly appreciate it.
The datasheets for the stepper drivers cover how they do the current limiting, and there are a few ways to go about it. The basic idea is to monitor the current and turn off power if the current gets too high. What device are you trying to control? If you want to do a stepper motor, I think you should just use one of the integrated driver chips since they already do everything for you. If you want to control a DC brushed motor, you can use one of the motor drivers that has a current sense output, such as the MC33926 or VNH5019. I think it’s preferable to monitor the current with an analog input on your main microcontroller, but if you want something that is not dependent on your code, you can have the current sense go to a comparator and then have the output of that disable the motor if appropriate.
Any switching DC DC converter with current sense will be able to do current limiting, if that’s all you want to do. Note that this isn’t necessarily particularly efficient – you will be suffering whatever the inductor, switcher, and capacitor losses are in your circuit.
The MC34063 is a simple 8-DIP device that can do this, for example. However, it uses an integrated BJT for switching, and efficiency can be as low as 60%!
Another option is to detect current using an opamp across a sense resistor. When the voltage across that resistor exceeds the voltage across a reference, turn off current.
Well let me ask this…
What is the difference between using a transistor and controlling it with a pwm signal to say control a dc motor.
And what is the difference between that, and the pwm used on the a4988 to limit the current?
From my understanding the 1st one controls the voltage (average voltage of the pulses) and the 2nd merely lowers the duty cycle as the current gets higher? not effecting the voltage?
Or am i mistaken?
Is this the method that the pololu A4988 uses to limit the current?
I basically just want to build a current limiter that will adjust the pwm according to the input voltage.
So the same as the a4988.
say my motor or device can only take 1A, if i put in 5v or 30v it must still only be able to draw 1A, the circuit must then adjust the pwm duty cycle to lower the current.
Am i making sense? ( i hope so )
You cannot use a transistor to adjust the current to a particular level without burning a LOT of energy and requiring a LOT of heat sinking. This is basically how 70’s technology worked, before power MOSFETs came on the scene in force.
The benefit of PWM is that it allows the switching MOSFET to be either fully on, or fully off. This means the MOSFET won’t dissipate very much energy, and won’t need as much heat sinking (for good MOSFETs and/or low powers, no external heat sink at all.)
The integrated drivers generally turn on voltage, sense current, and when it goes over the limit, chop the voltage and wait some amount of time before turning on the PWM again. The reason this works is that a motor is an inductor, so it will take some time to build up the appropriate current, as it rises on a slope after being turned on.
You can do the same thing yourself. You can read the data sheet for current chopping motor controllers and look at the block diagrams. They typically use blocks called something like “current sense” and “error amplifier.” This translates, loosely, to a sense resistor (or Hall sensor) and operational amplifier with reference voltage.
Note that sense resistors need to be small, so the sense voltage is small, so accuracy in building the circuit matters. It’s not something I’d try doing on a solderless breadboard, for example…
An alternative is to use very fast PWM, and then filter it through an inductor and capacitor, and then sense the current going through after the capacitor. Then you can modulate the duty cycle of the PWM, and don’t need to have an instantaneous sense. The draw-back is switching losses in the inductor and capacitor, plus cost – you need an inductor and capacitor that are comparatively large compared to the motor, or you need to run your switcher at megahertz frequency, which means turning on/off your switching MOSFET in a few nanoseconds, which in turn means large gate drive currents. This is not generally anything hobbyists will be successful in.