Control del motor paso a paso hacia adelante y hacia atrás basado en 51 microcomputadoras de un solo chip

Control del motor paso a paso hacia adelante y hacia atrás basado en 51 microcomputadoras de un solo chip

Esta vez, el módulo uln2003 se utiliza para vincular el motor paso a paso;
## El principio de funcionamiento del
motor paso a paso El motor paso a paso es un motor que convierte las señales de pulso eléctrico en el correspondiente desplazamiento angular o desplazamiento lineal. Cada vez que se ingresa una señal de pulso, el rotor gira un ángulo o un paso hacia adelante. El desplazamiento angular de salida o el desplazamiento lineal es proporcional al número de pulsos de entrada y la velocidad es proporcional a la frecuencia del pulso.
Los motores paso a paso tienen muchas formas estructurales y métodos de clasificación. Generalmente, se dividen en tres tipos: tipo de reluctancia, tipo de imán permanente y tipo de imán mixto según el modo de excitación; según el número de fases, se pueden dividir en monofásicos, bifásicos, trifásicos y múltiples iguales. .

Por lo tanto, podemos controlar el nivel del puerto de E / S de la microcomputadora de un solo chip para controlar el motor paso a paso.En este diseño, se adopta el modo de trabajo de cuatro fases de un solo disparo. Cambie tres veces, el campo magnético gira una vez y el rotor gira hacia adelante en un ángulo de inclinación. Por lo tanto, este método de activación se denomina trabajo de cuatro tiempos de cuatro tiempos.

  1. Tabla de códigos de caracteres no firmados del código de avance del motor Z [8] = {0x08,0x0c, 0x04,0x06,0x02,0x03,0x01,0x09};
  2. Tabla de códigos de caracteres sin signo F [8] = {0x09,0x01,0x03,0x02,0x06,0x04,0x0c, 0x08};

el código se muestra a continuación

#include <reg52.h>
#define uint unsigned int 
#define uchar unsigned char
unsigned char code tableZ[8]={
    
    0x08,0x0c,0x04,0x06,0x02,0x03,0x01,0x09};
unsigned char code tableF[8]={
    
    0x09,0x01,0x03,0x02,0x06,0x04,0x0c,0x08};//²½½øµç»úzheng
void delay(unsigned int t);
sbit S3=P3^4; //反转
sbit S4=P3^5; //反停
sbit S5=P3^6; // 正停
//正转写入数据
void  motor_z()
 {
    
     
   unsigned char i,j;
  
      for (i=0; i<8; i++)  
        {
    
    
     if(S5==0){
    
    break;}
     for(j=0;j<8;j++){
    
    
      P1 = tableZ[i]&0x1f;    
          delay(50);
     }
                       
        }
 }
//反转写入数据
void motor_f(){
    
    
 unsigned char i,j;
       for (i=0; i<8; i++)  
        {
    
    
     if(S4==0){
    
    break;}
     for(j=0;j<8;j++){
    
    
      P1 = tableF[i]&0x1f;   
          delay(50);
     }
                    
        }
}
void delay(unsigned int t)//延时函数
{
    
                               
   unsigned int k;
   while(t--)
   {
    
    
     for(k=0; k<60; k++)
     {
    
     }
   }
}

void main()
{
    
    
while(1){
    
    
motor_z();
if(S3 == 0){
    
    
motor_f();
}
}
}

El diagrama de simulación de protel es el siguiente

Inserte la descripción de la imagen aquí

Supongo que te gusta

Origin blog.csdn.net/Lucifer_min/article/details/109248939
Recomendado
Clasificación