Zegar z ds1302
– Układ DS1302 pozwala zbudować pełnoprawny zegar czasu rzeczywistego (RTC) z podtrzymaniem bateryjnym.
– Wymaga rezonatora 32,768 kHz, baterii (najczęściej CR2032) i trzech linii łączących z mikrokontrolerem (CLK, DAT, RST).
– Kluczowe punkty: poprawne BCD, wyzerowany bit CH, wyłączona ochrona zapisu WP, dobra jakość kwarcu i kondensatorów C₁, C₂.
DS1302 ma oddzielne rejestry sekund, minut, godzin, dnia, daty, miesiąca, roku oraz rejestry sterujące (WP, TR, CH). Adresowanie odbywa się jedynym bajtem komendy (bit 0 = R/W, bit 7 = dostęp do RAM). Dane zapisywane i odczytywane są w kodzie BCD.
+5 V/3 V3 MCU (np. Arduino) DS1302
───────────────┐ D6 ─────── CLK ──────────────┐
CR2032 (+)───┐ │ D7 ─────── DAT ◄─────────────┤ Dwukierunkowe I/O
│ │ D8 ─────── RST ──────────────┘
│ │ X1─┬─32 768 kHz
│ └────────GND────X2─┘
VCC1│
100 nF ─┤│├────VCC2 (kondensator filtrujący przy układzie)
Kondensatory obciążające kwarc dobiera się ze wzoru
\[
C{1}=C{2}=2\,(CL-C{\text{stray}})
\]
gdzie typowo \(C_L = 12{,}5\text{ pF}\), a \(C_{\text{stray}}\approx 3\text{ pF}\) ⇒ C₁ ≈ C₂ ≃ 19 pF.
rtc.halt(false);
// kasuje bit CH rtc.writeProtect(false);
// kasuje bit WP DS1302.h
): Time t(2024, 4, 27, 15, 30, 0); // RRRR,MM,DD,hh,mm,ss
rtc.setTime(t);
– Brak kompensacji temperatury; błąd typowo ±2 min/miesiąc, lecz w praktyce zależny od jakości kwarcu i warunków środowiskowych.
– Programowa korekta: okresowe dodanie/odjęcie sekund, synchronizacja z NTP, GPS lub DCF77.
Objaw | Najczęstsza przyczyna | Szybka weryfikacja |
---|---|---|
Losowe wartości | zły bit CH lub WP | rtc.halt(false); rtc.writeProtect(false); |
Reset po zaniku VCC | rozładowana bateria | pomiar ≥ 2,5 V na VCC1 |
Zegar spieszy/późni | złe C₁/C₂, tani kwarc | wymiana rezonatora, pomiar na X1/X2 |
Brak komunikacji | mylone piny, brak pull-up | test oscyloskopem SCLK/DAT |
– Od 2023 r. w większości nowych projektów hobbystycznych i profesjonalnych DS1302 zastępuje się DS3231 (TCXO, I²C, ±2 ppm ≈ ±1 min/rok) lub PCF8523 (NXP, I²C, niska cena).
– Moduły DS1302 nadal popularne ze względu na bardzo niską cenę (~1 USD), lecz raporty użytkowników wskazują na większą awaryjność i wahania dokładności.
– Coraz częstsze łączenie RTC z modułami komunikacji (ESP32, NRF52) i bieżąca synchronizacja z NTP, co redukuje wymagania co do samego RTC.
– Linia DAT jest dwukierunkowa: w trybie odczytu mikrokontroler ustawia pin w stan wysokiej impedancji po wysłaniu komendy.
– Bit TR (Trickle Charge) pozwala ładować akumulator NiMH/napięciowo-kondensatorowy; w większości gotowych płytek jest zwarty mikrozworą – upewnij się, czy nie przeładowujesz baterii litowej!
– Przykład zegara „stand-alone”: DS1302 + ATmega328P + 4× 7-seg + tranzystory MOSFET; przerwanie TIM1 co 1 s odlicza wyświetlacz, a co minutę odczytuje RTC.
– Baterie litowe CR2032 podlegają selektywnej zbiórce odpadów (Dyrektywa 2006/66/WE).
– W urządzeniach związanych z bezpieczeństwem (np. systemy dostępu) niski poziom dokładności DS1302 może prowadzić do błędów rejestracji zdarzeń – rozważ certyfikowany RTC.
– Projektując funkcję trickle-charge, sprawdź normy IEC 62133 dotyczące ładowania ogniw Li.
__DATE__
, __TIME__
) lub z magistrali. – 3-przewodowy interfejs nie jest zgodny ze sprzętowym SPI wielu MCU (odwrotna faza i brak MISO/MOSI); często używa się bit-banging.
– Dostępność oryginalnych układów maleje; na rynku występują klony o nieco innych parametrach (większy prąd w halt).
– W projektach IoT z ESP32 prościej jest skorzystać z wbudowanego RTC plus NTP, a DS1302 traktować jedynie jako backup offline.
– Porównawcze testy dokładności DS1302/DS3231/PCF8523 w różnych temperaturach.
– Implementacja algorytmu kalibracji programowej (Linear Drift Compensation).
– Zastosowanie kwarcu 32,768 kHz klasy ±10 ppm i wpływ wyboru \(C_L\) na stabilność.
– Projekt mini-UPS superkondensatorowy + trickle-charge zamiast CR2032.
DS1302 pozostaje najtańszym, prostym w użyciu układem RTC. Do budowy zegara wystarczy kwarc 32 kHz, bateria CR2032 i trzy przewody do mikrokontrolera. Należy zwrócić uwagę na bity CH i WP, poprawną obsługę BCD oraz jakość rezonatora. W nowych konstrukcjach wymagających dużej precyzji lub interfejsu standardowego (I²C) rośnie popularność DS3231 czy PCF8523, natomiast DS1302 sprawdzi się w tanich, nieskomplikowanych projektach edukacyjnych.