Relojes en ATtiny13

Me encanta el reloj luminoso, y cuando necesitaba otro, los ensamblé rápidamente en una placa de prueba de ATtiny85, el indicador de siete segmentos TM1637 y el reloj en tiempo real DS1307. Sin embargo, durante la asamblea, la sensación de que se podía prescindir de un controlador más simple no me dejó. Y eso resultó ser cierto.

Descargo de responsabilidad

El autor no tiene experiencia en ingeniería y el trabajo no está relacionado con los microcontroladores, porque seguramente todo es regular. Además, no hay optimización del consumo de energía: ¡nosotros, los arduino, no lo hemos aceptado!

Hardware


En primer lugar, estudié las soluciones disponibles y no encontré ningún ejemplo listo para conectar un DS1307 de dos hilos a ATtiny13. Porque RTC ha sido reemplazado por un DS1302 de tres hilos. Dos patas más tomaron la conexión de pantalla. En el medio pie restante del restablecimiento, había un botón para configurar el tiempo usando StackOverflow y un par de resistencias.


Conexión final de elementos.


Diagrama de conexión (desde staticmain )

Para bien, aún necesita resistencias de 4.7-10K desde las patas del microcontrolador PB1 y PB2 (centro superior) al power plus y un condensador de 0.1μF entre más y menos, pero funciona sin ellos.

Parte de software


El número de patas en el ATtiny13 no es el único problema. La memoria disponible también es pequeña, solo 1Kb, como resultado de lo cual las bibliotecas preparadas no son adecuadas. La solución es utilizar el paquete MicroCore y la biblioteca compacta para TM1637 . No se encontró nada para el DS1302, así que tuve que crearlo yo mismo sobre la base de este repositorio. El código de observación resultante está disponible en GitHub .

Instrucciones paso a paso para quienes desean repetir


  1. Lista de partes
    • Microcontrolador ATtiny13
    • Mostrar en TM1637
    • Reloj de tiempo real DS1302
    • Cuarzo a 32768Hz
    • Botón
    • Un par de resistencias en 1K y 10K
    • Soporte de batería de 3 voltios
    • Tablero de pruebas y puentes o placa de circuito

    Si toma Ali-Express, todo tomará alrededor de 100 rublos.
  2. Como programador, Arduino con el boceto ArduinoISP, suministrado en los ejemplos, cargado en él. Si, como yo, usa Arduino Nano y los pines 10-13 para conectarse, entonces necesita descomentar la línea 81

    #define USE_OLD_STYLE_WIRING 

    Después de cargar el boceto entre las patas del suelo y tirar el Arduino, debe colocar un condensador a 10 mF, aunque algunos se cosen sin él.


    Proceso de firmware ATtiny13 a través de un Arduino ligeramente polvoriento
  3. Para que Arduino IDE pueda funcionar con ATtiny13, los contenidos de MicroCore se agregan a la carpeta% Program Files (x86)% / Arduino / hardware. Después de eso, en el IDE, en la sección Herramientas, la placa ATtiny13 se selecciona con la configuración: BOD deshabilitado, LBO habilitado, reloj 9.6 osc interno.




  4. Las fuentes de Git ya contienen las bibliotecas necesarias para trabajar con ds1302 y TM1637, que están configuradas para trabajar en los pines (ver los archivos de encabezado de la biblioteca), respectivamente, la imagen de conexión, así que simplemente descargue el repositorio y cargue clock.ino a ATtiny13. El firmware ocupará casi todo el espacio disponible.


    Dispositivo montado en una placa de pruebas. Los puntos verdes indican la ubicación de instalación de ATtiny para el firmware (el cable de alimentación naranja más es muy poco visible).
  5. Debido a la peculiaridad de conectar el botón, las clasificaciones de resistencia y el voltaje de alimentación imprecisos, puede ser necesario cambiar el umbral de respuesta de analogRead en clock.ino (línea 26).
  6. Los planes eran fabricar la placa utilizando el método LUT, pero la impresora se descompuso en el proceso, por lo que la verificación de la placa resultante se pospuso indefinidamente hasta que se reparó.

En lugar de una conclusión


El microcircuito TM1637, que controla un indicador de siete segmentos, tiene salidas de dos pines, cuyo estado se puede enviar a través de la interfaz. Sin embargo, no están separados en el módulo de visualización y la biblioteca utilizada no los admite.

Sería posible criar una placa para un indicador más grande colocando microcircuitos y un microcontrolador en una placa de circuito impreso, pero me pareció que en este caso es más fácil comprar una lista para usar. Aunque, para mí, esto podría ser un buen diseñador de radio.

Source: https://habr.com/ru/post/448764/


All Articles