Tabla de contenido:

El reloj binario definitivo: 12 pasos (con imágenes)
El reloj binario definitivo: 12 pasos (con imágenes)

Video: El reloj binario definitivo: 12 pasos (con imágenes)

Video: El reloj binario definitivo: 12 pasos (con imágenes)
Video: 3 relojes QUE TODO HOMBRE debe de tener 2024, Noviembre
Anonim
El reloj binario definitivo
El reloj binario definitivo
El reloj binario definitivo
El reloj binario definitivo
El reloj binario definitivo
El reloj binario definitivo

Recientemente me presentaron el concepto de relojes binarios y comencé a investigar un poco para ver si podía construir uno para mí. Sin embargo, no pude encontrar un diseño existente que fuera funcional y elegante al mismo tiempo. Entonces, ¡decidí crear mi propio diseño completamente desde cero!

Suministros

Todos los archivos de este proyecto:

Las bibliotecas para el código Arduino se pueden descargar desde GitHub aquí:

Biblioteca RTC M41T62

Biblioteca FastLED

Biblioteca LowPower

Paso 1: ¡La idea

Recientemente me encontré con el siguiente video:

Reloj de pulsera binario de bricolaje

El video de arriba muestra un reloj binario casero básico. No tenía idea de que existiera tal cosa, pero después de investigar un poco más sobre el tema de los relojes binarios, ¡rápidamente me di cuenta de que había un montón de diseños diferentes por ahí! Quería construir uno para mí, pero no pude encontrar un diseño que me gustara. Los relojes binarios que encontré carecían de muchas funciones y no se veían particularmente bien. Entonces, ¡decidí diseñar el mío completamente desde cero!

El primer paso fue establecer los criterios para mi diseño. Esto es lo que se me ocurrió:

  • Interfaz RGB binaria
  • Visualización de la hora (con indicación de la hora muy precisa)
  • Visualización de la fecha
  • Funcionalidad de cronómetro
  • Funcionalidad de alarma
  • Duración de la batería de al menos 2 semanas
  • Carga USB
  • Software fácilmente personalizable por el usuario
  • Un diseño limpio y sencillo

Estos criterios se convirtieron en la base de todo el proyecto. El siguiente paso fue averiguar cómo quería que funcionara el reloj.

Paso 2: algo de teoría del reloj binario

Algo de teoría del reloj binario
Algo de teoría del reloj binario

El plan era sencillo. El reloj binario funcionaría como un reloj normal, excepto que la interfaz sería binaria, específicamente, BCD (decimal codificado en binario). BCD es un tipo de codificación binaria donde cada dígito decimal está representado por un número fijo de bits. Necesito 4 bits para poder representar un dígito del 0 al 9. Y por un estándar

hh: mm

formato de hora, necesito 4 de esos dígitos. Esto significa que necesito un total de 16 bits que estarán representados por 16 LED.

Leer la hora en BCD es bastante fácil una vez que te acostumbras. La fila en la parte inferior del reloj representa el bit menos significativo (1) y la fila en la parte superior es el bit más significativo (8). Cada columna representa un dígito en el

hh: mm

formato de tiempo. Si un LED está encendido, cuenta ese valor. Si un LED está APAGADO, ignórelo.

Para leer el primer dígito, simplemente sume todos los valores correspondientes de los LED activados en la primera columna (la más a la izquierda). Haga lo mismo con los otros dígitos de izquierda a derecha. ¡Ya ha leído la hora en BCD!

Este principio será el mismo para el resto de funciones del reloj. El uso de LED RGB ayudará a distinguir entre diferentes funciones y modos utilizando diferentes colores. Los colores los elige el usuario y se pueden ajustar fácilmente a la paleta de colores que prefieran. Esto permite al usuario navegar fácilmente por las funciones sin confundirse.

¡El siguiente paso fue crear un diagrama de bloques!

Paso 3: Ponerse a trabajar

Llegando al trabajo
Llegando al trabajo

Como cualquier proyecto de electrónica típico, un diagrama de bloques es una parte esencial en la etapa inicial de diseño. Usando los criterios, logré armar el diagrama de bloques de arriba. Cada bloque del diagrama representa una función en el circuito y las flechas muestran la relación de las funciones. El diagrama de bloques en su totalidad ofrece una buena descripción general de cómo va a funcionar el circuito.

¡El siguiente paso fue comenzar a tomar decisiones sobre componentes individuales para cada bloque en el diagrama de bloques!

Paso 4: elección de componentes

Resultó que había bastantes componentes en este circuito. A continuación, he seleccionado algunos de los más esenciales junto con una explicación de por qué los elegí.

Los LED

Para la interfaz binaria, la elección fue bastante sencilla. Sabía que quería usar LED para la pantalla y descubrí que necesitaba 16 de ellos (en una cuadrícula de 4 × 4) para mostrar la mayor cantidad de información posible. Durante mi búsqueda del LED perfecto, el APA102 siguió apareciendo. Es un LED direccionable muy pequeño (2 mm x 2 mm) con una amplia gama de colores y bastante económico. Aunque nunca había trabajado con ellos antes, parecían encajar perfectamente en este proyecto, así que decidí usarlos.

El microcontrolador

La elección de un microcontrolador también fue bastante simple. Tenía mucha experiencia en el uso de Atmega328P-AU en aplicaciones independientes y estaba muy familiarizado con sus características. Este es el mismo microcontrolador que se utiliza en las placas Arduino Nano. Soy consciente de que probablemente haya un microcontrolador más barato que podría haber usado, pero saber que el Atmega328 tendría soporte completo para todas las bibliotecas Arduino fue un factor importante para elegirlo para este proyecto.

El RTC (reloj en tiempo real)

El requisito principal para el RTC era la precisión. Sabía que el reloj no tendría ninguna conexión a Internet y, por lo tanto, no podría recalibrarse a sí mismo a través de una conexión a Internet, el usuario tendría que volver a calibrarlo manualmente. Por lo tanto, quería que el cronometraje fuera lo más preciso posible. El M41T62 RTC tiene una de las precisiones más altas que pude encontrar (± 2 ppm, que equivale a ± 5 segundos por mes). La combinación de la alta precisión con la compatibilidad I2C y el ulta bajo consumo de corriente hizo de este RTC una buena opción para este proyecto.

Convertidor elevador DC-DC

La elección del IC convertidor elevador CC-CC se realizó simplemente mirando el circuito y averiguando qué voltajes y corrientes se requerían. Hacer funcionar el circuito con un voltaje bajo disminuiría el consumo de corriente, pero no podría bajar de 4.5V (el voltaje mínimo del microcontrolador a un reloj de 16MHz) y no podría pasar de 4.5V (el voltaje máximo del RTC). Esto significaba que tenía que hacer funcionar el circuito a exactamente 4.5V para operar los componentes dentro de sus especificaciones recomendadas. Calculé que la corriente máxima del circuito no superaría los 250 mA. Entonces, comencé a buscar un convertidor elevador que pudiera cumplir con los requisitos y rápidamente me topé con el TPS61220. El TPS61220 requería componentes externos mínimos, era bastante económico y podía satisfacer los requisitos de corriente y voltaje.

La batería

El requisito principal para la batería era el tamaño. La batería tenía que ser lo suficientemente pequeña para que pudiera caber dentro de la caja del reloj sin que pareciera voluminosa. Pensé que la batería no podía exceder los 20 mm × 35 mm × 10 mm. Con estas limitaciones de tamaño y el requisito actual de 250 mA, mi elección de baterías se limitó a las baterías LiPo. Encontré una batería "Turnigy nano-tech 300mAh 1S" en Hobbyking que decidí usar.

El IC de carga

No había ningún requisito particular para el controlador de carga, excepto que debía ser compatible con una batería LiPo 1S. Encontré el MCP73831T, que es un controlador de carga totalmente integrado diseñado para aplicaciones de carga de una sola celda. Una de sus características es la capacidad de ajustar la corriente de carga a través de una resistencia externa que encontré bastante útil en esta aplicación.

Protección LiPo

Quería incluir monitoreo de voltaje y corriente para proteger la batería de cualquier sobrecarga peligrosa y condiciones de descarga excesiva. Había una cantidad limitada de circuitos integrados que proporcionaban estas características y una de las opciones más económicas era el circuito integrado BQ29700. Requería una cantidad mínima de componentes externos e incluía toda la protección necesaria para una batería LiPo de celda única.

Ahora que se eligieron los componentes, ¡llegó el momento de crear el esquema!

Paso 5: el esquema

El esquema
El esquema

Usando Altium Designer, pude armar el esquema anterior usando recomendaciones de cada una de las hojas de datos del componente. El esquema se divide en diferentes bloques para que sea más legible. También agregué algunas notas con información importante en caso de que alguien más quisiera recrear este diseño.

