DS1307 a ESP8266

Zápisník experimentátora

Hierarchy: DS1307 Hodiny reálneho času

V datasheetu k obvodu DS1307 se dočtete, že doporučené napájení integrovaného obvodu je v intervalu 4,5 - 5 V. Na Internetu ale najdete mnoho příkladů připojování tohoto integrovaného obvodu k ESP8266, kde nikdo otázku napájení neřeší. Pojďme se podívat na to, zda DS1307 je schopno bez problémů spolupracovat s ESP8266.

Datasheet DS1307

V datasheetu najdete takovéto upozornění. Pokud tomu správně rozumím, když napájení obvodu klesne pod 4 V, obvod by neměl komunikovat s mikrokontrolérem, protože používá referenční napětí na baterii na to, aby zjistil, zda je připojen ke zdroji napětí.

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.

Abych otestoval, co se bude dít, využil jsem nastavení režimu se signálem obdélnikového průběhu, o kterém jsem psal v předchozím článku. Zdroj napětí (B3603) jsem nastavil na 5 V a připojil ho na napájení obvodu. Modrá LED dioda začala blikat. Postupně jsem snížil napětí na 3,3 V a LED dioda stále blikala. Tento test ověřil, že výstup SQW funguje i při nižším napětí.

I2C skener

Pak jsem pokračoval testem pomocí I2C skeneru. Ten dokáže odhalit jakékoli I2C slave zařízení. Protože jsem nedávno našel hezčí řešení, než je běžně používaný skener pro Arduino, využil jsem skener (i2cdetect), který se využívá na Linuxu na jednodeskových minipočítačích. Přepsal jsem ho pro Arduino. A protože mi zůstalo z nedávných experimentů poskládané ESP8266 a OLED displej, napsal jsem jednu verzi i pro takovou kombinaci. Na sériový port se vypisuje celá tabulka a na OLED displej pouze nalezené adresy. Zdrojový kód testeru se nachází na serveru GitHub.

I test I2C dopadl úspěšně a ESP8266 našlo připojen obvod DS1307. Protože jsem použil modul, našlo i připojenou externí EEPROM.

Ale pak mě napadlo, že jsem v modulu neměl baterii. A proto byly podmínky z datasheetu splněny. Vcc bylo vždy vyšší než to na baterce. Proto jsem vyzkoušel ještě připojit DS1307 na breadboardu, kde mám připojenou i baterii. A tam to nefungovalo. Pokud bylo Vcc na 3,3 V, SQW výstup sice fungoval, ale I2C komunikace nefungovala. Když jsem připojil Vcc na 5 V, obvod začal komunikovat.

Podívejte se na následující obrázek. Pokud používáte 5 V logiku, budete to mít zapojeny takto. Vcc je připojeno přímo na 5 V a SDA a SCL jsou připojeny přes pull-up rezistory. Pokud použijete ESP8266, které používá 3,3 V, nemůžete žádný z jeho pinů připojit na 5 V. Čili i SDA a SCL musíte mít připojené přes pull-up na 3,3 V. Ale Vcc obvodu DS1307 musí být připojeno na 5 V.

Takto se to dá zapojit pouze na breadboarde. Pokud použijete modul, ten má vždy připojené interní pull-up rezistory na jeho Vcc. A proto nelze k tomu připojit SDA a SCL v ESP8266, protože riskujete, že vám v něm něco shoří.



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

13.10.2017


Menu