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.

Id and Iq PID tuning strategy in PM_sensorless LEVEL 4 (DRV8301)

Other Parts Discussed in Thread: DRV8301, DRV8312

Hello TI,

I got stuck in developing the FOC sensorless control at LEVEL 4 (DRV8301 kit). When I built the project in Level 4 and start set the EnableFlag to 1, the motor will shake once, and the DRV8301 will sense an over current fault then the controll will trip the PWM output.

After playing with the Kp for a while, the motor could start up to around 200 rpm  (7 pole pairs motor), with the speedref = 0.15, Kp = 0.19. . However, no matter how hard I tried , the motor could not speed up all the way to SpeedRef = 0.25, it could be either over current or the rotor oscillating.

I am wondering if there is any strategy to tune the PID parameters more effectively?

FYI:

1. I changed the current sense resistor from 2mohm to 4 mohm for low current (~5A) application

2. The motor is 14 poles

3. control card is XF28M35, (it should not be problem in this)

best,

  • Yuncheng,

    recommend

    http://processors.wiki.ti.com/index.php/TMS320C2000_Motor_Control_Primer#PI_Tuning

    In level 4 you aren't doing any speed control, the speed ref is being used just to create a reference theta to use in your inverse park transform

    Did you check the scaling of your pu?

    Can you monitor u_out_d and _q to see if you are getting only a small change in output on the PI controllers when you increase the speed ref?

  • hello Chris,

    Thanks for you reply. I checked the wiki page but I actually at stage 3 in the wiki page.

    As you said, currently my code even doesn't have a speed PID module -- I haven't put them in.

    Because I couldn't close the current loop, I went back to level 2 to check the park transform results without PIDs. The results are pretty confusing: first of all, it's not a constant value, it has a frequency of doubled ISR frequency ( I tested with 10 KHz and 40 KHz ISR). Second of all, even I feed the the ipark and SVPWM with Id = 0, Iq = 0.05, the Park transformation result is not park1.Ds is not zero and park1.Qs is not 0.05.

    Do you have any idea why this happened? Something related to the motor itself or something wrong to the code?

    best,

     

  • hmmm, certainly something is wrong.

    I guess I would first try known SW, check the HW, and with a known motor (like the NEMA17 that ships with the DRV8312 kit).

  • Hello Chris,

    I doubled check the whole setup, and found the measured phase current is not actually 120 degree apart. The phase difference is a weird angle of 108 deg. This weird phase different causes the result of clarke transformation doesn't have an exact 90 degree phase different. Then, the following park transformation gives an sinusoidal signals which have doubled frequency. In addition, the current conversion results don't have the same amplitude.

    Do you have any  advise why this strange phase current happened? When the ADCs should measure the phase current?

    best,

  • My feeling is it is a hardware issue.

    Did you already try to run in in the final build level?