Desde 1994 en la Red. La pagina de los aficionados a la electronica, informatica y otras curiosidades de la vida. No dudes en visitarnos.
Ahora 2 visitas.| 3553247 Visitas (desde Dic. 2011), hoy: 281 Visitas 547 Pag. Vistas , ultimos 36 dias: 11083 Visitas. 29583 Pag. Vistas. Tu IP: 18.189.170.45
Que ando curioseando:
AutosuficienciaCosas de casaElectronicaEn InternetInformáticaMundo MisticoSin categoríaSociedadTe lo recomiendo

Emisor de IR (Infrarrojos) para ROOMBA con PIC16F84

Desde hace algunos meses dispongo de uno de esos aspiradores autonomos (robotizados) ROOMBA. Como he visto que no hay mucha información en internet sobre el protocolo que se usa para transmitir los comandos IR a este aspirador, y aprovechando que estoy con un proyecto sobre éste, pongo aqui unas rutinas que he creado para enviar esos comandos IR con un PIC16F84.

El protocolo que usa para la emisión de estos comandos Infrarrojos (IR) es el siguiente:

Portadora de Frecuencia = 38 KHz (T = 26,31usg = Ton + Toff)
1 Lógico = 3 msg de envío de la portadora (ON) + 1 msg de OFF
0 Lógico = 1 msg de envío de la portadora (ON) + 3 msg de OFF

Por lo tanto, para enviar un “1 lógico” se deben enviar: 3msg/T = 114 pulsos (Ton+Toff) (3msg/26,31usg=114) y 1 msg a OFF.

Por lo tanto, para enviar un “0 lógico” se deben enviar: 3msg/T = 38 pulsos (Ton+Toff) (1msg/26,31usg=38) y 3 msg a OFF.

El comando CLEAR (comienza a aspirar) es el código 136 = “10001000

Aquí va el programa que he creado para enviar el comando CLEAR y que el aspirador se ponga a funcionar.

1program Envio_Comandos_ROOMBA
2' Envios de comandos IR a ROOMBA
3' *******************************************************************************
4'  (c) Autor: ZackY - zackyzgz@yahoo.es
5'
6'-HARDWARE:
7'    MCU: PIC 16F84A
8'    Cristal: 4 Mhz
9'    Diodo IR conectado a PORTA.1 (salida)
10'    Pulsador conectado a PORTB.0 (entrada)
11' *******************************************************************************
12 Dim pulsado as byte
13 
14     'Sub-rutina para generar un 1 logico de trama IR
15   Sub procedure Env_Uno()
16    Dim i as byte
17        For i=1 to 114          ' 3msg/26umg= 114 pulsos on-off
18        Setbit(PORTA,1)
19        Delay_us(12)           '  Ajuste: Debería ser 13usg, pero observando el osciloscipio
20        Clearbit(PORTA,1)    '       ese valor se ajusta mejor
21        Delay_us(2)             '  Ajuste: Debería ser 13usg, pero observando el osciloscipio
22        next i                      '       ese valor se ajusta mejor
23        Clearbit(PORTA,1)     ' 1msg a OFF
24        Delay_ms(1)
25    End sub
26 
27    'Sub-rutina para generar un 0 logico de trama IR
28   Sub procedure Env_Cero
29    Dim i as byte
30        For i=1 to 38         ' 1msg/26umg= 38 pulsos on-off
31        Setbit(PORTA,1)
32        Delay_us(12)
33        Clearbit(PORTA,1)
34        Delay_us(2)
35        next i
36        Clearbit(PORTA,1)     ' 3msg a OFF
37        Delay_ms(3)
38   End sub
39 
40Main:
41  TRISA = 0             ' PORTA.1 como Salida
42  TRISB = 1             ' PORTB.0 como Entrada
43  PORTA.1 = 0   ' Inicializo PORTA - Apago led
44  PORTB.0 = 1   ' Inicializo PORTB - Entrada OFF
45  pulsado = 0
46Inicio:
47 
48  While true
49    If PORTB.0 = 0 then    ' Envio comando CLEAR
50        Env_Uno      'Envia 1
51        Env_Cero     'Envia 0
52        Env_Cero     'Envia 0
53        Env_Cero     'Envia 0
54        Env_Uno      'Envia 1
55        Env_Cero     'Envia 0
56        Env_Cero     'Envia 0
57        Env_Cero     'Envia 0
58        Delay_ms(32)
59    end if
60  Wend
61End.

Fuente: http://foros.zackyfiles.com/showthread.php?t=570461

Escribe un comentario

Tu comentario