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.

TIDA-01485: Sleep Mode

Part Number: TIDA-01485
Other Parts Discussed in Thread: DRV8323, MSP430F5132

Hello,

I am trying to modify the reference design code such that the motor will freewheel (DRV8323 Sleep Mode), after the motor stops. Disable works after the initial run, but enable does not work on the second attempt to run. Can you tell me what I a doing wrong?

      while(1)

        {
            cycle_count++;

            //Enable low for sleep mode

            if (SPEED_REF == 0) {
                if (RUNNING == 1) {
                    PJOUT &= ~BIT5;  //Disable DRV8323
                    _delay_cycles(2500);   //100 us delay
                    RUNNING = 0;
                    DEBUG("Disabling driver\r\n");
                }
            }
           
            else
            {
                if (RUNNING == 0) {
                    PJOUT |= BIT5;
                    _delay_cycles(250);   //10 us delay
                    RUNNING = 1;
                    DEBUG("Enabling driver\r\n");
                }
            }

  • Hi,
    When you ENABLE the gate driver for the second time, please check whether you are getting any FAULT signal. This can be checked by probing the FAULT pin of DRV8323. If so I would suggest you to toggle the ENABLE pin before every ENABLE high operation. This is to reset any fault during start up transient and you need to toggle the ENABLE pin for a time of tRST(Rest pulse time - Refer the datasheet). This can be done by keeping ENABLE pin high for a period sufficiently more than tWAKE, then bring ENABLE to low for a period of tRST and then to high. Please look at the timing specifications tRST, tWAKE and tSLEEP from datasheet.
    Also note that when the device goes to sleep mode, all the gate drivers will be disabled and the diodes will be conducting and motor energy goes to DC bus capacitors

    Regards,
    Manu
  • Hello Manu,
    Thank you for getting back to me. I have tried everything I can think of to try to enable and disable, but I have not had much luck. Here are the details...

    (1) MSP430F5132 clock = 25 MHz
    (2) tRST = 8 - 40 us
    (3) tWAKE = tSLEEP = 1ms
    (4) The motor spins with an initial SPEED_REF value.
    (5) Enable pin set low when SPEED_REF == 0 @L5.
    (6) There is no FAULT when motor stops with SPEED_REF == 0 and ENABLE == 0 after initial start.
    (7) ENABLE remains low until a new SPEED_REF is received. There is no FAULT during this time.
    In your response above you suggested initiating a reset on the enable pin before setting enable high.
    There is no error at this point in time.
    (8) ENABLE is set high when a new SPEED_REF > 0 is received @L15. This generates a FAULT which is verified by commenting out lines 20 - 28. Adding lines 20 - 28 back in results in high on fault pin. However the motor does not rotate. The motor free pins by hand just as though it is disabled.


    L1 while(1)
    L2 {

    L3 if (SPEED_REF == 0) {
    L4 if (RUNNING == 1) {
    L5 PJOUT &= ~BIT5;
    L6 _delay_cycles(30000); //1200 us delay
    L7 RUNNING = 0;
    L8 CurrentDutyCycle = MIN_DUTYCYCLE;
    L9 }
    L10 }
    L11 else
    L12 {
    L13 if (RUNNING == 0) {
    L14 PJOUT |= BIT5;
    L15 _delay_cycles(30000); //1200 us delay
    L16 CurrentDutyCycle = MIN_DUTYCYCLE;
    L17 RUNNING = 1;
    L18 }
    L19 }
    L20 if ((PJIN & BIT4) == 0) {
    L21 PJOUT |= BIT5;
    L22 _delay_cycles(30000); //1200 us delay
    L23 PJOUT &= ~BIT5;
    L24 _delay_cycles(250); //10 us delay
    L25 PJOUT |= BIT5;
    L26 _delay_cycles(30000); //1200 us delay
    L27 DEBUG("Resetting Fault\r\n");
    L28 }
  • Manu,
    After more investigation, it appears as though the real problem is that the MSP430 program is halting when the ENABLE out pin goes low. I am not sure if disabling the DRV8323 is somehow causing some sort of power dip or something like that. I am actually using the 40 pin DRV8323 without the buck converter. The motor starts and stops repeatedly if I comment out all of the DRV enabling/disabling code above. The only problem is that the motor has a braking effect in the stopped state.

  • Hi,
    I think you need check whether the 3.3 V power supply to the MCU is stable when ENABLE goes low. Use an oscilloscope and probe the power supply to MCU. Also check the status of RST pin of MCU, for any voltage noise pick up.

    When the ENABLE goes low all the MOSFETs turn off and you may see the DC bus voltage going high due to regeneration.

    Regards,
    Manu
  • Thank you. I will check it although I am not sure how I would overcome it if this is what is happening.

    I've been thinking about your earlier comment about the back EMF discharging through the caps when the driver is disabled and the motor is freewheeling. I am thinking about adding a 3 pole relay in series with the 3 phase motor connections and using the relay coil to break the connection to the motor instead of disabling the driver. This would also prevent back EMF from discharging through the caps. Do you see any problems with this?

  • Hello Manu,
    There is a acoustic noise comping from the motor when an initial SPEED_REF is given from a stopped position. The noise sounds something like air flow. The motor will eventually start on its own without assistance after a 3 to 5 seconds. There is no noise once the motors starts. I have tries altering the iDrive and TDRIVE settings, but this seems to have no effect. There is no noise once the motors starts. Can you please tell me what might be causing this noise?

    Thank you

  • Manu,
    I sorted out the problem with the start up delay and noise.

    Thank you.
  • Thanks. Good to know that it is resolved.