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.

miércoles, 17 de diciembre de 2014

PASADIZO CON LUZ AUTOMATICA PARA 3 FOCOS

Hola amigos, despues de mucho  tiempooooo.. .. publico este pequeño proyectito, imaginense un  pasadizo largo con tres focos o luminarias, para ahorrar energia y no esten encendidos los 3 focos a la vez cuando pase una persona lo controlaremos mediante un pic16f628a y 3 LDR, de tal manera que al inicio todo este apagado. Al entrar una persona por la puerta solamente se encendera el primer foco, sigue avanzando la persona  y al llegar al segundo foco este se enciende automaticamente y se apaga el primer foco, sigue avanzando la persona y al llegar al tercer foco este se enciende automaticamente y se apaga el segundo foco de tal manera que la persona tendra luz por todo el pasadizo.
El ultimo foco se mantendra encendido 5 segundos y luego se apagara todo.
Ahora si la   persona sale  se encendera el tercer foco y luego el segundo y se apaga el tercero y finalmente se enciende el primer foco y se apaga el segundo foco,  o sea tambien es en sentido inverso.
Bueno mas o menos asi seria el pasadizo con tres focos y los LDR irian en la pared a la altura de cada foco alumbrados con un rayo infrarrojo  desde la otra pared, de tal manera que cuando la persona pase corte el rayo infrarrojo.
La  luz infrarrojo puede ser emitida por  linternas o punteros de laser, algo asi como en las peliculas donde hay sistemas de alarma con rayos infrarrojos, esta parte se la dejo a uds, para que vean como le  hacen llegar luz a los 3 LDR.

En el circuito se ve el pic16f628a, 3 LDR y 3 triacs bt136 de 10 amperios. Si quieren desacoplar la parte de control con la de potencia sugiero utilizar 3 mocs3040 o cualquiera que tenga triac en la salida.
La salidas del pic se aplicaran  en la resistencia de 330 ohmios y el pin2  del moc3021 se conecta a tierra. Finalmente les dejo el codigo en picbasicpro:

trisb=%11111111
trisa=000000
portb=000000
porta=000000

inicio:
if portb.0=1 then entrada
if portb.2=1 then salida
goto inicio
entrada:
if portb.0=1 then foco1
   goto entrada
espera1:  
if portb.1=1 then foco2
   goto espera1
espera2:
if portb.2=1 then foco3
   goto espera2
foco1:
high porta.0
goto espera1
foco2:
low  porta.0
high porta.1
goto espera2
foco3:
low porta.1
high porta.2
pause 3000
low porta.2
goto inicio
salida:
if portb.2=1 then foco4
goto salida
espera3:
if portb.1=1 then foco5
goto espera3
espera4:
if portb.0=1 then foco6
goto espera4
foco4:
high porta.2
goto espera3
foco5:
low porta.2
high porta.1
goto espera4
foco6:
low porta.1
high porta.0
pause 3000
low porta.0
goto inicio

end


viernes, 4 de enero de 2013

MATRIZ DE LEDS 7X5

Estos displays son muy utilizados para transmitir mensajes en bancos y instituciones de atención al publico, la ventaja de estos son la gran cantidad de caracteres que se pueden formar y el gran tamaño de los displays (desde 3 x 2 cm hasta 15 x 8cm), en esta práctica aprenderemos a manejar un display de 35 segmentos de 14 pines, pero también existen displays bicolores y tienen 28 pines. Esta práctica consiste en formar un hombrecito saludando, una vez familiarizado será muy sencillo ir implementando más displays del mismo tipo.


 En la matriz  7x5 tenemos 7 filas denominadas ABCDEFG y 5 columnas desde 1,2,3,4,5.  Si queremos encender el 2do led de la columna 2, debemos conectar el pin B a 5 V. y el pin 2 a Gnd. Si queremos encender el led del centro podemos conectar el pin D o el pin H a positivo (el pin H es auxiliar) y a tierra el pin 3 o el 6 ya que también tiene un auxiliar.



;EL PROGRAMA



En el programa haremos 4 secuencias de un hombrecito levantado las manos, por lo que tendremos 4 repeticiones usando el FOR NEXT una para cada secuencia. El puerto controla las columnas y solo activa o enciende una sola columna a la vez y luego hacelo mismo con la siguiente columna y asi sucesivamente hasta la 5 columna.
Una vez que este  activado una columna podemos  encender los leds de las filas correspondientes a esa columna  para formar la figura que deseamos, si se fijan en el puerto B se forma la figura que se mostrara en el display pero esta en forma horizontal o echada la matriz.

cmcon=7                                                         ;convierte el puerto A en digital
trisa=0                                                             ;hace salida todo el puerto A
trisb=0                                                             ;convierte en salidas el puerto B
x VAR BYTE                                                   ;crea variable x de 255
inicio:
FOR x = 1 TO 10                                                 ;repetir esta secuencia 10 veces
porta=%0000001 :portb=%0010000 :PAUSE 4   ;esperar 4 mls, total 20 mls
porta=%0000010 :portb=%0100111 :PAUSE 4             
porta=%0000100 :portb=%1111000 :PAUSE 4
porta=%0001000 :portb=%0100111 :PAUSE 4
porta=%1000000 :portb=%0010000 :PAUSE 4
NEXT
FOR x = 1 TO 10                                                 ;repetir esta secuencia 10 veces
porta=%0000001 :portb=%0100000 :PAUSE 4
porta=%0000010 :portb=%0100111 :PAUSE 4
porta=%0000100 :portb=%1111000 :PAUSE 4
porta=%0001000 :portb=%0100111 :PAUSE 4
porta=%1000000 :portb=%0100000 :PAUSE 4
NEXT
FOR x = 1 TO 10                                                 ;repetir esta secuencia 10 veces
porta=%0000001 :portb=%1000000 :PAUSE 4
porta=%0000010 :portb=%0100111 :PAUSE 4
porta=%0000100 :portb=%1111000 :PAUSE 4
porta=%0001000 :portb=%0100111 :PAUSE 4
porta=%1000000 :portb=%1000000 :PAUSE 4
NEXT
FOR x = 1 TO 10                                                  ;repetir esta secuencia 10 veces
porta=%0000001 :portb=%0100000 :PAUSE 4
porta=%0000010 :portb=%0100111 :PAUSE 4
porta=%0000100 :portb=%1111000 :PAUSE 4
porta=%0001000 :portb=%0100111 :PAUSE 4
porta=%1000000 :portb=%0100000 :PAUSE 4
NEXT
GOTO inicio                                                          ;volvemos a inicio
END

Para descargar el archivo HEX. click de este link:
http://www.4shared.com/file/t0lsTNil/matrizhombrecito.html




miércoles, 30 de noviembre de 2011

3 TERMOMETROS CON PIC16F877A

Hola amigos esta vez haremos uso de 3 conversores analogicos del pic16f877a de los 8 que posee este pic, de sensor emplearemos 3 lm35 en cada entrada en Ra0 Ra1 y Ra3 y para mostrar el resultado empleamos un LCD de 2*16


;EL PROGRAMA

DEFINE LCD_DREG PORTB             ;bit de datos del LCD empezando
DEFINE LCD_DBIT 0                         ;por B.0, B.1, B.2 y B.3
DEFINE LCD_RSREG PORTB           ;bit de registro del LCD conectar
DEFINE LCD_RSBIT 5                       ;en el puerto B.5
DEFINE LCD_EREG PORTB              ;bit de Enable conectar en el
DEFINE LCD_EBIT 4                          ;puerto B.4

s1 VAR BYTE                                     ;variable para almacenar sensor1
s2 VAR BYTE                                     ;variable para almacenar sensor2
s3 VAR BYTE                                     ;variable para almacenar sensor3
ADCON1 =%100                                ;configura PortA 0,1, 3 en conversores A/D

Inicio:
PAUSE 300
medicion1:
ADCON0 =%1000001                    ;activar canal 0 a Fosc/8
GOSUB medir
s1= ADRESH
medicion2:
ADCON0 =%1001001                    ;activar canal 1 a Fosc/8
GOSUB medir
s2= ADRESH
medicion3:
ADCON0 =%1011001                    ;activar canal 3 a Fosc/8
GOSUB medir
s3= ADRESH
LCDOUT $fe, 1," T1 T2 T3"           ;limpiar LCD y sacar texto
LCDOUT $fe,$c1,#s1                     ;casilla 1 el valor decimal de s1
LCDOUT $fe,$c6,#s2                     ;casilla 7 el valor decimal de s2
LCDOUT $fe,$cb,#s3                     ;casilla 12 el valor decimal de s3
GOTO inicio

medir:                                               ;subrutina para leer el conversor A/D
PAUSEUS 50                                  ;pausa para setear el canal
ADCON0.2 = 1                               ;iniciar conversión
PAUSEUS 50                                  ;pausa para la conversión
RETURN                                         ;retornar al GOSUB que lo envió
END
 
 




viernes, 14 de octubre de 2011

TEMPERATURA con PIC16F876A y LM35

