Author Topic: Can I simply use two (one and a half) DRV8833s to drive a three-phase BLDC?  (Read 2581 times)

0 Members and 1 Guest are viewing this topic.

Offline CircuitBreakerTopic starter

  • Contributor
  • Posts: 10
  • Country: de
The reason for asking is that I can find much cheaper two-phase ICs than three-phase ICs (e.g. DRV8833 vs TMC6300). So even disregarding the second bridge on a second 8833 would still be cheaper than using a single 6300.

Disclaimer: I only want to use the H-bridge part of the driver ICs; I will be using a self-made software driver + MCU to do the PWM controlling and positioning - so no HW speed-control needed of the driver ICs.

Alternatively, an even cheaper IC that only has three H-bridges is also fine, but couldn't find one - perhaps I used the wrong search terms.
 

Offline Kjelt

  • Super Contributor
  • ***
  • Posts: 6460
  • Country: nl
Just use standalone fets then if you are going to write your own software  :-//
That is how the commercial 3 phase drivers also do it. The ones I have seen opened use an TI 320 uC , small levelshifters to quickly drive 6 fets.
Also some protection against back-EMF during braking etc.
However it is not that easy to write the proper software, good luck.
« Last Edit: July 04, 2022, 11:51:57 am by Kjelt »
 

Offline thm_w

  • Super Contributor
  • ***
  • Posts: 6349
  • Country: ca
  • Non-expert
DRV8833 $1.20
11V, 1.5A internal FET 2x

TMC6300 $3.30
11V, 2A internal FET 3x

Normally the TMC stuff has a lot higher markup, often justified with complicated features, although this does not have too many.

If you are looking for dirt cheap options I'm sure you can browse around on LCSC and find something https://www.lcsc.com/products/Motor-Drivers_611.html
Otherwise, how to TIs other options compare on price instead of looking at trinamic?
Profile -> Modify profile -> Look and Layout ->  Don't show users' signatures
 

Online langwadt

  • Super Contributor
  • ***
  • Posts: 4414
  • Country: dk
DRV8833 $1.20
11V, 1.5A internal FET 2x

TMC6300 $3.30
11V, 2A internal FET 3x

Normally the TMC stuff has a lot higher markup, often justified with complicated features, although this does not have too many.

If you are looking for dirt cheap options I'm sure you can browse around on LCSC and find something https://www.lcsc.com/products/Motor-Drivers_611.html
Otherwise, how to TIs other options compare on price instead of looking at trinamic?

DRV8833 is two full bridges so 8 fets
TMC6300 is three half bridges so 6 fets

I don't see why the DRV8833 couldn't be used to drive a three-phase motor


 

Offline thm_w

  • Super Contributor
  • ***
  • Posts: 6349
  • Country: ca
  • Non-expert
Yeah 2 and 3 full bridges.
It can be used, but, like Kjelt says, OP may be misunderestimating the effort needed to implement this in software.

Hall or sensorless?
Volume of production?

Heres one for $1 that does everything, IF you have hall sensors https://www.lcsc.com/product-detail/Motor-Driver-ICs_Hangzhou-Ruimeng-Tech-MS8829_C231941.html
Profile -> Modify profile -> Look and Layout ->  Don't show users' signatures
 

Offline CircuitBreakerTopic starter

  • Contributor
  • Posts: 10
  • Country: de
Thanks for the suggestions.

