Mando universal IR: Prototipo en protoboard paso a paso

Voy a hacer un mando de televisión IR (de infrarrojos) universal, con sensor de IR y LED infrarrojo emisor, programable, es decir que puedas copiar los códigos de un mando que ya tengas, y con varios programas guardados en EEPROM del microcontrolador. Tendrá un teclado de membrana con 16 teclas y un display de 7 segmentos (el típico digital que puede mostrar un número) para ayudar durante la programación de las teclas.


Y lo voy a hacer paso a paso en un protoboard (mas tarde haré el circuito y lo meteré en una caja), para que puedas ver todo el proceso.


Lista de partes (Las voy dividiendo en las sucesivas etapas del circuito):


  • —– Para el circuito básico:

  • Un microcontrolador ATMEGA328P.

  • Un protoboard.

  • Cables de protoboard.

  • 2 condensadores de 22 pF.

  • 1 Cristal de 16 MHz.

  • 2 pulsadores, unoo para el reset del micro y otro como botón para programar.

  • 1 resistencia de 10 KOhm para el reset.

  • 1 condensador de 100 nF de desacople para el micro.

  • Un LED para ver el estado o debuguear.

  • Una resistencia de 300 Ohm aproximadamente, para el LED.

  • 4 pines para conectar el módulo USB a la protoboard.

  • 1 módulo USB - TTL Serie (Convierte de USB a puerto serie de 5V)

  • —– Para el sensor y emisor de infrarrojos:

  • Un sensor de infrarrojos modulado a 38 KHz (son comunes)

  • Un LED infrarrojo para transmitir.

  • Una resistencia de 100 a 300 Ohm, no importa exactamente, para el LED IR.

  • —– Para el display de 7 segmentos:

  • Un registro serial in - parallel out 74HC595

  • Un display de 7 segmentos (Yo he usado uno rojo, lo más típico)

  • 7 resistencias de 300 Ohm aproximadamente.

  • —– Para el teclado y el botón adicional:

  • Un teclado de membrana (4 filas, 4 columnas)

  • Un condensador de 4.7 microfaradios.

  • Una resistencia de 10 KOhm

Lo primero es tener el protoboard y, cómo no, un ATMEGA328P (es el microcontrolador de la Arduino, al menos hasta la versión Uno)

1 MandoIRProtoboard

Colocamos el micro con la muesca mirando a la izquierda. Conectamos alimentación y masa, y también unimos la alimentación y masa de la protoboard arriba y abajo. Colocamos también el condensador 100 nF, lo más cerca del chip posible.

2 MandoIRProtoboard

Conectamos el cristal y sus condensadores de 22 pF:

3 MandoIRProtoboard

Conectamos el conector que servirá de alimentación a la placa y de comunicación y programación, mediante el módulo USB. El pin de RX tiene que ir al de TX del módulo y viceversa:

4 MandoIRProtoboard

Ahora conectamos el pulsador de reset, y ponemos la resistencia de pull-up del reset de 10 KOhm a a limentación. También conectamos el LED, desde el pin 13 a una resistencia de 300 Ohm y a masa:

5 MandoIRProtoboard

Aquí se ve el módulo conectado:

6 MandoIRProtoboard

Hasta aquí el circuito básico, que nos permite ver si el microcontrolador funciona correctamente por ejemplo subiendo el sketch Blink, típico de Arduino, que enciende y apaga una vez por segundo el LED conectado al pin 13. Para programar hay que pulsar el botón de reset. Aquí se puede ver todo conectado y el LED encendido:

7 MandoIRProtoboard

Lo siguiente es poner el sensor y el LED infrarrojos. El pinout del sensor puede variar, el mío era de izquierda a derecha: output, masa y alimentación. El output lo he conectado al pin 9 de Arduino. El LED se conecta como usualmente, en serie con la resistencia de 100 a 300 Ohm. Se pone en el pin 3.

8 MandoIRProtoboard


Tras subir el Sketch1.ino y probar con el mando de mi monitor he obtenido esta salida por el puerto serie (en la consola serie del IDE de Arduino), y mi monitor obedecía el comando enviado como si fuera el del propio mando:

Received NEC: 20DF40BF
Received NEC: 20DF40BF
Received NEC: 20DF40BF
Received NEC: repeat; ignoring.
Received NEC: repeat; ignoring.
Received NEC: repeat; ignoring.
Received NEC: 20DF40BF
Enviando
Pressed, sending
Sent NEC 20DF40BF
Enviando
Pressed, sending
Sent NEC 20DF40BF

Hasta aquí el sensor, en el próximo post explicaré hasta el display de 7 segmentos. Hasta la próxima!

Ir a la segunda parte