Programa utilizado: CCS Compiler Control de velocidad para un Motor Paso a Paso para el PIC 16f877a #include <16F877A.h> #device adc=8 #FUSES NOWDT, RC, PUT, NOPROTECT,NODEBUG, NOBROWNOUT, NOLVP, NOCPD, NOWRT #use delay(clock=20000000) #org 0x1f00,0x1fff{} #build (reset=0x04) #use rs232(baud=9600,parity=N,xmit=PIN_C6,rcv=PIN_C7,bits=8) #define t1 delay_ms(200); #include //#device ICD=TRUE //#fuses HS,NOWDT,NOPROTECT,NOLVP //#use delay(clock=20000000) //#use rs232(baud=9600,parity=N,xmit=PIN_C6,rcv=PIN_C7,bits=8) #use FAST_IO(B) #use FAST_IO(C) #byte FASES= 0x06 int velocidad=300; void GiroDerecha(){ output_b (0x30); //paso 1 delay_ms(velocidad); output_b (0x60); //paso 2 delay_ms(velocidad); output_b (0xc0); //paso 3 delay_ms(velocidad); output_b (0x90); // paso 4 delay_ms(velocidad); } void GiroIzquierda(){ FASES=0b001100; //paso 1 delay_ms(velocidad); FASES=0b001001; //paso 2 delay_ms(velocidad); FASES=0b000011; //paso 3 delay_ms(velocidad); FASES=0b001100; // paso 4 delay_ms(velocidad); } void main(void) { char valor=0; SET_TRIS_B(0x00); while(TRUE){ if(kbhit()) valor=getc(); switch (valor){ case 'a'://motor parado FASES=0b000000; break; case 'b': //Marcha Manual Lenta Izquierda velocidad=10; GiroIzquierda(); break; case 'c': //Motor parado FASES=0b000000; break; case 'd': //Marcha manual rápida izquierda velocidad=3; GiroIzquierda(); break; case 'e': //Motor parado FASES=0b000000; break; case 'f': //Marcha manual lenta derecha velocidad=10; GiroDerecha(); break; case 'g': //Motor parado FASES=0b000000; break; case 'h': //Marcha manual rápida derecha velocidad=3; GiroDerecha(); break; case 'A': //Marcha Automática lenta izquierda velocidad=10; GiroIzquierda(); break; case 'B': //Marcha Automática lenta izquierda velocidad=10; GiroIzquierda(); break; case 'C': //Marcha Automática rápida izquierda velocidad=3; GiroIzquierda(); break; case 'D': //Marcha Automática rápida izquierda velocidad=3; GiroIzquierda(); break; case 'E': //Marcha automática lenta derecha velocidad=10; GiroDerecha(); break; case 'F': //Marcha automática lenta derecha velocidad=10; GiroDerecha(); break; case 'G': //Marcha automática rápida derecha velocidad=3; GiroDerecha(); break; case 'H': //Marcha automática rápida derecha velocidad=3; GiroDerecha(); break; case 'n': break; default: velocidad=15; break; } } }
Control de velocidad Motor Paso a Paso PIC 16f877a
Datos archivados del Taringa! original
0puntos
0visitas
0comentarios
Actividad nueva en Posteamelo
0puntos
4visitas
0comentarios
Dar puntos: