Im testing a 3 phase BDLC motor. I have a MCU which takes the position sensors (3 Hall-effect based ones) state and drives the adequate transistors in a full bridge so the motor can spin. The high side transistors of the bridge are PWM modulated. So far, the motor spins, but I've noticed a couple of things that seems abnormal: If I increase the DC link voltage (is a regulable lab suppply) the motor spins faster, but the current also increases. Why isn't the increased BEMF preventing the current from ramping? The same happens when I keep the DC link voltage constant and increase the duty cycle. The motor has no mechanical load attached, but overheats when increasing speed by any of the previous methods. This indicates that not all the excess electric power is being converted to mechanical power. What could be the cause of this?
I'm using an IGBT bridge. The drivers are IR2110, optoisolated from the MCU.
MCU decodes sensor input and outputs which of the transistors should be on. The logic gates are connected between the MCU outputs and the opto inputs and serve 2 purposes:
Modulate the high side gate signals with the only PWM signal, and modulate the low side gate signals in such a way that the loading of the bootstrap capacitor is ensured.
Just to clarify the latter, lets suppose that Q1 and Q4 should be on. Q4 is drived on for the duration of this step. Q1 is on and Q2 is off when the PWM signal is high. Q1 is off and Q2 is on when PWM is low. This gives the bootstrap capacitor some extra juice.
About the motor specs, its a Maxon 351144. Its nominal voltage is 36 V. I've tested with as much as 20 V and less than 50 % duty cycle. Could this be a reason for the high current? Nominal speed: 60 kRPM. No load current: 240 mA. When tested with 10 V and D=35%, it reaches about 6000 RPM, but my supply shows a current of about 0.9 A in the DC link.
In the previous firmware, the MCU was making these combinations:
010 -> A
011 -> B
001 -> C
101 -> D
100 -> E
110 -> F
The stator field was indeed dragging the rotor, but the angle was less than 90°. As far as I know, this is not the most efficient way to make the motor spin.
I changed the stepping sequence to:
010 -> B
011 -> C
001 -> D
101 -> E
100 -> F
110 -> A
so that the angle between the stator field and the rotor is closer to 90°.
Made a test, again DClink= 10 V, D=0.39.
Speed is about 6780 RPM and the supply reports a current of 0.39 A. Current is still high for my liking, but a far cry from the 0.9 A of before. Motor gets a tad warm, but not hot like before.
Update 2: I revised the mcu code and took a fsm like aproach. Current went down about 100 mA. This indicates that I had a problem with cross conduction indeed. Moral of the story: don't try to program a mcu as if you were configurating a fpga. You could fire a transistor before turning off the other in the same leg. However, the thing that made a more significant difference was putting some inductors in series with the motor. For some reason, motor may overheat if the current gets discontinue. As the motor winding inductance is so low, some extra inductance is needed to reduce ripple and stay in continous conduction mode. Still don't have a supply to test with nominal voltage, but at 20 V and fpwm=61 kHz the motor takes as much as 200 mA (at D=100% and ~40 kRPM) with minimal heating. Thanks all for the help! I'll try to post some scope traces whenever I get to use the lab scope.