Tabla de contenido:

UChip - ¡Serie sobre IR !: 4 Pasos
UChip - ¡Serie sobre IR !: 4 Pasos

Video: UChip - ¡Serie sobre IR !: 4 Pasos

Video: UChip - ¡Serie sobre IR !: 4 Pasos
Video: Tutorial: University of Chicago Press (UCHIP). 2024, Mes de julio
Anonim
UChip - ¡Serie sobre IR!
UChip - ¡Serie sobre IR!
UChip - ¡Serie sobre IR!
UChip - ¡Serie sobre IR!

La comunicación inalámbrica se ha convertido en una característica clave en nuestros proyectos en la actualidad y hablando de inalámbrica, lo primero que me viene a la mente es Wi-Fi o BT, pero manejar los protocolos de comunicación Wi-Fi o BT no es una tarea fácil y consume mucho de recursos de MCU, dejando poco espacio para codificar mi aplicación. Por lo tanto, suelo optar por un módulo Wi-Fi / BT externo conectado en serie al microcontrolador para dividir los roles y obtener una mayor libertad.

Sin embargo, a veces Wi-Fi y BT son "excesivos" para algunas aplicaciones que requieren una tasa de bits baja y una distancia de comunicación corta. Además, el uso de Wi-Fi o BT implica la necesidad de conectar su Smartphone o dispositivo con la autenticación adecuada.

Imagine que simplemente necesita encender / apagar una luz externa, cambiar la intensidad de la lámpara o abrir un portón eléctrico. ¿Valdría la pena usar Wi-Fi o BT?

Dependiendo del entorno y las aplicaciones, la comunicación inalámbrica a través de la longitud de onda IR (infrarrojos) puede resultar útil. Un Serial over IR, implementado con pocos componentes externos (¡3 componentes discretos!), Y uChip (una placa muy pequeña compatible con Arduino) pueden ser la solución que estaba buscando.

Lista de materiales (para un dispositivo Tx-Rx):

1 x uChip

1 x LED IR: con el pico de emisión a 950 nm

1 x TSOP-38238 (de equivalente)

Resistencia de 1 x 1KOhm

Hardware

1 x tablero / proto tablero

1 x tubo de plástico negro: diámetro interior del mismo tamaño que el LED de infrarrojos, el tubo es necesario para evitar la intercomunicación con el receptor TSOP.

1 x papel de aluminio (3 cm x 3 cm)

1 x cinta

SUGERENCIA: Puede crear un dispositivo solo TX o solo RX en caso de que necesite una comunicación unidireccional eliminando el hardware RX / TX innecesario del circuito o habilitando / deshabilitando el código relacionado en el boceto.

Paso 1: cableado

Alambrado
Alambrado
Alambrado
Alambrado
Alambrado
Alambrado

Conecte los componentes juntos de acuerdo con el esquema.

Algunas notas sobre el esquema simple. Dado que el TSOP-38238 permite una fuente de alimentación de 2.5V a 5V y absorbe 0.45mA como máximo (encontrará la hoja de datos AQUÍ), alimentaré el receptor con dos pines, que proporcionarán tierra y fuente de alimentación respectivamente. Esto permite encender / apagar el receptor a pedido y una configuración de cableado de hardware muy simple. Además, en caso de que necesite una comunicación unidireccional, puede elegir si desea crear un dispositivo solo (Tx / Rx) simplemente deshabilitando / habilitando el TSOP-38238.

¿Cómo funciona el circuito?

Es muy sencillo. El pin de salida TSOP se baja cuando el sensor detecta un tren de 6 pulsos o más a 38 KHz, por otro lado, se tira hacia arriba cuando no hay tal señal. Por lo tanto, para transmitir los datos en serie a través de IR, lo que hace el circuito es alimentar el ánodo del LED con un PWM de 38KHz modulado con la señal en serie TX que baja el cátodo del LED.

En consecuencia, en un nivel alto de la TX0 serial, el LED no está polarizado o polarizado en reversa (sin pulsos) y el pin de salida TSOP está alto. Transmitiendo un nivel bajo en la serie, el LED se enciende y genera pulsos IR de acuerdo con la señal PWM aplicada; por lo tanto, la salida de TSOP es baja.

Dado que la transmisión es directa (0-> 0 y 1-> 1) no hay necesidad de inversores u otra lógica en el lado del receptor.

Regulo la potencia de salida óptica del LED seleccionando el ciclo de trabajo PWM de acuerdo con la aplicación. Cuanto mayor sea el ciclo de trabajo, mayor será la potencia de salida óptica y, por lo tanto, más lejos transmitirá su mensaje.

¡Tenga en cuenta que todavía necesitamos generar pulsos! Por lo tanto, no debe superar el ciclo de trabajo del 90%, de lo contrario, el TSOP no detectará la señal como pulsos.

¿Necesitas más potencia?

Para aumentar la corriente, ¿podemos simplemente reducir el valor de la resistencia de 1kOhm?

Tal vez, ¡no seas demasiado exigente! La corriente máxima que obtiene de un pin de la MCU está limitada a 7mA cuando el pin del puerto es más fuerte de lo normal (PINCFG. DRVSTR = 1 y VDD> 3V) como se indica en la hoja de datos SAMD21.

Sin embargo, la configuración estándar (que es la adoptada por las bibliotecas IDE de Arduino por defecto) limita la corriente a 2 mA. Por lo tanto, usar 1kOhm ya da el límite actual con la configuración predeterminada.

Aumentar la corriente no es solo una cuestión de componentes eléctricos. Brevemente:

  • Cambie la resistencia (cuyo valor mínimo está limitado a aproximadamente 470Ohm -> VDD / 470 ~ 7mA);
  • Establezca el correspondiente PORT-> PINCFG-> DRVSTR en 1;

Proporcionaré el código que incluye esta función en una actualización futura.

Pero recuerde, hundir y drenar la corriente de los pines de MCU cerca de sus límites no es un buen enfoque. De hecho, reduce la vida útil y la confiabilidad de la MCU. Por lo tanto, sugiero mantener la fuerza normal de la unidad para un uso a largo plazo.

Paso 2: programación

Cargue el boceto "IRSerial.ino" en uChip (o en la placa compatible con Arduino que esté utilizando).

En caso de que necesite cambiar el pin que genera el PWM, asegúrese de estar usando un pin conectado a un temporizador TCC, ya que esta versión del código solo funciona con temporizadores TCC (consulte la "variant.c" de su placa para obtener esta información). Agregaré el código para usar también temporizadores TC en futuras actualizaciones.

El código es bastante simple. Después de configurar el PIN_5 bajo (proporciona TSOP GND) y PIN_6 alto (alimentando el TSOP), la MCU inicia el PWM en PIN_1, configurando el período del temporizador y la captura en consecuencia con la modulación de frecuencia necesaria (en mi caso es 38KHz) y deber ciclo (12,5% por defecto). Esto se hace explotando la función analogWrite () estándar en los pines PWM y cambiando solo el registro PER_REG (registro de período) y el registro CC (comparación de captura) (el código escrito es simplemente un cortar y pegar de la biblioteca de cableado_analógico). Puede configurar la frecuencia necesaria de acuerdo con el cambio de PER_REG del sensor TSOP (que es el límite superior que restablece el contador del temporizador), mientras configura CC proporcionalmente al valor del período al porcentaje deseado del ciclo de trabajo.

A continuación, el código establece el puerto serie utilizando la velocidad en baudios correcta que es 2400bps. ¿Por qué una velocidad en baudios tan baja? La respuesta está en la hoja de datos de TSOP que puede encontrar AQUÍ. Dado que el TSOP cuenta con filtros de rechazo de alto ruido para evitar conmutaciones no deseadas, es necesario enviar un tren de pulsos múltiples para bajar el pin de salida TSOP (el número de pulsos depende de la versión TSOP, 6 es el valor típico). De manera similar, la salida TSOP se eleva después de una cantidad mínima de tiempo equivalente a 10 pulsos o más. En consecuencia, para configurar la salida TSOP como la señal TX0 moduladora, es necesario configurar la velocidad en baudios considerando la siguiente ecuación:

