banner
Centro de Noticias
Elija entre nuestra amplia gama de productos y servicios de clase mundial para vivir una experiencia verdaderamente extraordinaria.

Disco de estacionamiento con E

Jul 16, 2023

La evolución del sector de la automoción, desde el punto de vista de la integración de la tecnología electrónica en los vehículos, ha alcanzado cotas altísimas. Prácticamente todos los aspectos funcionales se gestionan de forma óptima mediante sensores sofisticados, interfaces digitales, microprocesadores y software relacionado. Sin embargo, en la cabina de lo que ahora se puede considerar "computadoras sobre ruedas", todavía es fácil encontrar un instrumento indispensable, a menudo hecho de cartón humilde y operado manualmente. Se trata del Time Disk, un dispositivo necesario para indicar el inicio del estacionamiento en zonas reguladas. A lo largo de las décadas, este accesorio se ha mantenido casi inalterado (fabricado en cartón, plástico u otros materiales más nobles) y sólo recientemente han aparecido en el mercado algunos modelos digitales. El que se propone en el artículo utiliza una moderna pantalla de papel electrónico con algunas características especiales, como configurar la hora de llegada con un solo botón, un mensaje en cuatro idiomas a elegir y la visualización bajo demanda de la hora y fecha actuales. , la temperatura ambiente y el nivel de la batería.

La tecnología e-ink (tinta electroforética), invención relativamente reciente (1996), generalmente denominada e-Paper, debe su éxito principalmente a su uso en lectores de libros electrónicos, dispositivos portátiles que ofrecen una alternativa electrónica a los libros tradicionales, gracias a su experiencia de lectura similar al papel y su perfecta visibilidad incluso en condiciones de mucha luz. Sin embargo, la característica única que ha llevado a la difusión de esta tecnología en otras áreas es la capacidad de mantener la visualización de información durante mucho tiempo incluso en ausencia de una fuente de alimentación, lo que permite la realización de dispositivos que potencialmente requieren energía sólo para el tiempo necesario para actualizar la pantalla (refresh). Las aplicaciones típicas, cada vez más populares en los puntos de venta, son las etiquetas electrónicas y las etiquetas de precios, a menudo difíciles de distinguir de las de papel, que pueden actualizarse cuando sea necesario, incluso de forma remota mediante tecnologías inalámbricas. Para comprender mejor cómo funciona la tinta electrónica,Cifra1Ayúdanos.

En la versión más sencilla, en blanco y negro, se suspenden pigmentos cargados positivamente (blanco) y negativamente (negro) en un líquido contenido en microesferas que representan píxeles. Debido a la polarización creada por un campo eléctrico adecuado, los pigmentos, atraídos por la carga de signo opuesto (electroforesis), se posicionan para crear píxeles blancos o negros, componiendo la imagen deseada. En este punto, incluso si se elimina el campo eléctrico, los pigmentos permanecen en su posición hasta que se aplica una nueva carga. La visibilidad, desde un ángulo especialmente amplio, se consigue mediante la reflexión de la luz ambiental y, en su defecto, se requiere una fuente de luz especial. Curiosamente, sin embargo, bajo la luz solar directa, la actualización de la pantalla no se realiza correctamente. Partiendo de este principio de funcionamiento se han realizado numerosos tipos de visualizadores, incluso grandes y a todo color, que sin embargo siguen siendo muy caros. Al mismo tiempo, ha aumentado la oferta asequible de los minoristas especializados de displays más pequeños, en blanco y negro, en escala de grises o en colores limitados. Por otro lado, el interés de los aficionados al bricolaje por estos componentes no ha aumentado tanto, por lo que he podido comprobar en Internet. En mi opinión, la razón de esto se encuentra en varios puntos críticos, que también se pusieron de manifiesto durante el desarrollo de este proyecto, debido a factores como el excesivo número de modelos, versiones, tamaños, drivers y combinaciones de colores en el mercado. , la falta de bibliotecas bien documentadas y fáciles de implementar para las distintas plataformas de desarrollo y, a menudo, información y soporte fragmentarios e insuficientes por parte de los propios fabricantes. A pesar de esto, eligiendo entre los productos mejor respaldados y aplicándonos obstinadamente como Makers, fue posible lograr un resultado que creo que podría ser interesante. Por lo tanto, continuemos con el análisis del diagrama del circuito, que se muestra enCifra2.

Para gestionar el display se eligió un microcontrolador ATmega328P, el mismo que se utiliza en la placa Arduino UNO, dada la disponibilidad de una biblioteca versátil específica para esta plataforma. La MCU funciona a una frecuencia de reloj de 8 MHz, gracias al resonador cerámico externo, y normalmente se encuentra en un estado de ahorro de energía (SLEEP_MODE_PWR_DOWN), para "despertarse" solo si es necesario actualizar la pantalla. El circuito integrado del Reloj en Tiempo Real (RTC) DS3231M, por su parte, permanece activo en todo momento, capaz de mantener, mientras esté encendido, la fecha y la hora con una precisión de ±5 ppm (±0,432 segundos/ día). Otras características notables incluyen un sensor de temperatura, una alarma dual y un consumo de corriente extremadamente bajo, del orden de microamperios (μA) en la configuración utilizada, suministro único (solo VBAT). Se comunica con el microcontrolador a través de una interfaz I2C y una biblioteca dedicada. El botón SW2 (azul en el prototipo) 'despierta' la MCU, que así puede recibir datos sobre la hora actual y mostrarlos en la pantalla, junto con el mensaje 'HORA DE LLEGADA' y el logo 'P', antes de regresar. al modo de suspensión. Un breve pitido del timbre confirma el funcionamiento del botón mientras el LED azul D2 permanece encendido mientras dura el evento. SW1 (rojo en el prototipo), por otro lado, produce un reinicio del hardware del ATmega328P, seguido inmediatamente por la visualización de una pantalla que muestra el logo 'P', el símbolo de la batería y el voltaje, la temperatura ambiente, la hora actual y fecha y el idioma seleccionado para el mensaje, según el ejemplo deCifra3.

La misma pantalla se muestra automáticamente cada 24 horas (a la hora deseada, gracias a la función de alarma RTC) para realizar un refresco completo de la pantalla, recomendado por el fabricante, y comprobar el estado de la batería y el correcto funcionamiento del sistema entero. Por tanto, podemos definir SW2 como “botón de aparcamiento” y SW1 como “botón de información”. Las resistencias R1 y R10, con condensadores C1 y C5, ayudan a suprimir cualquier ruido debido al rebote de los contactos del botón, mientras que R2, R4, R5, R6 son resistencias pull-up. C2, C3 y C4 son los condensadores de derivación de fuente de alimentación habituales de los circuitos integrados. R11 limita la corriente consumida por el terminal de reinicio de la pantalla específica utilizada. JP2 es el conector al display, mientras que JP1 permite la carga de firmware conectando un programador USBasp. Debido al bajo consumo de corriente, la alimentación del prototipo la proporciona una pequeña batería recargable Ni-MH de 3,6 V con una capacidad de 40 mAh. El circuito formado por Q1, Q2, R8, R9 es un regulador de corriente constante con baja caída de voltaje, lo que limita la corriente de carga a unos 6 mA, valor que este tipo de baterías puede soportar sin ningún inconveniente incluso si se superan los 14 esperados. ..se superan las 16 horas de carga. Una toma micro-USB permite la conexión de un cargador común de 5 V, a través de un fusible de protección reiniciable, mientras que el diodo D1 evita el "reflujo" de corriente de la batería. El LED D3 indica que el dispositivo se está cargando. Sin embargo, profundizaremos más en el tema del suministro de energía más adelante.

El prototipo del Parking Disk con pantalla de papel electrónico se realizó como es habitual en una placa prototipo, como se puede ver enCifra4 . Por supuesto, ésta es sólo una de muchas posibilidades; Al utilizar componentes SMD y una placa de circuito impreso especial, probablemente se podría lograr un tamaño más pequeño, un poco más grande que la pantalla. La batería y el timbre se ubican debajo del módulo de papel electrónico, mientras que el conector de ocho pines del mismo se obtiene de un tramo de contactos de regleta macho y hembra. Los circuitos integrados están montados en enchufes y se utilizó un adaptador disponible para el DS3231M, en una carcasa SO-8. Máxima libertad para elegir el recinto, siempre que esté equipado, por supuesto, con una ventana transparente.

En lo que respecta al módulo e-Paper, como ya se ha mencionado, a veces resulta difícil orientarse entre la amplísima gama de componentes aparentemente similares que se ofrecen. El utilizado en el prototipo es visible enCifra5. Se trata de un Waveshare de 2,9 pulgadas de diagonal, blanco y negro, resolución 296 x 128. Tiene un convertidor de nivel lógico incorporado y admite actualización parcial, una característica indispensable en este proyecto. Es posible que otros modelos distintos a este no garanticen los mismos resultados que obtuve o que requieran modificaciones en el firmware o el diagrama de cableado. También hay que tener en cuenta el rango de temperatura de funcionamiento permitido, que en este caso va de 0 a 50 °C.

Cifra6muestra el lado de soldadura del prototipo, en el que también se encuentran el diodo D1 (tipo SMD) y el conector de carga micro-USB.

Volviendo al tema de la alimentación, la elección de una batería recargable Ni-MH, una tecnología no muy reciente, está motivada principalmente por la búsqueda de una mayor seguridad y fiabilidad en las condiciones de uso no siempre óptimas de un vehículo. En comparación, por ejemplo, con las baterías de iones de litio, el peligro de explosión, aunque remoto, es nulo e incluso el rendimiento a bajas temperaturas es mejor. La carga estándar es ciertamente más lenta, pero más fácil de manejar. En cualquier caso, dadas las mínimas corrientes implicadas y la tensión de funcionamiento del circuito, que puede variar entre 3,3 V y 5,0 V sin problemas, también se debería considerar una solución con tres pilas alcalinas AAA en serie, eliminando la necesidad de cargarlas. circuito y aún así poder contar con una duración que probablemente supere la del coche! Cuantificar con precisión el "consumo" de dispositivos cada vez más populares que funcionan con baterías y que alternan entre períodos de actividad y pausas en el modo de ahorro de energía (también conocido como modo de suspensión, apagado, hibernación, bajo consumo) no es sencillo; Desafortunadamente, no basta con insertar un multímetro en serie con la fuente de alimentación y tomar una lectura de corriente. El cálculo básico a realizar para obtener el valor medio de la corriente consumida y, por tanto, una estimación de la duración de la batería, se puede representar con la siguiente pseudofórmula:

donde IAVG representa la corriente promedio, ION la corriente de actividad, ISBY la corriente de espera, TON el tiempo de actividad y TSBY el tiempo de espera. 'Capturé' la tendencia de la corriente activa con el osciloscopio (verCifra7) detectando la caída de voltaje en los extremos de una resistencia de precisión de bajo valor en serie con la fuente de alimentación, obteniendo, con aproximación aceptable, la cifra de 10 mA por un tiempo de 7,5 segundos, que representa la duración de un ciclo de visualización.

La corriente de reposo, medida con un multímetro digital, asciende a tan solo 3 µA. Suponiendo que usaremos el disco de estacionamiento cuatro veces al día, más el ciclo de actualización, obtenemos un tiempo de actividad total de 7,5 x 5 = 37,5 segundos y un tiempo de descanso de (24 x 3600) - 37,5 = 86.362,5 segundos durante 24 horas. Obtenemos por tanto:

Una batería de 40 mAh –dejando de lado por simplicidad la reducción de capacidad por autodescarga, caída de voltaje nominal, variaciones de temperatura y otros factores– con una corriente promedio de 0,008 mA idealmente podría alimentar el circuito durante aproximadamente 40 / 0,008 = 5.000 h (es decir, más de 200 días o al menos seis meses)! Siendo realistas, incluso una duración reducida a la mitad sería un buen resultado. Ahora también están disponibles cómodas aplicaciones en línea para este tipo de cálculo. Proporciono un enlace a uno que considero uno de los más eficaces y prácticos.

