disco duro BLDC motor

No puedo averiguar cuál es el problema con mi configuración para controlar un motor BLDC de disco duro de 2,5". Tengo un disco duro de 3 polos de 2,5" conectado al siguiente circuito de accionamiento, pero el motor no gira.

esquemático

simular este circuito : esquema creado con CircuitLab

Estoy usando un registro de desplazamiento de hundimiento actual para controlar los MOSFET, por lo que deben levantarse de forma predeterminada. El controlador del motor parece estar funcionando correctamente, el código arduino es simplemente

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);
}

todo parece estar funcionando, no tengo un osciloscopio, así que no puedo verificar las formas de onda de salida a lo largo del tiempo, pero la salida del controlador parece funcionar correctamente cuando pruebo cada fase que se muestra en el código.

¿Hay algo notoriamente mal?

Revisé otras respuestas y parecen estar de acuerdo con la configuración que tengo aquí.

¿Qué te hace pensar que algo anda mal? dices que todo "funciona correctamente"
el motor no está girando, lo siento, ¡me olvidé por completo de agregar eso!
correcto... esa es una observación bastante crítica... Entonces, Pregunta 1: ¿tiene la intención de ejecutar este ciclo abierto ya que no parece haber ninguna información zonal? Pregunta 2: parece que está encendiendo tres dispositivos a la vez, BLDC necesita dos patas conectadas y estos dos dispositivos. Pregunta 3: su pullup en el ntype hará que estos estén ACTIVADOS por defecto, ¿es esto lo que quiere?
1) sí, solo quiero que sea de circuito abierto, no necesito control de velocidad. 2) combinando las preguntas 2 y 3, sí, necesito que se levante, ya que estoy usando un registro de desplazamiento de hundimiento actual para controlar los mosfets. en cuanto a encender 3 dispositivos a la vez, solo debe haber 2 transistores encendidos por fase. por ejemplo AB: Leg-A PMOS: activado NMOS: desactivado, Leg-B PMOS: desactivado NMOS: activado, Leg-C PMOS: desactivado NMOS: desactivado
¿Puede indicar qué pines Arduino están conectados a qué FET?
Creo que indicaste el valor de resistencia incorrecto en R10, R11, R14 y R15.

Respuestas (2)

Lo primero que haría sería probar la conmutación, debería poder encender un polo a la vez y hacer que el motor gire a esa posición (o simplemente medir el voltaje en el motor). Un osciloscopio sería muy útil para asegurarse de que su forma de onda funcione correctamente.

Debería ver algo como esto:

ingrese la descripción de la imagen aquíFuente: https://www.instructables.com/id/BLDC-Motor-Control-with-Arduino-salvaged-HD-motor/

Asegúrese de que no haya carga en el motor (estos motores no tienen cargas de torsión muy altas)

Es posible que deba aumentar la velocidad del motor para que gire desde un punto muerto.

Otra cosa que podría intentar es ejecutar su código y luego girar el motor a mano para ver si puede hacer que arranque.

Con los motores BLDC y la conmutación de bucle abierto, no puede conmutar inmediatamente a las RPM que desee. Si las RPM del campo de su estator son mucho mayores que las RPM de su rotor, entonces el rotor nunca "alcanzará" las RPM del estator. Llamaríamos a esto "deslizamiento" en el mundo de los motores de CA.

Pero este es el mundo BLDC, y las cosas son diferentes. Debemos conmutar sincrónicamente, o el sistema no funcionará.

La solución aquí es rampa o arranque suave del motor. No conmute inmediatamente su estator a 5000 rpm (por ejemplo). Primero debe aumentar las rpm de 0 a 5000 rpm en algún intervalo que funcione bien para su sistema. Esto le da al rotor la oportunidad de "alcanzar" el campo del estator antes de cambiarlo nuevamente.

Un síntoma obvio de una conmutación fuera de fase es un zumbido. Me pregunto si escucha algún ruido cuando intenta hacer funcionar su motor o no.