Tabla de contenido:

Wort-Uhr: 5 pasos
Wort-Uhr: 5 pasos

Video: Wort-Uhr: 5 pasos

Video: Wort-Uhr: 5 pasos
Video: как сделать Propeller LED Pendulum Clock, используя Arduino NANO, JLCPCB 2024, Noviembre
Anonim
Mosto-Uhr
Mosto-Uhr

¡Hola juntos!

Este será mi primer instructivo y si tiene alguna idea sobre cómo mejorarlo o hacer que sea más fácil de entender, ¡no dude en ponerse en contacto conmigo!

Bueno, al principio, ¡este tipo de "reloj" no es mi idea! He visto muchos a través de Internet y se pueden pedir por solo un par de dólares en diferentes tiendas web. Pero no quería comprarme uno, quería hacer uno propio para aprender y entender cómo funciona.

Una palabra para los miembros "no alemanes" … Perdón por el hecho de que esto es solo un "German Wort Uhr". Puede convertirse fácilmente al inglés oa cualquier otro idioma, pero como soy alemán, lo hice en mi idioma. Si necesita ayuda para su idioma, comuníquese conmigo e intentaré ayudarlo.

Así que comencemos …

Paso 1: el esquema

El esquema
El esquema

El esquema es sencillo y si la imagen es demasiado mala para leer, también hay un archivo PDF.

Comencemos en la esquina inferior izquierda. Hay una fuente de alimentación simple que usa un LM7805 para generar una salida estable de 5V para el PIC, los registros de desplazamiento (74HC164) y el chip DS3231 en tiempo real. Todos los LED también se suministran desde esta parte. D22 en el extremo derecho es solo para indicar la fuente de alimentación y se puede dejar aparte fácilmente si no se desea.

Puede usar cualquier fuente de alimentación de CC para el reloj con menos de 40 V, pero luego debe elegir el valor apropiado para C7. Debe tener una clasificación de voltaje de al menos el doble del voltaje de entrada y recuerde que está creando calor en el LM7805, por lo que debe tratar de mantener el voltaje de entrada lo más bajo posible porque todo lo demás es solo un desperdicio de energía. El mejor ajuste es algo entre 9 V y 12 V CC.

No se preocupe por la polaridad de su fuente de alimentación … El MOSFET de canal p (Q1) actúa como una protección de polaridad falsa y el reloj simplemente no funcionará y no sufrirá ningún daño. Puede comprobarlo en el LED de "alimentación" D22 si está montado.

En el lado derecho del esquema están los registros de desplazamiento de salida en paralelo de entrada en serie. Decidí usarlos porque no quería usar un PIC enorme con muchos puertos de E / S. Quería usar uno más pequeño y todavía tenía un 16F1829 en casa, así que la elección ya estaba clara. Los datos (IN_1, IN_2 e IN_3) los proporciona el PIC (consulte la sección de códigos a continuación) y también REGISTER_CLK. Por simplicidad en mi código y diseño de PCB, utilicé dos del 74HC164 para las horas y el último para la "lógica".

En la esquina superior izquierda está el PIC y todas las partes necesarias. Usé el reloj interno, por lo que no se necesita oszillator. Solo tres resistencias para SCL, SDA y MCLR. Por el hecho de que utilicé los 32 kHz como una indicación de "segundos exactos", no hay necesidad de una frecuencia bastante estable y precisa para el PIC.

En el medio está el DS3231 con un mínimo de partes externas. De hecho, utilicé solo las entradas SDA y SCL para la comunicación a través de I²C y la salida de 32kHZ como referencia de reloj externo para el Timer1 del PIC16F1829. Para esta salida, la hoja de datos dice que se necesita una resistencia pull-up externa. Las otras salidas que no utilicé en este proyecto y las dejé desconectadas.

También en el medio, los LED … Como puede leer en el esquema, utilicé LED azules (aquellos con carcasa transparente) y un valor de resistencia de 1k Ohms. Si pretendes realizar este proyecto tú mismo debes elegir los valores de estas resistencias según el color y tipo de los LED que elijas. También tenga en cuenta dónde desea que se configure el reloj. El mío está parado en mi dormitorio, por lo que no quería que los LED fueran demasiado brillantes y elegí un valor mayor para las resistencias. Haga algunos intentos en una placa de pruebas con LED y valores de resistencia antes de montarlos en la PCB.

Paso 2: diseño

Diseño
Diseño
Diseño
Diseño
Diseño
Diseño

Después de terminar el esquema, es hora de enrutar la PCB. Para eso utilicé KiCAD (también para el esquema). No hay mucho que decir, solo enruta las líneas.

Por el hecho de que yo mismo imprimí la carcasa del reloj, era bastante importante dónde se ubican los LED en la capa superior. Solo puse los LED y las resistencias en la capa superior, porque ordené mi PCB parcialmente montada (todas las partes SMD) y porque la empresa que elegí para eso solo coloca partes en un lado y no en dos lados.

Puede ver la ubicación en las dos imágenes tridimensionales que hice con KiCAD.

Si está interesado … Es posible exportar la PCB KiCAD a Eagle y luego es bastante fácil construir la carcasa, porque tiene una referencia de la PCB.

Paso 3: "Lógica" del "Wort-Uhr"

La parte más importante de este proyecto fue el código del PIC …

Primero encontrando la "lógica" del tiempo hablado en alemán y traduciéndola a código.

Desafortunadamente, no fue posible cargar el archivo de Excel directamente, pero espero que la exportación en PDF sea lo suficientemente legible para usted. Si no es así, comuníquese conmigo y le enviaré el archivo Excel original. En el PDF puedes ver cómo configuro la lógica de mi reloj. Puedes ver cómo pasé por los diferentes pasos de tiempo y cómo está la ortografía. El cálculo dentro del código (principalmente declaraciones if-else) se puede derivar de la información en el lado derecho de la tabla. Una parte es por minutos y una parte por horas.

Como puede ver, esto no es magia y se puede codificar fácilmente en C. El punto "más complicado" dentro de la lógica es cómo manejar la hora, como puede ver en el archivo que solo al comienzo de una hora se muestra la hora real.. En alemán (tal vez esto solo sea algo específico de Baviera), la "próxima hora" se usa bastante temprano.

Para codificar utilicé MPLABX como mi IDE de elección.

Paso 4: fragmentos de código

Fragmentos de código
Fragmentos de código
Fragmentos de código
Fragmentos de código

No publicaré mi código aquí, pero si tiene la intención de escribir su propio código, le daré algunas pistas sobre lo que "tropecé" durante el desarrollo …

Primero el "registro" -llenado:

Si transfiere nuevos datos a los registros con demasiada frecuencia y en ciclos demasiado cortos, hice la experiencia de que los LED comenzaron a parpadear. Así que hice algunas "banderas de bloqueo", que solo cada minuto se realiza un nuevo "cálculo" del tiempo hablado y se actualiza el registro.

El código para llenar los registros está en la imagen de arriba. Como puede ver, lleno los 3 registros en paralelo, por lo que necesito 3 pines del PIC para datos y 1 pin para CLK. El 74HC164 toma el control de nuevos datos en una transición en la línea CLK de 0 a 1.

El resto del código depende principalmente del PIC, el "tiempo hablado", la lógica y el manejo de la comunicación y los botones. La comunicación la proporciona principalmente Microchip MPLABX porque utilicé el módulo MSSP.

Una buena idea es leer la hoja de datos de DS3231 porque los datos se almacenan en el interior como BCD, por lo que es posible que tenga que "transformar" esto en su código. Bueno, en lo que a mí respecta, soy un tipo de "aprender haciendo" y POR SUPUESTO no leí la hoja de datos … Me costó muchos nervios y horas.

Como habrá notado, hay dos formas de "mantener el tiempo encaminado" con esta implementación.

  1. Puede leer el tiempo real del DS3231
  2. Puede "contar segundos" en el PIC y sincronizar la hora con DS3231 de vez en cuando

Depende de usted y ambos métodos son prácticos y sencillos. Usé la primera opción y solo el tiempo sincronizado al ajustar el tiempo a través de los botones (tiempo de escritura en DS3231) o cada 24 horas (tiempo de lectura de DS3231), porque quería implementar más lógica por mí mismo. También apago mi reloj durante la noche (23:00 a 05:00), así que en mi opinión fue un poco más fácil.

Paso 5: la vivienda

Por último, pero no menos importante, es hora de echar un vistazo a la carcasa.

Como mencioné anteriormente, hice la carcasa yo mismo (usando Eagle) y las imprimí con mi impresora 3D, así que tuve que vigilar las posiciones de los diferentes LED.

Adjunto puede encontrar los archivos STL si desea utilizarlos.

Espero que este instructivo te ayude a construir tu propio "Wort-Uhr". Si todavía hay "preguntas abiertas", no dude en ponerse en contacto conmigo. La mejor manera de comentar a continuación, porque es posible que no sea el único que tenga una pregunta específica.

Recomendado: