I need to drive a small BLDC motor and to control it I'm using an Allegro Microsystems A4964 in SPI mode, but the motor doesn't spin. During the "Ramp" step of the startup sequence, the motor only vibrates without spinning. Why doesn't it spin?
I just noted that when I try to run the motor there are ±400 mV spikes across the sense resitor, and the IC reports a current limit error. The motor doesn't spin even if I bypass the sense resistor.
This is the schematic (I am working on a breadboard):
- Not connected pins are marked with "NC" label
- Connections from the 3-phase H-bridge to the IC are made with labels
- Q3 to Q8 are IRLZ44N N-MOSFETs
Breadboard connections with notes:
The motor phases are connected to SA, SB, and SC. The motor is a small 23000 Kv 0802SE BetaFPV motor, which is powered by a 4 V (VMOT) power supply and the A4964 is powered by a 6 V power supply.
Register settings that I've edited (settings not listed are set to their default value):
- System register (25): CM[1:0] = 11, open-loop mode
- Mask register (28): VO = 1 (The chip reports a VDS overvoltage on the C high-side MOSFET and sometimes on other MOSFETs, but it doesn't seem that a VDS overvoltage is actually present)
- Demand input (30) : 50% Duty Cycle
- I also tried to lower SF1 to 1.5 Hz, but it only made the vibration stronger and more visible.
This is the waveform that I get during the "ramp" step (Yellow = A, Magenta = B, Cyan = C, probes are in 10x mode, measuring voltage on Sx outputs):