I can't work out what the issue with my setup to control a 2.5" hard drive BLDC motor is. I have a 3 pole 2.5" hard drive connected to the following drive circuit, but the motor isn't spinning.
simulate this circuit – Schematic created using CircuitLab
I'm using a current sinking shift register to drive the MOSFETs so they need to be pulled up by default. The motor driver seems to be working correctly, the arduino code is simply
static uint8_t motorVectors[6] = { 0b100100, 0b100001, 0b001001, 0b011000,
0b010010, 0b000110};
int vectorPos;
void setup() {
Serial.begin(9600);
for(int x=2; x<8;x++){
pinMode(x,OUTPUT);
}
}
void loop() {
//AB
digitalWrite(2, 0);
digitalWrite(3, 0);
digitalWrite(4, 1);
digitalWrite(5, 1);
digitalWrite(6, 1);
digitalWrite(7, 0);
Serial.println("AB");
delay(10);
//AC
digitalWrite(2, 0);
digitalWrite(3, 0);
digitalWrite(4, 1);
digitalWrite(5, 0);
digitalWrite(6, 1);
digitalWrite(7, 1);
Serial.println("AC");
delay(10);
//BC
digitalWrite(2, 1);
digitalWrite(3, 0);
digitalWrite(4, 0);
digitalWrite(5, 0);
digitalWrite(6, 1);
digitalWrite(7, 1);
Serial.println("BC");
delay(10);
//BA
digitalWrite(2, 1);
digitalWrite(3, 1);
digitalWrite(4, 0);
digitalWrite(5, 0);
digitalWrite(6, 1);
digitalWrite(7, 0);
Serial.println("BA");
delay(10);
//CA
digitalWrite(2, 1);
digitalWrite(3, 1);
digitalWrite(4, 1);
digitalWrite(5, 0);
digitalWrite(6, 0);
digitalWrite(7, 0);
Serial.println("CA");
delay(10);
//CB
digitalWrite(2, 1);
digitalWrite(3, 0);
digitalWrite(4, 1);
digitalWrite(5, 1);
digitalWrite(6, 0);
digitalWrite(7, 0);
Serial.println("CB");
delay(10);
}
all seems to be working, I don't have an oscilloscope so I cant check the output waveforms over time but the output of the driver seems to be working correctly when I test each phase shown in the code.
I there anything glaringly wrong?
I have checked other answers and they seem to agree with the setup I have here.