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.

BOOSTXL-DRV8301: 296-37138-ND

Part Number: BOOSTXL-DRV8301
Other Parts Discussed in Thread: LAUNCHXL-F28069M, , BOOSTXL-DRV8323RS, MOTORWARE

I have a LAUNCHXL-F28069M microcontroller and 2 BOOSTXL-DRV8301 motor drivers. I was running the instaspin lab 10d and entered all of my motor information into the user_mtr_j1.h and user_mtr_j5.h, but had no luck getting my motor spinning. Should this lab work out of the box if you enter your motor info into those files or do you have to modify code in the main function? 

My motor code in the .h files:


Motor Specs:
DB87M01-S.pdf

Product_Overview_DB87.pdf

  • Are you using the lab02a/b/c to identify the motor parameters, and use the identified parameters for lab10d? 

    Do you try to run one motor with the other labs like lab05 or lab10a? Does the single motor run well?

    And don't add any load to the motor when you run the lab02 for parameters identification.

    BTW, seems like the BOOSTXL-DRV8301 is not suitable to run the motor you used with full load.

  • I did look at the first couple labs to identify the motor params.  I have not had success running one motor.  After looking at it myself, you are right and these boards are not suitable to handle the 48V.  I ordered the BOOSTXL-DRV8323RS which will be capable.  

    I am thinking that the driver probably does not have enough voltage to even start the motor spinning.  Is this a possibility?  As this motor is rated at 48V and the most the board is capable of is 24v.   Or should the motor still run, but not very fast?   

  • The motor can run at low speed without load on the BOOSTXL-DRV8301, but the the BOOSTXL-DRV8301 can't run the motor up to a high speed limit to the maximum dc bus.

    Please take a look at the InstaSPIN lab guide (instaspin_labs.pdf) in the folder of motorWare, follow the operations to run the related labs as mentioned above.

    C:\ti\motorware\motorware_1_01_00_18\docs\labs

    Refer to the link below if you want to use the the BOOSTXL-DRV8323RS with InstaSPIN-FOC on LAUNCHXL-F28069M.

    [FAQ] BOOSTXL-DRV8323RS and BOOSTXL-DRV8323RH InstaSPIN and MotorWare support

    https://e2e.ti.com/support/microcontrollers/c2000/f/171/t/635499

  • I am currently running lab2a and trying to set the gMotorVars.Flag_enableSys = 1, but it just defaults back to 0 when I set it in the expressions.  Is it supposed to be set in code or should you be able to modify it in the expressions? So I set the enableSys to 1 and press enter and it just goes back to 0.  Then I set the run_identify and that stays at 1.  However, it says the shaft will spin, but nothing is spinning while trying to identify.  I do see some variables lighting up yellow every so often, so maybe it is identifying something. 

    Also it says to set the params in user.h, but it won't compile when I do that.  I am assuming they are set in user_j1.h as it says they are defined in one of those header files?

     

  • Any changes on the example code except the motor parameters? Do you change the PWM frequency? What's value of the gMotorVars.UserErrorCode variable by following the guide to add the monitoring variables in the CCS debug window?

    Seems like the USER_MOTOR_MAX_CURRENT is set too high and greater than USER_IQ_FULL_SCALE_CURRENT_A. You should set USER_IQ_FULL_SCALE_CURRENT_A according to the motor and inverter, and less than USER_IQ_FULL_SCALE_CURRENT_A.

  • No I did not change anything in the example code except for the motor and params. I didn't change the PWM frequency.  Ok should the USER_IQ_FULL_SCALE_CURRENT_A be the same as the peak current?  I just used that blank template described in the instalab 2a and only changed the max current. 

  • Set the right USER_MOTOR_MAX_CURRENT. The USER_IQ_FULL_SCALE_CURRENT_A  can be between 0.5*USER_ADC_FULL_SCALE_CURRENT_A and 1.0*USER_ADC_FULL_SCALE_CURRENT_A that depends on the hardware kit. You don't need to change the USER_ADC_FULL_SCALE_CURRENT_A and USER_IQ_FULL_SCALE_CURRENT_A   in the example code.

  • Ok so if everything is set correctly, in lab 2a, the shaft on my motor should spin?

  • Yes, please follow the lab guide to set up the kits and run the lab02b to identify the motor parameters. Make sure that the motor is running without load.

  • Ok thank you so much for all your help.  I will try it tonight and let you know the outcome.

  • So I ran lab 2a and the shaft spun around a little and then stopped and it looks like the params were identified.  I followed the instructions of the lab and made the numbers decimal form, but they seem too large.  Are they supposed to be smaller decimal numbers?  Could it be my wiring of the ABC terminal to the motor wires?   I have a red, black, and yellow wire coming from my motor.  

    Motor params:
    gMotorVars.Rs_Ohm  1014137086
    gMotorVars.Lsd_H    822481293
    gMotorVars.Lsq_H    822481293
    gMotorVars.Flux_VpHz  1031975604
    gMotorVars.MagnCurr_A  0

  • 1. Run the lab02a/b/c to identify the motor without load.

    2. As described in the lab guide, import the related monitor variables into the CCS debug window, some of the variables should be IQ24 format, but the variables you mentioned above are floating-point type. Please don't change the number format of these variables to decimal.

  • Oh ok.  I will change them back. 

  • Please let's know if you have any further questions. We'd like to close this thread first. Thanks!

  • Ok let me work on it tonight and let you know if I can run the labs with spinning motors with the right params to verify.  Thanks

  • So I ran lab 2a with motor params set to:

    #if (USER_MOTOR == Nanotech_DB87M01)
    #define USER_MOTOR_TYPE MOTOR_Type_Pm
    #define USER_MOTOR_NUM_POLE_PAIRS (4)
    #define USER_MOTOR_Rr (NULL)
    #define USER_MOTOR_Rs (NULL)
    #define USER_MOTOR_Ls_d (NULL)
    #define USER_MOTOR_Ls_q (NULL)
    #define USER_MOTOR_RATED_FLUX (NULL)
    #define USER_MOTOR_MAGNETIZING_CURRENT (0)
    #define USER_MOTOR_RES_EST_CURRENT (1.0)
    #define USER_MOTOR_IND_EST_CURRENT (-1.0)
    #define USER_MOTOR_MAX_CURRENT (10.77)
    #define USER_MOTOR_FLUX_EST_FREQ_Hz (20.0)

    and everything worked fine.  The motor shaft rotated and all the values got identified.  I changed them back from float to default which they came out to be

    gMotorVars.Rs_Ohm 0.0760275126
    gMotorVars.Lsd_H 0.0037706783
    gMotorVars.Lsq_H 0.0037706783
    gMotorVars.Flux_VpHz 0.0774907768
    gMotorVars.MagnCurr_A  0

    It says in lab2a to record the watch window and put the above variables in for the respective values.  So I put them in so that the user params were

    #if (USER_MOTOR == Nanotech_DB87M01)
    #define USER_MOTOR_TYPE MOTOR_Type_Pm
    #define USER_MOTOR_NUM_POLE_PAIRS (4)
    #define USER_MOTOR_Rr (NULL)
    #define USER_MOTOR_Rs (0.0760275126)
    #define USER_MOTOR_Ls_d (0.0037706783)
    #define USER_MOTOR_Ls_q (0.0037706783)
    #define USER_MOTOR_RATED_FLUX (0.0774907768)
    #define USER_MOTOR_MAGNETIZING_CURRENT (0)
    #define USER_MOTOR_RES_EST_CURRENT (1.0)
    #define USER_MOTOR_IND_EST_CURRENT (-1.0)
    #define USER_MOTOR_MAX_CURRENT (10.77)
    #define USER_MOTOR_FLUX_EST_FREQ_Hz (20.0)

    Then when I go to run lab2b and run it the same as lab 2a, when I come to setting gMotorVars.Flag_enableSys = 1 in the expressions window, it just immediately default back to zero.  I thought this was happening like when I had the max current set to high.   

    The only other warnings that I could see in user_j1.h were for USER_IQ_FULL_SCALE_VOLTAGE_V and the equation below is true
    USER_IQ_FULL_SCALE_VOLTAGE_V > 0.5 * USER_MOTOR_MAX_CURRENT * USER_MOTOR_Ls_d * USER_VOLTAGE_FILTER_POLE_rps.

    So this should not be the cause of the roll over.  And my USER_MOTOR_MAX_CURRENT is set at 10.77 way below the 24.0 of USER_IQ_FULL_SCALE_CURRENT_A.

    So I am not quite sure why this is happening.  

    Am I not supposed to enter the values found into the motor params in the user_j1.h file?

  • So I ran lab 2a with motor params set to:

    #if (USER_MOTOR == Nanotech_DB87M01)
    #define USER_MOTOR_TYPE MOTOR_Type_Pm
    #define USER_MOTOR_NUM_POLE_PAIRS (4)
    #define USER_MOTOR_Rr (NULL)
    #define USER_MOTOR_Rs (NULL)
    #define USER_MOTOR_Ls_d (NULL)
    #define USER_MOTOR_Ls_q (NULL)
    #define USER_MOTOR_RATED_FLUX (NULL)
    #define USER_MOTOR_MAGNETIZING_CURRENT (0)
    #define USER_MOTOR_RES_EST_CURRENT (1.0)
    #define USER_MOTOR_IND_EST_CURRENT (-1.0)
    #define USER_MOTOR_MAX_CURRENT (10.77)
    #define USER_MOTOR_FLUX_EST_FREQ_Hz (20.0)

    and everything worked fine.  The motor shaft rotated and all the values got identified.  I changed them back from float to default which they came out to be

    gMotorVars.Rs_Ohm 0.0760275126
    gMotorVars.Lsd_H 0.0037706783
    gMotorVars.Lsq_H 0.0037706783
    gMotorVars.Flux_VpHz 0.0774907768
    gMotorVars.MagnCurr_A  0

    It says in lab2a to record the watch window and put the above variables in for the respective values.  So I put them in so that the user params were

    #if (USER_MOTOR == Nanotech_DB87M01)
    #define USER_MOTOR_TYPE MOTOR_Type_Pm
    #define USER_MOTOR_NUM_POLE_PAIRS (4)
    #define USER_MOTOR_Rr (NULL)
    #define USER_MOTOR_Rs (0.0760275126)
    #define USER_MOTOR_Ls_d (0.0037706783)
    #define USER_MOTOR_Ls_q (0.0037706783)
    #define USER_MOTOR_RATED_FLUX (0.0774907768)
    #define USER_MOTOR_MAGNETIZING_CURRENT (0)
    #define USER_MOTOR_RES_EST_CURRENT (1.0)
    #define USER_MOTOR_IND_EST_CURRENT (-1.0)
    #define USER_MOTOR_MAX_CURRENT (10.77)
    #define USER_MOTOR_FLUX_EST_FREQ_Hz (20.0)

    Then when I go to run lab2b and run it the same as lab 2a, when I come to setting gMotorVars.Flag_enableSys = 1 in the expressions window, it just immediately default back to zero.  I thought this was happening like when I had the max current set to high.   

    The only other warnings that I could see in user_j1.h were for USER_IQ_FULL_SCALE_VOLTAGE_V and the equation below is true
    USER_IQ_FULL_SCALE_VOLTAGE_V > 0.5 * USER_MOTOR_MAX_CURRENT * USER_MOTOR_Ls_d * USER_VOLTAGE_FILTER_POLE_rps.

    So this should not be the cause of the roll over.  And my USER_MOTOR_MAX_CURRENT is set at 10.77 way below the 24.0 of USER_IQ_FULL_SCALE_CURRENT_A.

    So I am not quite sure why this is happening.  

    Am I not supposed to enter the values found into the motor params in the user_j1.h file?


    lab2a sequence movie:
    drive.google.com/.../view

    lab2b sequence movie:
    drive.google.com/.../view

  • After entering my motor params in the user_mtr_on_j1.h and user_mtr_on_j5.h and running lab 10d I was finally able to run the motor