Red de conocimiento informático - Material del sitio web - ¿Cómo utilizar un microcontrolador para controlar un motor paso a paso?

¿Cómo utilizar un microcontrolador para controlar un motor paso a paso?

Primero, echemos un vistazo al principio de cómo un motor paso a paso controla la rotación del motor y asegurémonos de que la sincronización sea clara. Luego, el microcontrolador controla los pines del controlador de acuerdo con la sincronización.

1. Esto. El programa se utiliza para probar el motor paso a paso convencional de 4 fases.

2. Debe usar una tapa de puente o un cable DuPont para conectar el terminal de salida de señal al terminal de entrada de señal del motor paso a paso correspondiente.

3. No es necesario saltar cuando la velocidad es rápida. Es necesario utilizar tapas de cables o cables DuPont para conectar el terminal de salida de señal y el terminal de entrada de señal del motor paso a paso correspondiente.

3. La velocidad no puede se debe ajustar demasiado rápido, de lo contrario no habrá torsión para girar.

4. Presione s4 (configurado en modo de botón independiente) para controlar la rotación hacia adelante y hacia atrás. De lo contrario, no habrá rotación de torsión

4. Presione s4 (establecido en modo de botón independiente) para controlar la rotación hacia adelante y hacia atrás

----------- ---- ----------------------------------*/

#incluir < reg52.h>

bit Flag;//definir los bits de bandera hacia adelante y hacia atrás

código de carácter sin signo F_Rotation[4]={0xf1,0xf2,0xf4,0xf8}; tabla de rotación positiva

código de carácter sin firmar B_Rotation[4]={0xf8, 0xf4,0xf2,0xf1} //tabla inversa

/********** ******** ******************************************* ********* */

/* Función de retardo*/

/************ ****** ************* ************************************* **/

retraso nulo (unsigned int i)//retraso

{

while(--i);

}

/******** **************************************** ************ *******/

/* función principal*/

/******** **************** ******************* ***************** ************/

main()

{

carácter sin firmar i;

EX1=1; //interrupción externa 0 en

IT1 =1; //borde activado

EA=1; //interrupción global en

while( !Flag)

{

P0=0x71;//Mostrar rotación positiva del indicador F

for(i=0;i<4;i++) // 4 fases

{

P1 =F_Rotation[i]; // Genera las fases correspondientes. Puedes cambiar a inversión tú mismo.

Table

Delay(500); //Cambie este parámetro para ajustar la velocidad del motor Cuanto menor sea el número, mayor será la velocidad

}

}

while(Flag)

{

P0=0x7C; //Muestra b para indicar la rotación inversa

for(i=0 ;i& lt ;4;i++) //4 fases

{

P1=B_Rotation[i] //Salida de la fase correspondiente

Delay(500 );/ /Cambiar este parámetro puede ajustar la velocidad del motor, cuanto menor sea el número, mayor será la velocidad

}

}

}

}

/* ************************************* *** *******************************/

/* Función de entrada de interrupción */

/* **************************************** *** ********* ***************/

void ISR_Key(void) interrumpe 2 usando 1

{

Retraso(300 );

Bandera=! Flag; //s3 se activa una vez cuando se presiona y el bit de bandera se invierte

}