DS1307 a ESP8266

Zápisník experimentátora

Hierarchy: DS1307 Hodiny reálneho času

V datasheete k obvodu DS1307 sa dočítate, že doporučené napájanie integrovaného obvodu je v intervale 4,5 - 5 V. Na Internete ale nájdete veľa príkladov pripájania tohto integrovaného obvodu k ESP8266, kde nik otázku napájania nerieši. Poďme sa pozrieť na to, či DS1307 je schopné bez problémov spolupracovať s ESP8266.

Datasheet DS1307

V datasheete nájdete takéto upozornenie. Ak tomu správne rozumiem, keď napájanie obvodu klesne pod 4 V, obvod by nemal komunikovať s mikrokontrolérom, pretože používa referenčné napätie na batérii na to, aby zistil, či je pripojený ku zdroju napätia.

Vcc - Primary Power Supply. When voltage is applied within normal limits, the device is fully accessible and data can be written and read. When a backup supply is connected to the device and VCC is below VTP, read and writes are inhibited. However, the timekeeping function continues unaffected by the lower input voltage.

When VCC falls below 1.25 x VBAT, the device terminates an access in progress and resets the device address counter. Inputs to the device will not be recognized at this time to prevent erroneous data from being written to the device from an out-of-tolerance system. When VCC falls below VBAT, the device switches into a lowcurrent battery-backup mode. Upon power-up, the device switches from battery to VCC when VCC is greater than VBAT +0.2V and recognizes inputs when VCC is greater than 1.25 x VBAT.

Aby som otestoval, čo sa bude diať, využil som nastavenie režimu so signálom obdĺžnikového priebehu, o ktorom som písal v predchádzajúcom článku. Zdroj napätia (B3603) som nastavil na 5 V a pripojil ho na napájanie obvodu. Modrá LED dióda začala blikať. Postupne som znížil napätie na 3,3 V a LED dióda stále blikala. Tento test overil, že výstup SQW funguje aj pri nižšom napätí.

I2C skener

Potom som pokračoval testom pomocou I2C skenera. Ten dokáže odhaliť akékoľvek i2C slave zariadenie. Pretože som nedávno našiel krajšie riešenie, než je bežne používaný skener pre Arduino, využil som skener (i2cdetect), ktorý sa využíva na Linuxe na jednodoskových minipočítačoch. Prepísal som ho pre Arduino. A pretože mi ostalo z nedávnych experimentov poskladané ESP8266 a OLED displej, napísal som jednu verziu aj pre takúto kombináciu. Na sériový port sa vypisuje celá tabuľka a na OLED displej iba nájdené adresy. Zdrojový kód testera sa nachádza na serveri GitHub.

Aj test I2C dopadol úspešne a ESP8266 našlo pripojený obvod DS1307. Pretože som použil modul, našlo aj pripojenú externú EEPROM.

Ale potom ma napadlo, že som v module nemal batériu. A preto boli podmienky z datasheetu splnené. Vcc bolo vždy vyššie ako to na baterke. Preto som vyskúšal ešte pripojiť DS1307 na breadboarde, kde mám pripojenú aj batériu. A tam to nefungovalo. Pokiaľ bolo Vcc na 3,3 V, SQW výstup síce fungoval, ale I2C komunikácia nefungovala. Keď som pripojil Vcc na 5 V, obvod začal komunikovať.

Pozrite sa na nasledujúci obrázok. Pokiaľ používate 5 V logiku, budete to mať zapojené takto. Vcc je pripojené priamo na 5 V a SDA a SCL sú pripojené cez pull-up rezistory. Ak použijete ESP8266, ktoré používa 3,3 V, nemôžete žiaden z jeho pinov pripojiť na 5 V. Čiže aj SDA a SCL musíte mať pripojené cez pull-up na 3,3 V. Ale Vcc obvodu DS1307 musí byť pripojené na 5 V.

Takto sa to dá zapojiť iba na breadboarde. Ak použijete modul, ten má vždy pripojené interné pull-up rezistory na jeho Vcc. A preto nemôžete k tomu pripojiť SDA a SCL v ESP8266, pretože riskujete, že vám v ňom niečo zhorí.



Download
  • DS1307 - Datasheet DS1307 - 64 x 8 Serial Real-Time Clock

09.10.2017


Menu