Dette Arduino-baserede realtidsur er et digitalt ur, der viser realtid ved hjælp af en RTC IC DS1307, der fungerer på I2C-protokol. Realtidsur betyder, at det kører selv efter strømsvigt. Når strømmen tilsluttes igen, viser den realtid uanset tid og varighed, den var i slukket tilstand. I dette Arduino vækkeursprojekt har vi brugt et 16x2 LCD-modul til at vise tiden i - "time, minut, sekunder, dato, måned og år" -format. En alarmindstilling tilføjes også, og vi kan indstille alarmtiden. Når alarmtiden er gemt i den interne EEPROM i arduino, forbliver den gemt, selv efter nulstilling eller strømafbrydelse. Realtidsure bruges ofte i vores computere, huse, kontorer og elektronikudstyr til at holde dem opdateret i realtid.
I2C-protokol er en metode til at forbinde to eller flere enheder ved hjælp af to ledninger til et enkelt system, og så kaldes denne protokol også som to-leder-protokol. Det kan bruges til at kommunikere 127 enheder til en enkelt enhed eller processor. De fleste af I2C-enheder kører på 100 KHz frekvens.
Trin til dataskrivning master til slave (slave modtagelsestilstand)
- Sender START-tilstand til slave.
- Sender slave-adresse til slave.
- Send skrivbit (0) til slave.
- Modtaget ACK-bit fra slave
- Sender ord til slave.
- Modtaget ACK-bit fra slave
- Sender data til slave.
- Modtaget ACK-bit fra slave.
- Og sidst sender STOP-tilstand til slave.
Trin til aflæsning af data fra slave til master (slave-transmissionstilstand)
- Sender START-tilstand til slave.
- Sender slave-adresse til slave.
- Send læsebit (1) til slave.
- Modtaget ACK-bit fra slave
- Modtaget data fra slave
- Modtaget ACK-bit fra slave.
- Sender STOP-tilstand til slave.
For at opbygge dette RTC DS1307 IC- baserede digitale ur har vi her brugt Arduino Pro Mini, men du kan også bruge enhver anden Arduino-model som Arduino Uno eller Arduino Nano. Sammen med Arduino-kortet, DS1307 RTC IC, har vi brugt 16x2 LCD-modul til at vise tid og dato, en krystalosciallator, 7805 spændingsregulator, en summer og få transistorer og modstande.
Kredsløbsdiagram og beskrivelse
I dette Arduino-baserede digitale urkredsløb har vi brugt tre hovedkomponenter, som er IC DS1307, Arduino Pro Mini Board og 16x2 LCD-modul.
Her bruges arduino til læsningstid fra ds1307 og vise den på 16x2 LCD. DS1307 sender tid / dato ved hjælp af 2 linjer til arduino. En summer bruges også til alarmindikation, som bipper, når alarmen er aktiveret. Nedenfor vises et blokdiagram for at forstå funktionen af dette realtidsur.
Som du kan se i kredsløbsdiagrammet, er DS1307 chip pin SDA og SCL forbundet til arduino-ben SDA og SCL med pull up-modstand, der holder standardværdien HIGH ved data- og urlinjer. 32.768KHz krystaloscillator er forbundet med DS1307-chip til generering af nøjagtig 1 sekunders forsinkelse, og et 3 volt batteri er også tilsluttet pin 3 rd (BAT) i DS1307, som holder tiden kørende efter strømafbrydelse. 16x2 LCD er forbundet med arduino i 4-bit tilstand. Kontrolstift RS, RW og En er direkte forbundet til arduino pin 2, GND og 3. Og data pin D0-D7 er forbundet til 4, 5, 6, 7 af arduino. En summer er forbundet med arduino pin nummer 13 gennem en NPN BC547 transistor med en 1 k modstand i bunden.
Tre knapper, nemlig indstillet, INC og Next, bruges til at indstille alarmen til pin 12, 11 og 10 i arduino i aktiv lav tilstand. Når vi trykker på indstillingen, aktiveres alarmindstillingstilstand, og nu skal vi indstille alarmen ved hjælp af INC-knappen, og knappen Næste bruges til at flytte til ciffer. Den komplette breadboard-opsætning af dette realtidsur med alarm vises i nedenstående billede. Du kan også kontrollere en detaljeret vejledning om digitalt vækkeur med AVR-mikrocontroller.
Programbeskrivelse
For at programmere dette realtidsur har vi brugt nogle biblioteker til udpakning af tid / dato fra DS1307 og til visning på LCD, som er angivet nedenfor:
Og initialisering af RTC, LCD og inputoutput udføres i installationssløjfe.
Resten af ting som læsetid, indstilling af alarm udføres i hulrumsafsnittet.