Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
proyectos
Receptor de mandos
infrarrojos
La intención del artículo es la de explicar cómo realizar un sistema receptor de infrarrojos, que
sea capaz de descodificar un protocolo específico de cualquier mando a distancia común en
cualquier hogar. También implementaremos un pequeño sistema por contraseña.
// por: Miguel Ángel Borrego Trujillo //
correo autor
Introducción a la solución:
Sabiendo cuál es el proyecto que debemos
realizar, tenemos que fijar unos objetivos para
llevar a cabo el trabajo de una manera
organizada.
el código SIRC, que es un código que
Los objetivos para el correcto del desarrollo distribuye los bits que envía en dos partes, el
del trabajo son: comando y la dirección. Para empezar la
comunicación se envía una señal de 'START'
1. Concretar el protocolo de comunicación. que consiste en un pulso en alto de 2400 us y
2. Estudio del protocolo de comunicación. un pulso en bajo de 600 us, seguidamente se
3. Definir el hardware y circuitería necesaria. envían los datos. Para enviar un 1 se genera
4. Implementar el programa. una señal en alto de 1200 us y uno en bajo de
5. Simulación del circuito. 600 us, para enviar un 0 se genera una señal
/ / página 0x14
.receptor de mandos infrarrojos
/ / página 0x15
.receptor de mandos infrarrojos
conectados a los 4 bits altos del PORTB, ya Configuración para emulación de código
que utilizaré la interrupción por cambio de SIRC en simulación:
estado que estos 4 pines me generan al
haber algún cambio en estos. El botón que
queda lo conectaré al pin de reset (MCLR).
Estos pulsadores estarán conectados a los
pines correspondientes mediante resistencias
de PULLUP de 10k.
/ / página 0x16
.receptor de mandos infrarrojos
/ / página 0x17
.receptor de mandos infrarrojos
/ / página 0x18
.receptor de mandos infrarrojos
4) Rutina de interrupción por cambio de altos del PORTB, primero hago una máscara
estado para descartar el nibble bajo del PORTB, una
vez he hecho esto comparo si los bits del
Lo que hago en esta rutina es leer el estado nibble alto del PORTB están a 1 (ninguna
del teclado al inicio del programa para tecla pulsada) o no lo están (alguna tecla
implementar una pequeña contraseña. pulsada), si no están todos a 1 procedo a
Cuando llega la interrupción quiere decir que hacer la lectura del PORTB y retorno el valor
hubo un cambio de estado en los 4 pines de las teclas que he apretado.
#INT_RB
void rb_interrupt(){
disable_interrupts(global); // Deshabilitamos las interrupciones
delay_ms(100); // Esperamos 100 ms para no tener ruido
lectura_portb=PORTB; //
lectura_portb&=0xF0; // Nos quedamos con los bits altos
if(!(lectura_portb==0xF0)){ // Comprobamos si se ha pulsado una tecla
/ / página 0x19
.receptor de mandos infrarrojos
/ / página 0x1A