AMIGOS

Hacemos toda clase de trabajos con microcontroladores PIC, comunicarse a proyectoselectronicos_@hotmail.com.

Vendo grabadores de PIC puerto serial con zocalo ZIF a 35 soles, este precio no incluye el envio a todo el Peru.

domingo, 29 de mayo de 2011

FRECUENCIMETRO con LCD

Haremos el famoso frecuencimetro con un pic16f628a y un LCD para visualizar los datos medidos, la instruccion usada es COUNT o contar pulsos en español.
LA DECLARACIÓN COUNT. Sirve para contar el número de pulsos que ingresan por un pin en un determinado tiempo, este a su vez lo guarda en una variable para su posterior procesamiento, la manera de utilizarlo es la siguiente:
        COUNT portb.1,1000,cuenta                                   
Lo interpretamos así: cuenta pulsos a través del puerto B1 en un período de 1000 milisegundos y lo guarda en la variable previamente creada llamada cuenta, el período podemos variarlo de 1 a 65535.
EL  CIRCUITO: 


;EL PROGRAMA

CMCON = 7                                                ;
Puerto A con  In/out  digitales    

Define LCD_DREG PORTB                      ;Rb4-Rb7 conectados
Define LCD_DBIT 4                                   ;al  lcd  D4-D7                             
Define LCD_RSREG PORTA
Define LCD_RSBIT 0                                 ;
Rs del lcd conectado a Ra0
Define LCD_EREG PORTA
Define LCD_EBIT 2                                    ;
E del lcd conectado a  Ra2

cuenta VAR WORD                                    ;variable CUENTA,  de  0  a  65535

inicio:
COUNT portb.0,1000,cuenta                          ;
contar pulsos en el puerto B.0
LCDOUT $FE, 1                                               ;limpiar pantalla LCD
LCDOUT $FE,$82,"Frecuencia:"                   ;cursor centrado en 1era línea
LCDOUT $FE,$C5, DEC cuenta," Hertz"      ;2da línea  sacar el valor
GOTO inicio                                                    ;decimal de la variable cuenta
end

Aqui esta al archivo HEX. lo bajan de este link:
http://www.4shared.com/file/LmBUs1Il/frecuencimetro.html
Para  probar este ckto podriamos implementar un astable con el LM555 y conectar su salida  a la entrada RB0 del pic16f628a, pero ojo, alimentar  solo con 5 voltios DC ambos circuitos.





viernes, 22 de abril de 2011

INVERSION GIRO DE MOTOR dc

En este ejemplo haremos uso de la instruccion IF...THEN, en forma anidada para lo cual empleamos 3 pulsadores normalmente cerrados conectados a tierra y estan  colocados en Rb7, Rb6 y Rb5 que serviran como PARADA, giro IQUERDA y giro DERECHA , el motor DC con un driver de  puente H a base de transistores npn bc548 para motores pequeños y podemos usar el tip41 para motores mas grandes.

;PROGRAMA PARA INVERSION DE GIRO DE MOTOR dc

trisb=%11110000                     ; Rb0-Rb3 son salidas, Rb4-Rb7 son entradas

inicio:
      if portb.7=1 then paro         ;Testeo para saber cual pulsador se presiona
      if portb.6=1 then izquierda   ;para luego dirigirnos a su respectiva subrutina
      if portb.5=1 then derecha
    goto inicio
paro:                                        ; subrutina de parada de motor
      low portb.1
      low portb.2
      goto inicio
izquierda:                                ;subrutina de giro a la izquierda
     high portb.1
     low portb.2
     goto inicio
derecha:                                ; subrutina de giro a la derecha
    low portb.1
    high portb.2
   goto inicio
end



jueves, 31 de marzo de 2011

TERMOMETRO: pic16f877a y Lm35

El LM35 es un sensor de temperatura con una precisión calibrada de 1ºC. Puede medir temperaturas en el rango que abarca desde -55º a + 150ºC. La salida es muy lineal y cada grado centígrado equivale a 10 mV en la salida. Haremos un medidor de temperatura usando la conversion 10-bit del convertidor  A/D del pic16f877a  y Ra0 como entrada analogica para mostrar el resultado sobre un LCD de 2*16

; PROGRAMA DE TEMPERATURA

