I was interested in designing-in the new DRV8824 for a new application requiring (modest) microstepping of a small step motor, but in working through the details of the H-bridge PWM current control, I can't see how to get good performance out of this chip. I'll explain:
My main problem comes from (1) the minimum on-time of 3.75 us due to blanking, combined with (2) the typ. fixed-period PWM cycle of 20 us (50 kHz). My application involves occasionally moving the motor slowly to a known position, and then holding as precisely as possible.
If I operate the DRV8824 in Fast Decay mode, and want the current to decay to zero on each cycle, the total range for ON time is only 3.75 us to 10.0 uS, giving a minimum winding current of 37.5% (nowhere near the 5% the datasheet shows for 1/32 microstepping). If I arrange the maximum current so that it takes longer than 10 us to build up, then the PWM will operate in several different modes (down to zero for small DAC settings, cycling up-and-down for larger DAC settings), and the RMS winding current will no longer be proportional to the DAC-set percentage. I expect that, with the 3.75 us minimum ON time, operating in slow decay mode only makes this worse. It seems this would ruin the vector accuracy needed for microstepping at any resolution finer than 1/4 steps. Also, it's not clear whether the current controller still cycles a phase on during the 3.75us blanking time when the DAC setting is 0% for that step phase.
Am I missing something about how the PWM current controller works in the chip? For some concrete details, I'm looking at a NEMA size 8 biphase motor, with 1.7 mH and 6.5 ohm coil impedance, and current/phase rating of 600 mA. My available power supply is 24V. I had hoped to program Risense for around 200 mA max current. The 3.75us blanking time forces a minimum current of ~53mA/cycle.
Would the DRV8811, with its RC programmed OFF time and C-programmed blanking time, be a better match for my application. Since I'm operating at relatively low current, I thought the DRV8811 (with its higher current rating) would not be as well-matched.
Thanks in advance for any advice you can offer. Since the DRV8824EVM is not available yet, I have not actually tried operating our motor with the the chip yet.
Hi Matt,
Let me see if I can help you see how the current choping works as it is possible you are visualizing it in a different way than it works. So far it seems to me you are assuming we are using time to control current, as in Ldi/dt. However, this is not how we do it. We actually measure the winding current and disable the H Bridge whenever the winding current exceeds the magnitude of a reference voltage. Here is a closer look at the mechanism at hand.
The winding current dissipates a voltage across the SENSE resistor (which is in series with the winding and the two enabled H Bridge switches). Because the SENSE resistor is small (we don't want to waste lots of power across it), the dissipated voltage is also small. We amplify this voltage with an internal stage which in the case of the DRV8824 has a gain of 5 (The DRV8811 has a gain of 8). The output of this amplifier is fed into a comparator whose other input is the internal reference voltage. Said reference voltage is a factor of whatever analog voltage you put on the external VREFA and VREFB analog inputs (it is recommended that VREFA = VREFB), and the respective micro step. I am going to get back to this shortly.
When the voltage across the SENSE resistor is such that it is larger than the internal VREF, the H Bridge is disabled for whatever amount of time is left on the cycle. We call this current magnitude ITRIP, as it is the H Bridge Tripping point. On our datasheets you will see an equation to ITRIP, and for the DRV8824 the equation is:
ITRIP = VREF/(5*SENSE_R)
Now, I mentioned the H Bridge is going to be disabled until the current cycle finishes. Per example, if the cycle starts at T0 and the current takes 5 us to reach ITRIP, then like you correctly stated, each cycle can only last as much as 20 us. Hence, on the previous example, for the next 15 us, the H Bridge will be OFF and as soon as the next cycle starts, the H Bridge will be enabled again.
It is very important to understand that how long it takes for the current to reach the ITRIP point is a factor of input voltage (the larger the input voltage, the quicker the current raises), motor inductance (the higher the motor inductance the slower the current raises), and the starting point of the current as it decayed from the previous cycle (current will decay more on fast decay than in mixed or slow decay modes). Hence, these three variables will determine the Current Chopping PWM cycle as well as the current ripple on the motor winding.
Now, here is where it gets tricky. The equation I gave you for ITRIP is for maximum current and it would only apply if you had one current magnitude. However, on micro stepping we have multiple current levels. Like I said above, the internal VREF is a factor of the external VREF and the current microstep the internal indexer is at. The beauty of this is that you do not have to worry about any of this as the internal logic takes care of it all. And what it will do is that it will scale the external VREF to the respective value on the internal lookup table. Per eample, the 5% current setting will in fact be 5% of your computed ITRIP.
On your explanation you discussed how current must reach zero on a per cycle basis. However, this is highly undesirable as it would most likely cause a series of discontinuities in the current which would eventually transfer into the motion profile. What we need to do in order to properly control the step is ensure a steady current which will then transfer into a steady magnetic field. A steady magnetic field will give you the step accuracy that you need. By regulating the current with a very low ripple, you should then obtain a low torque ripple, which will then yield a better step accuracy.
Please let me know if this answer your questions. I realize this is a pretty abstract topic and it can lead to plenty of confusion. I have a good deal of material I can share with you on how this engine works.
Also, we have the DRV8824 EVM and can supply one to you. Contact your sales representative and we will get you equipped with the respective EVM.
Hope the info helps. Best regards,
JIQ
Jose I Quinones
Hi Jose,
Thanks for the explanation. I am still concerned that this won't provide the microstepping performance I need for my small motor.
I think another way of stating the problem I'm seeing is that I either need to (a) reduce my supply voltage, or (b) increase my motor inductance. The problem is, with 3.75us minimum ON time per cycle, each cycle will *increase* the winding current by around 50 mA minimum (1.7 mH, 6.5 ohms coil resistance, 24V supply). Since I don't need much torque, I'd like my peak current at 100% to be only 200 mA. It looks like the DRV8824 cannot control such a small motor (1.7mH), with such a large power supply voltage (24V) and still implement microstepping.
Look at what happens during the first few cycles of controlling at small current, say 5% of 200 mA (which would be an ITRIP of 10 mA for that microstep):
During the minimum ON time, current increases from 0 to 54 mA. During the remaining cycle OFF time (~16 us), the current decays (in slow decay mode, L/R damping only) by around 4 mA, leaving the winding at 50 mA. Next cycle, the minimum ON time again increases the current by 54 mA to 104 mA. During the OFF time of the next cycle (another 16 us), the current decays by around 8 mA, leaving the winding at 96 mA. Next cycle, the minimum ON time adds another 54 mA, up to 150 mA. You see the problem. The DRV8824 won't be able to control such a low current as, for instance, 5% of 200 mA (10 mA) needed for 1/32 microstepping with a peak current of 200 mA. Am I missing something?
--Matt
The way that you put it, it will definitely not work very well at all. Have you tried fast decay? On the DRV8824, selecting fast decay will utilize this decay mode throughout the entire lookup table output.
If fast decay is too fast, give a try to Mixed Decay Mode. Mixed decay is an in between of Slow and Fast decay modes.
Give those a try in the mean time and I'll see what other options we can offer.
Best regards,
Now you see the point of my original concern.
I can try to operate the chip in Fast Decay mode, but then the DC average current during regulation will no longer be proportional to the internal DAC setting (since for the smallest currents, the Fast Decay will bring the amplitude all the way back to zero, but for larger currents it will limit-cycle between two non-zero levels; the average current in these two cases will be a different faction of the DAC-programmed ITRIP value).
Mixed decay doesn't help much, since when the motor finally stops (it's positioning an optical filter wheel), we won't know if a particular winding was increasing or decreasing in current. Any time a winding runs in Slow Decay mode, the average current will tend to runaway to high values (as my example above showed).
In either case, the motor will turn and step for sure, but the vector accuracy of the microsteps will be badly off. This was the original motivation behind the design idea, as we wanted to be able to rely on the 1/32 microstepping to finely position the optical filter with high resolution.
I am still exploring other possibilities, including lowering the supply voltage, specifying a larger motor, or adding large series inductors to each of the motor windings.
Thanks again for your help. --Matt
You are correct. The laws of physics are pretty much what they are and there is very little we can do about them. On our side, the only solutions would be to decrease the TBLANK time but since this is a general purpose stepper driver, we must acommodate all the applications out there, and for that the proposed TBLANK seemed to be the most appropriate. If we make TBLANK much smaller, we run the risk of disabling the H Bridge with a false ITrip.
I think adding an external inductance would be the way to go, if you can not change the motor. We have seen this being used as a filter to eliminate EMI noise, although in this case the currents are so small, that I don't foresee EMI being an issue. It will definitely help you stabilize the current better. But if you can find a similar motor with a higher inductance this should be a more efficient way to solve the problem as you will not need to add external components.
Let me know if there is anything else we can help you with.
I am a very big believer in the laws of physics!
Thank you for taking the time to walk through this with me. I think the external inductor will be the best design solution, over-all. The motors are very small, so I don't expect higher-inductance options to be available. A large external inductor, together with the motor controller chip, will play the roll of an "effective" buck-mode power supply, smoothing the current to the motor, storing the magnetic energy, and not wasting power from the 24V supply.
Thanks again.