Other Parts Discussed in Thread: DRV8301-69M-KIT, MOTORWARE
Hello.
We are using an own HW similar to your DRV8301-69M-Kit (D) and LAUNCHXL Board together with motorware 1.01.00.16 and 28062F instead of 28069M. User software is based on your FOC Lab sample codes with the controller module in use.
The motor to be driven is a PMSM at a set-speed range of 500 … 3000 rpm.
Problematic requirement is a startup-time of maximal 150 ms for a 0…3000 rpm start.
This requires high MaxAccel_krpmps and aggressive speed control parameters. Although we meet this requirement in most cases the aggressive start conditions show in some cases a tantalizing motor drawing high currents without any circular movement. Thus the flux angle and the mechanical motor angle are asynchronous.
A test sequence of starting every 2 seconds fails after aprox 10 minutes, thus 150 starts. To prevent the motor from overheating our actually application monitors speed and current and switches the motor off in this problematic start situation (and after 0.5 seconds waiting will re-enable and restart the motor).
For final software we need to prevent this situation in any case. Actually we tried the following without success:
1. RsOnline disabling / resetting did not help.
2. Field incease by CTRL_setId_ref_pu before starting (to enforce estimator angle alignment with motor poles) did not help.
3. Dynamically parameter changing for startup did not help.
4. Directly driving GPIOs for some msec to position the rotor to a pole position did not help, since the angle read by EST_getAngle_pu in standstill is too imprecise. Reason for the unprecise angle in standstill seems to be the need to switch of integational part of the speed controller in standstill. Switching off integrational part was a measure to overcome slow motion self-start of the motor after standing still for let say 30 minutes with setspeed 0 rpm.
Also directly driving GPIOs for a manual moving sequence to give an initial torsion does not help since the angle read by EST_getAngle_pu in standstill is too imprecise.
5. Always performing steps done after “MotorVars.Flag_enableSys = true” in your Lab sample code when halting the motor did not help.
6. Manually shortcut of all lowside FETs in standstill did not help.
7. Ramping MaxAccel_krpmps in a smooth sin-squared manner from speed 0 to 3000 in 150 msec did not help.
8. Ramping SpeedRef_krpm in a smooth sin-squared manner from speed 0 to 3000 in 150 msec did not help.
9. In standstill setspeed toggeling for some few msec before issuing “MotorVars.SpeedRef_krpm = 3.0” did not help.
10. 50 msec in oposite direction before starting with 3000 rpm speed did not help.
11. Increasing current sope by EST_setMaxCurrentSlope_pu(obj->estHandle,_IQ(127.99)) did not help.
12. Using forced angles from the actual 2 Hz to 10Hz (= 150rpm for our 4 pole motor) did not help.
13. Every main control cycle calling HAL_updateAdcBias does not help.
14. Manually setting the estimator angle by a sequence similar to:
OverwriteAngle = EST_getAngle_pu( ((CTRL_Obj *)g_CtrlHandle)->estHandle );
EST_setAngle_pu( ((CTRL_Obj *)g_CtrlHandle)->estHandle, OverwriteAngle);
CTRL_setSpd_ref_krpm (g_CtrlHandle, HoldSpeed );
has the high danger of completely loosing flux connection after aprox several 10th start.
15. When enabling the motor in the EST_State_Rs the estimator forces 1 A in the coil. But the state can't be canceled with a speed command within msec. Additionally starting is failing for aprox 90 % when starting less than half a second after recalibration is finished.
16. Changing overmodulation with CTRL_setMaxVsMag_pu is not effective without restart, thus can’t be used for the 0-3000 rpm start problem.
To get further to a solution of this problem:
a) What more information do you need to be able to support us?
b) Can you give a hint what other feature of instaSPIN is worth trying?