Baudios en serie <PWM_frequency / 10

El uso de 38KHz da como resultado una velocidad en baudios inferior a 3800bps, lo que significa que la velocidad en baudios permitida "estándar" más alta es 2400pbs, como se anticipó anteriormente.

¿Quiere aumentar la velocidad en baudios? Hay dos opciones.

La opción más sencilla es cambiar el TSOP a una versión de frecuencia más alta (como el TSOP38256), lo que le permitiría duplicar la velocidad en baudios (4800bps)

¡¿No es suficiente?! Luego, debe crear su propio enlace óptico utilizando un simple circuito de amplificación y fotodiodo IR LED +. Sin embargo, esta solución requiere mucha experiencia en codificación y electrónica para evitar que el ruido afecte los datos transmitidos y, por lo tanto, su implementación no es nada fácil. Sin embargo, si se siente lo suficientemente seguro, ¡puede intentar crear su propio sistema TSOP!:)

Finalmente, configuro el puerto SerialUSB (2400bps) que uso para enviar y recibir datos en el monitor serial.

La función loop () incluye el código necesario para pasar datos a través de las dos series y se copia directamente del boceto de ejemplo SerialPassthrough cambiando solo los nombres de las series.

Paso 3: Blindaje del LED IR

Blindaje de LED de infrarrojos
Blindaje de LED de infrarrojos
Blindaje de LED de infrarrojos
Blindaje de LED de infrarrojos

Si enciende los circuitos anteriores después de cargar el código “IRSerial.ino”, verifique el Monitor serial en Arduino IDE e intente enviar una cadena. ¡Probablemente verá que uChip está recibiendo exactamente lo que está transmitiendo! Hay una diafonía en los circuitos debido a la comunicación óptica entre el LED IR y el TSOP del mismo dispositivo.

¡Aquí viene la parte difícil de este proyecto, evitar las conversaciones cruzadas! El bucle debe romperse para realizar una comunicación en serie bidireccional por infrarrojos.

¿Cómo rompemos el bucle?

Primera opción, reduce el ciclo de trabajo PWM, lo que reduce la salida de potencia óptica del LED. Sin embargo, este enfoque también reduce la distancia sobre la que obtiene un canal de infrarrojos en serie confiable. La segunda opción es proteger el LED de infrarrojos, creando así un “haz” de infrarrojos direccional. Es una cuestión de prueba y error; por fin, usando un trozo de manguera de aire neumática negra envuelta en papel de aluminio y cinta (que proporcionaba aislamiento eléctrico) logré romper la conversación cruzada. Poner el LED IR transmisor dentro del tubo evita la comunicación entre TX y RX del mismo dispositivo.

Mire la imagen para ver mi solución, pero siéntase libre de probar otros métodos y / o sugerir el suyo. No existe una solución absoluta para este problema (a menos que necesite un canal unidireccional simple) y probablemente necesite sintonizar el diseño de los circuitos, el ciclo de trabajo PWM y el blindaje IR de acuerdo con sus necesidades.

Una vez que rompa la diafonía, puede verificar que su dispositivo todavía está funcionando creando un bucle en el dispositivo Tx-Rx aprovechando el reflejo de la longitud de onda de IR en superficies reflectantes de IR.

Paso 4: ¡Comunícate

¡Comunicar!
¡Comunicar!
¡Comunicar!
¡Comunicar!

¡Eso es todo

Su dispositivo serial sobre IR está listo para comunicarse, utilícelos para enviar datos por IR, encienda / apague lo que quiera o verifique el estado de un sensor que está ocultando en secreto.

La distancia a la que la comunicación es confiable no es tanto como para un dispositivo WiFi o BT. Sin embargo, es direccional (dependiendo de la apertura del LED y del sistema de blindaje IR implementado), lo que puede ser muy útil en algunas aplicaciones.

Próximamente subiré un video donde podrán ver algunos ejemplos de las aplicaciones que hice. ¡Disfrutar!

Recomendado: