Часовник с
4-digit LED дисплей, TM1637 и
DS1307 под управление на Arduino
/kn34pc.com/конструкции/...
Преди няколко месеца, за да допълня поръчката си с нужни компоненти, бях си
купил за бъдещо използване посочения 4 digit LED дисплей.
Динамичното управление на 7 сегментните индикатори е организирано от ИС ТМ1637. На пръв поглед - безполезно устройство. Харесвам си повече за
експерименти информативните LCD дисплеи с ниско
потребление 16x1/16x2, но предвид цената, дежурният отговор е: "Вземам го, да
има! Някой ден ще ми потрябва."
Намерена е библиотека за управление
с Arduino, устройството е тествано с експерименталния sketch и прибрано на съхранение за "други времена".
![]() |
![]() |
Изминалата седмица ми "донесе" от братски Китай часовников модул с ИС DS1307 и
3V батерийка. Красиво изработена конструкция, почистена от флюс, добра антистатична и противоудара опаковка.
Тестове не бяха правени, устройството беше прибрано като работещо на
доверие. Мини-устройство от серията "Да има!"
.
![]() |
![]() |
Преди години сме правили не един
часовник, изпълнен къде с TTL
интегрални схеми, къде с ИС от CMOS серия (tnx
за емоциите, г-н Илиев!). Няма
да забравя горчивия опит при работа с българската часовникова интегрална
схема (генератор на 1 Hz ?) CM204.
ИС СМ204 дефектираха от статично електричество. Не една, не
няколко, а много! Облечен си с прекрасен, зимен пуловер, пипнеш чипа ... и пух-х-х:
"замине" си чипа. Пипнеш с върха на човката на
поялника да оправиш кривата и
грозна спойка .. и пух-х-х, "замине" си чипа.
През годините още си пазя интегрална схема CM204 като свиден спомен, с прилежно увити изводи
( ... пфу, 20 мин
я търсих из "боклуците" за
фото сесията, но я намерих!
).
![]() |
![]() |
После се появиха специализираните интегрални схеми, с които часовник се изграждаше с една, две, три интегрални схеми, точността се поддържаше или от делене на честотата от мрежата, или от кварцов резонатор на 32 768 Hz. После се появиха китайските радио-часовници, работещи "на магия", но работещи! и всякакви конструкции на тема "Направи си сам часовник" бяха безсмислени.
***
Та в петъчния скучен следобед (като последен ден от кратката
си отпуска) реших
да запоявам, да направя някаква схема, да конструирам нещо. Реших да обединя
тестовете на двете горни устройства в един. Така се роди идеята за
часовник с LED дисплей: за 10-15 мин "мъдруване" срещу
компютърния монитор (и почесване по главата от време на време) устройството
"някак си" зафункционира
.
Вярно, без засечки в програмата не се мина (напр.
изобразяването на цифра по цифра и подходящото "мигане" на двете точки между
часове и минути), но ако всичко е прекалено лесно, не е интересно.
Принципната схема е копие на компонентите и нахвърляните връзки от breadboard платката. Лично за мен схемата така ми е по-четима и разбираема, отколкото примерно нагледното опроводяване с други програми (Fritzing).
v1.01:
arduino_clock_4d_led_01.zip
[ino,spl7,gif,txt,h,cpp][66kb]
Във връзка с появата на предупреждения в използването на библиотеките при
Arduino IDE v1.8.7 несъществено промених кода на часовника. Функциите остават
непроменени:
v1.01.1:
arduino_clock_4d_led_01_1.zip
[ino,h,cpp][9kb]
Програмният код няма да описвам. Той е на база двата примера
към библиотеките. Последните съм добавил в текущата папка и пътят им е към нея.
Не е необходимо да се инсталира нищо друго допълнително. Подредбата в този вид ми е
по-прегледна, независимо, че понякога стават бъркотии с чужди кодове, упорито
отказващи компилация.
Ще обърна внимание в програмния код само на две подробности:
1. Настройка на яркостта на светене на LED
дисплея се избира от библиотеката за
управление. Представлява число / или израз / и е подбрано в 33 ред. При моите условия LED дисплея комфортно свети на максимална яркост, макар че вечер
светлината му леко заслепява.

2. При първоначално стартиране е необходимо ( или по-късно: принудително ) сверяване на часовниковата интегрална схема с точни дата и време от компютъра. За целта отмаркирайте веднъж 30 ред, заредете програмата в Arduino (Nano) и след като дисплея сработи, маркирайте отново ред 30 като коментар и отново заредите програмата в Arduino.
Така при последващо пускане на часовника (вече без
наличие на USB връзка към
компютъра) часовниковата ИС не се нуждае от друго действие по сверяване, а 3V
батерия поддържа хода на времето при липса на захранване
(при загасен LED дисплей!).
При нищожната консумация, цитирана в справочните данни, това се очаква да е
дълъг период от време.
Лично мен тези коментари в примерите докъде ги осмисля, ми
костваха 15-20 мин "ровене" из програмния код на библиотеките. Часовникът не
искаше и не искаше да поддържа времето след гасене на захранването и
последвалото пускане. Все едно се задействаше "машина на времето" с час: часът
на компилация и изпращане на програмата към Arduino
.
То и си пише, но на този "чуждоземски" (разбирай
английски) език ... който много не владея ...
Затова
повторението му е майката на знанието!

При изработване схемата на часовника на печатна платка (или
при вграждане в кутия заедно с друга апаратура) е добре да предвидите развръзка
на схемата по захранване с помощта (примерно) на единичен (или по-добре двоен) C-L-C филтър. При изпитания без такъв филтър, с
подаденото захранващо напрежение 12 волта на входа на ИС 7805, с
два блокиращи кондензатора вход
100nF / изход 100nF се чуваха звукови ефекти (дефекти
)
от сканирането на светодиодните сегменти в разположен на 30 см нискочестотен усилвателен блок с ИС A2030. Имаше ефект на
шумово присъствие и по висока честота в любителските
диапазони 14-21-28 MHz.
*** Допълнение 1:
Като добавка ми се искаше часовниковата схема да е
независима от връзката към компютър. Следващият прост вариант на схемата е с добавени два бутона за сверяване: + часове и + минути.
Отказах се от вариант на "зануляване" на индикатора с
натискане на двата бутона - нешумоустойчиво се получи. Може би в бъдеще ще
добавя други възможности. Хубавото на Arduino-проектите е, че остават отворени
във времето за добавки и изменения до безкрайност.
arduino_clock_4d_led_03.zip
[ino,spl7,gif,txt,h,cpp][69kb]
Във връзка с появата на предупреждения в използването на библиотеките при
Arduino IDE v1.8.7 несъществено промених кода на часовника. Функциите остават
непроменени:
v1.03.1:
arduino_clock_4d_led_03_1.zip
[ino,h,cpp][10kb]
Няколко дневните експерименти с
конструкцията показаха, че китайският модул с поддържащата времето батерийка
работи задоволително точно и не се нуждае от донастройка. Часовничето "цепеше
секундата"
.
Време е за прехвърляне всичко от breadboard на платка,
изработка на собствено захранване и затваряне в кутийка.
Пожелавам успехи в експериментирането!
Помощни препратки:
1.
GitHub.com: A fork
of Jeelab's fantastic RTC library
2.
GitHub.com: Arduino
library for TM1637 (LED Driver)
LZ2WSG, KN34PC, 24 юни 2016 година,
доп. 1 юли 2016 година, доп. 2 декември 2018 година