PDA

Ver la versión completa : Lectura señal infrarroja en PIC 18F4550 en Proteus + PIC C Compiler



lozi_dani
25/02/2015, 16:10
Hola a todos,

Me surge el siguiente problemilla, a ver si alguno tiene idea o ha hecho algo parecido:

Lo que quiero hacer a priori es muy sencillo. La idea es enchufar con un mando a distancia a un fototransistor que recoja la señal. En función de esta señal, el pic pondrá en un display de 7 segmentos un número. Solo se van a usar los botones 1, 2 y 3 del mando a distancia. Cuando pulse el 1, en el display se pone un 1, igual para el 2 y el 3.

En principio es algo que debería de ser sencillo creo, pero mi duda surge cuando no sé exactamente a que patilla del pic debo conectar el generador de pulsos del proteus para "simular" la pulsación del botón del mando.

Mi intención es leer el código recibido y enviarle la instrucción correspondiente al display. He leído que debo de buscar una patilla de entrada analógica y cuando reciba la señal del pulsador tratarla.

Tenéis alguna idea de por dónde empezar?

Os agradezco mucho cualquier ayuda que pudiera recibir.
Un saludo a todos!

Aunolose
25/02/2015, 16:51
Bienvenido.

Si ya tienes el código de PIC C Compiler, seguramente en él encontrarás información de qué pata debería ser.

Si no tienes código, a mi se me ocurre meter la señal por una de las entradas que generan interrupciones, podrías poner una del puerto B, que generan interrupción cuando la señal cambia, lo mismo en flanco de subida que de bajada. Haciéndolo así, puedes poner en marcha un temporizador con el flanco de subida (por ejemplo) y pararlo en el flanco de bajada, compruebas lo que has contado, que será el tiempo que dura a nivel alto o bajo, con eso sabes si es un uno o un cero.
El PIC C hace mucho que no lo uso, pero me suena que el tratamiento de interrupciones era sencillo. Parecido es que coloques la señal en una de las patas que solo genera interrupción en el flanco de subida o de bajada, una de las INTX, en este caso el PIC solo haría caso de la pata cuando se genere la interrupción, entonces tendría que contar el tiempo o poner en marcha un temporizador en el mismo momento que se pone en marcha el temporizador, se cambia el bit para que la interrupción se genere en el flanco contrario, así también podrías saber la duración entre flancos.



Otra forma si el PIC se va a dedicar solo a eso o si no te manejas bien con las interrupciones, es estar constantemente mirando la pata con un bucle y contando el tiempo entre flancos, al final tienes lo mismo, pero el PIC solo podría dedicarse a eso, por que tiene que contar el tiempo.


Para "mandar el dato al display", si el display es estandar, compatible con el H4480 (o algo así) seguro que en el PIC C encuentras una librería que te lo hace todo y te explica en que pata debes poner cada cosa.

Aunolose
25/02/2015, 16:53
A ver si te sirve esto:

http://www.forosdeelectronica.com/f19/aporte-control-remoto-infrarrojo-4-canales-pic-115442/


Ah, que se me ha olvidado preguntar ¿en qué sistema emite el mando? ¿RC5? ¿NEC80? tendrás que saberlo para saber como van a llegar los datos y poder descodificarlos.

Aunolose
25/02/2015, 17:06
Este enlace también me ha parecido interesante:

http://www.arossini.com.ar/files/ir/Lector%20de%20Codigos%20de%20Control%20Remoto%20Infrarrojo.doc

sacado de esta pagina:

http://www.arossini.com.ar



Yo hice un receptor de infrarrojos para PC con el programa WinLIRC, en mi caso con el puerto serie y un receptor de infrarrojos canibalizado de no sé donde, el caso es que uno de los programas identifica el código que manda en mando a distancia y te dice los códigos y tal, creo que sería útil para lo que te estás planteando hacer y me suena que lo hay para Linux.

http://winlirc.sourceforge.net/


Edito por enésima vez, es al revés, el programa original es para Linux y se pasó a Windows...

http://www.lirc.org/