HELIOS REN Tail Light System
El siguiente trabajo presenta las etapas del diseño de un prototipo de sistema de luces traseras para una bicicleta. Se realiza la selección de los componentes adecuados a los requerimientos del proyecto y a los criterios del equipo de trabajo. Se realiz\'o la simulación del funcionamiento del sistema en el software Proteus, y la codificación con la ayuda de MPLABX. Adicionalmente, se presenta el diseño PCB del circuito y las modificaciones a la propuesta de la competencia.
Requerimientos
Requerimientos Generales
Diseñar un prototipo de un sistema de luces traseras para bicicletas.
Requerimientos Específicos
- Autonomía de 25 horas en funcionamiento continuo.
- Uso de baterías recargables, la recarga se realiza utilizando un puerto USB.
- Tres modos de operación.
- Valor final viable para el mercado (25€ $<$ valor $<$ 40€)
- Utilizar componentes disponibles, asequibles y con soporte en el mercado.
Además, se propone añadir otra versión del producto comercializado en su versión PRO, con los siguientes requerimientos:
- Luces de cruce para cada lado e intermitentes.
- Control de mando ajustable al volante del ciclista para controlar el comportamiento del producto.
La Figura 1 describe los distintos modos de operación propuestos para el sistema de luces traseras. Además, plantea el uso de un único botón para realizar la transición entre modos. Las luces de cruce no se ven reflejadas en los modos de operación, dichas luces solo tienen dos estados: encendido y apagado.
Figura 1: Diagrama que muestra los modos de uso de las luces traseras
Diseño
Hardware
En la Figura 2 se puede observar el diagrama de bloques de hardware del prototipo. Incluye los componentes esenciales del diseño: pulsadores, baterías, cargador de baterías, luces y los transistores que representan la etapa de control de potencia de cada luz LED. En la Figura 2 se les llama luces de freno a las luces traseras que no se utilizan para indicar cruces.
Figura 2: Diagrama de Bloques de Hardware
Alimentación
Para incorporar baterías de litio recargables al diseño se seleccionó un módulo basado en el integrado TP4056, que contiene un cargador de corriente y voltaje constante para baterías de ion litio de una celda (Figura 3). Las baterías de 1 celda tienen un voltaje nominal de 3.7V, dicho valor se establece como el voltaje de alimentación de los circuitos lógicos en el diseño.
Para dimensionar las baterías se tomó como referencia que el dispositivo debe ser capaz de ofrecer un funcionamiento de 26 horas continuas con ambas luces principales encendidas a máxima potencia. Cada LED presenta un consumo máximo de 180 mA, de manera que: 2x180 mA x 26h = 9360 mAh. En este sentido se decidió usar un arreglo de 4 baterías de 2600 mAh en paralelo, lo que ofrece 10400 mAh que permiten cubrir la demanda de los LEDs previamente descrita.
Figura 3: Módulo TP4056, cargador de Batería.
Microcontrolador
Los requerimientos funcionales del proyecto son:
- 4 salidas digitales para controlar 4 LEDs.
- Programar el dispositivo vía ICSP.
- Alimentación con 3.7V.
- 4 entradas digitales para controlar el comportamiento de las luces LEDs.
Como es posible observar, las principales limitantes para escoger un microprocesador para esta aplicación, son los puertos digitales disponibles en el mismo. Es por ello que se buscó uno con dichas características y que fuese conservador con los recursos internos. Las familias de productos PIC12F y PIC16F tienen un CPU de 8 bits que puede funcionar a velocidades de hasta 5 MIPS (Millions of Instructions Per Second). Las variantes de dispositivos de la familia PIC12F tienen 8 pines, mientras que las variantes PIC16F se ofrecen en paquetes de 14 a 64 pines. Para el proyecto, se escogió el procesador PIC16F1454 de Microchip debido a que es la familia de procesadores mas cercana a cumplir con nuestros requerimientos funcionales.
La gama PIC16F de microcontroladores de Microchip son MCU de 8 bits que incorporan la arquitectura PIC de Microchip de una gran variedad de opciones de encapsulado y con dispositivos desde 14 contactos. La familia PIC16F1454/1455/1459 de microcontroladores se basa en el núcleo de arquitectura media con 49 instrucciones y proporcionan hasta 12 MIPS, 14 Kbytes de memoria de programa, y memoria de datos de 1024 bytes de RAM. En la placa hay un oscilador configurable con una precisión de ±0,25 %.
Características del microcontrolador PIC16F1455:
- Velocidad de CPU máx. de 48 MHz.
- Bloque de oscilador interno de 16 MHz – Rango de frecuencia seleccionable de 16 MHz a 32 kHz.
- 12 contactos de E/S – PIC16F1454/1455.
- Programación serie en circuito (ICSP).
- Dos temporizadores de 8 bits.
Además, este dispositivo cuenta con otros periféricos como un convertidor analógico a digital (ADC) de 10 bits y 5 canales, puerto serie síncrono maestro (MSSP) con SPI e I2C, sin embargo, los mismos no son utilizados. El Pinout del dispositivo puede ser observado en la figura 4.
Figura 4: Pinout PIC16F1455.
Figura 5: Símbolo PIC16F1455 en el esquemático.
Se puede programar el microcontrolador utilizando un programador ICSP (se puede utilizar para cualquier chip PIC). Las conexiones ICSP se muestran en el siguiente diagrama (Figura 6):
Figura 6: Símbolo para la entrada ICSP en el esquemático.
Para el presente diseño no se considero necesario el uso de un oscilador externo por dos razones:
- El microcontrolador cuenta con uno interno de 16MHz configurable con alta precisión.
- A pesar de existir la probabilidad de errores en la medición de los tiempos, esta no es un aplicación sensible a cambios en milisegundos, ya que los modos de operación de las luces son cuantificados en segundos. Cualquier cambio de comportamiento seria prácticamente imperceptible y no justifica aumentar la complejidad del diseño en hardware.
- Utilizar un dispositivo externo equivale a utilizar 2 GPIO más para este propósito.
Iluminación
Se utilizaron cuatro LEDs de 0.5 Watts, dos de ellos para las luces de parada y dos para luces de cruce. Se seleccionó el LED blanco de OVS5MWBCR4 de la marca TT Electronics de 50 lm, cuyo voltaje de fordward está en el rango de [3.0 ; 4.1] V, una corriente nominal de 180 mA y un pico de corriente 350 mA, de esta manera no hace falta resistencia de protección para dichos LEDs, ya que la alimentación es de 3.7V. Para optimizar la distancia de visualización de los LEDs se utilizan lentes de enfoque a 10° de apertura para cada uno.
Para controlar a los LEDs se necesitó cuatros transistores. Se seleccionó dos integrados BTS3405GXUMA1 de la marca Infineon, cada integrado tiene dos transistores cuyo voltaje drain-source máximo (VDS) es de 42 V, corriente máxima de drain es 350 mA cada uno, ideal para los LEDs escogidos; y voltaje de activación de 1.7V, por lo tanto es compatible con la lógica de 3.3V del microcontrolador.
Figura 7: Sistema de control para las luces LED.
Interfaz de control
El control de las luces cuenta con dos formatos. El primero, cuenta con un solo botón, el mismo es capaz de realizar ciclos de encendido, pasando por los distintos modos de operación, hasta el apagado. Este botón estará en el case del dispositivo.
Figura 8: Sistema de control para las luces LED.
El segundo formato, es usando un mando de control. A través de esta opción se podrá incorporar mas funciones, entre ellas, luces intermitentes y luces de cruce, además de los modos de operación que se mantienen igual. Esta versión del producto tiene costo extra y el mismo puede ser observado a continuación.
Figura 9: Sistema de control externo para las luces LED.
Software
En la Figura 10 se puede observar el diagrama de bloques del software para el microcontrolador. Cada pulsador se encuentra conectado a un puerto de entrada y salida, configurado como entrada. El microcontrolador debe identificar el estado en el puerto de entrada y manejar los posibles rebotes asociados.
Un deslizador selecciona la luz de cruce que se va utilizar. Un bot\'on coloca ambas luces de cruce en modo intermitente. Un pulsador cambia el estado de las luces traseras, dichas luces siguen los modos presentados en la Figura 1.
Dado que no se utilizó ningún periférico, la única configuración realizada al microcontrolador fue la de escoger el oscilador. Como se mencionó anteriormente, se optó por utilizar el oscilador interno del dispositivo, con una frecuencia de 31KHz, la menor posible. Esto debido a que no se necesita un nivel de precisión elevado, además de que permite un menor consumo de las baterías.
Una vez realizada la selección del hardware, se realizó el Diagrama de Bloques de Software que se muestra en la Figura 10. Dicho diagrama muestra los periféricos utilizados, y los elementos del software indispensables: incluyendo la lectura de los puertos, el manejo de rebotes en el caso de ser necesario y el uso de un controlador que establece las señales para las luces y maneja los puertos de salida conectados a los transistores de potencia. También se realizó un Diagrama Jerárquico de Software, se observa en la Figura 11, que muestra como se relacionan los elementos antes mencionados. Finalmente se realizó el Diagrama de Capas de Software, que se muestra en la Figura 12, dicho diagrama se enfoca en establecer cuáles elementos podrían tener mayor complejidad. En el Diagrama de capas, los bloques considerados con mayor complejidad son los controladores porque deben manejar los estados de cada luz, además el diagrama muestra el amplio uso de los puertos de entrada y salida en el proyecto.
En las Figuras 10, 11 y 12 se les llama luces de \textit{freno} a las luces traseras que no se utilizan para indicar cruces.
Implementación
A nivel de código, luego de inicializar el sistema y las variables necesarias, el programa fluye de la siguiente manera:
- Se realiza la lectura de todas las entradas, es decir, si se han presionado o no alguno de los botones.
- Se verifica si se ha presionado el botón para encender las luces intermitentes, el cual tiene prioridad sobre cualquier luz de cruce. En caso de que sí, se realiza dicha acción.
- Si no se presionó el botón para las luces intermitentes, se verifica si se presionó el que enciende la luz de cruce derecha. En caso de que sí, se realiza dicha acción.
- Si no se presionó el botón para las luces intermitentes, ni el botón para encender la luz de cruce derecha, se verifica si se presionó el que enciende la luz de cruce izquierda. En caso de que sí, se realiza dicha acción.
- En caso de no haber presionado ninguno de estos tres botones, las luces de cruce simplemente quedan apagadas.
- Se verifica si se ha presionado el botón para cambiar el modo de operación de las luces de parada. El modo de operación inicia por defecto en 0. Este cambia cuando se detecta un flanco de bajada, es decir, al dejar de presionar el botón. Los modos se operación son los siguientes:
- Modo 0: las luces de parada se mantienen apagadas.
- Modo 1: las luces de parada se mantienen encendidas de manera fija.
- Modo 2: las luces de parada se encienden de manera intermitente.
- Modo 3: las luces de parada se mantienen de manera intermitente con los ciclos de encendido y apagado invertidos, es decir, solo se enciende un LED a la vez.
- Se aplica el modo de control seleccionado, el cual es manejado por una máquina de estados, mostrado en la Figura 1.
- Se actualizan todas las variables de control.
Cabe destacar que los ciclos de encendido y apagado de las luces, al momento de ser necesarios, son temporizados haciendo uso de contadores de ciclo. Para determinar el número de ciclos correcto, de modo que las luces cambiaran de estado en un tiempo prudencial, se realizó un proceso iterativo en el que se hicieron pruebas con distintos valores, hasta determinar el más apropiado.
Adicionalmente, se cuenta con un control de rebote por software para el caso del botón de selección de modos.
Figura 10: Diagrama de Bloques de Software.
Figura 11: Diagrama Jerárquico de Software.
Figura 11: Diagrama Jerárquico de Software.
Figura 12: Diagrama de Capas de Software
Resultados
Se realizó la simulación del circuito propuesto en Proteus, en la Figura 13 se puede apreciar el diseño realizado. Los interruptores del mando se modelaron como Switches, mientras que para el control de los distintos modos se incorporó un botón. El sistema de alimentación no se ilustra en la simulación, únicamente se incorporan fuentes del voltaje correspondiente. Los integrados seleccionados como transistores (BTS3405GXUMA1) no se pueden simular en Proteus, por lo que se representaron mediante sus equivalentes MOSFET. Se lograron simular exitosamente los distintos modos de operación, en el vídeo entregado se muestra su funcionamiento.
Figura 13: Modelo del circuito en Proteus
Se puede concluir que los precios finales de venta se encuentran dentro de los márgenes de los requerimientos y, dependiendo de la configuración y el tamaño de la compra, se obtienen mas beneficios con nuestra solución a un precio competitivo.
Como paso extra para desarrollar el proyecto, se hizo el diseño del PCB del sistema completo. El mismo fue realizado con el Software Altium Designer y los resultados pueden ser observados a continuación.
Figura 14: PCB del sistema. Vista 1
Figura 15: PCB del sistema. Vista 2
Finalmente, a efectos de culminar un prototipo de diseño mecánico, se diseñ\'o una carcasa utilizando el Software de modelado 3D AutoCAD. Los resultados finales pueden ser observados a continuación:
Figura 16: Carcasa del PCB