En este proyecto, el código fuente 008000"> está escrito con el IDE Arduino 1.8.19 y requiere, para su correcta compilación, la instalación del núcleo Arduino MiniCore v2.1.3 y algunas librerías específicas. El núcleo utilizado permite un uso más eficiente y versátil. gestión del microcontrolador ATmega328P y sobre todo optimiza el uso de la memoria del código compilado, que llega a ocupar 31.264 de los 32.768 bytes de memoria de programa (Flash) y 1.501 de los 2.048 bytes de memoria dinámica (SRAM), casi al límite de posibilidades de este MCU. Cabe señalar que este proyecto no es factible, ni siquiera por prueba y error, con una placa Arduino Uno, ya que parte de la memoria de esta última es utilizada por el gestor de arranque para permitir la programación directa, mientras que para el microcontrolador 'barebone' Usamos un programador externo USBasp. Hablando de memoria, la palabra clave PROGMEM aparece varias veces en el listado, refiriéndose a las matrices de bytes del mapa de bits y cadenas de caracteres de texto, que son datos de solo lectura. Al declarar estas matrices como PROGMEM, las funciones pueden accede a estos datos leyéndolos directamente desde la memoria Flash, sin copiarlos primero en la SRAM, mucho más pequeña, que luego permanece disponible para la ejecución "dinámica" del programa. Para la comunicación con el reloj de tiempo real integrado (RTC) se utiliza la biblioteca DS3231M 1.0.6, mientras que para la gestión básica del e- Visualización del papel. Este último se debe sobrescribir con el suministrado con el proyecto, que tiene fuentes modificadas. La biblioteca GxEPD2 es un trabajo enorme y lamentablemente carece de una documentación estructurada, que se encuentra en el código de los ejemplos disponibles, que son muy numerosos, pero a primera vista intimidantes debido a su aparente complejidad, que luego se descubre. debe deberse al intento de ampliar la compatibilidad a tantos modelos de pantalla como sea posible. Por tanto, he intentado hacer un trabajo resumido, extrapolando sólo las funciones y definiciones necesarias para el tipo de pantalla utilizada en el proyecto. Estos se pueden encontrar en el archivo Waveshare_29_BW_avr.h, mientras que el archivo ParkBitmap128x128.h contiene la matriz de bytes, obtenida mediante un convertidor especial, que representa la imagen de mapa de bits del logotipo del aparcamiento (P mayúscula inscrita en un cuadrado con esquinas redondeadas, tamaño 128 x128 píxeles, blanco/negro). Estos archivos, disponibles para descargar, residen en la carpeta de bocetos, junto con el archivo de código fuente principal Disco_Orario_e-Paper.ino, en el que también hay enlaces a los sitios principales y de la biblioteca, comentarios extensos sobre el código y otras indicaciones de que encontró útil. Aconsejo a los lectores interesados ​​en los detalles del listado que lo examinen abriéndolo con el IDE de Arduino (o su editor favorito). En cambio, aquí me gustaría ilustrar el funcionamiento del programa de una manera más descriptiva, con la ayuda del diagrama de flujo enCifra8.

