Masaüstü LCD’li Saat Termometre
PIC16F628 – DS1302 – DS18B20
Mikro denetleyici – Gerçek zaman saati – Sayısal Termometre
Başlık zaten yeterince açıklayıcı oldu sanırım ama genel olarak yazmak gerekirse, bu çalışma ile şu ofis masalarımızda kullandığımız, saat ve termometre uygulaması bir arada. Üstelik saatiniz gerçek zaman saati, yani bunun anlamı, saatiniz, gg, aa, yyyy formatında tarih, ss,dd,sn formatında zaman tutuyor ve sayıyor. Termometre ise yine Dallas firmasına ait DS18B20, 0.0628 0C çözünürlükte ölçüm yapabilen bir sayısal termometre. Şimdi her şey sayısal olunca, iş bunları kullanabilmek yada ürettiği bilgileri anlayabileceğimiz biçime dönüştürmeye kalıyor. Bunun içinde kara gün dostumuz, aziz arkadaşımız, profesyonellerin korkulu rüyası, elektronikçilerin ise can dostu PIC16F628’imizi kullanıyoruz. Belki biraz abartılı oldu ama ben onu gerçekten seviyorum.
Gelelim neden bunları kullandığımıza?
Tercih Edilen Donanım
Mikro Denetleyici – Pic16F628A
Kullanılan mikro denetleyici Pic16F628A I/P’dir. Tercih sebebi iç osilatörünün olması ve bu sayede kart üzerinde yer kazanılması iyi bir avantajdır. USART sağlıklı bir seri port haberleşmesi gerçekleştirilebilmesini sağlıyor (bu iş için kullanmıyoruz ama). Maliyet olarak ise 16serisi mikro denetleyiciler arasında en iyi fiyat/performans oranına sahip olması. I/O sayısı düşük olan elektronik devrelerde oldukça kullanışlı.
Termometre – DS18B20
Tek bacak üzerinden güç kaynağına ihtiyaç olmadan haberleşmesi I/O olarak büyük bir avantaj sağlıyor. Ayrıca oluşturulabilecek olan BUS sayesinde birden fazla sensör aynı BUS üzerinde kullanılabiliyor.
12Bit AD dönüştürücü sayesinde 0.0625C hassasiyetli ölçümleri sayısal olarak gerçekleştirebiliyor. Sayısal ölçüm yapabilmesi hem güvenilirliğini arttırıyor hem de devrenin esnekliğini sağlıyor. Devredeki maliyetli bir entegre olması sistem maliyeti açısından kötü ancak ısı ölçümü için fiyat performans oranı diğer sistem veya entegrelere göre olarak oldukça iyi.
Gerçek zaman saati – DS1302
DS1302; RTC, takvim ve 31 byte’lık RAM’a (pil korumalı) sahiptir. Mikroişlemci ile basit seri bir ara yüzle haberleşir. Gerçek zaman saati (RTC) saniyeyi, dakikayı, saati, günü, ayı, yılı, haftanın gününü sayar ve 2100 yılına kadar tarih bilgileri yüklüdür. 2.0 V ile 5.0 V arasında gerilimlerde çalışabilir. 2.0 V’ta 300 nA‘den daha az akım tüketir. Saat ve RAM hafızasına yazma ve okuma için seri olarak okuma veya yazma işlemi yapabilme (burst) moduna sahiptir. TTL ile uyumludur ( Vcc = 5 V ). – 40 °C ile +85 °C arasında çalışabilir.
DS1302’ye bağlanan 32.768KHz’lik bir osilatör ve 5V DC voltaj ile saatinizi ve takviminizi çalıştırmaya başlayabilirsiniz. Basit bir seri ara yüze sahip olup kullanımı oldukça basittir.
DS1302 Saniye, Dakika, Saat, Haftanın Günü, Ayın günü, Ay ve Yıl bilgilerini saymakta ve saklamaktadır. Ay’ların kaç gün olduğu otomatik olarak ayarlanmıştır. Yani 29 veya 31 olan toplam ay uzunlukları otomatik olarak sayılmakta ve herhangi bir değişikliğe ihtiyaç duyulmamaktadır. Daha sonra bunun nasıl yapıldığı ile ilgili basit bir araştırmanın ardından tekrarlanan basit bir matematiksel formül olduğunu anlasam da ilk kullandığımda oldukça hoşuma gitmişti. Saat 24 veya 12 biçimlerinde çalıştırılabilir. Bu projede 24 biçiminde çalıştırılmıştır. 2-5.5V DC Voltaj aralığında çok düşük güç tüketimiyle rahatlıkla çalışmaktadır. 8 Pin’lik bu entegre 3 bacağından seri olarak haberleşmektedir. Iki ayrı güç girişine sahip olan bu entegreye elektrik kesintilerinde oluşabilecek kayıpları önlemek için ayrıca yedek pil bağlantısı yapılabilmektedir. İçerisinde programlanabilen şarj devresi olduğu için şarj edilebilir yada edilemez herhangi bir pil burada kullanılabilir.
Reklamların ardından gelelim saatimizin ve termometremizin çalışmasına.
Sistemin Oluşturulması
Sistem, PIC 16F628, DS1302, DS18B20, 32.768Khz kristal osilatör, 2x16LCD, 3 adet düğme, 3V pil, BC337 NPN Transistör, 7805 regülatör, kapasitörler ve dirençlerden oluşmaktadır.
Kullanılan LCD’de şık bir görünüm için arka ışıklı olan kullanılmış ve bu ışık açılabilir, kapanabilir şekildedir. Ayrıca menü düğmesine basıldığında da cep telefonlarımızdan alışık olduğumuz gibi arka lambası yanmaktadır.
Sistemin normal çalışma esnasındaki görünümü Şekil.1’de verilmiştir.
Şekil.1. Normal çalışma esnasında saatin görünümü
Sistemin devre şeması Şekil.2’de verilmiştir.
Şekil.2. PIC16F628 ile Saat Termometre uygulaması devre şeması
Şekil.2’de görüldüğü gibi sayısal ara yüzlü donanımların kullanılması I/O sayısının etkili kullanımını ve donanımın karmaşıklığının azalmasını sağlamıştır. DS1302’ye bağlanan kristal 32.768KHz değerindedir ve bu sayede tam saniye gecikmesini doğru üretebilmektedir.
DS18B20 ise 4.6K’lık bir pull up direnci ile mikro denetleyiciye bağlanmıştır ve diğer bacakları topraklanmıştır. Bu sayede harici güç kaynağı gereksinimi ortadan kaldırılmıştır.
2×16’lık dot matrix karakter LCD ise 4 bacaklı ara yüzü ile kullanılmaktadır. 2×16’lık LCD saat, tarih ve termometre değerlerinin görüntülenmesi için yeterli bir boyuttadır. Diğer bacakları topraklanmıştır. LCD’nin VE bacağı kontrast ayarının yapıldığı bacaktır. Bu bacağa 2K lık bir pot devre şemasındaki gibi bağlanarak LCD’nin kontrast ayarı yapılabilmektedir. LCD’nin backlight aydınlatmasının anahtarlanması için NPN transistör kullanılmıştır. Burada Transistör olarak BC337 kullanılmıştır. Bunun yerine BC237’de kullanılabilir ancak BC337’nin 800mA’lik akım anahtarlayabilme kabiliyeti sayesinde LCD’de arka planda güçlü bir ışık elde edilebilmektedir. Ancak LCD’nin arkası aydınlatıldığında sistemin yüksek akım tüketeceği göz önüne alınarak transistorün base bacağına küçük bir direnç eklemek (1K gibi olabilir) uygun olacaktır ve LCD’nin ışığının uzun süre yanık kalması regülatörünüzün ısınmasına neden olacaktır. Bunun için arka aydınlatma kullanım süresine dikkat edilmeli yada 7805 regülatörünün soğutucusu iyi seçilmelidir.
3 Adet düğme 10K’lık Pull up dirençlerle Pic’e bağlanmıştır.
Regülatörün giriş ve çıkışlarına bağlanan kapasitörler elektrik atlamalarında filtre görevi görmekte ve ani değişilmeden sistemi korumaktadır. Bu regülatör sayesinde devrenin girişi
7V üzerinde değerle beslenebilir.
Sistemin Çalışması
İlk olarak sistem başlatıldığında LCD ekranın aydınlatması çalışacak ve ekranda başlatılıyor yazısı görüntülenecektir. Şekil.3’de saatin görünümü verilmiştir.
Bunun ardından ekranda sırasıyla anrak, antrak.org.tr ve Tolga TASTAN, tolga@aadf.net yazıları görüntülenecektir. Bunların ekran görünümleride Şekil.4 ve Şekil.5.’de verilmiştir.
Bu yazılar görüntülendikten sonra LCD lambası kapanacak ve saat çalışmaya başlayacaktır (Şekil.1). Sistem ilk kez çalıştırıldığında Haftanın günü ekranda görüntülenmeyebilir. Bu saat ayarı yapılıktan sonra tekrarlanmayacaktır.
Sistem’e bağlanan 3 düğmeye ait fonksiyonlar şöyledir.
1. Düğme
Soldaki düğmeye basıldığında sistem normal çalışma esnasında LCD’nin arka lambasını açar/kapatır ve durumu ekrana yazdırır (Şekil.6).
Yaklaşık 1 saniye sonra sistem normal çalışma ekranına döner (Şekil.1).
2.Düğme
Ortadaki düğmeye basıldığında ayarlar menüsü açılır. Ayarlar menüsünden saatin, takvimin ve haftanın gününün ayarları gerçekleştirilebilir. Ayrıca DS1302 yedek pilinin şarj ayarları da bu bölümden gerçekleştirilebilir. Bu Ayarlar ve Menü bölümünde detaylı açıklanmıştır.
3. Düğme
Yapımcı yani bana ait açılışta gelen ekran tekrar görüntülenir (Şekil.5).
Ayarlar ve Menü
Menü, Saat ayarı, Alarm ayarı, Pil ayarı ve Çıkış seçeneklerinden oluşmaktadır. Menü arasında dolaşma 1 ve 3 numaralı düğmelerle gerçekleştirilir. O seçeneğin seçilmesi ise 2 numaralı düğme ile gerçekleştirilir. (Şekil.7 – Şekil.8)
Saat Ayarı
Saat ayarı seçeneği seçildikten sonra ekrana o anki saat ve tarih bilgileri aktarılır ve o anda ayarlanacak olan seçeneği altında işaret görüntülenir. 1 ve 3 numaralı düğmelerle bu değer ayarlanabilir. 2 numaralı düğme ile ayarlanan değer kaydedilir ve kaydedilecek bir sonraki değere geçilir (Şekil.9).
Kayıt işlemleri tamamlandıktan sonra sistem yeni ayarlanan değerlerle normal çalışmasına geçecektir. Sisteme bağlı 3V’luk pil varsa bu değer artık kayıtlı bir şeklide sisteme bağlanan ana güç kesilse de çalışmaya devam edecektir.
Haftanın günleri Pzt, Sal, Car, Per, Cum, Cts ve Paz olarak ayarlanabilmektedir.
Alarm ayarı
Bu fonksiyona henüz çalışıyorum. Belki ileride.
Pil ayarı
Saatinizin yedek pili eğer şarjlı pil ise bu fonksiyon sayesinde elektrik kesintisi yada bunun gibi uzun süreli kesintilerin ardından yedek pilinizin şarj edilmesi sağlanmaktadır.
Sistem sizden Diyot ve direnç sayısı isteyecektir.
DS1302’nin şarj bölümünün devre şeması Şekil.11’de verilmiştir.
Şekil.11. DS1302 şarj devre şeması
Direnç değerleri şekilde de görüldüğü gibi bit 1 ve bit 0 değerlerinin değişimi ile seçilmektedir. Bunlar 250Ohm, 2K ve 4K olarak seçilmektedir. Bu şarj esnasında aktarılacak olan akımı ayarlamaktadır.
Diyot değeri ise pile aktarılacak olan voltaj değerini ayarlamaktadır. 1 değeri üstteki anahtarı açmakta 2 ise alttaki yani diyotlu anahtarı açmaktadır. 0 devreyi çalıştırmamaktadır.
Örneğin, sistemin besleme voltajı 5V (Vcc). Eğer diyot 1 olarak seçilmiş (yani diyotsuz) ve direnç 2K olarak seçilmiş olsun.
Imax=(Vcc – diyot voltajı)/R2
Imax=(5-0)/2000
Imax=2.5mA
olacaktır. Eğer diyot seçilmiş olsaydı bu değer;
Imax=(Vcc – diyot voltajı)/R2
Imax=(5-0.7)/2000
Imax=2.15mA olacaktır.
Çıkış
Menüden çıkmanızı sağlar. Ekran ışığı kapatılır.
DS1302 ve DS18B20’nin çalışmalarına ait açıklamaları da ilerleyen günlerde bulabilirsiniz.
Devrenin baskı devresi Şekil.12’de verilmiştir. Baskı devre dosyalarını ARES programı ile hazırlanmış LYT dosyasını ve JPG dosyalarına aşağıdaki linklerden ulaşabilirsiniz.
Şekil.12. Baskı devre görünümü
Devreye ait,
Proteus Devre şeması (sch.zip), sch
Pic kaynağı (main.hex); main-hex
Proteus Baskı devre (PCB.zip) pcb
JPEG Baskı devre (PCBs.zip) pcbs
Herkese iyi çalışmalar dilerim.
Tolga TAŞTAN
tolga@aadf.net
linkleri yeniler misiniz
Linkler yenilenmiştir.