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.

DRV8350H-EVM: Software sensorless tuning issue

Part Number: DRV8350H-EVM
Other Parts Discussed in Thread: DRV8350S-EVM, , DRV8353R, DRV8353

Hello,

For our battery-powered smoke extraction fans, we want to develop a brushless motor driver 1.5KW.

For a new development we want to use the reference DRV8350S.

We plan to start our development work with the DRV8350S-EVM circuit board.

 

I have a problem with the start sequence, we use the firware SLVC755 sensorless withe the board DRV8350S-EVM.

The motor runs correctly without load.

With the load (a propeller for a fan) I can't get the motor to start I have an overcurrent error.

Which parameter is problematic ?

My configuration :

My result with the overcurrent error :

/cfs-file/__key/communityserver-discussions-components-files/38/20221020_5F00_165013.mp4

Thanks.for your help.

  • Hi Julien, 

    Thanks for posting to the e2e motor drivers forum

    I've assigned this thread to a team member, and we'll aim to provide a response next week 

    Best Regards, 
    Andrew 

  • I have a problem with the start sequence, we use the firware SLVC755 sensorless withe the board DRV8350H-EVM.

    The motor runs correctly without load.

    With the load (a propeller for a fan) I can't get the motor to start I have an overcurrent error.

    Hi,

    Currently you used 6-pulse IPD method to find the rotor position, but for driving a fan which freely can rotate either direction, I suggest to use the Align method and set large value to Align_Wait_time for the propeller to settle (try with different value and observe the fan setting time to avoid either too short time leading to wrong position, or too long time which cause overheat the motor or FETs).

    IPD should be used for load that not move freely (e-scooter) or only moves one direction; Align method is a more reliable way for fans, or load that move freely in both direction even with high inertia.

    Regards,

    Brian

  • Hey Julien,

     

    Hope you are doing well!

     

    How did you determine it was an overcurrent fault with the hardware variant?

     

    What VDS over current level is it set at? Have you tried to increase it? Could you provide a waveform of Phase current, nFault and SHx?

     

    Best Regards,

    Akshay

  • Hi,

    I will try this method, I will post the result today or tomorrow.

    Thanks.

  • Hi Akshay,

    At first I use the app DRV8350x EVM.

    it's the application that displays the overcurrent after the start.

    The motor phase current limit is 120A.

  • I saw an improvement without the load with the align method.

    With the load I get the same behavior as on the video of my first post.

    Now my error code on the GUI is acceleration.

    I try to change the values without success :

  • Now my error code on the GUI is acceleration.

    Hi,

    so the motor position detection for commutation is good now, but due to its very high inertia load , it failed to accelerate to the desired setting. For this application you should set the acceleration to low to avoid the said error.

  • Hi,

    As said above, the setting of part open loop acceleration control does not allow me to go into closed loop.

    Here is more detail :

    The result :

    With low acceleration settings I get the overcurrent error.

  • Hey Julien,

    Could you please provide the waveforms I requested earlier.

    Best,

    Akshay

  • Hey Julien,

    Could you also provide a picture of the SPI registers when the fault is triggered? What drive current are you using?

    Best,

    Akshay

  • The result :

    HI Julien,

    I watch the video and have questions:

    1.What is the desired speed for the motor? 4300 and 2300rpm is kind of high for this large fan and are you sure it can reach to 2300rpm?

    2. During the Alignment mode, I saw the fan was not completely settled down then it started accelerating. I would give more time of  Align_Wait_time until the motor completely stopped before it accelerates to the target speed. If not settled down, then the rotor position could be incorrect and motor will run with inefficient power.

    Brian

  • Hi,

    Here a waveform of a phase current before the default overcurrent : (calibre of the probe 10mv/A)

    For the drive current i use this value :

    Thanks.

    Julien.

  • Hi Brian,

    The max desired speed with the load is 2300rpm, it works with another equivalent driver.

    For the align mode i use the max value :

    Julien

  • Also the waveform with the three phases at the same time.

    Julien.

  • Hey Julien,

    Thank you for the additional information. I will aim to provide feedback next week.

    Best,

    Akshay

  • Hi Julien,

    The last video shows the motor was running fairly good before shut down due to fault. I would think at that speed, it is safe to switch from open loop to closed-loop as the speed is high enough for BEMF zero crossing detection. How do you know the fault happened during open or closed loop? Can you read the status indicates open or closed loop control?

    what is the programmed value for START_UP_DUTY_CYCLE? This is the pwm driving the motor phases during open-loop running. Too high can cause over current limit at slow open loop speed.

    For the motor setting, motor poles = 8. Is this 8 pairs or total 8 magnets (4N + 4S)? If 8 magnets then 4 pole pair:

    2300rpm = 38rev/sec; electrical cycles = 38x4 = 152 Hz at 2300rpm. 

    Given: Acc Rate=1Hz/s; Acc_stop=12mHz; Aligment Wait Time=50000 (pwm cycles) = 2s at 25Khz pwm.

    From the video, the motor was not settled during Alignment, so I think you should give more time for Alignment Wait Time by lower pwm = 15Khz instead of 25Kzh, and this will give Alignment wait time to 50000 x 1/15Khz = 3.3sec. The fan is noisy anyway, so 15Khz pwm noise cannot be heard and this also save FETs switching heat loss.

    Can Acc_Rate set to less than 1hz/sec? like 0.1hz/sec for the high inertia fan which needs more time to accelerate. 

    Acc_stop = 12mhz means the control will switch from open loop to close loop when motor speed is 12mhz/4 = 0.003 rev/sec which is very slow and unreliable for detecting BEMF zero crossing. I would set it to 0.5 rev/sec = 0.5 x 4 = 2000mhz. 

    I would also set Acc_velocity_init = 0 for this high inertial motor. 

    Brian

  • You set Motor_Phase_Current_limit = 120, which is not in 120 Amp, but only about 2.7A

    According to formula :I * 0.007 * 5 * 4096 / 3.3 = 120;

    so current I = 2.76A

    Since the board has max current 15A RMS, then I would safely set the limit I = 10A or MPCL = 434.

    Brian

  • Hi Brian,

    Do you think there is an error in the interface ?

    Because the max range allowed current is 120A in the application.

    Julien

  • Hi Brian,

    Thank you for taking time to try to solve my problem.

    I'm not sure that the fault appears when going from open loop to closed loop.

    In the software the start up duty cycle comes from a calculation :

    SensorlessTrapController.Duty_Per_Speed =  (SensorlessTrapController.PWMPeriod / SensorlessTrapController.Hertz_Per_Unit_Volt_Counts);
    CalDutyPerSpeed();                // This inline function calculates the applicable dutycycle based on the input speed using Device used, Motor Rated voltage, Rated speed , Under rating , Applied DC bus voltage
    SensorlessTrapController.Duty_Per_Unit_Speed = (SensorlessTrapController.Duty_Per_Speed / SensorlessTrapController.VCCvoltage);
    SensorlessTrapController.Duty_Per_Unit_Speed = (SensorlessTrapController.Duty_Per_Speed / SensorlessTrapController.VCCvoltage);
    SensorlessTrapController.IQMATH_TEMP_C = _IQ15((SensorlessTrapController.AccelVelocity >> 10));
    SensorlessTrapController.IQMATH_TEMP_B = _IQ15(SensorlessTrapController.Duty_Per_Unit_Speed);
    SensorlessTrapController.IQMATH_TEMP_A = _IQ15mpy(SensorlessTrapController.IQMATH_TEMP_B , SensorlessTrapController.IQMATH_TEMP_C);
    SensorlessTrapController.StartupDutyCycle = _IQ15int(SensorlessTrapController.IQMATH_TEMP_A);

    I have 4 pole pair 8 poles.

    I tested 15khz and 10 khz: I don't get better results.

    The acceleration rate min value is 1.

    The acceleration velocity min value is 1.

    if I increase the parameter Acc_stop I switch to overcurrent.

    I will try the mode with hall effect sensor to see if I get better results...

    Julien.

  • I will try the mode with hall effect sensor to see if I get better results...

    Hi Julien,

    if motor has Hall sensors then it's more reliable to use them for commutation instead of sensor-less, although more 5 wires to be connected. I will read your reply for any new info.

    Brian

  • Do you think there is an error in the interface ?

    The EVM board only output 15A RMS max as spec in the datasheet, and so the GUI menu showing 120A is wrong. 

    Can you try to set the current to 434 based on the formula, to have 10A?

    Brian

  • I'm not sure that the fault appears when going from open loop to closed loop.

    From the your posted video, the motor spun fast enough for it to be in closed-loop already. So I think it shut down due to current limit that you inadvertently set too low - only 2.76A by entering 120.

    Brian

  • Because the max range allowed current is 120A in the application

    Hi Julien,

    Here is the Motor_Phase_current_limit calculationm from the User Manual:

    Brian

  • Hi Brian,

    My fan works with software with hall sensors.
    I will continue my tests in this configuration.

    For information for other users the sensored firmware only works in 1X PWM mode.
    After the tests in mode with hall sensors I would come back to the mode sensorless.

    As you suggest :

    For the sensorless mode I will force the phase current value in the firmware directly.

    After reading the software the GUI value seems not to be readjusted.

    The value of 120 would therefore not be sufficient.

    Julien.

  • My fan works with software with hall sensors.

    Hi Julien,

    It works because using the Hall sensors, or because the phase current was increased more than 120? As I suspected that the setting 120 actually only gave 2.76A.

    If it still failed to work in sensor-less mode with the same phase current (more than 120) then I think it is due to the Align Mode doesn't have enough wait time for the rotor to settle. This is why using PWM at 15Khz will increase the Wait time longer for good alignment.

    Brian

  • Hi Brian,

    It works because i use the hall sensors.

    I haven't changed yet the phase current value.

    For the sensorless mode, I have tested a pwm in 15Khz and it doesn't work.

    Julien.

  • Hi Julien,

    For the sensorless mode, I have tested a pwm in 15Khz and it doesn't work

    15Khz pwm @ 50000 cycles = 3.3 seconds, seems to be long enough for the fan to settle down. Can you post a video during this 3.3 sec Alignment process? It didn't work in sensorless because the Alignment didn't detect the rotor magnets good enough and so the motor was commutated with less efficient and caused high current.

    Brian 

  • All,

    This thread will soon expire due to inactivity, is the issue resolved?

    Regards,

    -Adam

  • Hello, nothing is solved,

    I continue my tests in sensorless mode, I have to modify the hardware on the current measurement part to be able to reach my 2300RPM.

    With the current measurement assembly it is not possible to reach 15ARMS as indicated in the documentation.

    For information the following formula is false.

    For current measurement we have a non-inverting amplifier circuit u_i_phase_adc=((38.3/2)+1)*0.007*I_Phase.

    motor phase current limit = u_i_phase_adc * (4096/3.3).

    A lot of wasted time for documentation not updated.

  • Hey Julien,

    Apologies for the delay.

    The GUI takes current limit in Amperes and has a limit of 120A. However, the EVM is rated for 15 A RMS so we do not recommend setting above 15A to avoid operating above the board's current rating.

    Maybe you can try to limit the duty cycle to 20% to see if it helps avoid overcurrent and then switch to closed loop then increase duty cycle. You could also play around with the accel stop to figure out when would be the best time to switch into closed loop. By increasing this you will stay in open loop longer and get to higher speed and hopefully have higher backEMF.

    Please keep us updated on your test results.

    Best,

    Akshay

  • Hi Akshay,

    As indicated above, I continue to work with the sensor. I will then come back to the sensorless part to test your suggestions.

    In the documentation it is mentioned : up to 15-A RMS drive current.

    Is it current per phase? or the current from the supply? this is not very clear to me.

    After having studied the connectors, the mosfets and the pcb, I don't see why we should limit ourselves to 15A Max per phase if this is the limit imposed.

    Thanks.

    Julien.

  • Hey Julien,

    The 15A is the continuous motor phase current. The board is designed to work under that limit to not violate the design recommendation. There might be some traces or other components that could get damaged if operated at higher current.

    Best,

    Akshay

  • With the current measurement assembly it is not possible to reach 15ARMS as indicated in the documentation.

    For information the following formula is false.

    Hi Julien,

    Why do you say the formula is wrong? I believe the parameter MOTOR_PHASE_CURRENT_LIMIT is not the actually limited current flows in the motor phase, but rather it is the ADC value from the 12bit ADC converter for the current 7m Ohms current sense resistor. So to set the motor phase current limit to 15A, you should write 651 to the MOTOR_PHASE_CURRENT_LIMIT instead.

    Brian 

  • Hi Akshay,

    The GUI takes current limit in Amperes and has a limit of 120A. However, the EVM is rated for 15 A RMS so we do not recommend setting above 15A to avoid operating above the board's current rating.

    In the GUI, I believe the value 120A setting for the MOTOR_PHASE_CURRENT_LIMIT is not the actual motor phase current, but it is the 12bit ADC converter value which is the scaled of the actual phase current. In fact, the GUI is wrong to have the unit "A" assigned to the MOTOR_PHASE_CURRENT_MINIT PARAMETER as this cause confusion. Therefore, 120 is not the max limit the GUI can be set as it can be set higher than 120. I.e. it should be set to 651 in order to have the motor phase current limited to 15A.

    Brian

  • Hi Brian,

    Gain 5 does not correspond to my material. I explain :

    Only DRV8353 and DRV8353R have the internal shunt amplifiers, 5-V/V is the CSA_GAIN parameter for DRV8353.

    My DRV8350S-EVM board only uses external current measurement with a non-inverting amplifier circuit.

    Julien.

  • Hey Julien,

    Please keep us updated on your testing.

    Best,

    Akshay

  • Now my error code on the GUI is acceleration.

    I try to change the values without success :

    Hi Julien,

    So the 8350 driver doesn't have Vsense OCP, and so the sensor-less motor was shut down not due to current limit protection, as the driver doesn't have this feature. So do you know what caused the driver to shut down when running with sensorless mode?

    Brian

  • Hey Akshay,

    Here is an update : to perform my test i have change the R shunt R75, i put a reistor of 0.003.

    I have change this resistor for use my board at 15A RMS without overcurrent default.

    I have tune the I PHASE PARAMETER to arround 40A (13A on the GUI).

    With the resistor of 0.007 pic current pass the software on overcurrent, and does not allow the development board to be used at 15A rms per phase.

    I could also have made a modification to the software, filtering the current peaks, but I preferred to keep the overcurrent fault as it is.

    So I was able to do my tests in sensor mode at 15A rms per phase with my speed at 2300rpm, it works.

    I still have to check the performance, the shape of the phase current seems to me to be non-compliant for a trapezoidal piloting.

    What do you think of this power drop?

    Julien.

  • Hi Brian,

    A parameter adjustment problem. but which one ??

    Certainly the management of the phase current as in the mode with sensor..

    Julien.

  • Anyone know where I can get the DRV8350H-EVM schematic? I'm curious as the 8350 doesn't have the 3 current sense amplifiers and so how does the board sense the motor phase currents. I think the 3 current sense voltages are connected to the MCU adc converter but not so sure. I had search TI and the internet but failed to find one.

    Brian

  • Hey Julien,

    I will consult my team and try to find out why you are seeing these dips.

    best,

    Akshay

  • Hi Brian,

    The design files is here : https://www.ti.com/lit/zip/slvc763.

    The DRV8350H-EVM have only on current sense.

    Julien.

  • Hi Julien,

    For the sensorless mode, I have tested a pwm in 15Khz and it doesn't work.

    I understand you have tested the sensor-less mode with 15Khz and 10Khz pwm to lengthen the Align_Wait_time -- giving the motor longer time to align the rotor to the magnetic field generated by the stator. Did you observe the longer delay time (with lower pwm frequency) before the motor start to turn? As pwm frequency lowered, you should see longer Alignment settling time.

    Brian

  • Hi Akshay & other TI staffs:

    Hey Julien

    The formula below is listed in the DRV835xx-EVM Sensorless Software User's Guide, which is WRONG!!! This has wastes Julien and me (and many other users for sure) a lot of times as we assumed this is the current limit to be set in the GUI, but this formula is for DRV8353 only.

    For DRV 8350x-EVM, the formula should be as followings, as the amplifier gain is G=20 and not 5:

    MOTOR_CURRENT_LIMIT = Amperes * 0.007 * 20 * 4096 / 3.3

    Which means at max u_i_phase_adc value of 4096, the motor current limit is 3.3/(20 * 0.007) = 23.6A

    So TI staffs should update the User's Guide document to add this formula for the DRV8350x boards.

    Brian

  • Hi Julien,

    For current measurement we have a non-inverting amplifier circuit u_i_phase_adc=((38.3/2)+1)*0.007*I_Phase.

    motor phase current limit = u_i_phase_adc * (4096/3.3).

    I noticed your formula is not right; should be  motor_current_limit as it is not just one phase but the total motor current flows through one 0.007 Ohms Rsense.

    motor_current_limit = Ampere  * 0.007 * 20 * 4096 / 3.3;

    Brian

  • Hi Julien,

    Here is an update : to perform my test i have change the R shunt R75, i put a reistor of 0.003.

    I have change this resistor for use my board at 15A RMS without overcurrent default.

    I have tune the I PHASE PARAMETER to arround 40A (13A on the GUI).

    With the resistor of 0.007 pic current pass the software on overcurrent, and does not allow the development board to be used at 15A rms per phase.

    I believe the DRV8350-EVM board has max motor current at 20A, not 15A, based on the document below:

    If you want to set the motor current limit at 15A, the program value should be when using the stock 0.007 Ohms Rsense:

    15A * 0.007 * 20 * 4096/3.3 = 2606 which is the ADC converter output.

    Question: when you enter the current limit value to the GUI, should you enter the ADC converter value or the motor current in ampere? 

    Brian

  • Hey Julien,

    The dip you see is expected in trapezoidal commutation, and is know as torque ripple (happens every 60 degrees). This occurs due to motor switching phases and the motor(inductor) resisting change in current.

    Best,

    Akshay

  • Hi Julien

    Also the waveform with the three phases at the same time.

    The waveforms of the 3 phase voltages should be unipolar -- above Ground. It seems on the scope pic the waveforms shown to have negative voltage. Can you confirm this?

    Brian

  • Hi Brian,

    Yes, I did notice a longer start-up time before the engine started to turn.

    Despite these settings I still can't turn my propeller normally (in sensorless mode).

    Julien.

  • Here are the three phase currents