Bu Arduino tabanlı Gerçek zamanlı saat, I2C protokolü üzerinde çalışan bir RTC IC DS1307 kullanarak gerçek zamanı görüntülemek için dijital bir saattir. Gerçek zamanlı saat, elektrik kesintisinden sonra bile çalıştığı anlamına gelir. Güç yeniden bağlandığında, kapalı durumda olduğu zaman ve süreye bağlı olarak gerçek zamanı görüntüler. Bu Arduino çalar saat projesinde, saati "saat, dakika, saniye, tarih, ay ve yıl" formatında görüntülemek için 16x2 LCD modül kullandık. Alarm seçeneği de eklendi ve alarm saatini ayarlayabiliriz. Alarm zamanı arduino'nun dahili EEPROM'una kaydedildiğinde, sıfırlama veya elektrik kesintisinden sonra bile kayıtlı kalır. Gerçek zamanlı saatler bilgisayarlarımızda, evlerimizde, ofislerimizde ve elektronik cihazlarımızda onları gerçek zamanlı olarak güncel tutmak için yaygın olarak kullanılmaktadır.
I2C protokolü, iki kablo kullanarak iki veya daha fazla cihazı tek bir sisteme bağlamak için bir yöntemdir ve bu nedenle bu protokol aynı zamanda iki kablolu protokol olarak da adlandırılır. 127 cihazı tek bir cihaza veya işlemciye iletmek için kullanılabilir. I2C cihazlarının çoğu 100 Khz frekansında çalışır.
Master'dan slave'e veri yazma adımları (bağımlı alım modu)
- BAŞLAT koşulunu slave'e gönderir.
- Slave adresini slave'e gönderir.
- Slave'e yazma biti (0) gönderin.
- Slave'den ACK biti alındı
- Slave'e kelime adresi gönderir.
- Slave'den ACK biti alındı
- Verileri slave'e gönderir.
- Slave'den ACK biti alındı.
- Ve son olarak STOP koşulunu slave'e gönderir.
Slave'den master'a veri okuma adımları (slave aktarım modu)
- BAŞLAT koşulunu slave'e gönderir.
- Slave adresini slave'e gönderir.
- Okuma bitini (1) slave'e gönderin.
- Slave'den ACK biti alındı
- Slave'den veri alındı
- Slave'den ACK biti alındı.
- STOP koşulunu slave'e gönderir.
Bu RTC DS1307 IC tabanlı dijital saati oluşturmak için burada Arduino Pro Mini'yi kullandık, ancak Arduino Uno veya Arduino Nano gibi diğer herhangi bir Arduino modelini de kullanabilirsiniz. Arduino kartı, DS1307 RTC IC ile birlikte, saati ve tarihi görüntülemek için 16x2 LCD modül, bir kristal osciallator, 7805 voltaj regülatörü, bir zil ve birkaç transistör ve direnç kullandık.
Devre Şeması ve Tanımı
Bu Arduino tabanlı dijital saat devresinde IC DS1307, Arduino Pro Mini Board ve 16x2 LCD modülü olmak üzere üç ana bileşen kullandık.
Burada arduino, ds1307'den zamanı okumak ve 16x2 LCD'de göstermek için kullanılır. DS1307 arduino'ya 2 hat kullanarak saat / tarih gönderir. Alarm etkinleştirildiğinde bip sesi çıkaran alarm göstergesi için bir zil de kullanılır. Bu Gerçek Zamanlı Saatin çalışmasını anlamak için aşağıda bir blok diyagram gösterilmektedir.
Devre şemasında görebileceğiniz gibi, DS1307 çip pin SDA ve SCL, veri ve saat hatlarında varsayılan değeri HIGH tutan pull up direnci ile SDA ve SCL arduino pinlerine bağlanmıştır. 32.768KHz kristal osilatör tam 1 saniyelik gecikme oluşturmak için DS1307 yongasına bağlanır ve 3 voltluk bir pil de elektrik kesintisinden sonra zamanın çalışmasını sağlayan DS1307'nin 3. pinine (BAT) bağlanır. 16x2 LCD 4-bit modunda arduino ile bağlanır. Kontrol pini RS, RW ve En doğrudan arduino pin 2, GND ve 3'e bağlanır. Veri pini D0-D7 ise arduino'nun 4, 5, 6, 7 numaralı pinlerine bağlıdır. Bir zil, tabanında 1 k direnç bulunan bir NPN BC547 transistörü aracılığıyla 13 numaralı arduino pimine bağlanır.
INC ve Next adlı üç düğme, aktif düşük modda arduino'nun 12, 11 ve 10 numaralı pinlerine alarm ayarlamak için kullanılır. Set'e bastığımızda alarm set modu devreye giriyor ve şimdi INC butonunu kullanarak alarm kurmamız gerekiyor ve Next butonu rakama geçmek için kullanılıyor. Bu gerçek zamanlı alarmlı saatin eksiksiz devre tahtası kurulumu aşağıdaki resimde gösterilmektedir. AVR mikrodenetleyici ile dijital çalar saat hakkında ayrıntılı bir öğreticiyi de kontrol edebilirsiniz.
Program Açıklaması
Bu gerçek zamanlı saati programlamak için, DS1307'den saat / tarih çıkarmak ve LCD'de görüntülemek için aşağıda verilen bazı kitaplıklar kullandık:
RTC, LCD ve giriş çıkışının başlatılması kurulum döngüsünde gerçekleştirilir.
Geri kalan süre okuma, alarm ayarlama gibi şeyler boşluk döngü bölümünde gerçekleştirilir.