El siguiente paso fue diseñar el esquema en una placa de circuito impreso.

Paso 6: Diseño de PCB

Diseño de PCB
Diseño de PCB
Diseño de PCB
Diseño de PCB
Diseño de PCB
Diseño de PCB
Diseño de PCB
Diseño de PCB

El diseño de PCB resultó ser la parte más desafiante de este proyecto. Elegí utilizar una placa de circuito impreso de 2 capas para reducir al mínimo los costes de fabricación de la placa de circuito impreso. Opté por usar un tamaño de reloj estándar de 36 mm porque parecía encajar bastante bien con los LED. Agregué algunos orificios para tornillos de 1 mm para asegurar la PCB en la caja del reloj. El objetivo era mantener un diseño limpio y atractivo colocando todos los componentes (excepto los LED, por supuesto) en la capa inferior. También quería usar el número mínimo absoluto de vías para evitar tener vías visibles en la capa superior. Esto significó que tuve que enrutar todos los rastros en una sola capa mientras me aseguraba de mantener las partes "ruidosas" del circuito lejos de los rastros de señales sensibles. También me aseguré de mantener todas las trazas lo más cortas posible, colocando los condensadores de derivación cerca de la carga, usando trazas más gruesas para componentes de alta potencia y siguiendo todas las buenas prácticas comunes de diseño de PCB. La ruta tomó bastante tiempo, pero creo que resultó muy bien.

¡El siguiente paso fue crear un modelo 3D para la caja del reloj!

Paso 7: Diseño 3D

Diseño 3D
Diseño 3D
Diseño 3D
Diseño 3D
Diseño 3D
Diseño 3D

La caja del reloj se diseñó siguiendo un diseño de reloj clásico y muy convencional utilizando Fusion 360. Utilicé un espacio estándar de 18 mm para la correa del reloj para que el reloj fuera compatible con una gran variedad de otras correas. El corte de la placa de circuito impreso se diseñó 0,4 mm más grande que la placa de circuito impreso en sí para adaptarse a cualquier imprecisión de fabricación. Incluí algunos postes de tornillos para montar la PCB y un pequeño borde para colocar la PCB. Me aseguré de empotrar la PCB a unos milímetros de la parte superior para evitar que los bordes afilados de los LED se atasquen en la ropa. La altura del recinto se determinó únicamente por el grosor de la batería. El resto del gabinete fue diseñado para verse simplemente bien con bordes redondeados y esquinas pulidas. Tuve que mantener el diseño amigable con la impresión en 3D para poder imprimirlo en 3D en casa sin ningún material de soporte.

Ahora que el hardware estaba terminado, ¡era hora de comenzar a trabajar en el software!

Paso 8: el código

El código
El código

Comencé el código incluyendo todas las bibliotecas necesarias. Esto incluye la biblioteca para comunicarse con el RTC y para controlar los LED. Después de eso, creé funciones separadas para cada uno de los modos. Cuando el usuario cambia de modo presionando un botón, el programa llama a la función correspondiente a ese modo. Si el usuario no presiona un botón dentro de un período de tiempo específico, el reloj se apaga.

El modo de suspensión se indica mediante la atenuación de todos los LED hasta que se apagan por completo. El uso del modo de suspensión aumenta enormemente la duración de la batería y mantiene los LED apagados cuando no están en uso. El usuario puede despertar el reloj presionando el botón superior. Cuando se despierta, el reloj verificará el nivel de la batería para asegurarse de que no requiera carga. Si es necesario cargar, los LED parpadearán en rojo varias veces antes de mostrar la hora. Si la batería está por debajo de un nivel crítico, no se encenderá en absoluto.

El resto del tiempo, la programación se dedicó a hacer que los otros modos fueran lo más intuitivos posible. Pensé que tener el mismo botón responsable de la misma funcionalidad en todos los modos sería lo más intuitivo. Después de algunas pruebas, esta es la configuración del botón que se me ocurrió:

  • Pulsación del botón superior: Despertador / Ciclo entre los modos "Mostrar hora", "Mostrar fecha", "Cronómetro" y "Alarma".
  • Mantener pulsado el botón superior: Ingrese al modo "Establecer hora", "Establecer fecha", "Iniciar cronómetro" o "Establecer alarma".
  • Pulsación del botón inferior: aumenta el brillo.
  • Mantener pulsado el botón inferior: Entrar en el modo "Elegir color".

