This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

DRV8302 eval kit Level 7 Build - speed PID control issues

Other Parts Discussed in Thread: DRV8302, DRV8312, INSTASPIN-BLDC

**UPDATE** - it now seems that I can easily run up to 16,000 to 17,000 rpm from either the start or by a change of SpeedRef (from the watch window) while running in small increments.  I have a very modest amount of integral and derivative gain, about 0.00001, and a proportional gain of 1.  My BASE_FREQ is set to 417 so that my speed1.BaseRpm is 24,950 (close enough to the 25,000 rpm max).  It seems that I can get to a SpeedRef of 0.75 with basically no issues, but once I exceed that threshold, the controller loses it.

The "Tuning the Controller" section from the DMC_MATH.pdf document has been helpful, but I don't think the real problem is in the transient response because I can change speeds in small increments (faster and slower) without problems as long as I don't get much above 0.7. 

Again, all assistance is appreciated.  I'll leave the initial message in its entirely below.

I'm having trouble getting my speed PID control build to work using the DRV8302 kit w/ CC2803x ISO DIMM card.  My system basics  are as follows:

BLDC motor/pump - nominal 0.5A load, 15VDC input

18,000 to 25,000 rpm nominal

I set the integration threshold very low (0.001) and the speed PI gains are set such that the motor starts up just fine and runs for about 10 to 30 seconds at about 16,000rpm, but then I can hear the motor operation become unstable and it changes into some strange "mode" in which the current shoots up to the maximum draw of the load (~1.8A, full duty cycle), and the motor continues to spin, but the watch window shows a much slower pump speed ( 8,000 to 10,000, varies wildly).

I'm guessing that the controller simply lost lock and went berzerk, but I don't understand how this is happening at steady state.  The controller is no longer in Ramp mode when this occurs, and the load is not changing.  I'm basically cycling water through the pump.  The max switching frequency of the DRV8302 is 200kHz, so I should be well within the operating range of the driver IC since my PWM/ISR frequency is at 40kHz.

I'm not so much looking for an exact solution as I am searching for general assistance with possible issues I may have introduced.  For example, can the DRV8302 eval board spin a motor with max speed at 27,000 rpm?  Is my current too low for accurate control with the drive gain set at 40 (for a 20A load, which is the lowest value for this evaluation board)?  Would the DRV8312 eval board work better for this application?

Any/all assistance is greatly appreciated.  Thanks.

  • I don't know the etiquette for posts on here (I'm new to TI microcontroller products), but I guess that replies are probably better than updates to my original post.  So here's a 2nd update.

    I varied the pwmcntl1.PWMprd value from the original value (750) because it seems to establish a new PWM frequency ( I previously thought PWM_FREQUENCY would do this, but I was wrong).  A value of 750 results in a 40kHz PWM frequency, so I slowed it down to 25-35kHz and saw an improvement in the top end speed I can achieve, as given by speed1.SpeedRpm.  However, I'm worried that I've simply "tricked" the controller into thinking that it's spinning faster.  I'm having trouble believing what I see.

    Also, I forgot to specify that I'm using the InstaSPIN project for BLDC.  I started from Level 1 and have moved my way to Level 7, in which I am currently stuck.

  • Jared,

    If you are using the DRV83xx Kit there are voltage filters that we include for our FOC techniques that work against the Bemf techniques - and become noticeable at higher electrical Hz.  If your motor isn't reaching rated speed and you know you have a good bus voltage and are applying near 100% duty cycle then this is likely the issue.

    For the kits you would want to change the capacitors used in the voltage measurement to 0.01uF

  • Chris,

    Thanks.  Just to clarify, are you referring to capacitors C67, C68, and C69?  I'm using Rev C of the DRV8302 evaluation board.  Also, would you anticipate the same issue for a DRV8312 evaluation board, Rev D?

    Thanks again.

  • For InstaSPIN-BLDC higher speed operation 
    –DRV8312: C50, 55, 56; Currently 47nF, change to 10nF
    –DRV830x: C67, C68, C69; Currently 100nF, change to 10nF
  • Thanks a bunch.  It seems like the 8312 does a much better job with higher speeds than the 8302, which may be related to the light load or the fact that it already has much smaller filter caps.

    Another question: when I look at the DC bus and phase current feedback test points, how should I scale the voltages to read accurate current values?  Or is there a document in the hardware dev tools with information on this?

    Thanks again.

  • 2 more quick issues:

    **updated** - had a few mistakes in the original post

    1) I'm running a pump with this DRV8312 eval board.   I know from the measured flow approximately what my RPM should be (also comparing to a known controller), but the speed1.SpeedRpm displays a value that is approximately double what I know it is.  Any known reason for this?  I increased BASE_FREQ to increase my rpm to the max (now the base rpm is 32,400), but the flow indicates the motor is running around 25,000 rpm but speed1.SpeedRpm shows something around 47,000 rpm.  There's no way it's actually running that fast.  I made sure the # of poles is correct.

    2) I switched out the 47nF caps for 10nF caps, and it did seem to improve performance at higher speeds, but it's still losing control once I get near the full duty cycle.  Removing the caps entirely prevents the pump from running at all, so maybe I just need smaller caps?  1 or 5nF perhaps?

    Thanks again.