0
\$\begingroup\$

I am building a motor controller for a BLDC (w/ Hall sensors) using a Teensy. My circuit looks like the typical application diagram in the datasheet (https://www.intersil.com/content/dam/Intersil/documents/hip4/hip4086-a.pdf):

BLDC motor controller circuit

My micro controller correctly reads in the Hall sensor inputs and can identify which position the rotor is in. My question is, if I want to pull (for example) Phase A high (+), Phase B low (-), and keep Phase C floating, what PWM should I be writing to the pins AHI, ALI, BHI, BLI, CHI, and CLI. I know this is probably clear in the data sheet, but I am having trouble understanding the switching logic of the triple half bridge.

\$\endgroup\$
0
\$\begingroup\$

The schematic you show has the !HI and LO inputs paired together. This means that you only need one signal to drive each phase, but that either the top or bottom FET in each pahse will always be conducting. This is commmon with a sinusoidal drive, where each phase is fed a continuously varying PWM to approximate a sine voltage at the motor terminals, but as you indicate that you want to have one phase floating, I assume you're aiming at a trapezoidal drive - which you can't achieve with that arrangement. You'll need to control all six inputs independently.

For each possible arrangement of Hall sensors, which can be disposed in various ways around the stator, and winding (phase windings can be connected either way into the wye or delta pattern, reversing the physical direction of rotation) there'll be a table of required switchings - this should be available from the motor manufacturer. enter image description here

This is taken from the datasheet for the DRV8307 showing a typical table. Since your HI inputs are inverted, you'll need to invert the signals to them.

The note (1) about synchronous rectification is a bit of a misnomer (that's used in switchmode supplies) but operates the same in inverters - it switches on the FET that would otherwise have current circulating through the body diode, which reduces losses and improves efficiency.

\$\endgroup\$
  • \$\begingroup\$ This is a lot of really helpful information, thanks! I just have a few short questions to really make sure I got this locked down. So for State 1 in your last diagram, Phase U is floating, Phase V is high and Phase W is low, correct? (If so, I know I would have to write Low to Phase V HS to pull it high since my HI is inverted, right?). Also, is altering the PWM signal the preferred method of going about speed control of the BLDC? Or should that be taken care of another way (besides the point here, a quick yes/no/maybe is fine). \$\endgroup\$ – sudo127 Oct 23 '18 at 0:37
  • \$\begingroup\$ All those points are correct. The only means of controlling the speed on a BLDC is to either vary the supply voltage, or to use PWM which effectively does the same thing, but is easier to achieve. Most controllers will incorporate a PI loop to dynamically change the PWM values to regulate speed at a desired setpoint, but open loop works for non-demanding applications. \$\endgroup\$ – Phil G Oct 23 '18 at 14:10
  • \$\begingroup\$ So if I were to use PWM with my IC chip (with inverted HI), a lower PWM at the HI input of the phase pulled HIGH would cause the motor to spin faster than a higher PWM at that same input, correct? Similarly, I would also have to apply a PWM to the LI input of the phase pulled low, right? \$\endgroup\$ – sudo127 Oct 23 '18 at 15:49
  • \$\begingroup\$ You can get away with just applying PWM to one of the sides, and leave the other on for the whole step, or switch both, but that increases both switching losses and the loss across the body diodes during the off period. With charge pump fed high side drivers that use the output swing for operation, it's common to apply the PWM to the high side so that the charge pump cap keeps getting recharged with each switching and doesn't risk falling too low by the end of the step. The non "A" version of this chip appears to have an independent charge pump, so that isn't an issue here. \$\endgroup\$ – Phil G Oct 23 '18 at 15:58
0
\$\begingroup\$

I guess : xLI=0, /xHI=1

enter image description here

enter image description here

You have to use 2 MCU outputs per phase.

\$\endgroup\$
  • \$\begingroup\$ So would xLI=0, xHI=1 pull a phase high? Does that mean the opposite pulls a phase low? I'm still confused. \$\endgroup\$ – sudo127 Oct 22 '18 at 21:49
  • \$\begingroup\$ @sudo127 Yes any other combination will force transitors to conduct, either high or low. You have to put some pull-up resitors on DIS to make sure, that the IC won't operate at the MCU startup, when the IO's are not yet initialized. Also you need a certain dead time between swaping the HI/LO state to avoid cross conduct. \$\endgroup\$ – Marko Buršič Oct 23 '18 at 8:20
  • \$\begingroup\$ @sudo127 So would xLI=0, /xHI=1 pull a phase high? No, the phase will float. \$\endgroup\$ – Marko Buršič Oct 23 '18 at 8:31

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.