Receptor de Señal Infrarroja - Control Remoto


Hola a Todos.

Hoy les comparto el diseño de un circuito bastante util, el Receptor de Señales de Control Remoto o Mando a Distancia.

Receptor de Señal Infrarroja - Control Remoto


La verdad este es un trabajo un poco extenso, debido a que primero es necesario decodificar las señales de cada una de las teclas. Por suerte existe una página en donde es posible encontrar las señales de Controles Remotos conocidos. Primero voy a mostrarles el proceso de obtención de las señales de un Control o Mando, para luego analizar el protocolo. Más adelante podrán ver el enlace con los códigos de los controles más populares.

Primero, para capturar las señales provenientes del control o mando en el PC se requiere de un Receptor Infrarrojo. Existen algunos que vienen con las Tarjetas de Televisión para PC, que más o menos se encuentran en este estilo:

control remoto


Estos receptores constan de un Fotoreceptor o Fotodiodo y se conectan en la entrada de Micrófono de la Tarjeta de Sonido del PC, y son capaces de detectar los pequeños niveles de voltaje producidos por el fotodiodo.

Si no tienes un receptor de este tipo, no hay problema, puedes fabricar tu propio receptor con un fotodiodo barato y corriente, y un cable adaptador de micrófono como el de la imagen anterior:

microcontrolador


El proceso de conexon es bastante sencillo. Simplemente se conecta el fotodiodo en vez del micrófono. Si tienes un micrófono que no te sirva puedes hacer la siguiente conexión:

pics


Donde la resistencia puede tomar el valor de 1 KΩ. A mi me funciona sin Resistencia, aunque es recomendable colocarla debido a un posible nivel de voltaje elevado.

Ahora si, una vez que disponemos de nuestro Receptor Infrarrojo, podemos empezar a visualizar las señales del Control capturadas con el receptor infrarojo mediante un Software Editor de Audio. En mi caso los códigos de las teclas los he visualizado con el programa GoldWave, que descargué de este enlace:

http://www.taringa.net/posts/downloads/953936/GoldWave-v5_22-_-Keygen.html

Los pasos iniciales para la grabación de los comandos son:

1. Al abrir el programa seleccionar el Dispositivo de Grabación que corresponde al Micrófono de la Tarjeta de Sonido (Option -> Control Properties -> Device), ya que en algunos casos está seleccionado por defecto otro dispositivo (como en mi caso que estaba seleccionado el Micrófono de mi WebCam USB).

receptor infrarojo


2. Para iniciar una nueva grabación dar clic en New ó File -> New. Alli aparecerá un cuadro para seleccionar el número de canales, la velocidad de muestreo y la calidad de la grabación. Por lo general selecciono 2 Channel (Stereo) y Presets seleccionar una buena calidad, por lo general escojo DVD Quality, con un Sampling Rate de 96000.

Receptor de Señal Infrarroja - Control Remoto


3. Iniciar la grabación con el botón Rec (Círculo Rojo).

En este caso he utilizado un Control Remoto de un Televisor Sony Bravia. La señal a continuación corresponde a la tecla Volumen -. Haciendo un Zoom se aprecia mejor la señal obtenida:

control remoto


Aqui viene la parte interesante de este asunto. Si se observa detenidamente, esta señal obtenida corresponde al siguiente tren de pulsos, que en efecto, según el Protocolo Sony SIRC corresponde a la tecla Volumen -:

microcontrolador


La imagen muestra un tren de pulsos, que representan señales binarias de 1 y 0. La señal consiste en un pulso ancho al inicio de duracion 2.4 ms y un espacio de 0.6 ms que corresponde al Start, una serie de 7 bits que corresponden al Comando de la Tecla, y los ultimos 5 bits la Dirección, o el tipo de Control (TV, VCR, DVD, etc). Los símbolos 1 se representan con un pulso de 1.2 ms y un espacio de 0.6 ms, y los O con un pulso de 0.6 ms y un espacio de 0.6 ms, tal y como se aprecia a continuación:

pics


Como se alcanza a ver en la anterior imagen, los pulsos contienen una portadora de mayor frecuencia. Esta portadora para los controles Sony es de 40 kHz, y se modula con PWM (Pulse Width Modulation, Modulación por Ancho de Pulso), con un valor de Ciclo Útil (Duty Cycle) de 1/4 o 1/3.

En este enlace se encuentra la información correspondiente al protocolo Sony y otros protocolos de Control Remoto:

http://www.sbprojects.com/knowledge/ir/sirc.htm

Listo, este tipo de señales son las que se deben procesar en el Microcontrolador, primero obteniendola y luiego, de acuerdo a la tecla presionada, ejecutar una función. Para obtener esta señal y enviarsela al Microcontrolador se requiere de otro Fotodiodo, debido a que como se vió anteriormente, los pulsos contienen una portadora de 40 kHz, el Fotoreceptor debe ser capaz de detectar esta frecuencia, y producir una salida de un filtro el pulso conformado. En el mercado se encuentran múltiples receptores baratos, como los del tipo TSOP17XX, donde las "XX" representan el valor de la frecuencia de corte. En este caso nos servirá un TSOP1740:

receptor infrarojo


Aqui hay que aclarar algo: a la salida del TSOP17XX se obtiene la señal del control remoto invertida, por lo que es necesario para mejor manipulación de la señal en el Microcontrolador invertir la señal a la salida del TSOP17xx y obtener la señal original. La conexión para invertir la señal es muy elemental (La imagen del inverson que usé ha sido borrada del host, recomiendo usar un inversor simple basado en un transistor NPN o PNP, si mal no recuerdo el que habia usado estaba basado en un transistor 2N3906).

Receptor de Señal Infrarroja - Control Remoto


En este caso la señal de salida se dirige hacia uno de los puerto del Microcontrolador, pero eso es decisión de cada uno por cual puerto se desea recibir la señal, dependiendo de las caracteristicas y limitaciones del Microcontrolador.

Finalmente, voy a explicar brevemente la forma de como manipular la señal de salida correspondiente al tren de pulsos en el Microrontrolador. Para ello es necesario entender en funcionamiento de las Interrupciones Externas y los Timers o Temporizadores. El objetivo es detectar los bits correspondientes al Comando, ya que si se trabaja con un mismo Control o Mando, la parte de Dirección no nos interesa demasiado.

Primero, se activan las Interrupciones Externas por Flanco Ascendente a traves del Puerto B0, y una vez que se ha detectado el primer Flanco Ascendente del Start, calcular la duración para asegurarse que es el Start, y después de allí empezar a almacenar los demás bits en una variable. Los demás bits también se pueden detectar con las misma interrupción con Flanco Ascendente, y se hace un Ciclo: si la duración entre Flancos Ascendentes está alrededor de 1800 ms es un 1, y si está alrededor de 1200 ms es un 0. Es necesario tener un rango alrededor del valor nominal, debido a la posible falta de precision de las medidas.

Una vez almacenados los bits del Comando en una variable, se comparan con un Registro almacenado en el Microcontrolador con los códigos de todas las teclas, para compararlos y determinar internamente la tecla presionada. Conociendo la tecla que se ha presionado se puede ejecutar la accion que se desee, ya sea encender un LED, mover un Motor, desplegarla en un Display LCD, u otro tipo de función que el usuario desee.

Saludos.

Fuentes:

http://www.sbprojects.com/knowledge/ir/ir.htm
http://www.comunidadelectronicos.com/proyectos/infrarrojos.htm
http://www.rentron.com/Micro-Bot/IR_Serial.htm

Exitos.

39 comentarios - Receptor de Señal Infrarroja - Control Remoto

@luistecno +4
soy tecnico en electronica y esta buenisimo el articulo +10
muchas gracias
@Urubio1234
Hola que tal Tronnico, me comunico contigo para ver si puedes ser tan amable en ayudarme acerca de un proyecto que traigo en puerta.
Se trata de que por ejemplo, el control de las Tv´s me puedan funcionar de todas las marcas, que por ejemplo, ya que el numero 0 de la tecla del control aplastandola 4 veces en la TV no hace absolutamente nada, por lo tanto estaba pensando en hacer un proyecto en cuando yo accione 4 veces el cero de cualquier control remoto funcione mi decodificador del microcontrolador, ya que si yo acciono otro boton no haga absolutamente nada, esto te lo comento ya que quiero que funcione con cualquier control o me recomiendas algun otro boton.


AL 100% TU ARTICULO EEEEEEE GRACIAS ME SIRVIO DE MUCHO.

Saludos
@teufel1
holaaaa Tronnuco la verdad eso está de lujo y tengo un proyecto en mente activar un motor por medio de un control remoto lamentablemente solo tengo esté fin de semana para trabajarloo tengo un pic16f628a podrias ayudarme o darme un consejo de antemano gracias por el post y saludos!!!
@Cibermatlab
+10 buen trabajo
Estoy tratando de decodificar la señal del control remoto apartir de un microcontrolador y apenas estoy incursionando en esto de los protocolos de los controles remotos. Es buena la idea de graficar los pulsos apartir del microfono puedo determinar el periodo de los pulsos para posteriormente programar el micro.
@Cibermatlab +1
Solo tengo una duda:
Estoy de acuerdo con las interrupciones pero se supone que como el codigo esta modulado a 40 0 36khz lo que es un uno no es masque la suma de varios pulsos de pequeño periodo entoces si ultilizo las interrupciones cada flanco de subida va a marcar varios flancos de subida es decir varias interrupciones por la modulacion?????????? no se si me explico o estoy confundido espero tu respuesta y no se porque pero no me deja darte puntos igual le intento mañana
@Cibermatlab
Tronnico dijo:
Cibermatlab dijo:Solo tengo una duda:
Estoy de acuerdo con las interrupciones pero se supone que como el codigo esta modulado a 40 0 36khz lo que es un uno no es masque la suma de varios pulsos de pequeño periodo entoces si ultilizo las interrupciones cada flanco de subida va a marcar varios flancos de subida es decir varias interrupciones por la modulacion?????????? no se si me explico o estoy confundido espero tu respuesta y no se porque pero no me deja darte puntos igual le intento mañana


Tienes razon en lo que dices, pero resulta que el receptor tiene incorporado un filtro pasabajo (ya sea a 36 o a 40 kHz) el cual se encarga de conformar los pulsos que activarán las interrupciones del PIC. Por eso, a la salida de este, sale un pulso conformado, mas no la portadora de 36 o 40 kHz.

Espero haber aclarado tu duda.

Exitos.





Gracias!
Por lo que te entendi el control envia una señal modulada al receptor y el receptor elimina la portadora y deja la señal original. Simplemente me confundi pense que yo capturaba la señal modulada y tenia que eliminar la portadora con el micro. no se como andes con la comunicacion gsm esta interesante tambien.
@SOMBRANOCTURNA1234 +1
muy buen post el tuyo jejejejeje lo que me pasa por la mente antes de decodificar las señales es si con un pulso cualquiera puedo activar por ejemplo un motor de 5v usando un arranque y paro de un solo boton con compuertas se podra apartir de este circuito?
@guachipitirinak
em.... yo llegue aqui buscando el deco de un control para controlar varias cosas... y me sirvio mucho el post para medir el control, pero mi pregunta es, si puedo decodificr la seña de manera analoga.... sin programar ningun integrado ya que no cuento con un grabador de PICs... vale igual
@Cupajuti +1
Muy bueno! Gracias por el aporte.
@gegeger +1
Perate, re interesante esto, pero un uso practico que le pueda dar ?
@diegoenf
hola soy nuevo quisiera saver si es posible comprar en algun lado un reseptor de control remoto te comento estoy en un proyecto para armar una tv retroproyectada y necesitaria adaptarle un control remoto ya sea para encender, volumen canales en realidad necesito una placa que tome la cenial del control y la entregue en unos rele es posible esto desde ya muchas gracias
@elarmeniok
No tengo mucha idea de la parte electrónica pero quiero hacer un programa para la pc que capte los botones del control remoto de mi ENLTV-FM. Tengo el cable y lo conecté al input del microfono de la placa de sonido y el GoldWave lo único que me detecta es ruido. ¿Alguna idea de lo que estoy haciendo mal?
@Gammaxx
Hola gracias gran aporte, yo no soy electronico sin embargo me gusta, mi pregunta es si puedo extender una señal de control remoto solo con un recividor de IR o tengo que usar el recibidor y transmisor, te comento que esto lo quiero hacer para abrir desde dentro de la casa un porton electrico, gracias de antemano
@rene2605
como puedo encender cuatro TELEVISIONES LCD MARCA LG ...CON UNA INTERFAZ EN VISUAL BASIC....TENGO Q SACAR UNA SEÑAL INFRARROJA DE LA PC Y QUE LA RECIBA CADA LCD...NO C SI M PODRAS AYUDAR...
@guitapro_ahad
necesito el codigo en ccs si eres tan amable necesito controlar un tacometro
@BrianMaylh
hola qria saber si me podes ayudar con unas cosas... me gustaria saber si se puede modificar el recptor interno de un tv para q ademas de infrarojos capte otro tipo de señales, es decir instalarle otro receptor y q los dos funcionen a la par,, o aun mejor si se puede directamente saltearse el receptor de infrarrojos y pasarle los codigos de mando directamente al tv.. tengo un proyecto y saberlo me ayudaria mucho para poder continuar.. muy bueno el post es la info q andaba buscando..
espero q me puedas ayudar.. te dejo puntos por el trabajo
@xluucia +1
Un post con informacion interesante, inteligencia colectiva?
Que raro en taringa algo asi, buen post chabon, un abrazo!
@Tronnico
Que buena onda!!!
Gracias, un abrazo de vuelta para ti!
@SIR_ATILA +1
Buen post amigo, suma a la pagina, definitivamente.-

Reco!
@charles2t
muy bueno, justo tengo que hacer un proyecto de esto, te mando un mp y si podes me pasas la data
@jacrjacr
hola,muy bueno,con el Audacity 1.3 Beta (Unicode) y el Power Sound Editor Free ,funcionara?
@toc_toc +1
Hola amigo Nando, he tenido el placer de leer tu artículo y me ha venido muy bien, pues estaba realizando un artículo sobre IR, para aplicar con Arduino y 'tropecé' con este magnifico y sencillo artículo y he puesto tu referencia en mi web http://hispavila.com. Cuando termine mi artículo podrás verte reflejado en él, espero tu aprobación y sobre todo GRACIAS.

Saludos V. García
@Tronnico
Gracias por tu comentario y por difundir conocimiento.
La verdad habia estado pensando en hacer algo con Arduino + IR, aunque ahora estoy lejos de casa y no tengo mi caja de herramientas. A pesar de ello, aqui tengo una placa de Arduino Uno y algunos elementos que me servirán para poner en práctica algun buen proyecto.
Ya estaré publicando resultados.
@MarinaNuez +1
Interesante post alguien sabe si esto se puede hacer con un smartphone conectado el receptor para usar luego el emisor que tienen algunos smartphone?
@nrctkno +1
Flor de post la puta madre que te hizo mañana te dejo 10!