ROBO-SHICO-SHICO

ROBO-SHICO-SHICO

sábado, 5 de noviembre de 2011

el dios 555!

el 555 es sin lugar a dudas el integrado mas conocido y mas versatil del planeta
¿pero ke es esta minuscula cajita negra de ocho patitas?
¿cual es su gracias?

el 555 es un circuito multivibrador y se puede encontrar en las tiendas de electronica como un pequeño circuito integrado su encapsulado es dual in line(doble linea)de 8 patitas pero vamos a unn definicion sencilla de multivibrador:

MULTIVIBRADOR: es un circuito electrónico capaz de generar una señal de onda cuadrada a su salida


                                 esta señal a su vez puede ser de 2 tipos:

veamos ahora cada una de sus 8 patitas o pines y la funcion de cada una de ellas

1-MULTIVIBRADOR MONOESTABLE: este funcionamiento conciste en generar una señal accionada por un pulsador conectado entre el pin numero 2 y la tierra o masa el cual genera un cambio de estado a su salida su formula es al siguiente :


    donde R1 y C1 son las resistencias asociadas a este circuito veamos ahora una imagen de la respectiva simulacion en proteus
                                      


2-MULTIVIBRADOR ASTABLE: este conciste en la generacion de una onda cuadrada la cual posee2 estados un alto y un bajo


esto es controlado por las resistencias y condensadores asociados pudiendo seleccionar los tiempos para esta señal como su frecuencia ademas esta señal puede ser fija como variable a la variación de esta señal      

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);
}


usando un pulsador para encender un led usando lenguaje C con un 16f628a

siguiendo con la pekeña leccion anterior ahora usaremos un pulsador para activar nuestro led del proyecto anterior la unica gran diferencia es ke ahora ocuparemos un pulsador y agregaremos nuevas lineas a nuestro codigo usando la sentencia IF y utilizando para ello el pin del puerto A0
el codigo es el siguiente:

//////////////////////////////////////////////////////////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)          //la entarda "input" de PIN_A0 cumple la funcion de                
 {                                         //si el pulsador esta presionado entonces
                                           //ejecuta el sigiente codigo
output_high(pin_b0);           //output_high salida del pin BO en alto "lo enciende"
delay_ms(50);                     //aki va el retardo en milisegundos en el cual el led estara encendido
output_low(pin_b0);            //apago el led con la salida del pin OUTPUT_LOW del pin B0
delay_ms(50);                     //mantengo apagado el led durante 50 milisegundos
                                           //si te fijas amigo mio te daras kuenta ke esto genera una
 }                                       //oscilacion la cual permite el encender y apagar el led
                   


else                                       //ELSE cumple otro codigo si no se cumple IF
{                                          //en este caso mantiene apagado el led si no se a
output_low(pin_b0);            //presionado el pulsador manteniendo la salida en bajo
                                           //OUTPUT_LOW del pin B0
}

}while(true);
}

aki una pekeña iamgen de la simulacion en proteus:

encender un led con 16f628a en lenguaje c

hola amigos en esta oportunidad aprenderemos a programar un pic o microcontrolador en este caso es el 16F628a en CCS() y la finalidad sera encender un led usando el 16f628a con un cierto retardo paso a paso
y para ello necesitamos tener instalado el PROTEUS y el CCS en nuestro computador

antes que nada el pic16f628a aki les dejo un pekeño diagrama sobre sus pines
en esta oportunidad ocuparemos los 2 puertos pero solo un pin de cada uno para encender nuestro led
este sera el pin RA-0 y el RB-0
para ello empezamos con el codigo:

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

// las dobles barras son comentarios no son parte del codigo ni son compiladas siempre y cuando esten en al //misma linea


#include <16f628a.h>              //especifico la libreria del pic en este caso 16f628a
#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()                             //funcion principal
{
set_tris_a(00001);                  //configuramos el puerto A como entrada la darle 1 al primer bit
set_tris_b(00000000);           //configuramos el puerto B como salida al dejar
                                              //el primer bit en 0 pero como vees en este caso los deje todos en 0

do{                                        //aki iniciamos un cilo
output_low(pin_b0);               //la salida del pin-B0 la dejamos en 0 o apagado
delay_ms(50);                       //aki le damos un retardo de 50 milisegundos
output_high(pin_b0);             //la salida del pin-B0al dejamos como 1 o encendido
delay_ms(50);              //nuevamente el mismo retardo de los 50 milisegundos


}while(true);
}



///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
ahora viene la simulacion en proteus he aki una imagen: