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.

Problems with user.h ?

Other Parts Discussed in Thread: DRV8301, BOOSTXL-DRV8301, MOTORWARE

I am running a motor with DRV8301_revD.

The motor is capable at 6000 rpm at 24V supply.  Somehow, it could not get over 3400 rpm.

When a current is drawn roughly around 1.5A from a 24V battery; the motor would make noise and struggle to run.

It seems it has reached a max current value. I have tried with different value for USER_MOTOR_MAX_CURRENT but that does not help.


Thanks.

1004.user - foc - 7-23-2014.h

  • some thoughts for you

    what power supply are you using? what is the current capability?

    re: user.h, I can tell this is essentially one of the hobby types of motors, and this is one of the more challenging I've seen.

    • I notice you put the offset settings into your elif motor statements. Why? The offsets should follow your hardware and any IQ_VOLTAGE and IQ_CURRENT changes, they don't follow the motor.
    • For your active 22 pole motor
      • 6 KRPM = 1100 Hz
      • Inductance is onlly 20uH
        • Your Rs / Ls is only 536 Hz...this motor is really not designed to do 6 KRPM.  I suspect this value is incorrect. It needs to be <9uH.  It's hard to estimate a "real" value this low with the DRV8301 board and low-side current sampling.
        • This low of inductance will be nearly impossible to run closed loop current control. It is too difficult to get good current samples in a low-side shunt topology. You can choose a different technique or add some externals inductors (say 50uH inbetween each middle leg connection and the voltage filter), but this will reduce your max torque capability somewhat
      • Your flux is 0.0176 V/Hz, which @ 24V would saturate at 1363 Hz, so this works well for 1100 Hz target
        • Not that this will solve things, but I would raise this to USER_MOTOR_FLUX_EST_FREQ_Hz (100.0)
      • Your Isc using 9uH would be over 300A, which is crazy for a motor that you say is rated for 12A. Just completely mis-designed motor in my opinion.
    • #define USER_IQ_FULL_SCALE_VOLTAGE_V       (100.0)
      • Why did you select this value?  Did you use the spreadsheet provided in MW _13?
      • You should set this to the Vbus to start, so (24.0)
      • You only make it larger if your Flux * Max_Hz is greater
      • You only make it smaller if you need more resolution on your minimum flux
      • In your case the (24.0) will work fine
    • You are running at 30 KHz PWM
    • On the DRV8301 EVM you may want to limit this to 15 KHz...it's pretty noisy.
    • However, the low inductance motor you have really should like the current controlled much more often...If you were using the BOOSTXL-DRV8301 I would tell you to run at 45 KHz with the F28027F LaunchPad, and once we have the F28069M LaunchPad I'd tell you to run at 60 KHz
      • if you add the external inductors you can run at 15 - 30 KHz with good performance
    • In any case I'd tell you to run your currrent controllers faster, say 15 KHz

     

  • ChrisClearman said:
    • I notice you put the offset settings into your elif motor statements. Why? The offsets should follow your hardware and any IQ_VOLTAGE and IQ_CURRENT changes, they don't follow the motor.

    Thanks.

    I saw those values changed and thought they followed the motor.

    ChrisClearman said:
      • Inductance is onlly 20uH
        • Your Rs / Ls is only 536 Hz...this motor is really not designed to do 6 KRPM.  I suspect this value is incorrect. It needs to be <9uH.  It's hard to estimate a "real" value this low with the DRV8301 board and low-side current sampling.
        • This low of inductance will be nearly impossible to run closed loop current control. It is too difficult to get good current samples in a low-side shunt topology. You can choose a different technique or add some externals inductors (say 50uH in between each middle leg connection and the voltage filter), but this will reduce your max torque capability somewhat
      • Your flux is 0.0176 V/Hz, which @ 24V would saturate at 1363 Hz, so this works well for 1100 Hz target
        • Not that this will solve things, but I would raise this to USER_MOTOR_FLUX_EST_FREQ_Hz (100.0)
      • Your Isc using 9uH would be over 300A, which is crazy for a motor that you say is rated for 12A. Just completely mis-designed motor in my opinion.

    The Rs/Ls were obtained from instaSPIN-MOTION GUI. I did not know that low inductance motors have problems with the GUI and the closed loop current control.

    Could you explain more on "say 50uH in between each middle leg connection and the voltage filter"? Where would that be?

    Could you explain more where you have Isc using 9uH? And how it would be over 300A?

    ChrisClearman said:

    #define USER_IQ_FULL_SCALE_VOLTAGE_V       (100.0)

    • Why did you select this value?  Did you use the spreadsheet provided in MW _13?
    • You should set this to the Vbus to start, so (24.0)
    • You only make it larger if your Flux * Max_Hz is greater
    • You only make it smaller if you need more resolution on your minimum flux
    • In your case the (24.0) will work fine
    • You are running at 30 KHz PWM
    • On the DRV8301 EVM you may want to limit this to 15 KHz...it's pretty noisy.
    • However, the low inductance motor you have really should like the current controlled much more often...If you were using the BOOSTXL-DRV8301 I would tell you to run at 45 KHz with the F28027F LaunchPad, and once we have the F28069M LaunchPad I'd tell you to run at 60 KHz
      • if you add the external inductors you can run at 15 - 30 KHz with good performance
    • In any case I'd tell you to run your currrent controllers faster, say 15 KHz

    I did use the spreadsheet but then I changed  USER_IQ_FULL_SCALE_VOLTAGE_V to 100V so I can look at the other values without scaling  it. It should not affect anything, right?

    Thanks!

  • Tinhtan Nguyen said:

    I saw those values changed and thought they followed the motor.

    They should not change significantly run to run with same inverter + MCU and same IQ_VOLTAGE, IQ_CURRENT settings in uesr.h

    Tinhtan Nguyen said:

    The Rs/Ls were obtained from instaSPIN-MOTION GUI. I did not know that low inductance motors have problems with the GUI and the closed loop current control.

    The "frozen" InstaSPIN-FOC & -MOTION GUI www.ti.com/tool/motorkitscncd69miso

    does not work well for low inductance, high speed motors. You need to use MotorWare proj_lab02c to ID the motor best you can.

    Very low inductance motors (<50uH) are still difficult to get the sort of performance out of them that you can get out of higher inductanec motors, this is due to the difficulty in getting good average current information that I mention above.

    Tinhtan Nguyen said:

    Could you explain more where you have Isc using 9uH? And how it would be over 300A?

    short circuit current = flux in V/hz divided by 2pi divided by Ls

    Tinhtan Nguyen said:

    Could you explain more on "say 50uH in between each middle leg connection and the voltage filter"? Where would that be?

    http://e2e.ti.com/support/microcontrollers/c2000/f/902/p/339361/1242590.aspx#1242590

     

    Tinhtan Nguyen said:

    I did use the spreadsheet but then I changed  USER_IQ_FULL_SCALE_VOLTAGE_V to 100V so I can look at the other values without scaling  it. It should not affect anything, right?

    It absolutely effects things. it's the most important variable in fact. You need to maximize the resolution of the voltage sampling for FAST.  This is especially important in the low flux machines like you are using.

    This is communicated pretty clearly in the quick start guides.