Teniendo en cuenta que el circuito siempre está conectado a la batería, la primera vez que se enciende (Power-Up), se ejecutan las operaciones de inicialización y la función setup(), con la activación de una Interrupción, y luego el bucle( ) se ejecuta. Al inicio del bucle, se comprueba la temperatura ambiente. Si no está dentro del rango esperado se emite una señal de alarma acústica y luminosa, entonces el microcontrolador se coloca en modo de máximo ahorro de energía (SLEEP_MODE_PWR_DOWN). De lo contrario, el bucle() continúa inicializando la pantalla, mostrando el logo 'P', el estado de la batería, la fecha y hora actuales, la temperatura y el idioma seleccionado para el mensaje entrante, mostrando lo que podemos llamar modo información, después de lo cual la pantalla se apaga. 'hibernado' (nuevamente para ahorrar energía), la MCU se apagó y el bucle () se canceló. A partir de este estado, el microcontrolador puede ser 'despertado' (Wake Up) mediante un reset hardware (con el botón SW1) o mediante una Interrupción, evento generado en este caso por la función de alarma diaria del RTC o por el botón SW2. Si la reanudación es causada por el reset o la alarma, el loop() se reinicia desde el principio y siempre termina en modo info. Por otro lado, si se reactiva el microcontrolador vía SW2, el loop() se reinicia, inicializa el display, muestra el logo y si se presionó y soltó inmediatamente el botón, muestra el mensaje de llegada y la hora actual, en lo que llamaremos modo de estacionamiento. Por el contrario, manteniendo pulsado SW2 se mostrarán sucesivamente los mensajes en los cuatro idiomas. Simplemente suelte el botón cuando aparezca el deseado y la configuración se almacenará en EEPROM hasta el próximo cambio. A continuación aparecerá la hora actual y el ciclo finalizará siempre en modo aparcamiento. Un ejemplo de las capturas de pantalla se puede ver en la Figura 3. Hemos visto cómo la fecha y hora actuales son proporcionadas y mantenidas por el circuito integrado RTC DS3231M, que aún debe programarse después de la primera aplicación del voltaje de suministro y en caso de que el suministro falla el voltaje. Para simplificar el firmware y el circuito, evitando la adición de botones adicionales, la programación de la fecha y la hora se realiza al mismo tiempo que se carga el boceto, mediante una línea de código especial insertada en el setup( ) rutina:DS3231M.adjust(DateTime(2022, 03, 02, 19, 10, 00)); El formato a utilizar es del tipo “AAAAA,MM,DD,hh,mm,ss”. Una vez que haya ingresado los datos correctos, puede cargar el boceto, verificar la fecha y hora, comentar la línea (agregue la doble barra al principio) y volver a cargar el boceto, esto es para evitar que el reloj vuelva a su configuración inicial a las cada reinicio. Para lograr suficiente precisión, simplemente mida el tiempo que lleva cargar el código, digamos 30 segundos, y luego inicie la primera carga con 30 segundos de anticipación. Con unos cuantos intentos se puede conseguir una sincronización por segundo sin... ¡sin coste alguno! El tiempo de actualización diario también se configura desde el código, simplemente ingresando el tiempo deseado. Finalmente, una nota sobre el método utilizado para medir el voltaje de la batería. Se encuentra a menudo en Internet, con algunas variaciones, y el propio Microchip lo documenta en su propia nota. El 'truco' consiste en establecer, a través de los registros apropiados, el voltaje de referencia interno (1,1 V) como valor de entrada del ADC y el voltaje a medir (VCC) como referencia. Cualquier cambio en VCC cambiará la lectura del ADC, lo que permitirá calcular el valor de voltaje con suficiente precisión.

Aunque ofrece características de indudable interés, que la hacen especialmente adecuada para el proyecto presentado, la tecnología e-Paper también presenta ciertas limitaciones, la más evidente de las cuales es la baja frecuencia de actualización. El modelo utilizado aquí realiza el ciclo de actualización completo en 2 segundos y la actualización parcial en 0,3 segundos. Por lo tanto, estos valores no pueden competir con otros tipos de visualización en la visualización de imágenes, gráficos y textos que cambian rápidamente. Finalmente, como suelo decir, más allá de la utilidad real del objeto propuesto, espero que hayas encontrado algunas ideas interesantes para elaborar y reutilizar con actitud de Maker, y que este artículo haya despertado tus ganas y curiosidad por experimentar con e. -¡Expositores de papel!

Este artículo aparece en Elektor mayo/junio de 2023. ¿Tiene preguntas técnicas o comentarios sobre estas pantallas de papel electrónico o cualquier otro tema tratado en este artículo? Le invitamos a ponerse en contacto con el autor o con el equipo editorial de Elektor.

Cifra1Cifra2Cifra3Cifra4Cifra5.Cifra6Cifra7Cifra8