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-DRV8304H: 6x PWM Works, 1x PWM Stalls Motor

Part Number: BOOSTXL-DRV8304H
Other Parts Discussed in Thread: MSP430F5529, DRV8304

Hello,

I am trying to drive a Trinamic QBL4208-41-04-006 brushless DC motor. I purchased the DRV8304H Evaluation Module and paired it with the MSP430F5529 Development Kit.

To drive my motor, I followed the steps provided in the DRV8304H EVM User's Guide: I connected the two boards, flashed the "DRV8304_MSP430F5529_Trapezoidal_Sensorless_BLDC" demo application, connected the boards to a BLDC motor and a 12 V power supply, and I ran the GUI. The GUI successfully spins the motor in 6x PWM sensorless mode, but does not work in 1x PWM sensorless mode. In 1x PWM mode, the GUI shows a fault, saying that the motor stalled. When this happens, the motor vibrates but does not spin. From a preliminary analysis, it appears that the motor's vibration occurs while it's in open-loop control, then stops and stalls once it switches into closed-loop control.

I also tried flashing the "DRV8304_MSP430F5529_Trapezoidal_Sensored_BLDC" demo application. For this, I connected the motor's three hall sensor outputs to the J3 header, and connected the hall sensor supply line to the DRV8304H EVM header J5 pin 2 (5 V). Similarly to sensorless mode, 6x PWM sensored spins the motor correctly. I then tried using 1x PWM sensored mode. For this, I shorted INLA to HALLA, INHB to HALLB, and INLB to HALLC, then started the motor. The motor did not spin, and the GUI showed a stall fault. The only difference between 1x PWM sensored and sensorless is that the motor does not vibrate in sensored mode.

I am surprised to be having so much trouble with this, since I am using the TI gate driver, microcontroller, and demo code that are all meant to be used together. The only difference with my setup is the motor and hall sensors. I read about tuning parameters in the GUI to work with particular motors, which I attempted, but was unable to get 1x PWM sensorless/sensored modes to work. Any help would be appreciated!

Thank you,

Cameron

  • Cameron,

    Thanks for posting on the MD forum!

    1xPWM and sensorless is not an option, without sensors there is no way for the DRV to know the position of the rotor so 1X requires hall sensors to be used.

    I am not sure if the MCU/firmware/GUI are working correctly for 1x pwm but here's something you can try:

    Keep the motor and hall sensors plugged into the DRV board, disconnect the MCU board, and connect any known good PWM source (function gen, 555 timer, MCU output) to INHA. Also make sure that the Enable pin is high by tying it to DVDD or similar.

    If all is working you should see the hall states flipping and the motor spinning.

    Regards,

    -Adam

  • Hi Adam,

    Thank you for following up.

    I am confused to see you say that 1x PWM sensorless mode is not an option. If that is the case, then why does the GUI allow me to choose between 6x PWM and 1x PWM modes when I've already selected the option for sensorless firmware? Also, I found this diagram in the DRV8304 datasheet, which seems to show the configurations for 1x PWM sensorless and sensored modes. I even found lines in the TI sensorless demo code that involve 1x PWM. Am I misunderstanding the capabilities of the DRV8304?

    I followed your suggestion of disconnecting the DRV8304H EVM board from the MSP430 board, but I ran into an issue. Once I disconnected the two boards, I tried powering on the DRV board. I figured that nothing would happen, since I left the enable pin floating. However, the motor very quickly overheated and burned out. Did I do something wrong? Is the DRV8304 meant to allow current to flow to the motor coils without a signal on the enable line or INHA?

    Thank you,

    Cameron Sullivan

  • Cameron,

    I do not know the full history or setup of your board but the DRV8304 will not drive the outputs if ENABLE is not HIGH or the inputs are not controlled. Maybe some issue occurred with the setup?

    The only way to do 1XPWM without hall sensors is to "fake" the hall transitions with the MCU like in figure 12 which the EVM is not programmed to do. You would have to program this yourself.

    The GUI does not check if the hardware is configured for the same setting you tell it (6x vs. 1x), it simply does what you have selected. It also doesn't have the provision to fake the hall sensors itself, the 1x mode assumes you have hall sensors connected.

    Regards,

    -Adam

  • Adam,

    Thank you for the clarification on 1x PWM mode.

    I did some more digging into why my motor burnt out. First, based on the DRV8304 functional block diagram, the enable line is internally pulled up, so the driver was enabled when I applied power to it. After realizing this, I checked which control mode it would be in by default. The mode pin is connected to a 47 kohm resistor that is grounded. This means the default mode is 3x PWM mode. I looked at the truth table for 3x PWM mode, then I used a waveform generator to input DC voltages (with the motor disconnected) to verify the truth table. I found a discrepancy.

    Datasheet truth table:

    My truth table based on wavegen inputs and multimeter output measurements:

    As shown in my truth table, when both inputs (INL and INH for any phase) are low, the high-side FET will be turned on, allowing current to flow into the motor. This explains what happened to me in my previous test: I powered on the board with no input signals to INLx or INHx, yet the high-side transistor still turned on, and the high current damaged the motor. Do you know why this is happening? I want to figure this out so I don't burn out another motor when I continue testing 1x PWM sensored mode.

  • Adam,

    It looks like my images didn't upload in my previous message. Here they are:

    Datasheet truth table:

    My truth table:

    Thank you,

    Cameron Sullivan

  • Cameron,

    I am checking the ENABLE pin pull-up with design, our other devices use an internal ENABLE pull-down so this is surprising to see. I'll get back to you this week on this.

    For checking the output status on the High Side, are you measuring differentially from GH to SH? There may be some leakage voltage on GH but when the high-side FET is OFF, the GH is shorted to SH so VGS = 0. In other words you should see the same voltage on GH and SH for the same phase when the high side FET is OFF.

    Regards,

    -Adam

  • Adam,

    Thank you for the details on the high side voltage measurement. I was measuring between GHx and ground, which gave me the incorrect voltages. I took new measurements, and found that none of the FETs were on. This is good. However, I realized that back when I was attempting to test 1x PWM mode, I had shorted HALLA to INLA, HALLB to INHB, and HALLC to INLB (as instructed by the 8304 EVM user guide). I reconnected those lines to replicate my initial test conditions, and found that they caused GHB to go high.

    So I think I can conclude that the motor's demise was caused by me applying hall voltages to PWM input pins in 3x PWM mode, allowing any hall logic high signals to turn on driver FETs.

    This conclusion may have gotten me closer to fixing the original problem: the motor wouldn't spin in 1x PWM sensored mode. After setting the mode to 1x PWM in the GUI, I measured the voltage on the mode pin, and saw that it was 1.55 V, which is the same voltage as when the 8304 board isn't even connected to the MSP430 board. Does 1.55 V correspond to 3x PWM or 1x PWM? It isn't made entirely clear to me by this figure in the datasheet.

    Thank you,

    Cameron

  • Cameron, 

    I cannot comment on DC voltages or DMM readings, those are not really useful here.

    Do you have a logic analyzer or scope you can use?

    Regards,

    -Adam

  • Adam,

    I do have a scope I can use, but I don't see how it helps in this case.

    I am asking if you could give me the DC voltage thresholds for the MODE pin. I want to ensure that the motor driver is being set to 1x PWM mode correctly.

    Thank you,

    Cameron

  • Cameron,

    1.55V corresponds to 3x mode, I would recommend at least 1.8V or 1.9V to ensure 1x mode is selected.

    Regards,

    -Adam

  • Adam,

    Thank you for the suggestion, the motor spins in 1x PWM now!

    To summarize, the problem was that the MSP430 wasn't able to set the mode pin voltage to the correct value. When I selected 1x PWM in the GUI, the GPIO pin on the MSP430 is set to high impedance (according to the firmware). Using a multimeter, I measured the mode pin voltage to be 1.55 V. After getting Adam's advice that at least 1.8 V was required to enter 1x PWM mode, I used an external voltage source to supply 1.9 V to the mode pin. I then enabled the motor driver in 1x PWM mode and it spun correctly.

    I'm not sure why the MSP430 isn't able to set the mode correctly, but I'll keep using an external voltage supply for my tests.

    Thank you again for helping me work through this problem. I really appreciate it!

    Best,

    Cameron

  • Cameron,

    I think I understand the issue now. The GUI is supposed to be setting the MSP430 pin as Hi-Z since it is not controlling the mode pin. The EVM has a 47k ohm resistor to GND which needs to be removed so that the pin can truly be Hi-Z and 1X mode is activated.

    In 6x mode, the MODE pin is likely pulled HIGH by the MSP430 but I haven't confirmed.

    The User's guide should instruct the user to remove that 47k ohm resistor (R19) if using 1x mode.

    Once you remove R19 you should not need any external supply for the MODE pin, it should naturally be Hi-Z and 1x mode.

    Sorry for the trouble, Best Regards,

    -Adam