El botón inferior siempre es responsable de los ajustes de brillo y color, independientemente del modo en el que se encuentre. Cuando el usuario ingresa al modo "Elegir color", los LED comienzan a recorrer todos los colores RGB posibles. El usuario puede pausar la animación y elegir el color que prefiera para ese modo específico (Mostrar hora en rojo, Mostrar fecha en azul, etc.). Los colores están destinados a ser fácilmente personalizables por el usuario para ayudarlo a distinguir entre los diferentes modos.

Ahora que el código estaba terminado, ¡era el momento de cargarlo en el microcontrolador!

Paso 9: Programación

Programación
Programación

Era casi la hora de soldar y ensamblar, pero antes necesitaba programar el microcontrolador. Seguí este tutorial

Grabe el cargador de arranque en un ATmega328P-AU SMD

sobre cómo grabar un cargador de arranque y programar el microcontrolador usando un Arduino Uno normal como programador.

El primer paso fue convertir el Arduino Uno en un ISP cargando el código de ejemplo "ArduinoISP". Usé una placa de pruebas junto con un enchufe de programación y conecté el esquema del tutorial. Después de eso, pude grabar el cargador de arranque en el microcontrolador simplemente presionando "Grabar cargador de arranque" en el IDE de Arduino.

Una vez que el microcontrolador tenía un cargador de arranque, simplemente quité el microcontrolador existente del Arduino Uno y usé la placa Arduino Uno como un adaptador USB a serie para cargar el código al microcontrolador en el zócalo de programación. Una vez finalizada la carga, pude comenzar el proceso de soldadura.

¡El siguiente paso fue reunir todos los componentes y soldarlos juntos!

Paso 10: soldadura

Soldadura
Soldadura
Soldadura
Soldadura
Soldadura
Soldadura
Soldadura
Soldadura

El proceso de soldadura se dividió en dos partes. Primero se necesitaba soldar la capa inferior y luego la capa superior.

Aseguré la PCB del reloj entre un par de placas prototipo con cinta. Esto aseguró que la PCB no se moviera durante la soldadura, lo cual es muy importante. Luego coloqué la plantilla de soldadura sobre el PCB y usé una cantidad generosa de pasta de soldadura para cubrir todas las almohadillas de soldadura. Procedí a usar un par de pinzas delgadas para colocar todos los componentes en sus almohadillas correspondientes. Luego utilicé una pistola de calor para soldar por reflujo todos los componentes en su lugar.

Cuando se soldó la capa inferior, le di una rápida inspección visual para asegurarme de que la soldadura se realizó correctamente. Luego volteé la placa y repetí el proceso de soldadura en el otro lado, esta vez con todos los LED. Era muy importante no sobrecalentar la placa al soldar la capa superior, ya que todos los componentes de la parte inferior corren el riesgo de caerse. Afortunadamente, todos los componentes permanecieron en su lugar y después de soldar los botones en su lugar con un soldador normal, ¡la PCB estaba terminada!

¡Ahora era el momento del montaje final!

Paso 11: Montaje

Montaje
Montaje

El montaje fue muy sencillo. Conecté la batería al PCB y coloqué la batería y el PCB dentro del gabinete impreso en 3D. Procedí a atornillar los cuatro tornillos en los orificios de montaje en cada esquina de la PCB. Después de eso, coloqué las correas del reloj con las barras de resorte de 18 mm y el reloj estaba completo.

Paso 12: Conclusión y mejoras

Conclusión y mejoras
Conclusión y mejoras
Conclusión y mejoras
Conclusión y mejoras

El reloj funciona como se esperaba y estoy muy contento con el resultado. No he tenido ningún problema con él hasta ahora y la batería permanece casi completamente cargada después de toda una semana de uso.

Podría agregar otras funciones al reloj en el futuro. Dado que el puerto USB está conectado al microcontrolador, el firmware se puede actualizar en cualquier momento con nuevas funciones. Sin embargo, por ahora, continuaré usando esta versión del reloj y veré cómo se mantiene después de un uso prolongado.

Si tiene alguna idea, comentario o pregunta sobre este proyecto, déjela a continuación. También puede enviarlos a [email protected].

Concurso de relojes
Concurso de relojes
Concurso de relojes
Concurso de relojes

Primer premio en el concurso de relojes

Recomendado: