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.

DRV8304: PWM Signal is not applied to the VGHB

Part Number: DRV8304
Other Parts Discussed in Thread: DRV8308

Hi,

I use the DRV8304 to 1xPWM Mode Asynchronous and I use the following code to change every 500ms between state 1 -> 2 and 2 ->1:

      __HAL_TIM_SET_COMPARE(&htim4,TIM_CHANNEL_1,(uint16_t)900); //INHA PWM Signal ca. 5KHZ
      HAL_GPIO_WritePin(GPIOB,DRV_INLA_Pin, GPIO_PIN_SET); //INLA set High
      HAL_GPIO_WritePin(GPIOB,DRV_INLB_Pin, GPIO_PIN_RESET); //INLB set Low
      HAL_GPIO_TogglePin(GPIOB,DRV_INHB_Pin); //INHB Toggle every 500ms

I applied the Oscilloscope on VGHB and VGHA and on the VHGA is applied the PWM Signal and on the VGHB is not applied a PWM Signal. 

VGHB:

VGHA:

According to datasheet, if I applied the PWM signal on INHA Pin then is available to all VGHx pins. 

Could someone explain me what is going wrong?

King Regards,

Nikos

  • NIkos,

    1xPWM means that you can only provide one PWM input on INHA. It is designed for hall sensor operation.

    INLA, INHB, INLB are for hall inputs or MCU inputs that are syncronized to the motor position. This can be done by connecting the hall sensors to the MCU and then using the MCU outputs to drive the DRV. Another simpler option is to connect the hall sensors directly to the DRV INLA, INHB, INLB pins.

    I would not recommend driving INLA, INHB, or INLB without position feedback from the motor.

    What are you trying to accomplish with this approach?

    Regards,

    -Adam

  • I want to make a sensor-less application, I don't want to use  Hall Sensors. Which mode can I use without hall sensors?

    King Regards,

    Nikos

  • Hi,

    PS: With this approach I wanted only to check that PWM Signal is coming correctly to the Gates. That was only a check.

    King Regards,

    Nikos

  • Nikos,

    You can use any mode (1x/3x/6x) without hall sensors but the easiest would probably be 3x mode. 

    In this mode you control the three high side gates and the low side gates are automatically the complement of each high side.

    Regards,

    -Adam

  • Hi,

    could you please explain me how is working in 3x and 6x the PWM signal? Where I have to apply the PWM? In every Pin?

    Do you have a trick so to be able to use only one PWM Channel? Or I need 3 channels for the high side and 3 channels for the low side if I want a sinusoidal commutation?

    King Regards,

    Nikos

  • Nikos,

    For 3x PWM, you would apply only the high side gate inputs like this:

    Tie INLA/INLB/INLC High and then input your three PWM signals on INHA/INHB/INHC.

    For 6x PWM you will control each high side gate with INHx and each low side gate with INLx, total of six PWM inputs.

    For 1x PWM you will need a motor with hall sensors or a way to sense the motor position and then use the MCU to fake the hall signals into the DRV.

    For sinusoidal you will need to use all 6 inputs and time them yourself using the MCU.

    I would recommend using the DRV8308 if you need sinusoidal control and do not want to program it yourself.

    Regards,

    -Adam