Electronic – BLDC speed/torque control with L6229 or L6235

brushless-dc-motorcontrolmotorspeedtorque

I'm trying to control 12V 12,000 rpm BLDC motor with 3×120° Hall sensors
using ST evaluation board based on L6229 IC.

I tried to control motor's speed by feeding PWM to FWD/REV pin as suggested in the design note.

When PWM = 0 motor spins in one direction at full speed, 255 – opposite direction full speed. Coming closer to PWM 128 – speed proportionally reduces till zero as expected, but TORQUE ALSO DROPS DRASTICALLY…

Also tried to feed different control voltages to Vref pin, but can't notice any differences in motor behavior.

I need constantly slow-down/speed-up motor's speed and keep acceptable torque on slow speeds (motor most of the time will work on 1/3 of top speed).

And BLDC motor in theory have bigger torque on slower rpms. But I can't achieve it. Maybe someone can help me wit this or recommend easy/cheap driver better suitable for this task?


L6229 datasheet:

And there is eval board schematics: enter image description here:


And also attaching motor curves:
enter image description here

Best Answer

First of all, Vref on the chip controls maximum power = maximum torque. When S1 on eval board is in TRQ mode, then VREF pin on CN4 is connected directly to Vref of the drived. In this mode, it will have very little effect if the motor is unloaded.

In order to control the speed of the motor while maintaining the torque you will need to wrap the whole thing into a control loop -- something measures motor speed, and changes power to motor correspondingly.

For the best performance, you will want to do it per-phase basis, delaying control inputs if speed is exceeded. However, this is quite involved, so I would instead use manufacturer-recommended analog way (see section 9, 'Tachometer'). This is already assembled for you on the eval board -- set S1 to SPEED mode, and VREF should vary motor voltage smoothly between 0 and max speed.