Autor Tema: Problema con receptor infrarrojo y pic12f629  (Leído 3407 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado JuanjoPic

  • PIC12
  • **
  • Mensajes: 97
Problema con receptor infrarrojo y pic12f629
« en: 29 de Enero de 2016, 19:50:41 »
Hola compañeros, estoy tratando de recepcionar los datos de un receptor infrarrojo utilizando el pic12f629.
Para lograr recepcionar los datos utilizo interrupciones externas y el timer0 (el timer0 esta configurado con un prescaler de 128, con flanco de bajada y utilizo un resonador ceramico de 4Mhz).
El receptor IR cumple con la norma NEC 32. Mediante un osciloscopio, determine que el bit start tiene un periodo de 13,2 mseg aprox, el cero logico 1,12mseg aprox y el uno lógico 2,1 mseg aprox.
Los datos que envia el IR son de la siguiente forma:
BIT-START + 00000000 11111111 xxxxxxxx xxxxxxxx (x: depende del dato).

El bit start lo recepciono deforma precisa (no tengo problemas con el),el  problema radica con los bit siguientes (lo se por que el timer0 cuenta 103 veces.....en tiempo seria 103*128*10^-6 = 13,18 mseg casi 13,2 mseg que predice el osciloscopio).
Para determinar el 0 logico el timer cuenta 8 veces (este valor se lo he pedido al pic y siempre me da el numero 8..........8*128*10^-6 = 1,02 mseg ...lo cual estaría dentro del valor de la norma).

Segun calculo el 1 lógico el timer debiera contar hasta 17 o 18 veces.

Como dije el bit start lo recepciono bien  :)

Cuando le pido que me envié los 8 bits siguientes que debieran ser 00000000 me entrega 00001111  :(

Lo que he hecho es pedirle los tiempos de esos 8 bit y siempre me entrega que los ceros el timer cuenta hasta 8 y los 1 hasta 17.
Realmente no se lo que pasa (he leido el datasheet muchas veces)......lo que he pensado es lo siguiente:

1.- no esta tomando bien las interrupciones.
2.- quizás no alcanza hacer la rutina de comparación en el tiempo antes de una nueva interrupción (esto no creo mucho que pueda ser ya que al simular, y exagerando la frecuencia de los datos, le sobra tiempo al pic  8) .......las instrucciones las cumple en 1useg y a lo mas son 15 lineas de procedimiento...asi que no creo mucho que sea esto ).
3.- quizás sea el resonador  :?
Realmente no se que pueda ser.
El programa lo hice en assembler y simulado me funciona bien pero en la realidad no.
Cualquier ayuda me seria de utilidad.
Saludos!!

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re:Problema con receptor infrarrojo y pic12f629
« Respuesta #1 en: 29 de Enero de 2016, 20:54:11 »
Es bastante complejo de entender lo que intentaste expresar sin tener en claro algunas cosas:

- Frecuencia a la que trabaja el PIC
- Programa

Y luego me cuesta un poco tener una idea porque tengo entendido y la mayoria que vi el protocolo NEC posee una portadora de 38Khz(26.3us) y ademas el bit de start es de 9ms.
Luego la distancia de ausencia de burst es lo que te va a dar el 0 o el 1.

Recorda que es un burst y no una señal "continua". ( A no ser que tu receptor ya posea un filtro pasabajo para eliminar la componente de 38Khz), eso te falto decir tambien.

Luego lo que haria es usar un pin con capacidad de generar una interrupcion por flanco. Usar un timer grande y finalmente una maquina de estado.
« Última modificación: 29 de Enero de 2016, 21:01:10 por KILLERJC »

Desconectado JuanjoPic

  • PIC12
  • **
  • Mensajes: 97
Re:Problema con receptor infrarrojo y pic12f629
« Respuesta #2 en: 29 de Enero de 2016, 22:18:48 »
Gracias por comentar.

- bueno el pic trabaja con una frecuencia de 4Mhz

adjunto una fotos de los datos que envía el receptor IR.

la FOTO 1 : El pic esta viendo un estado alto el pin de transmisión del receptor IR. Cuando empieza a mandar los datos el receptor IR envía un flanco de bajada para dar inicio al bit start....... lo que yo hago es mediante interrupción externa detectar este flanco de bajada y poner a contar el timer0 hasta la siguiente interrupción por flanco de bajada....... el timer me cuenta hasta 103 (en tiempo seria 103*128*10^-6 = 13,18 mseg).

la FOTO 2 : se puede ver el bit start.

ese bit lo determino muy bien

la FOTO 3 : vienen los 00000000 11111111  (las señales mas cortas son los ceros y las mas grandes los unos). Cuando le pido al pic que almacene los 00000000 me entrega 00001111. AL pic le cree un programa aparte que me muestre la cuenta almacenada en el timer0, y este me muestra que cuenta 8 veces para los ceros y 17 para los unos .....y siempre me muestran los mismos tiempos.

la FOTO 4 : son los datos que dependen del botón presionado.


El problema mio radica en que lee bien los 4 primeros 0 de los 8 ceros ..... después de los 4 ceros cuenta unos.
 
Adjunto las fotos.


Luego subire el programa.

Desconectado JuanjoPic

  • PIC12
  • **
  • Mensajes: 97
Re:Problema con receptor infrarrojo y pic12f629
« Respuesta #3 en: 29 de Enero de 2016, 22:25:17 »
foto 3

Desconectado JuanjoPic

  • PIC12
  • **
  • Mensajes: 97
Re:Problema con receptor infrarrojo y pic12f629
« Respuesta #4 en: 29 de Enero de 2016, 22:26:29 »
la foto 4

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re:Problema con receptor infrarrojo y pic12f629
« Respuesta #5 en: 29 de Enero de 2016, 22:42:07 »
Esta invertida la señal. Pero bueno solo restara ver el programa no queda otra.

PD: El osciloscopio que tenes parece ser un RIGOL, deberia poder poner tu pendrive y tomar mejores imagenes. Pero ya con estas es suficiente como para ver que esta pasando