So I want to develop my own BLDC drives and the knowledge required to pursue this effort. If you are like me, ignorant with regards to this very interesting topic, then you are in luck! Because I plan on deriving all that we need, but in baby steps. So lets go!
The BLDC Motor
First thing we need to understand is that a BLDC is a motor like any other. In this case, a permanent magnet based motor like any other. Well, like any other, except it does not have brushes. As such, it does not have a mechanical means to cause commutation. The brushed DC motor has a mechanical means to achieve said commutation, which is why after applying a voltage it just goes and at a speed directly proportional to the applied voltage. However, on BLDC, applying a voltage does not do much, other than moving the motor to a position and it staying there. But like I said, a BLDC is a motor like any other and as such it needs:
- A revolving magnetic field which fights the developed magnetic field across the electromagnet.
- A means to generate said revolving magnetic field.
The Brushed DC motor has its needs met thanks to the commutator and the brushes. The BLDC has none! So we will need to cause the commutation ourselves. In the BLDC, the commutator is then electronic, which is why we need more complex drivers to move our BLDC. But it does not need to be too hard. In fact, a quick glance at our BLDC shows that there are not that many options…
Here is the motor. In this case, the picture above shows a three phase BLDC. It could have been a single phase BLDC, but that is not even a challenge. Or it could have been a two phase BLDC, but believe it or not that is pretty much a stepper motor! I already know those ones… I want BLDC, baby!
A Y 3 phase motor is kind of a scary thing, but if we assume that only one phase is energized at one time, it becomes easier to digest. Because one phase enabled means 1 current flow. This is extremely easy to achieve by ignoring one of the three legs on the motor (also known as tri-stating, left floating or high impedance) and just energizing the other two. Per example, if I energize legs A and B, I get a current flow from A and B. I could do the same with the other pairs and I get three combinations: AB, BC and CA. However, it is crucial we understand that current could flow in both directions!
Notice on the picture above, I can have a current on AB if I make A HI and B LO, where in this case HI means High Voltage such as VM= 24V, and LO means GND. I can also have the very same current, except that with total opposite flow direction if I make B HI and A LO. Again, if we repeat the same exercise with the other combinations we get a total of 6 possible currents. Iab, Iba, Ibc, Icb, Ica and Iac. That’s it!!! That is all the possible states I can see on my 3 phase BLDC! On a stepper, there are 4 states that I can see with my two phases. On my BLDC, there are 6 states. Just one tinsy bit more complex, but definitely, not the end of the world as we know it.
So what can I do with this? Actually, if I were to utilize the right pattern and sequence the six current flow combinations in the right order, I could step the BLDC motor like if it was a stepper motor. WHAT? Really? As it turns out, both steppers and BLDC are in fact BLDC motors. Except that the stepper is optimized to step, whereas the BLDC does not. If you step a BLDC motor you will get a very coarse motion and a superbly low torque response. Still, it proved to be crucial during my development as it allowed me to understand the Hall Effect Sensor structure. But I am going too fast. Let’s back up and discuss the proper sequence for stepping the BLDC motor as this sequence is actually the exact order we will eventually need to close the loop and properly commutate our motor.
The six currents I just showed you are the only six combinations you will ever see while commutating our 3 phase BLDC. However, the order you see above is not the right one. What we need to do is pass one of the six currents and then change to a subsequent current so that only one of the inductive elements change state. The other inductive element will maintain the current. Why we do this? Because changing the current on both inductive elements would cause too much torque ripple. If you maintain one of the currents while allowing for the other to decay, motion will be soft. But what am I talking about when changing the current across one inductive element while maintaining the other? The following picture makes it clearer. I hope…
Imagine you start with current Iac as I portray on the previous figure. This means current is flowing into inductive element A, then out of inductive element A and into element C, and then out of element C. Element B has been left hanging and un-energized. If we energize B now, there are four possible combinations. We either leave hanging A or C, and we either make B HI or LO. But what we want to do here is leave the current flowing in the same direction on one of the elements A or C. I have chosen the combination in which B is made LO, A is maintained HI and C is switched to high impedance. I could also have selected the state in which C is made LO, A is made high impedance and B is made HI. In either of the two scenarios, only one inductive element would have changed, while the other would have maintained the current flowing in the same direction. I chose the first arbitrarily, but as I will show later, the other option is equally viable and I will then explain why.
- If we continue with the same exercise we find the right sequence. Notice all I am doing is rotating which inductive element is maintained. I started with A, then moved on to B, and then to C. And then repeated a second time, A-B-C, except in this instance I get the other three combinations where the current is flowing in the opposing direction as in the first three steps. And then it all repeats again! Forever and ever, and this tells us something very important… If I keep switching these current combinations in this sequence forever, the motor will move… well FOREVER! This is electronic commutation at its best and this is how we make a 3 phase BLDC move. Well, almost. There are still some elements you must be asking.
- But before I go on, let me point out that we can easily assign a state to each one of these current combinations and if I were to code in a microcontroller some easy app to continuously sequence from state 0 to state 5 on an infinite loop, we would get the motor moving like a stepper. If I change the frequency at which each one of the states are updated, the motor speed would change. This is what I did, and it actually worked, but the motion quality was awful! Like I said, a BLDC is not optimized to step.
- Now, I decided to change my phases so that I obtained a sequence going from state 0 to state 1 and so on. But what if I had chosen the other possible combination in which instead I moved from state 0 to state 5? Would that be bad? Actually, this would be very good as this is precisely how we control motor rotation direction! In other words, if I make a table with the six combinations in this order, and I move up into the table, the motor moves say clockwise. But if I know move down on the table, then the motor must move counterclockwise. So there was not much arbitrary choosing how I was going to modify which inductive element was going to change and which one would stay with the same current direction. Either way, each possible combination would have eventually being used as direction of rotation is a very important aspect of motion control.
- The H Bridge:
- All this theory is gorgeous but I bet you actually want to make the motor move. How can we do this? What is all this business about leaving a winding disconnected while energizing the other two with VM or Ground? In other words, how do I do this?
- Well, this is an electronics commutation motor, so we need some electronics here! I could suggest an H Bridge, but this motor is a little bit weird so an H Bridge will not cut it. What in fact works is three half H-Bridges so that by articulating which two out of the three H Bridges are enabled (and how they are enabled), then a full H Bridge emerges. Let’s take a look at the basics:
What do we have in here? Isn’t this too scary already? Don’t panic. This is simpler than it looks. What we need to do is coordinate which FETs are ON and which FETs are OFF. Only two FETs will be ON at any given time, with the other four remaining OFF. I do realize this already looks like instant hysteria but let me map one familiar scenario so that you see this is not as nightmarish as it seems. But before we go into the next picture let me explain a little bit about these half H Bridges, namely, the BTN7960. I used two of my AE-MDL-BTN7960 modules which have two BTN7960 half H Bridges each. Hence, one of the half H Bridge is sitting unused, which is not mega efficient, but that is why I will be working on a triple BTN7960 version later on. Or maybe some other power stage with three half H Bridges.
On the BTN7960 there are two control signals we need to understand: INHIBIT and IN. INHIBIT specifies whether the H Bridge is enabled or not. If the half H Bridge is enabled (INHIBIT = HI), then IN chooses which FET is enabled. If IN is HI, then the high side FET is enabled. If IN is LO, then the low side FET is enabled. It really can not be any easier. But if INHIBIT is LO, then the half H Bridge is disabled. This pretty much means no FET is conducting, which is in other words our high impedance mode. These give the three states we know we need. VM, GROUND or high impedance. Again, could not be any easier! The result?
I am imagining you recognize State 0 from our previous discourse. I had detailed State 0 as the configuration in which winding A is made HI or VM, winding B is left floating, and winding C is made LO or GND. Notice this is easily achievable if I take BTN7960 half H Bridge A and enable it HI by making INH HI and IN HI. BTN7960 half H Bridge B I want to left floating so INHB is made LO. It does not matter what INB is, as the bridge is disabled anyway. On BTN7960 half H Bridge C I want to connect the C winding to Ground, so INH is still enabled by making it HI, but INC is made LO. This will make a current flow from VM and into winding A, and into ground through winding C. Isn’t this a piece of cake?
All we need to do know is find the combinations for all the INHx and INx pins on a per state basis and WHAMO! Right there we have the commutation control for our BLDC motor. But this post is already getting ridiculously long, so I promise to get back with the goodies on my next one.