¿Cómo utilizar un microcontrolador para controlar un motor paso a paso?
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 p>
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 */ p>
/* **************************************** *** ********* ***************/
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
}