Cómo escribir el programa para motor paso a paso
Nunca he escrito sobre PLC, solo sobre microcomputadoras de un solo chip... Puedes buscar en línea, hay bastantes, lo principal es entenderlas... En cuanto al paso, simplemente le das un Se necesita un paso para mutar la señal, de lo contrario no se llamaría paso a paso... Es decir, lo activas y ejecuta un paso, y solo un paso... ¿Entiendes?
Contenido: 1. Este programa se utiliza para probar el accionamiento convencional de motores paso a paso de 4 fases
2. Es necesario utilizar una tapa de puente o un cable DuPont para conectar la señal. terminal de salida y la señal del motor paso a paso correspondiente Conecte los terminales de entrada
3. La velocidad no se puede ajustar demasiado rápido, de lo contrario no habrá torsión para girar
4. Presione s4 (establezca al modo de botón independiente) para controlar la rotación hacia adelante y hacia atrás
-------------------------------- --------------- -----*/
#include lt; reg52.hgt
bit Bandera; el bit de bandera de avance y retroceso
código de carácter sin firmar F_Rotation[4]={0xf1, 0xf2, 0xf4, 0xf8} //tabla de avance
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
{
mientras(- -i);
}
/********************* *********** **********************************/
/* Función principal*/
/********************************* ********* *************************/
principal()
{
unsigned char i;
EX1=1; //La interrupción externa 0 está activada
IT1=1 //Disparador de borde
EA=1; //Interrupción global
while(!Flag)
{
P0=0x71;
for( i=0; ilt; 4; i ) //4 fases
{
P1=F_Rotation[i]; la fase se puede convertir en una tabla de inversión por sí sola
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 reversión
for(i=0;ilt;4;i) //4 fases
{
P1 =B_Rotation[i]; //Salida de la fase correspondiente
Delay(500); //Cambie este parámetro para ajustar la velocidad del motor. Cuanto menor sea el número, mayor será la velocidad.
}
}
}
/************************ ****** ****************************************/
/* Función de entrada de interrupción*/
/********************************* ********** *******************************/
anular ISR_Key (void) interrumpe 2 usando 1
{
Delay(300);
Flag=!Flag //S3 se presiona una vez para disparar, y el el bit de bandera está invertido
}