;Configuracion de pines del LCD hacia el PIC16f877a

Define LCD_DREG PORTB     ;usamos puertoB como salida de datos
Define LCD_DBIT 4                 ; solo usamos 4 bits altos (Rb4-RB7)
Define LCD_RSREG PORTB   ;RS va conectado a puertoB
Define LCD_RSBIT 2               ; RS a Rb2
Define LCD_EREG PORTB     ; E va conectado a puertoB
Define LCD_EBIT 3                 ; E va a Rb3

;Definimos parametros del conversor A/D

Define ADC_BITS 10                 ;Numero bits del resultado=10
Define ADC_CLOCK 3             ;fuente  del Reloj 3 (3=rc)
Define ADC_SAMPLEUS 50    ;tiempo de muestreo del ADC en useg
Resultado var word                  ;Historia de la conversion
TRISA = %11111111              ; PORTA configurado como entradas
ADCON1 = %10000010         ; PORTA analog y justificacion del resultado
aux VAR  BYTE                      ; Variable auxiliar para  calcular temperatura
Pause 200                              ;tiempo para el LCD

;Programa Principal
inicio:
ADCIN 0, Resultado                                ;lee Ra0 y guarda en  resultado
aux = (4 * Resultado )/9
Lcdout $fe,1                                            ;Limpia la pantalla
Lcdout "temperatura:", #  aux                 ;muestra el resultado en decimal
LCDOUT $fe,$C0,"grados C"                ; pasa a la siguiente linea y escribe
Pause 2000                                              ;espera  1 seg
Goto inicio                                              ;vamos a inicio
End


Logico que al circuito hay que colocarle un cristal de 4 MHZ y conectar pines 11 y 32 a 5V.  y pines 12 y 31 a Gnd.  Aqui tienen el archivo HEX listo para grabarlo, lo  pueden  bajar del siguiente link:
http://www.4shared.com/file/91xuNvLJ/termometro_corregido.html



NOTA: Ya se corrigio el error gracias al amigo con su formula


martes, 29 de marzo de 2011

MODULO LCD 2*16 con PIC16F628A

En picbasic es mas sencillo controlar los displays de cristal liquido LCD, en este ejemplo usaremos uno de 2 lineas por 16 caracteres (2*16) hitachi 44780 los terminales de un displays son estandar para todos los modulos lcd de cualquier marca.


El compilador PBP soporta módulos LCD´S con controlador Hitachi 44780 o equivalentes y por defecto, asume que se conectó en el pin A4 el bit de Registro, en el pin B3 el bit Enable y en el puerto A empezando desde A0  hasta   A3, los bits más altos del LCD. Esta configuración predefinida, se lo puede cambiar de acuerdo a la necesidad, pero para este ejemplo tomaremos la configuracion predeterminada por el programa picbasicpro, tal como lo indica el circuito.

LA DECLARACIÓN LCDOUT.
Sirve para mostrar items en una pantalla de cristal líquido, se utiliza escribiendo: LCDOUT, luego escribiendo $FE, y seguido por el comando a utilizar.

;PROGRAMA PARA LCD2*16 CON PIC16F628

inicio:
PAUSE 100                                                 ;retardo de espera para el LCD
LCDOUT $FE, 1,"PROYECTOS"               ;limpiar pantalla y sacar el texto
LCDOUT $FE, $C0,"ELECTRONICOS"     ;pasar a la segunda línea y escribir
GOTO  inicio
END                                                            ;fin de instrucciones

Vieron? es asi de simple solo tienen que bajar y  grabar el HEX en el pic16f628 y armar el circuito, este es el link:  http://www.4shared.com/file/cH4Qv3_S/LCD2.html

En mi aplicacion de termometro con LM35 y pic16f877a  cambie la configuracion de puertos y pines del LCD, lo pueden ver en esta misma pagina.





jueves, 24 de marzo de 2011

INVERSION GIRO DE MOTOR PAP

En este ejemplo haremos la inversion de giro de un motor pap unipolar con dos interruptores (Ra0 y Ra1), si solo cerramos un interruptor el motor girara en un sentido y para invertir el giro cerramos el otro interruptor.
Si por casualidad cerramos los 2 interruptores (Ra0 y Ra1) a la vez, el motor PAP girara una vuelta en un sentido y otra vuelta en el otro sentido indefinidamente, veamos el ckto.
Rb7 indica funcionamiento del motor pap.





