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.
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í.
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:
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.
usuario16222
B_Gsy
usuario16222
B_Gsy
phil g
Dmitri Grigoriev