SPRUJ26A September   2021  – April 2024

 

  1.   1
  2.   Abstract
  3.   Trademarks
  4. 1Introduction
  5. 2Motor Control Theory
    1. 2.1 Mathematical Model and FOC Structure of PMSM
    2. 2.2 Field Oriented Control of PM Synchronous Motor
    3. 2.3 Sensorless Control of PM Synchronous Motor
      1. 2.3.1 Enhanced Sliding Mode Observer with Phase Locked Loop
        1. 2.3.1.1 Design of ESMO for PMSM
        2. 2.3.1.2 Rotor Position and Speed Estimation With PLL
    4. 2.4 Hardware Prerequisites for Motor Drive
      1. 2.4.1 Motor Phase Voltage Feedback
    5. 2.5 Additional Control Features
      1. 2.5.1 Field Weakening (FW) and Maximum Torque Per Ampere (MTPA) Control
      2. 2.5.2 Flying Start
  6. 3Running the Universal Lab on TI Hardware Kits
    1. 3.1 Supported TI Motor Evaluation Kits
    2. 3.2 Hardware Board Setup
      1. 3.2.1  LAUNCHXL-F280025C Setup
      2. 3.2.2  LAUNCHXL-F280039C Setup
      3. 3.2.3  LAUNCHXL-F2800137 Setup
      4. 3.2.4  TMDSCNCD280025C Setup
      5. 3.2.5  TMDSCNCD280039C Setup
      6. 3.2.6  TMDSCNCD2800137 Setup
      7. 3.2.7  TMDSADAP180TO100 Setup
      8. 3.2.8  DRV8329AEVM Setup
      9. 3.2.9  BOOSTXL-DRV8323RH Setup
      10. 3.2.10 BOOSTXL-DRV8323RS Setup
      11. 3.2.11 DRV8353RS-EVM Setup
      12. 3.2.12 BOOSTXL-3PHGANINV Setup
      13. 3.2.13 DRV8316REVM Setup
      14. 3.2.14 TMDSHVMTRINSPIN Setup
      15.      34
      16.      35
    3. 3.3 Lab Software Implementation
      1. 3.3.1 Importing and Configuring Project
      2.      38
      3.      39
      4. 3.3.2 Lab Project Structure
      5. 3.3.3 Lab Software Overview
    4. 3.4 Monitoring Feedback or Control Variables
      1. 3.4.1 Using DATALOG Function
      2. 3.4.2 Using PWMDAC Function
      3. 3.4.3 Using External DAC Board
    5. 3.5 Running the Project Incrementally Using Different Build Levels
      1. 3.5.1 Level 1 Incremental Build
        1. 3.5.1.1 Build and Load Project
        2. 3.5.1.2 Setup Debug Environment Windows
        3. 3.5.1.3 Run the Code
      2. 3.5.2 Level 2 Incremental Build
        1. 3.5.2.1 Build and Load Project
        2. 3.5.2.2 Setup Debug Environment Windows
        3. 3.5.2.3 Run the Code
      3. 3.5.3 Level 3 Incremental Build
        1. 3.5.3.1 Build and Load Project
        2. 3.5.3.2 Setup Debug Environment Windows
        3. 3.5.3.3 Run the Code
      4. 3.5.4 Level 4 Incremental Build
        1. 3.5.4.1 Build and Load Project
        2. 3.5.4.2 Setup Debug Environment Windows
        3. 3.5.4.3 Run the Code
  7. 4Building a Custom Board
    1. 4.1 Building a New Custom Board
      1. 4.1.1 Hardware Setup
      2. 4.1.2 Migrating Reference Code to a Custom Board
        1. 4.1.2.1 Setting Hardware Board Parameters
        2. 4.1.2.2 Modifying Motor Control Parameters
        3. 4.1.2.3 Changing Pin Assignment
        4. 4.1.2.4 Configuring the PWM Module
        5. 4.1.2.5 Configuring the ADC Module
        6. 4.1.2.6 Configuring the CMPSS Module
        7. 4.1.2.7 Configuring Fault Protection Function
      3. 4.1.3 Adding Additional Functionality to Motor Control Project
        1. 4.1.3.1 Adding Push Buttons Functionality
        2. 4.1.3.2 Adding Potentiometer Read Functionality
        3. 4.1.3.3 Adding CAN Functionality
    2. 4.2 Supporting New BLDC Motor Driver Board
    3. 4.3 Porting Reference Code to New C2000 MCU
  8.   A Appendix A. Motor Control Parameters
  9.   References
  10.   Revision History

Run the Code

  1. Power on the AC or DC power supply, gradually increase output voltage at power supply to get an appropriate DC-bus voltage.
  2. Run the project by clicking on button  , or click RunResume in the Debug tab. The systemVars.flagEnableSystem should be set to '1' after a fixed time, that means the offsets calibration have been done. The fault flags motorVars_M1.faultMtrUse.all should be equal to '0' , if not, the user have to check the current and voltage sensing circuit as described in Section 3.5.1.
  3. To verify run the motor with current closed-loop control, set the variable motorVars_M1.flagEnableRunAndIdentify to '1' in the Expressions window as shown in Figure 3-43. The motor will run with a closed-loop control using the angle from the angle generator at a setting speed in the variable motorVars_M1.speedRef_Hz. Check the value of motorVars_M1.speed_Hz in Expressions window, The values of both variables should be very close.
  4. Connect oscilloscope probes to the EPWMDAC or DAC128S outputs and motor phase line to probe the angles and current signals, and current. These waveforms on the oscilloscope appear as shown in Figure 3-44. Change the motorVars_M1.Idq_set_A.value[1] in the Expressions window to set the reference torque current, the motor phase current will be increasing with the same percentage accordingly.
  5. If the motor cannot run with current-closed loop control and an over current fault appears, check if the sign of motorVars_M1.adcData.current_sf and the value of userParams_M1.current_sf are set correctly according to the hardware board. The values of both variables are related to the definition constant USER_M1_ADC_FULL_SCALE_CURRENT_A in the user_mtr1.h file.
  6. Set the variables motorVars_M1.flagEnableRunAndIdentify to 0 to stop run the motor.
  7. Once complete, the controller can now be halted and the debug connection terminated. Fully halting the controller by first clicking the Halt button  on the toolbar or by clicking TargetHalt. Finally, reset the controller by clicking on  or clicking RunReset.
  8. Close CCS debug session by clicking on Terminate Debug Session  or clicking RunTerminate.
 Build Level 3: Variables in
                    Expressions Window Figure 3-43 Build Level 3: Variables in Expressions Window

Use DAC128S085EVM with an oscilloscope to monitor rotor angle of the motor from the angle generator and rotor angle from the FAST estimator, and a phase current of the motor as shown in Figure 3-44.

 Build Level 3: Motor Rotor
                    Angle and Phase Current Waveforms on Oscilloscope Figure 3-44 Build Level 3: Motor Rotor Angle and Phase Current Waveforms on Oscilloscope