Aqui  esta el programa para este ckto.

INVERSION GIRO DE MOTOR PAP

Trisb=%10000000      ; puerto B configurado como salida
Trisa=%11111111      ; Puerto A configurado como entrada

inicio1:                                       
IF porta.0=1 THEN gosub abrir
goto inicio2
inicio2:
IF PORTA.1=1 THEN gosub cerrar
GOTO inicio1

ABRIR:                      ;subrutina de giro de motor pap
portb=%10000001
PAUSE 50
portb=%10000010
PAUSE 50
portb=%10000100
PAUSE 50
portb=%10001000
PAUSE 50
RETURN

CERRAR:               ;subrutina de invrsion giro de motor pap
portb=%10001000
PAUSE 50
portb=%10000100
PAUSE 50
portb=%10000010
PAUSE 50
portb=%10000001
PAUSE 50
RETURN
END

Y aqui el archivo HEX. a pedido de un internauta

http://www.4shared.com/file/_ZBlHSo8/papinversiongiro.html

viernes, 28 de enero de 2011

ASCENSOR DE 4 PISOS CON PICBASIC

SECCION DE CONTROL
Este dispositivo simula el funcionamiento de un ascensor de 4 plantas, como si fuera uno real, el ascensor podra ser llamado desde cada una de las plantas por medio de unos pulsadores del mismo modo, desde dentro de la cabina podremos elegir el piso de destino colocando en paralelo sensores de llamada a los del panel.
El sistema se ha construido con un unico motor, que realiza el movimiento de subida y bajada de la cabina del ascensor. En cada planta, hay colocado un final de carrera o un sensor magnetico, que detecta cuando pasa la cabina por el y  pararlo.
Este programa esta hecho para un ascensor de 4 pisos cuya cabina subira o bajara desde el piso que lo llamen, Al inicio la cabina esta en el piso1 y por lo tanto Rb0 estara en 1 (5voltios) y el resto de pulsadores de la cabina y de llamada en 0v (conectados a tierra).
los pulsadores que seran accionados por la cabina:
Rb0=pulsador de piso1
Rb1=pulsador de piso2
Rb2=pulsador de piso3
Rb3= pulsador de piso4
Los pulsadores de llamada son:
Rb4=pulsador llamada de piso1
Rb5=pulsador llamada de piso2
Rb6=pulsador llamada de piso3
Rb7= pulsador llamada de piso4
y para los pulsadores de la cabina (si es que desean colocarlos) les ponen un pulsador en paralelo para cada piso( por ejemplo en Rb4 iria dos pulsadores de llamada en paralelo)
Ojito aqui: Al inicio la cabina esta en el piso1 y por lo tanto Rb0 estara en 1 (5voltios).



SECCION DE POTENCIA
Los pines (18=Ra1 y 1=Ra2) del PIC16f84a  que son las salidas para controlar el  motor DC van conectados (izquierda y derecha ) del puente H a base de transistores NPN 2N3904 para motores pequeños , y por el TIP41 para motores DC grandes. La alimentacion del puente H dependera del motor  que se quiera controlar.


EL PROGRAMA
El programa esta hecho en picbasicpro  y esta probado para este circuito y lo  pueden bajar el archivo HEX del siguiente link:
version mejorada y comprobada en maqueta.


Esta es una maqueta para un ascensor de  3 pisos, igual lo aumentan un piso mas y listo para su funcionamiento. Como dije los pulsadores de llamada de la cabina son opcionales, si los ponen deben quedar en forma paralela a los pulsadores de llamada de cada piso.

miércoles, 26 de enero de 2011

motor pap con picbasic

Haremos girar un motor pap unipolar en un solo sentido


programa

trisb=0 ;hacer salidas el puerto b

inicio:
portb=%11111000    ;energiza bobina A
PAUSE 5                  ;espera 5 mls
portb=%11110100   ;energiza bobina  B
PAUSE 5                  ;espera 5 mls
portb=%11110010   ;energiza bobina C
PAUSE 5                 ;espera 5 mls
portb=%11110001  ;energiza bobina D
PAUSE 5                ;espera 5 mls
GOTO inicio           ;continuar girando
END