Wszystko co chciałbyś wiedzieć o DS1307

DS1307 to chyba jeden z najpopularniejszych układów RTC służących do odmierzania czasu w projektach Arduino, wykorzystywany podczas tworzenia różnego rodzaju zegarków. Niestety sprawia on często wiele kłopotów z dokładnością odmierzania czasu. Czy należy się martwić, jeśli zegarek śpieszy się o minutę na miesiąc? A pięć minut na miesiąc? Z czego to wynika? Jak sobie z nią poradzić i czy w ogóle mamy na to wpływ? Czy wiesz, że ten malutki układzik posiada generator przebiegu prostokątnego i pozwala na zapisanie w pamięci 56 bajtów?

Zegar czasu rzeczywistego RTC DS1307

DS1307 to chyba jeden z najpopularniejszych układów RTC służących do odmierzania czasu w projektach Arduino podczas tworzenia różnego rodzaju zegarków. Układ ten możemy swobodnie kupić już za około 3 zł, dlatego też jest bardzo chętnie wykorzystywany w ogromnej ilości gotowych modułów.

Ma tu wpływ nie tylko jego cena, ale zdolność  komunikacji z naszym mikrokontrolerem za pośrednictwem magistrali I2C.

DS1307 posiada możliwość zasilania bateryjnego z zakresu 2V ÷ 3.5V, które ma na zadanie podtrzymanie pracy zegara po zaniku głównego zasilania układu. Napięcie zasilania  może mieścić się w zakresie od 4.5V ÷ 5.5V przy poborze prądu na poziomie 1mA. Do poprawnego działania wymagany jest zewnętrzny kwarc 32.768Hz o pojemności obciążenia CL=12.5pF.

Warto tutaj wspomnieć o dodatkowych właściwościach układu, takich jak generator przebiegu prostokątnego, o częstotliwościach 1Hz, 4096Hz, 8192Hz lub 32768Hz. DS1307 oferuje również podtrzymywaną bateryjne  pamięć o rozmiarze 56 bajtów. Te dwie cechy są sukcesywnie pomijane przez twórców bibliotek oraz producentów gotowych modułów, poprzez  nie umieszczanie wyprowadzenia do odpowiedniego pinu SQW/OUT.

A szkoda – sygnał 1Hz możemy wykorzystać do obsługi przerwania aktualizacji wyświetlania czasu na ekranie LCD lub podłączenia mrugającego dwukropka pomiędzy godziną a minutą, oszczędzając tym samym pin cyfrowy Arduino i miejsce w pamięci na zbędny fragment programu.

Schemat połączeń

Połączenie DS1307 jest bardzo proste. Podłączamy zasilanie 5V (nóżka 8), masę GND (nóżka 4) orazkwarc zegarkowy 32768Hz pomiędzy nóżki 1 i  2 . Jak wspomniałem wcześniej, układ ten komunikuje się z Arduino za pomocą magistrali I2C, a więc SCL (nóżka 6) do pinu A5, a SDA (nóżka 5) do pinu A4. Nie zapomnijmy podciągnąć linii sygnałowych rezystorami o wartości 10kΩ do zasilania5V.

Należy zwrócić tutaj szczególną uwagę na wyjście SQW/OUT, które również podciągamy rezystorem o wartości 10kΩ do zasilania 5V. Jest to element wymagany ponieważ  wyjście SQW/OUT działa w układzie otwartego drenu. Dodatkowo jeśli chcemy podłączyć do niego diodę LED, należy podłączyć tutaj katodę, anodę zaś – do masy.  Jeśli nie planujemy korzystać z  SQW/OUT, możemy pozostawić je „w powietrzu”.

ds1307-schematic

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *