HDD Motor Spinning

1

Estoy intentando ejecutar un motor hdd usando el siguiente enlace. enlace

En lugar de usar Audrino, estoy usando PIC16F73. Intenté recrear el código en MPLAB pero no pude convertir la función micros() . Por lo tanto, estoy tratando de crear la forma de onda que se muestra en la figura

Pero no pude calcular el período de tiempo correcto para el cambio. He incluido mi código de conmutación.

PORTBbits.RB0 = 1;
   PORTBbits.RB1 = 0;
   PORTBbits.RB2 = 0;
   Delay_x100uS(45);

   PORTBbits.RB0 = 1;
   PORTBbits.RB1 = 1;
   PORTBbits.RB2 = 0;
   Delay_x100uS(15);


    PORTBbits.RB0 = 0;
   PORTBbits.RB1 = 1;
   PORTBbits.RB2 = 0;
     Delay_x100uS(45);

     PORTBbits.RB0 = 0;
   PORTBbits.RB1 = 1;
   PORTBbits.RB2 = 1;
   Delay_x100uS(15);


    PORTBbits.RB0 = 0;
   PORTBbits.RB1 = 0;
   PORTBbits.RB2 = 1;
    Delay_x100uS(45);

     PORTBbits.RB0 = 1;
   PORTBbits.RB1 = 0;
   PORTBbits.RB2 = 1;
   Delay_x100uS(15);

¿Cuál debería ser el tiempo de conmutación correcto?

    

1 respuesta

8

La forma de onda base se puede dividir en 6 puntos, cada punto con el mismo retardo entre ellos. La duración de ese retraso define la velocidad del motor.

Los6puntos,ofasesson:

  1. FaseAALTA
  2. FaseCBAJA
  3. FaseBALTA
  4. FaseABAJA
  5. FaseCALTA
  6. FaseBBAJA

Observaquelasecuenciadefasesserepite,perolasseñalesseinvierten.Básicamenteson3ondascuadradasconuncambiodefasede120°.

Aquíhayotraformadeverlo:comouncírculodivididoen6segmentos,cadasegmentodefineunniveldeseñalcambiado(laseñalcambiaenlasinterfacesdecadasegmento):

Al trabajar alrededor del círculo, el motor gira.

Si tuviera que crear anillos concéntricos para cada una de las tres fases, puede ver mejor cómo, luego, encender y apagar e interactuar entre sí:

Apartirdeahí,puedevercómolastresbobinasAByCubicadasenAalas3:00,Balas7:30yCalas10:30(90°,210°y330°)lainteracciónentreellasforma6ubicacionesdistintas-cuandoAestáenelimán,elimánseponeenA,cuandoBestáenfuncionamiento,estáenB,perocuandoAyBestánenmedio,secolocaamediocaminoentreellos.

Enrealidad,unmotoramenudotendríamúltiplosde3bobinasformandomúltiplosde6puntosalrededordelcírculo,aumentandoeltorque,lasuavidadderotación,etc.

Entonces,sucódigoseríamuchomássimpleenloquerespectaalcambio:

PORTBbits.RB0=1;//Phase1Delay_x100uS(speed);PORTBbuts.RB2=0;//Phase2Delay_x100uS(speed);PORTBbuts.RB1=1;//Phase3Delay_x100uS(speed);PORTBbits.RB0=0;//Phase4Delay_x100uS(speed);PORTBbuts.RB2=1;//Phase5Delay_x100uS(speed);PORTBbuts.RB1=0;//Phase6Delay_x100uS(speed);

¿Quévalordebeser"velocidad"? Como he dicho, eso define la velocidad de rotación del motor. Yo sugeriría comenzar con un valor alto para que el motor arranque lento, luego disminuirlo gradualmente, acelerando así el motor a una velocidad más alta. ¿Tal vez vincular el valor a una entrada analógica y usar un potenciómetro para ajustar la velocidad?

    
respondido por el Majenko

Lea otras preguntas en las etiquetas