Couple of remarks:
  • I thought the bridges on 8833 and 6300 are the same? (i.e. not the 6300's bridges being less functional?)
  • Regarding own software: This is a hobby project, in which I will try to achieve haptic control for BLDC motors (with obviously a knob on top of it). So my requirements are quite different from "regular" uses of BLDC: absolute positioning and the feel of adjustable "holding torque".

I have seen people use a certain simpleFOC library, but I'm unsure I'd like to put the effort in removing it from the Arduino-ecosystem (I use STM32). Instead, currently I'm leaning to a new implementation directly in STM32 ecosystem - also as a learning project to understand the concepts of SVM / FOC / etc. better.

Regarding position assessment: I currently plan on either use a hall-effect sensor, or two (90 degrees shifted) endless pot meters (edit: shaftless obviously).

Quote
OP may be misunderestimating the effort needed to implement this in software
Yes, yes, I might... But that's part of the fun, isn't it?
(I must add a disclaimer at this point, that my background is in embedded software, not in electronics. So I'm less daunted by the prospect of writing software, than to get the electronics side of driving BLDCs correctly ;) )

Quote
Heres one for $1 that does everything, IF you have hall sensors https://www.lcsc.com/product-detail/Motor-Driver-ICs_Hangzhou-Ruimeng-Tech-MS8829_C231941.html
Thanks a lot!! These kinds of hints were what I was looking for. If I google "three phase BLDC driver IC", I only can find Renesas hits (a lot), a couple of TI and the Trinamic ones and false hits (2-phase). And they are all much pricier than this example (or two 8833s).
« Last Edit: July 05, 2022, 09:57:02 am by CircuitBreaker »
 

Offline CircuitBreakerTopic starter

  • Contributor
  • Posts: 10
  • Country: de
Oh wait,

Just looked at the 8833 datasheet again, it indeed has 2 bridge pairs, correct? So I can use only AOUT1, AOUT2, BOUT1 and ignore BOUT2 to fully functionally drive a 3-phase BLDC, correct?

If so, I'm even happier :)
 

Online langwadt

  • Super Contributor
  • ***
  • Posts: 4414
  • Country: dk
Oh wait,

Just looked at the 8833 datasheet again, it indeed has 2 bridge pairs, correct? So I can use only AOUT1, AOUT2, BOUT1 and ignore BOUT2 to fully functionally drive a 3-phase BLDC, correct?

If so, I'm even happier :)

afaict, correct
 

Offline thm_w

  • Super Contributor
  • ***
  • Posts: 6349
  • Country: ca
  • Non-expert
If you want to understand the concepts of FOC then yeah, valid reason to do it yourself.

User here is claiming they couldn't get it to work with simpleFOC https://community.simplefoc.com/t/communitys-list-of-tested-off-the-shelf-drivers/345/2
As the logic limits PWM input to A1 or A2 only at a time. So true FOC doesn't seem possible with only one of those.

I'm sure you've seen this project: https://hackaday.com/2022/03/13/haptic-smart-knob-does-several-jobs/ As its using TMC6300, ESP32, and MT6701.

Maybe something like two SC8900, but thats only 5V output, and very small package.
There is probably an option with 3 of a simpler H-bridge IC as well, as there are lots for pennies, its just tough to dig through LCSC's selection.
Profile -> Modify profile -> Look and Layout ->  Don't show users' signatures
 

Offline CircuitBreakerTopic starter

  • Contributor
  • Posts: 10
  • Country: de
Yes, I read the second post mentioned (the first one I hadn't seen though).

I glanced over the FOC library, but I seem to recall that you can only instruct the motor to go to a certain position (or speed) using P(I)D control. But I also would like to have the possibility to keep it in place - just by keeping the current belonging to the current electrical position of the motor.

I don't believe the FOC library provides that fine-grained control. But I could be wrong...

So... Now the happy-hobby-tinkering and -learning starts ;)
« Last Edit: July 06, 2022, 08:14:47 am by CircuitBreaker »
 

Offline thm_w

  • Super Contributor
  • ***
  • Posts: 6349
  • Country: ca
  • Non-expert
PID control, when we are talking about position, is going to mean that the motor will keep itself in place when not moving to a new position.

For SimpleFOC, if you are using an angular sensor then this should be possible, to the degree of accuracy of the sensor. As people are using it for robot arms, etc.
https://docs.simplefoc.com/position_sensors

If you were using only hall sensors, you'll have 6 distinct hall states, so an angular resolution of only 60 or 30 degrees say. Which is not enough for fine positional control.
https://docs.simplefoc.com/hall_sensors
Profile -> Modify profile -> Look and Layout ->  Don't show users' signatures
 

Online langwadt

  • Super Contributor
  • ***
  • Posts: 4414
  • Country: dk
If you want to understand the concepts of FOC then yeah, valid reason to do it yourself.

User here is claiming they couldn't get it to work with simpleFOC https://community.simplefoc.com/t/communitys-list-of-tested-off-the-shelf-drivers/345/2
As the logic limits PWM input to A1 or A2 only at a time. So true FOC doesn't seem possible with only one of those.

yeh, I see it can only do LL,HL,LH,ZZ  - HH is missing so it's not quite as straight forward
 

Offline CircuitBreakerTopic starter

  • Contributor
  • Posts: 10
  • Country: de
With Hall sensor, I mean the kind that measures a rotational position. At least that's what I understood. Something like: https://ams.com/AS5600 . So it would function as a rotational position sensor.

Quote
PID control, when we are talking about position, is going to mean that the motor will keep itself in place when not moving to a new position.

What I understood regarding this is the following:
  • If the motor deviates from the desired position, there will be a force applied proportional to the difference (disregarding the ID components for the moment)
  • If, however, the motor is stationary at its desired location, there will be no force applied

What I want, however, is that when the motor (i.e. "knob") is stationary and I then try to move the knob, I can _immediately_ feel a programmable-adjustable resistance that is constant during turning the knob.

I had hoped to achieve this by enabling a "holding torque" simply by applying a variable amount of the (correct) currents for that specific electrical position the knob is currently in.

Quote
yeh, I see it can only do LL,HL,LH,ZZ  - HH is missing so it's not quite as straight forward

Ah. That _is_ a problem indeed. So I'm gonna have to find an IC that has HH instead of ZZ for that combination. Pity. But thanks for noticing :)

[EDIT] Do I understand correctly, that - as an example - an 8876 would be usable?
In the Datasheet (https://www.ti.com/lit/ds/symlink/drv8876.pdf) I seem to read that you can use it in an "independent H-bridge control mode" - where you can independently select HI / LO / Z per H-bridge...
« Last Edit: July 07, 2022, 10:17:53 am by CircuitBreaker »
 

Offline thm_w

  • Super Contributor
  • ***
  • Posts: 6349
  • Country: ca
  • Non-expert
With Hall sensor, I mean the kind that measures a rotational position. At least that's what I understood. Something like: https://ams.com/AS5600 . So it would function as a rotational position sensor.

Yeah, that one is 12-bit, 4096 steps per rotation. Real world you get less than that due to noise, etc.

Quote
What I understood regarding this is the following:
  • If the motor deviates from the desired position, there will be a force applied proportional to the difference (disregarding the ID components for the moment)
  • If, however, the motor is stationary at its desired location, there will be no force applied

What I want, however, is that when the motor (i.e. "knob") is stationary and I then try to move the knob, I can _immediately_ feel a programmable-adjustable resistance that is constant during turning the knob.

I had hoped to achieve this by enabling a "holding torque" simply by applying a variable amount of the (correct) currents for that specific electrical position the knob is currently in.

There is not holding torque like you have in a stepper motor. You sense the position change then react to that.
A typical stepper might have 1.8 degree step due to large number of poles (100 poles), a BLDC might have 4. If you have the motor in front of you, try shorting two of the phases together and turning it.
"Immediate" is relative, AS5600 sample rate is around 6kHz, you could detect a change in rotation and react within a matter of milliseconds.

If you want the simplicity of: hold at x location, with y current, then use a stepper motor.


For DRV8876 you'd need 2 of those at ~$1.70 each. I don't know enough to say whether that would work or not.
« Last Edit: July 07, 2022, 10:20:14 pm by thm_w »
Profile -> Modify profile -> Look and Layout ->  Don't show users' signatures
 

Offline Siwastaja

  • Super Contributor
  • ***
  • Posts: 8167
  • Country: fi
You would likely want to add current sense (for e.g. FOC). DRV8833's current sense is just for protection and the measurement signal is not available to the user.

Consider doing it with just bootstrap gate drivers (3), discrete N MOSFETs (6), low-side shunts (2) and current sense amplifier IC(s). This gives you the most flexibility (also in PCB routing) and least amount of nasty surprises, for example I remember fighting against a misbehaving TI's DRVxxxx something 3-phase gate driver + current sense chip.
 

Offline CircuitBreakerTopic starter

  • Contributor
  • Posts: 10
  • Country: de
Quote
There is not holding torque like you have in a stepper motor. You sense the position change then react to that.

In understand that everybody does it the way described in the latter part of the quote.
What I don't understand is why you wouldn't have a holding torque if you just continuously apply the (3-way sinusoidal PWM) 'static' current as defined for a particular electrical position. Why wouldn't that hold the motor in place to that specific electrical position as defined by the PWM configuration?
 

Online langwadt

  • Super Contributor
  • ***
  • Posts: 4414
  • Country: dk
Quote
There is not holding torque like you have in a stepper motor. You sense the position change then react to that.

In understand that everybody does it the way described in the latter part of the quote.
What I don't understand is why you wouldn't have a holding torque if you just continuously apply the (3-way sinusoidal PWM) 'static' current as defined for a particular electrical position. Why wouldn't that hold the motor in place to that specific electrical position as defined by the PWM configuration?

the point of FOC is to keep the electric magnetic position 90  degrees to the mechanical magnetic position for max torque
 

Offline thm_w

  • Super Contributor
  • ***
  • Posts: 6349
  • Country: ca
  • Non-expert
I suppose you could calculate the holding torque given that static current. I don't know how to do that, but if its anything like a stepper microstepping, you'll have a miniscule amount of torque away from the poles (full steps).

But as langwadt points out, as soon as you sense a specific deviation in position you'd want FOC to take over and move the electric field.
Sort of a hybrid control system. A lot of the high end servo drives have all of this hybrid control for various purposes, not sure how many of them FOC eliminates the need for.


Found these while looking around, not relevant here though (sensorless only for fans):
https://www.allegromicro.com/en/products/motor-drivers/bldc-drivers/a89301
https://www.allegromicro.com/en/products/motor-drivers/bldc-drivers/amt49406

https://electronics.stackexchange.com/questions/509895/how-to-electrically-brake-a-brushless-motor
Profile -> Modify profile -> Look and Layout ->  Don't show users' signatures
 

Online ConKbot

  • Super Contributor
  • ***
  • Posts: 1382
Cap your maximum commanded torque and you'll have a "springy" knob. Command it to go to where it was 100ms ago constantly (with capped torque), and you'll have a "draggy" knob, where if the user holds it there for 100ms or longer, it stays put. Seems like FOC control would be pretty much ideal for this.
 


Share me

Digg  Facebook  SlashDot  Delicious  Technorati  Twitter  Google  Yahoo
Smf