Denna Arduino-baserade realtidsklocka är en digital klocka som visar realtid med hjälp av en RTC IC DS1307 som fungerar på I2C-protokoll. Realtidsklocka betyder att den går även efter strömavbrott. När strömmen återansluts visar den realtid oavsett tid och varaktighet den var i avstängt tillstånd. I detta Arduino-väckarklockaprojekt har vi använt en 16x2 LCD-modul för att visa tiden i "timme, minut, sekunder, datum, månad och år" -format. Ett alarmalternativ läggs också till och vi kan ställa in alarmtiden. När alarmtiden sparades i den interna EEPROM i arduino, förblir den sparad även efter återställning eller elavbrott. Realtidsklockor används ofta i våra datorer, hus, kontor och elektroniska enheter för att hålla dem uppdaterade i realtid.
I2C-protokollet är en metod för att ansluta två eller flera enheter med två kablar till ett enda system, och så kallas detta protokoll också som tvåtrådsprotokoll. Den kan användas för att kommunicera 127 enheter till en enda enhet eller processor. De flesta av I2C-enheter körs på 100 kHz frekvens.
Steg för dataskrivning master till slave (slavmottagningsläge)
- Skickar START-villkor till slav.
- Skickar slavadress till slav.
- Skicka skrivbit (0) till slav.
- Fick ACK-bit från slav
- Skickar ordadress till slav.
- Fick ACK-bit från slav
- Skickar data till slav.
- Fick ACK-bit från slav.
- Och sist skickar STOP-villkor till slav.
Steg för dataläsning från slav till master (slavsändningsläge)
- Skickar START-villkor till slav.
- Skickar slavadress till slav.
- Skicka läsbit (1) till slav.
- Fick ACK-bit från slav
- Mottagen data från slav
- Fick ACK-bit från slav.
- Skickar STOP-villkor till slav.
För att bygga den här RTC DS1307 IC- baserade digitala klockan har vi använt Arduino Pro Mini här, men du kan också använda alla andra Arduino-modeller som Arduino Uno eller Arduino Nano. Tillsammans med Arduino-kortet, DS1307 RTC IC, har vi använt 16x2 LCD-modul för att visa tid och datum, en kristallosciallator, 7805 spänningsregulator, en summer och få transistorer och motstånd.
Kretsschema och beskrivning
I denna Arduino-baserade digitala klockkrets har vi använt tre huvudkomponenter som är IC DS1307, Arduino Pro Mini Board och 16x2 LCD-modul.
Här används arduino för att läsa tid från ds1307 och visa den på 16x2 LCD. DS1307 skickar tid / datum med två rader till arduino. En summer används också för larmindikering, som piper när larm aktiveras. Ett blockschema visas nedan för att förstå hur denna realtidsklocka fungerar.
Som du kan se i kretsschemat är DS1307 chip pin SDA och SCL anslutna till arduino-pins SDA och SCL med pull-up-motstånd som håller standardvärdet HIGH vid data- och klocklinjer. 32.768KHz kristalloscillator är förbunden med DS1307 chip för att generera exakta 1 sekunds fördröjning, och en 3-volts batteri är också ansluten till stift 3 rd (BAT) hos DS1307 som håller tiden kör efter misslyckande elektricitet. 16x2 LCD är ansluten till arduino i 4-bitars läge. Styrstift RS, RW och En är direkt anslutna till arduino-stift 2, GND och 3. Och datapinne D0-D7 är ansluten till 4, 5, 6, 7 av arduino. En summer är ansluten med arduino-stift nummer 13 via en NPN BC547-transistor med ett 1 k motstånd i basen.
Tre knappar, nämligen set, INC och Next används för att ställa in larmet till stift 12, 11 och 10 i arduino i aktivt lågt läge. När vi trycker på set aktiveras alarminställningsläget och nu måste vi ställa in alarm genom att använda INC-knappen och Next-knappen används för att flytta till siffra. Den fullständiga inställningen av denna realtidsklocka med alarm visas i bilden nedan. Du kan också kontrollera en detaljerad handledning om digital väckarklocka med AVR-mikrokontroller.
Programbeskrivning
För att programmera den här realtidsklockan har vi använt några bibliotek för att extrahera tid / datum från DS1307 och för visning på LCD, som anges nedan:
Initiering av RTC, LCD och ingångsutgång utförs i inställningsslingan.
Resten av saker som läsningstid, inställning av larm utförs i avsnittet om tomrumsslinga.