Esta vez mediremos la temperatura con el sensor LM35 y usando el pic16f876 y para visualizar la PC, con lo cual nos ahorraremos el uso de un LCD que  a veces es muy costoso. Aprovecharemos el programa de microcode studio en la PC via comunicacion serial usando un MAX232.
;EL PROGRAMA
INCLUDE "modedefs.bas"            ;incluyen los modos de comunicación
@ device XT_OSC                       ;cambia a oscilador XT 
;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

;Programa Principal
inicio:
ADCIN 0, Resultado                          ;lee Ra0 y guarda en resultado
SEROUT portc.6,T2400,[#Resultado,"-"] ; envia el contenido en decimal de resultado
PAUSE 1000
GOTO inicio                                    
END

COMUNICACION SERIAL PIC16F877A con MAX232 y PC

El CI. MAX232 es la solución para transmitir a mayor distancia, ya que incrementa los niveles de voltaje de 5 V. a +10V. gracias a un juego de capacitores que le ayuda a doblar los voltajes, por lo que para su alimentación sólo requiere una fuente de 5V. que puede ser la misma que utiliza el PIC. El MAX232 dispone de 2 juegos de transmisores y receptores, de los cuales sólo ocuparemos un par de ellos, el MAX232 enviará el dato invertido, por lo tanto debemos invertir el dato de la salida del PIC y esto lo conseguimos utilizando T2400 de la siguiente forma:

SEROUT portc.6,T2400,[“hola”]   ;enviar dato serial "hola" por pin Rc6 a 2400bits/s en dato verdadero.
;EL PROGRAMA

INCLUDE “modedefs.bas”                       ;incluyen los modos de comunicación
@ device XT_OSC                                  ;cambia a oscilador XT
Inicio:
SEROUT portc.6, T2400, [“HOLA ”]        ;enviar serialmente caracteres “HOLA”
HIGH portc.4                                           ; led indica que ya envio "HOLA "
PAUSE 500                                             ;retardo de 0.5 seg
LOW portc.4                                           ;apagado led
PAUSE 500                                             ;retardo de 0.5 seg
GOTO inicio                                            ;volver a repetir el proceso
END


Para visualizar el mensaje enviado por el pic emplearemos el programa microcode studio como en el caso anterior , aunque si no lo tuvieran pueden emplear el HYPERTERMINAL de windowsy por ultimo emplear cualquier programa, recomiendo el labview que tienen uno listo para emplear.



miércoles, 12 de octubre de 2011

COMUNICACION RS232 PIC-PC

Hola amigos, despues de tiempo vuelvo a publicar, la comunicacion serial de un  PIC a  la PC para distancias menores a 2 metros lo cual se puede hacer  sin usar  el MAX232. En la PC usaremos el mismo programa de microcode studio.

LA DECLARACIÓN SEROUT.  Esta declaración sirve para enviar datos seriales en un formato standar asincrónico usando 8 bits de dato, sin paridad y 1 stop bit, (8N1). Un ejemplo de como se usa:

SEROUT  portC.6, N2400,[“HOLA”]     ;enviar el caracteres ASCII “HOLA”por el puerto C6 a 2400 bits por seg. 8 bits de dato, sin paridad y 1 stop bit, (8N1), en dato invertido.
PortC.6 es el bit TX (transmisor en rs232) del pic16f876a cuyo pin es el 17.

;EL PROGRAMA

INCLUDE “modedefs.bas”                      ;incluyen los modos de comunicación
@ device XT_OSC                                 ;cambia a oscilador XT
Inicio:
SEROUT portc.6, N2400, [“HOLA ”]     ;enviar serialmente caracteres “HOLA”
HIGH  portc.4                                        ; led indica que ya envio "HOLA "
PAUSE 500                                          ;retardo de 0.5 seg
LOW  portc.4                                        ;apagado led
PAUSE 500                                           ;retardo de 0.5 seg                         
GOTO inicio                                         ;volver a repetir el proceso
END


Si se fijaron el programa es simple, ahora para visualizar el mensaje enviado por el PIC emplearemos el microcode  studio, lo abrimos y en VIEW escoger SERIAL COMUNICATOR  y ahi configuramos los parametros:
port number(com1), baudrate(2400),parity(No paryti), Byte size(8),Stop bits(1). Luego presionamos F9 y listo ya estamos recibiendo  datos del pic por  el puerto serie RS232

Si quisieramos enviar a mayor distancia  que es 15 metros maximo para comunicacion serial tendriamos que emplear el conocido MAX232. Y como siempre aqui les dejo el link para descargar el archivo HEX.

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.