Gelişen mikrokontrol teknolojileri ve artan bilgi birikimi sayesinde geliştirici düzeyinde daha yaygın kullanımına olanak tanımıştır. Burada elimden geldiği kadar bazı örnekler sunmaya çalışacağım... Görüleceği gibi ilk örneklerimizde çoğunlukla ASM üzerinde iken daha sonraları C üzerinde örnekler yer almaktadır. Hatta ilerleyen zamanlarda Arduino örneklerinin yer alması kaçınılmaz olacaktır.

1 Haziran 2009 Pazartesi

LCD Ekran ve Atmega8 RS485 İletişimi Termometre


Gerçekleştirdiğimiz uygulamalar arasında RS485 iletişimli termometre ve RS485 iletişimli LCD ekran vardı. Şu anki projeyi LED ekran ilede gerçekleştirdik. Ama LED ekranların doğrudan güneş ışığı altında verimli çalıştıkları söylenemez. Proje özellikle gün ışğı altında çalışacaksa bu uygulamanın mutlaka farklı yöntemle sonucu gösteren bir yapıda olması gerekiyor. Örneğin LCD yöntemle çalışan sistemlerde. Bu tür uygulamalar ışığı kendi üretmez (her ne kadar yardımcı ışık kaynakları olsada), sadece gelen sinyale göre bir kaynaktan gelen ışığını geçip geçmemesini denetler. Bu denetleme sistemlerine girmeden doğrudan bu denetleme işleminin yapıldığı uygulamayı kullanarak, daha önce gerçekleştirilen termometre uygulaması ile birleştirilecek.

Bu projede termometre bölümünün ana kontroller olarak düzenlenip ekranda gösterilecek verilerin LCD ekrana uygun bir şekilde biçimlendirimesi olacağı düşünülerek bu yönde harekete geçildi. İlk adı olarak RS485 sadece veri gönderecek biçimde veri akış yönü atandı.

Şekil-1 :LCD Ekran kartı ile oda sıcaklığı ölçümü(2x20 ve 4x20).


Şekil-2 :Termometre kartı.

Burada LCD ekran olarak RS485 (Seri) LCD Çevirici projesi ve Termometre olarak ATMEGA8 ve bilgisayar ile RS485 iletişimli Termometre projesini kullanılacak. Yani her iki projedeki bilgisayar bağlantısını çıkartıp sadece bu iki modül kullanılacak.Bu modüllerin yapımları ile ilgili bilgiler kendi modül başlıkları altında bulunabilir. İstenirse çalıştıklarından emin olmak için önce o projeler gerçekleştirilip, daha sonra bu projeye geçilebilir.

Şekil-3 :Sistemin blok şeması.

Aslında sözler yerine şekil-1'deki blok şeması herşeyi anlatmaya yeterlidir. Sistemin çalışması basitçe:

Şekil-4 :Termometre kartı ölçüm yapar ve sonucu LCD ekrana gönderir.

Termometre: Öncelikle sistem ilk açıldığında LCD ekrana silmesi için bir komut gönderiyor. Algılayıcı sıcaklık ile orantılı bir gerilim oluşturmakta. Bu İşlemci tarafından alınıp, işlenerek LCD ekran üzerinde gösterilecek bilgiye dönüşüyor.(Yani satır kodu,"Sıcaklık:" yüzler hanesi, onlar hanesi, birler hanesi,ondalık nokta, ondalık sayı ve "°C" işaretleri ile birlikte) Oluşturulan bilgi RS485 üzerinden gönderiliyor. Burada bu bölümün programı değiştirilecek.

Şekil-5 :LCD Gösterge kartı, resimdeki değer gece dış ortam sıcaklığını gösteriyor(en azından resmi çektiğim saatte öyle idi).

LCD Ekran: RS485 portundan alınan veri işlemci tarafından işlenerek ekran üzerinde gösterilmek üzere hazırlanır ve sürekli olarak gelen veri ekran üzerinde gösterilir. (Bu bölümün programında ekran silme daha öncemki projelerde yeterli iken bu projede tüm ekranın silmesini basitleştirmek için değişiklik yapılması gerekti.)

RS485 (Seri) LCD Çevirici ve ATMEGA8 ve bilgisayar ile RS485 iletişimli Termometre projelerinde konu etraflıca anlatıldığı için ilgili projelere bakılarak bu projenin nasıl çalıştığı rahatlıkla anlaşılabilir. Daha doğrusu sadece modüller ile ilgili bölümlerin incelenmesi yeterlidir.

Termometre programında ölçülen ADC değerini bizim anlayabileceğimiz ondalık sisteme dönüştürmek için matematik işlemlerini Atmaga8'in sınırlı kaynaklarında uğraşmak yerine basitçe bir dönüşüm tablo oluşturuldu.

Şimdi ADC'nin 10 bit olduğunu biliyoruz. Ama referans olarak iç referans kaynağı ve 2.5V ile atandı. Bu da demektir ki ADC 10 bit yerine 9 bit olacak. Çünkü LM35 entegresi maksimum ölçüm sıcaklığı olarak 125°C ve maksimum oluşturabileceği gerilim 1.25V olacak demektir. Buda 125°C ölçmek için 512 kademe olacaktır. Böylece Excel tablosunda 512 aralığın hangi sıcaklığa karşılık geldiğin belirleyip, her bir hane için hangi rakamın karşılık geldiğini belirlendi. Basitce maksimum 125°C ölçüldüğü için 3 hane buna ayrıldı ve son hane ondalık değer olarak atandı. Noktada sağdan itibaren 1. ve 2. hane arasına konuldu. Tüm bunlara göre 3 tane tablo oluşturuldu.Soldan birinci hane için sadece 2 değer bulunduğundan (0 ve 1) sadece hangi ADC değerinden itibaren değiştiği belirlenerek atanmasını sağlayacak bir karşılaştırma betiği oluşturuldu.

Değer çevirme için tablo örneği. Soldaki sıfır değeri gösterilmemesi için (a ile gösterilen) boş olarak atanmış.


Hesaplama için: Sıcaklık(onluk sistem)=ADC değeri X 1.25/512

Sonuçta bunlar 3 tane tablo ve karşılaştırma betiği kullanılarak ölçülen ADC değeri onluk sayı sistemene dönüştürülüyor. Sonra LCD ekran satır kodu, "Sıcaklık:" yazısı, yüzler, onlar, birler hanesi, nokta, ondalık değer hanesi, "°C" yazısı ve son olarak gönderilen verinin bittiğini belirten kod gönderiliyor.

Termometre devresinde uygulama için metal kılıflı LM35 kullanılması ve kablo ile biraz uzatılması bazı uygulamalar için kolaylık ve hassasiyet sağlayacaktır.(Aslında zorunluluk bile olacaktır)

Şekil-6 :Soğuk ve sıcak su için kullandığım test ortamı. Ne yazık ki elimde termos yoktu.

LED ekran ve termometreyi birleştiren projede aklıma gelmediği için bu şekilde test işlemini iptal etmek zorunda kalmıştım. Ama her zaman basit sorunların basit çözümleri var ama bir noktaya kadar.

Soğuk testi için bir kap içine su buzdolabının buzluğunu konuldu ve soğutuldu. Termometre devresi bir buzdolabı poşeti içine konup içinde buz bulunan su dolu kaba daldırıldı. Sonuç ne yazık ki tam sıfıra ulaşamadı ama cesaret verici bir düzeye ulaştı. Sanırım içinde buz bulunan kap ve devre ısı yalıtımı yeterli olmadığı için ısı algılayıcısını (LM35) yeterince soğutulamadı. En azından devrenin çalıştığı gözlenmiş oldu. Bu yöntemin pek iyi olduğunu söylenemez. Sanırım LM35 ile buzdolabı poşeti arasında biraz hava kalıyor ve yeterince soğuk su ile temas sağlıyamıyor.Poşet içinde kalan havadaki nem soğuk ortamda devre üzerinde yoğunlaştığını belirtmekte fayda var. Not: Devreler nemden hoşlanmaz.

Şekil-7 :Buzlu su için test sistemi çizimi.


Şekil-8 :Buzlu su ile elde edilebilen sıcaklık değerleri.

Sıcak testi aynı şekilde bir kap içine kaynamış su kondu ve devre buzdolabı poşeti içinde sıcak su içine daldırıldı. Şu meşhur 100°C hayaline ne yazık ki erişemedim. Neden ise binaların kışın yaşadığı sorun: Isı kaybı. (Termos kesinlikle gerekiyor) Çünkü kullanılan kap metal hatta sapları bile. Deneyde sapların bile ısındığını belirtmekte fayda var. Ama devrenin ısınma ile ilgili deneyinden en azından devrenin çalıştığı gözlendi.

Şekil-9 :Sıcak su için test sistemi çizimi.


Şekil-10 :Sıcak ile elde edilebilmiş sıcaklık değerleri.

Devre yapım ve malzeme listeleri ilgili projelerde anlatılmıştır. Burada termometre ve LCD ekran programı verilmiştir.

Ekler:


LCD Ekran ve Atmega8 RS485 İletişimi Termometre için dosyalar-birleşik

Bu devrenin yapım sorumluluğu size aittir. Devre yapıldı ve çalışıyor. K.A....

Hiç yorum yok:

Translate

Sayfalar

Etiketler

İzleyiciler