ROBO-SHICO-SHICO

ROBO-SHICO-SHICO

sábado, 5 de noviembre de 2011

Control de un motor Unipolar de Paso a Paso

en esta oportunidad controlaremos un motor paso a paso unipolar usando para ello el 16f628a


//////////////////////////////////////////////////////codigo////////////////////////////////////////////////////////////////////////////////////

#include <16f628a.h>
#fuses XT //especifica ke utilizara un cristal de cuarzo
#fuses PUT  //espera unos milisegundos antes de iniciar
#fuses BROWNOUT //si la tencion no es suficiente para el pic este se reinicia
#use standard_io(b)
#use delay(clock=4000000)//especifica los 4Mhz del cristal de cuarzo

void main()
{
set_tris_a(00001);
set_tris_b(00000000);

do{
         //aki va la nueva seccion de codigo usando IF
if(input(PIN_A0)==1)            
 {                                    
output_high(pin_b0);
delay_ms(50);      
output_low(pin_b0);
delay_ms(50);
//
output_high(pin_b1);
delay_ms(50);
output_low(pin_b1);
delay_ms(50);
//
output_high(pin_b2);
delay_ms(50);
output_low(pin_b2);
delay_ms(50);
//
output_high(pin_b3);
delay_ms(50);
output_low(pin_b3);
delay_ms(50);
 }                  
                   


else                
{                  
output_low(pin_b0);
output_low(pin_b1);
output_low(pin_b2);
output_low(pin_b4);
}

}while(true);
}
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

aki les adjudico uan simulacion en proteus

ahora hagamos algo mas interesante en nuestro proyecto controlemos el sentido del giro en nuestro motor

///////////////////////////////////////////////////codigo/////////////////////////////////////////////////////////

#include <16f628a.h>
#fuses XT //especifica ke utilizara un cristal de cuarzo
#fuses PUT  //espera unos milisegundos antes de iniciar
#fuses BROWNOUT //si la tencion no es suficiente para el pic este se reinicia
#use standard_io(b)
#use delay(clock=4000000)//especifica los 4Mhz del cristal de cuarzo

void main() 
{
set_tris_a(00011);            //fijate aki emos puesto el bit del pin BA1 en 1 esto es para poder aktivar 
                                        //el segundo pulsador ubicado en ese pin
set_tris_b(00000000);       

do{
         //aki va la nueva seccion de codigo usando IF
if(input(PIN_A0)==1)               
 {                                      
output_high(pin_b0); 
delay_ms(50);        
output_low(pin_b0); 
delay_ms(20);
//
output_high(pin_b1);
delay_ms(50);
output_low(pin_b1);
delay_ms(20);
//
output_high(pin_b2);
delay_ms(50);
output_low(pin_b2);
delay_ms(20);
//
output_high(pin_b3);
delay_ms(50);
output_low(pin_b3);
delay_ms(20);
 }                    
                     
  if(input(PIN_A1)==1)               
 {                                      
output_high(pin_b3); 
delay_ms(50);        
output_low(pin_b3); 
delay_ms(20);
//
output_high(pin_b2);
delay_ms(50);
output_low(pin_b2);
delay_ms(20);
//
output_high(pin_b1);
delay_ms(50);
output_low(pin_b1);
delay_ms(20);
//
output_high(pin_b0);
delay_ms(50);
output_low(pin_b0);
delay_ms(20);
 }              
else                  
{                    
output_low(pin_b0); 
output_low(pin_b1);  
output_low(pin_b2); 
output_low(pin_b4); 
}

}while(true);
}


2 comentarios:

  1. lo puedes subir el programa compilado en formato .hex
    gracias de antemano

    ResponderEliminar
  2. como se cual patilla es cual, a la hora de leer la tabla, gracias

    ResponderEliminar