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.

trapezoidal control of BLDC motor using bemf integration

Other Parts Discussed in Thread: DRV8301-69M-KIT, CONTROLSUITE, INSTASPIN-BLDC, TMDSCNCD28069ISO, MOTORWARE

Hi,

I am attempting to implement trapezoidal or quasi-square wave current injection for my BLDC motor. The setup I have is the drv8301-69M-kit with the f2806 control card from TI.

I am following the steps provided in the 'sensorless trapezoidal control of BLDC motors using BEMF integration' 5125.InstaSPIN-BLDC Sensorless Control.pdfdocument, but I got an error when loading the variables in the watch window (see screenshot). I have selected Piccolo F28069 experimenter kit as my target configuration device.

The error appears as follows:

-------------------------------

js:> loadJSFile "F:\controlSUITE\development_kits\DRV830x-HC-C2-KIT_v105\InstaSPIN_BLDC\AddWatchWindowVars_F2803x.js"

missing ; before statement (F:\controlSUITE\development_kits\DRV830x-HC-C2-KIT_v105\InstaSPIN_BLDC\AddWatchWindowVars_F2803x.js#5)

--------------------------------

3858.Doc1.docx

It seems like the javascript for adding the variables in watch window is intended for f2803x device whereas my control card is f28069, so maybe that's the cause of the problem? Is there any way to get around this problem?

On another note, it seems that lab 10 on over-modulation for drv8301board has not been documented. Are there any other resources or guides that can help me implement trapezoidal current injection?

I appreciate your kind help.

Yue

  • you have several different questions in this post. Let me try to address.

    yue yao said:
    I am attempting to implement trapezoidal or quasi-square wave current injection for my BLDC motor.

    do you just mean trapezoidal commutation, or do you really mean current injection (at higher frequencies) in an attempt to use the reflected signal for estimation?  I think you mean commutation, but you should note the way you stated this is very confusing as current injection is a very different topic.

    yue yao said:
    The setup I have is the drv8301-69M-kit with the f2806 control card from TI.

    The controlCARD you have (69M) is enabled for InstaSPIN-FOC and InstaSPIN-MOTION.  You can run InstaSPIN-BLDC (trapezoidal commutation) on this device but you should be aware that because the 69M ROM contents are different from a standard 69 device you will need to make some changes to the IQmath library in the InstaSPIN-BLDC project that is in controlSUITE. Trying to run the project as is won't work.

    Regarding your error, the project in controlSUITE is dual-built, and comes up ready for the F28035.  You can right click and select a new build configuration for the F2806x. But again, this won't work as-is with your 69M card.  It's possible to change the SW or you can simply purchase a standard 69 card: TMDSCNCD28069ISO

    yue yao said:
    On another note, it seems that lab 10 on over-modulation for drv8301board has not been documented. Are there any other resources or guides that can help me implement trapezoidal current injection?

    Now you are going back to the MotorWare projects that use the 69M card. 

    I would suggest since you have this 69M card just using InstaSPIN-FOC or -MOTION.  Yes, you found that Lab 10 is where add  a new sampling and modulation technique that changes the sine wave modulation (1.0) to a space vector modulation (1.15) and all the way to pure trapezoidal (1.333)

    Correct, the lab write-up is still missing, but the directions are straight forward. You simply change the maximum modulation index that you want to allow by using

    gMotorVars.OverModulation

    I documented this on the LaunchPad + BoosterPack video series (Part 5) which can be found in the video player on this page:

    http://www.ti.com/ww/en/mcu/instaspin/support_community.shtml

  • Thanks Chris,

    I changed gMotorVars.OverModulation in the watch window to 1.33 in lab 10a. However, when I added some load (0.125Nm, which is the rated torque) to the motor, the current wave became sinusoidal. The motor was running at low speed of 1000rpm in the diagrams, but I got similar sinusoidal current shapes running across a wide speed range (1000, 2000, 3000 rpm etc).

    From my understand the motor should be able go to trapezoidal current even under load, but I got sinusoidal current with my measurements. Did I do something wrong?

    3465.overmodulation in CCS.docx

  • what is the value of gMotorVars.Vs during the time you are expecting trapezoidal modulation? It would need to be close to 1.333

    and what exactly are you monitoring, an actual phase current using a current probe?

  • Thanks for your comments.

    I have attached a screenshot of CCS watch window in my previous post.

    As you can see gMotorVars.Vs is 0.4644, which is not close to 1.333. Yes, I'm monitoring current in one of the three phases with a current probe.

  • then trapezoidal modulation is not required to produce the voltage that will generate the torque being requested by the speed controller.

    you only use more voltage when you need more current.

  • Then if I run the motor at higher speed or with lower than motor rated dc-link voltage, would that force it into trapezoidal modulation?

  • correct, using proj_lab10 it will only go past space vector modulation and into trapezoidal when required/commanded Vs is > 1.15