DRV8316: Running the DRV8316 with a sensorless sinusoidal input

Part Number: DRV8316

Tool/software:

Hi!
I have a working example I wish to replicate using the DRV8316. In my working example, I use an ST L6234 as the driver for my BLDC motor.
I set the 3 EN pins to high, and input 3 sinusoidal waveform into the IN pins, where each one is phase shifted by 120 deg from the next. The Block diagram of the L6234 can be seen below, where all of this makes sense.

My ENx lines and INx lines follow these graphs, and I use the frequency of the sin waves to change the frequency of the motor.

I want to replicate this type of motor driving with the DRV8316, but I'm not able to get it to work properly. Specifically, I can drive my BLDC very very slowly and smoothly using the L6234. Running as low as 0.5 RPM works without issues.
I've set the DRV8316  to 3PWM mode, so I will be able to drive it with 3 PWM inputs, but the best I've been able to achive is to:
1. The motor will not rotate if starting the PWM at low frequencies (matching low speeds). I first need to set the input PWM frequency high, get the motor to start rotating and only then will it rotate slowly.
2. The movement is very choppy and not smooth.

I should mention that my use case is a BLDC at very low speeds, very light load, and without any change in load during rotation.

Could you tell me how I could replicate the working mode of the L6234 using the DRV8316?

  • Hey Asaf,

    It seems like in the L6234 you are using the ENx pins as an enable pin while using the other INx pins to control the PWM. 

    You can you the 3x PWM mode of DRV8316 to achieve a similar commutaion.

    Please check the table below and the DS for more info on 3x mode commutation.

    INLx is used as enable and INHx is used to switch H or L.

    Best,
    Akshay

  • Hi Akshay!
    Thank you for the answer!
    This is indeed what I have done, however it does not work well. There must be some difference between the DRV8316 default setup and the L6234 which I am unaware of.

    Here is what I've been able to do so far:

    I've set the DRV8316  to 3PWM mode via SPI, so I will be able to drive it with 3 PWM inputs.
    I've set my INLx pins to high, as instructed in the data sheet.
    I've made sure my DRVpin is low, which isn't likely the problem because depending on the frequency of inputs I can get the motor to spin in high speeds.
    I'm continually reading my status registers to monitor for faults.

    The issues are:
    1. The motor will not rotate if starting the PWM at low frequencies (matching low speeds). I first need to set the input PWM frequency high, get the motor to start rotating and only then will it rotate slowly.
    2. The movement is choppy and not smooth.

    So, I have two questions please:
    1. Is there anything you can think of which can resolve/improve point 2? I could manage point 1 somehow but my rotation must be smooth once I start rotating. Perhaps The active demagnetization will somehow improve smoothness?

    2. I'm a bit confused as to the role of commutation when inputting a sinusoidal wave into the Inx pins (using a PWM). Since the sin waves are constantly input, shouldn't all phases remain active 100% of the time? What is there to commutat then? The DS also states that for a 3PWM drive, INLx pins should be tied high, meaning they are never driven low.

    If there is still a need to comutate the input waveform, wouldn't the driver be responsible for that?

    Thanks!

  • Hey Asaf,

    1) Could you send me a waveform of your  OUTx signals and phase current during commutation? 

    Active demag would help with reducing diode losses, not ssure if it would help much with making it less choppy.

    Would recommend looking into increasing Slew rate and trying out delay compensation (helps reduce prop delay and helps reduce duty cycle distortion respectively)

    2) The sine waves are offset from each other for each phase. 

    INLX can be left high if you do not wish to hi-z the output.

    We have an integrated control portfolio if you are not interested in handling the input commutation but would rather have the device handle it (MCT8316, MCF8316 (trap vs foc)

    Best,
    Akshay