Red de conocimiento informático - Conocimiento de la instalación - Cómo escribir el programa para motor paso a paso

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

}