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.

Speed loop problem lab 5b

Other Parts Discussed in Thread: DRV8301, MOTORWARE

Hi,

I am using Lauchxl 28069 with DRV8301 boostrack board to drive a outrunner SPM motor. 

The motor has Rs=0.025ohm, 700rpm/Vll, Ls=9uH(measured by RLC meter). It is usually used in hobby helicopter. I tried motor ID but the inductance ID is far off  (I don't know why) and cause problem on current loop.so I use user.h with my motor data. I then run lab 5a(current loop tuning).  with forced-angle on, I can see the current control looks very good. BTW, I use the universal GUI to do the tuning.

Then lab 5b has major problem. My motor can only spin with 'forced-angle' on at a low and constant speed,  and it doesn't respond to speed reference at all. If I turn off the 'forced-angle', the motor stops spinning. I tried several speed loop PI gain but they didn't help. during 'forced-angle', the current is at the full rating.

I wonder what is going wrong. Is the controller sensing the position? I think I follow the lab 5b . did I miss something?


Thank you 

Yichao

  • are you using proj_lab02c for motor ID?

    attach your user.h file, or at least the key changes made

    does your motor start-up during the RampUp state?   What is the target estimation frequency from your USER_MOTOR parameter?

    does your motor keep spinning for the entire test?

    "Then lab 5b has major problem. My motor can only spin with 'forced-angle' on at a low and constant speed,  and it doesn't respond to speed reference at all. If I turn off the 'forced-angle', the motor stops spinning. I tried several speed loop PI gain but they didn't help. during 'forced-angle', the current is at the full rating."

    Have you tuned your speed loop?  What were the initial values for Spd Kp and Ki? What did you change them too?  The initial values will be too high for these types of motors. As a starting point divide the initial values by 10 before you enable the motor.

  • Hi Chris

    "are you using proj_lab02c for motor ID?"

    I tried lab02b and 02c for motor ID. Target estimation frequency? do you mean by R-over-L est frequency? I use the default value.

    I attached my user.h

    I tuned my speed loop by keep it at zero speed and tuning the kp and ki. the initial value kp=11, ki=0.07. I tried to reduce it by 10 but doesn't work. the motor is driven by forceangle. without forceangle, it doesn't spin at all.

    Thank you

    Yichao

    1768.user_j5.h

  • #define USER_MOTOR_RES_EST_CURRENT (1.0)
    // this value likely isn't large enough. per the instructions, start with 10% of rated current and increase until the motor starts spinning, and keeps spinning through the ID process

    #define USER_MOTOR_FLUX_EST_FREQ_Hz (20.0)
    // this value should be ~10% of your rated frequency with a maximum of about 100 Hz. I'm sure this Turnigy hobby motor is not rated for only 200 Hz. Did you follow the spreadsheet @
    C:\ti\motorware\motorware_1_01_00_14\docs\labs\

    " the motor is driven by forceangle. without forceangle, it doesn't spin at all."
    ForceAngle just helps get the motor started. Once FAST estimates the speed > #define USER_ZEROSPEEDLIMIT (2 / USER_IQ_FULL_SCALE_FREQ_Hz) then the FAST estimations will be used instead of the ForceAngle fake estimations.

    It sounds like the motor is driven fine - and stable - once motor starts up with ForceAngle.
  • also, looking at the motor it is much higher current than the HW can support. It will be fine for no load, but once you add a propeller it will draw too much current over some certain speed. be careful.
  • Problem solved!

    I did the motor ID again according to your comment:
    with these new value
    #define USER_MOTOR_RES_EST_CURRENT (4.0)
    #define USER_MOTOR_FLUX_EST_FREQ_Hz (100.0)

    Now it can estimate the motor parameter well. and then the motor spins well!

    I think I didn't estimate motor variables well in my user.h.
    the flux is 0.0068, and I used 0.049 (I didn't consider the pole pair which is 7)
    the inductance is 5.4uH, I used 9 uH.

    That may be the reason my motor can only follow forceangle.
  • good. the issue was with the flux value being so far off.

    also, you are going to want to increase this value for your motor to the appropriate max frequency, but with a maximum of (1400.0)
    #define USER_IQ_FULL_SCALE_FREQ_Hz (800.0)
  • Hi, Chris,

    I want to ask a followup question. The drive I am using is the boostrack drv8301. It has the rating of 10A continuous,14A peak. I saw you commented before there are ways to hack this board. I wonder what limits the current rating. the Nextfet seems only have 5mOhm Rdson. Its loss would be minimal excluding switching loss. Is it because of the current sensing resistor? Can I change to low value resistor.

    Thank you
    Yichao
  • the board limitation is one of power dissipation in that footprint. if you used a heat sink or created a larger board you could update the sense circuits to extend the measurable range.