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 mutation in lab05a

Other Parts Discussed in Thread: LAUNCHXL-F28069M, DRV8301, BOOSTXL-DRV8301, LVSERVOMTR, CONTROLSUITE, LAUNCHXL-F28027F

I used DRV8301-69M-KIT board to run the motor (LVSERVOMTR )by torque control in lab05a. When I set gMotorVars.IqRef_A = 0.2,the speed was stable(It was about 1000RPM).But when I set gMotorVars.IqRef_A = 0.24,the speed was mutational(Sometimes it was up to 6000RPM)! ! As shown:

I don't know what caused that.

  • lab05a doesn't have a speed controller, so with no load once you have enough of a torque command it should reach it's maximum speed. there are torque values which will keep the maximum speed relatively low, then just a small increase from that torque command will allow the motor to go to maximum speed.

    I'm still surprised to see the speed varying so much. Looks more like a variable load was applied/removed.

    this was all unloaded?
  • this was all unloaded?

    The motor run in the no load condition.

    Chris,thanks for your reply. Your answer makes me understand torque control feature.But you know I will use torque control in application of electric vehicle.If the speed is serious mutational as above,it will can lead to a traffic accident...... I really don't know where to begin to solve the problem.

  • this isn't normal or expected, something else must be wrong.

    I don't have a DRV8301 EVM in my office right now, but I tried LVSERVOMTR with BOOSTXL-DRV8301 and LAUNCHXL-F28069M using 24Vdc bus with NO LOAD.

    Iq_Ref_A < 0.28 A: rotor doesn't start-up, just oscillates
    Iq_Ref_A = 0.28 A: rotor starts up and runs at 900 RPM +/- 40 RPM (remember, there is no speed control, just a maximum Iq current command)
    Iq_Ref_A = 0.30 A: 1110 RPM +/- 40 RPM
    Iq_Ref_A = 0.40 A: 2170 RPM +/- 40 RPM
    Iq_Ref_A = 0.42 A: 4400 RPM+ saturates, increasing Iq_Ref has no effect on no-load speed
  • are you using the USER_MOTOR values for this Teknic motor that are already in the user.h file? If not, what are the parameters you identified?

    you may want to attach your user.h file

    can you confirm which EFFECTIVE Compiler is being used when you build this project?
  • Tomorrow,I will do some repeat experiments to observe the speed 、check the compiler version and upload user.h.

  • Iq_Ref_A = 0.42 A: 4400 RPM+ saturates, increasing Iq_Ref has no effect on no-load speed

    It was saturated because bus voltage(24V) was too low.If I make bus voltage 60V and I set gMotorVars.IqRef_A = 1,the LVSERVOMTR  can run up to 9000RPM.

    Today,In order to rule out other problems,so I have re-installed CCS5.5 and MotorWare14 then identified the motor parameters again in lab02b and lab03a.

    I have done some repeat experiments to observe the speed at different bus voltage level.Get some experimental data in lab05a:

    My compiler and CCS version:

    user.h:user .h

  • I did another test : I set gMotorVars.IqRef_A = 0.27 and made motor run some time (more than 10 minutes) then observed the changes of velocity.

  • I don't see anything wrong with your user.h

    when you start in proj_lab05a are you enabling the OffSet and Rs Recal before start-up?

    I can't duplicate your results...the speed drift over time happens and I think that's related to the Rs increasing slightly (although there isn't very much current)...but I never get unstable speeds like you are showing.
  • when you start in proj_lab05a are you enabling the OffSet and Rs Recal before start-up?

    Yes,I set gMotorVars.Flag_enableRsRecalc = 1 manually all the time.I remember OffSet setting default is ture in lab05a.

    I can't duplicate your results...the speed drift over time happens and I think that's related to the Rs increasing slightly (although there isn't very much current)...but I never get unstable speeds like you are showing.

    Do you use DRV8301 EVM to run LVSERVOMTR ?

  • I am using BOOSTXL-DRV8301 and LVSERVOMTR. I don't have a DRV8301 EVM right now.

    In my no load tests, when a new Iq command is given the speed increases stable to a new speed. It then oscillates around +/- 40 RPM and slowly drifts higher. I never see any wild accelerations / decelerations and instability like you are showing.

    do you have any other hardware to try?
  • It looks like something wrong with my hardware.I think I must choose another hardware to test.I have to buy BOOSTXL-DRV8301 or another DRV8301 EVM,but goods may take a long time to arrive.
    Perhaps If I am lucky, I can borrow hardware from local TI branch office.


    I ask two additional questions:
    Q1 : we know there really isn't any benefit to using InstaSPIN for sensored torque control,but I want to know :
    If I realize sensored torque control by modifying the code(use proj_lab12 and just follow the code example from 05a to disable the speed controller),then relative to the examples in controlSUITE,what are the differences between them?


    Q2:There are two damaged 28069M control card in my company.How to repair,What's the process?
  • I know BOOSTXL-DRV8301 and LAUNCHXL-F28069M or LAUNCHXL-F28027F are readily available in our China distribution centers, you should be able to get them quickly. The DRV8301-69M-KIT may be out of stock at the moment, but we are receiving a new shipment in the USA today.

    If you have a TI FAE/sales you may be able to get them to try to duplicate your test in the lab. They have the EVM and LVSERVOMTR locally and may let you borrow.

    A1: from the control standpoint they are pretty much the same. With InstaSPIN you would still be able to do Motor ID and set the tuning of the Iq and Id controllers automatically. You would also get a different over-modulation scheme and the ability to do automatic field weakening.

    A2: It depends on what is damaged. if you see a damaged component you can try to replace yourself. TI won't do repairs on these. Your local FAE/Sales may be able to sample you one in lieu. It is very hard to damage these unless you make a mistake with voltage though...
  • Hello Chris

    Today,I have changed another DRV8301-69M-KIT to test.

    I run lab02b、lab03a and lab05a,but the question remains...

    Experimental data about curve of speed from lab05a:

     I suggest that some engineer who have DRV8301-69M-KIT and LVSERVOMTR in TI can do this test to observe the results.

  • I just tried with DRV8301 EVM - but only 24V - and can't duplicate. I never see any spikes in speed..

    what is the time scale on your graphs?
    and the vertical axis is in KRPM?

    when you see the speed "spikes" on your graph, can you observe that the rotor actually speeds up (and then speeds back down) just like your graphs show? This doesn't seem possible. Even if the motor did speed up, since you don't have a load it certainly shouldn't slow back down.


    with 0.28A command my set-up has been running between 1400-1700 RPM for several minutes. No sudden speed changes.

    if you upload your user.h I can try with your exact variables, just to see if we missed something.
  • chao,
    since I've posted I've let the drive keep running, and at some point it did increase up to 3000 RPM. But it never accelerated / decelerated suddenly like your graphs.

    if I stop/start the drive again and do RsRecal the Rs has increased by 3.5% and the motor goes back to 2200 RPM

    I really don't know the explanation for this...and I'm not even sure this test is valid. When are you ever going to be commanding 4% of the rated current of a motor with no load?
  • what is the time scale on your graphs?

    Default time scale,I did not change except increasing the value.

    and the vertical axis is in KRPM?

    Yes.

    when you see the speed "spikes" on your graph, can you observe that the rotor actually speeds up (and then speeds back down) just like your graphs show?

    Yes,the motor not only sped up and back down as data curve,but it was heated if speed was too high.

    Iq_Ref_A < 0.28 A: rotor doesn't start-up, just oscillates
    Iq_Ref_A = 0.28 A: rotor starts up and runs at 900 RPM +/- 40 RPM (remember, there is no speed control, just a maximum Iq current command)
    Iq_Ref_A = 0.30 A: 1110 RPM +/- 40 RPM
    Iq_Ref_A = 0.40 A: 2170 RPM +/- 40 RPM
    Iq_Ref_A = 0.42 A: 4400 RPM+ saturates, increasing Iq_Ref has no effect on no-load speed

    I can not comprehend these data which you got.In my own view,under no-load running condition,the speed should have been growing in torque control mode.Right?

    if you upload your user.h I can try with your exact variables, just to see if we missed something.

    0245.user.h

    I set gMotorVars.Flag_enableRsRecalc = 1 in lab05a.I think user.h is no problem.

  • no, from a control standpoint the speed should not continue to grow in torque mode.
    some maximum speed should be reached for the given load and given maximum torque (Iq_Ref_A) command
    with no load, after a certain amount of torque command the motor will reach full speed once the torque overcomes any of the friction and cogging torque.

    with your user.h I am able to reproduce this more like your scenario. With 0.24A the motor has clearly "oscillated" between ~2000 RPM and 4000 RPM.

    The only differences are in the FULL_SCALE_FREQUENCY - which your smaller value should still offer plenty of headroom -
    and the PWM frequency...I'm not really sure why this would have an effect


    I really don't know what else to say at this point. I suspect a motor expert would be able to explain this phenomenon, but I can not.
  • I really appreciate your help.

    The only differences are in the FULL_SCALE_FREQUENCY - which your smaller value should still offer plenty of headroom -

    and the PWM frequency...I'm not really sure why this would have an effect

    Does that mean we can set some value for FULL_SCALE_FREQUENCY and PWM frequency to find a "sweet spot" which can make oscillation smaller?

  • I don't think so.

    I will ask again - is this even a real scenario?
    In your application do you expect to ever command such a small % of torque with no load?
  • In your application do you expect to ever command such a small % of torque with no load?

    No.I set so small torque just to test program.Then I found oscillation problem.

    In electric vehicle application,I will use encoder in torque control mode.I need high torque.

    I want to know how do you set parameters (Such as FULL_SCALE_FREQUENCY or USER_PWM_FREQ_kHz) to make velocity error is only +/-40RPM?

  • I used the default settings of (800.0) and (45) PWM with PWM_TICKS (3).

    It doesn't hold a constant speed, but it certainly behaves differently than yours.

    has been oscillating in a 1200-1400 RPM band with 0.24A for a 10+ minutes.
    with 0.28A it oscillates in s 2600-2900 RPM band

    with your user.h settings if I try the same it speeds up to full speed then back down over and over...very strange.
  • I would first try increasing your FULL_SCALE_FREQ to (800.0) and retesting.
    Then try increasing your PWM frequency (I suspect this is where you will find the difference).
  • To this day I am not clear on what caused mutation.Maybe it is related to the motor volume or power.Because when I chose a high volume and high power motor to test by DRV8301-69M-KIT.Wherever with load or without load,I can still got a nice slope curve of speed,which can not appear sudden change.That is enough for my application.So I do not need to be concerned with speed mutation from LVSERVOMTR.
    At last,I am grateful to you for helping me.
  • chao,

    thinking more about this, I think the issue is one of resolution.  We are seeing the issue on the DRV8301 EVM (82.5A full scale current measurement) but not on the BOOSTXL-DRV8301 (33.0 full scale current measurement) when commanding 0.2-0.4A

    I think we are running into ADC quantization / low resolution which is effecting the current measurement feedback from such small currents we are trying to control on such a wide range.

    make sense?

  • I do not have  BOOSTXL-DRV8301.So to verify what you said,I can only set two different IqRef_A values(0.3A and 1A) to compare.

    To  prevent LVSERVOMTR  motor over speeding,I added program code about speed limit (4Krpm).Then,I used my user.h to do an experiment.The status is as following:

    We see the motor run well when set IqRef_A = 1.

    Maybe,this result of this experiment can prove you are correct.