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.

Resistance Rs Causing failure to start

Other Parts Discussed in Thread: DRV8301

Evaluation board:  drv8301-hc-evm revd

Lab 10a Overmodulation

1. Because our products require normal output torque in the environment of 0-50 C. In the environment of 50 C, Rs is required to take a larger value to make the motor output torque, but at this time in the environment of 0 C, the motor will start over-current problem, how to solve it?

2. Because our products require normal output torque in the environment of 0-50 C. In the environment of 0 C, Rs is required to take a smaller value to make the motor output torque. At this time, the motor can also start normally, but at this time in the environment of 50 C, the motor has no output torque. How to solve this problem?

3. Because our products require normal output torque in the environment of 0-50 C, is there any scheme that can be compatible with both high and low temperature environments? Resistance Rs on-line identification value is not accurate and can not meet the high and low temperature performance. Is there any other suitable scheme?

  • The engineer supporting this is on vacation and will reply when he is back, thanks for the patience.

  • Generally, the delta 50C is not high temperature for making motor running unstable. I think motor running should be ok on the temperature range you mentioned even though one fixed normal resistor value is used in your test condition. The resolution of Rs on-line calculation depend on the resolution of feedback currents and voltages. So you need to check if our DRV8301 EVM is right for your system.
    What's the rated motor parameters you are testing?
    Motor Type, Rs, Ls, Rated Voltage, Rated Current, Rated Speed?
  • Nominal voltage V 24
    No load speed rpm 60800
    No load current mA 282
    Nominal speed rpm 57500
    Nominal torque (max. continuous torque) mNm 23.6
    Nominal current (max. continuous current) A 6.45
    Stall torque mNm 561
    Stall current A 149
    Max. efciency % 91.6
    Terminal resistance W 0.161
    Terminal inductance mH 0.0171
    Torque constant mNm/A 3.76
    Speed constant rpm/V 2540
    Speed/torque gradient rpm/mNm 109
    Mechanical time constant ms 2.04
    Rotor inertia gcm 1.79

    when 300rpm,the motor output torque is 60mNm,The same Rs can not be used to meet the requirement considering the temperature.
    How to solve this problem?
  • 300rpm is about 0.5% of max speed in your system. Generally speaking, sensorless control is very hard to keep torque below <2% speed of max speed. Also Improving of low speed performance is very linked with both hardware and software. In other words, It's a very tricky to upgrade start-up and low speed performance with just one simple solution in this kind of high speed motor application. Anyway, we have some tips for improving motor start-up performance as following. If you apply as many solvers as possible, you might get better performance.

    1) Enable Rs Recalculation Flag whenever motor start up. It does recalculation motor resistance and align rotor to electrically zero position. FYI, Rs is more critical than Ls at start-up. So if you get recalculated resistance before start up, it will be very helpful for motor starting.  
    (gMotorVars.Flag_enableRsRecalc = 1)

    2) Enable Offset Calculation Flag (It might be enabled by default). The accurate offsets can improve low speed performance.
    (gMotorVars.Flag_enableOffsetcalc = 1)

    3) Enable Forced Angle Flag whenever motor start up and increase the Force angle frequency(USER_FORCE_ANGLE_FREQ_Hz). Default is 1Hz, but you need to increase up to the frequency that your BEMF voltage can be measured by ADC 2~3bit.
    (gMotorVars.Flag_enableForceAngle = 1)

    4) Increase zero speed limit(USER_ZEROSPEEDLIMIT) in user.h file up to the frequency that your BEMF voltage can be measured by ADC 2~3bit. Default frequency is 0.5Hz. If you motor is 2poles, 0.5Hz is 30rpm. At this speed, phase voltage becomes 6.8mV (=30/2540/sqrt(3)). 6.8mV can’t be measured in DRV8301 EVM because ADC_FULL_SCALE_VOLTAGE is 66.32V.
    It means that ADC value is low than 1 (6.8mV/66.32V*4096 = 0.42). The target ADC value should be over 2~3 considering feedback noise. My suggestion is that increase zero speed limit parameter up to 3Hz~5Hz. FYR, this frequency should be changed according to the noise level(SNR) on pcb, voltage feedback resolution and motor BEMF constant.
    (#define USER_ZEROSPEEDLIMIT   (3.0 / USER_IQ_FULL_SCALE_FREQ_Hz))

  • I have tried all the four methods mentioned above, but they have not had much effect. We can't solve the problem from the root. Is there any other plan?
  • The nominal torque of the motor is 23.6mNm and the nominal speed is 57500rpm, but you want to get the continuous 60mNm torque output at 300rpm, the requirement should be very tough. Maybe, you should try sensored-FOC if it's possible.