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.

17 Ocak 2011 Pazartesi

Atmega8 ve HH10D ile LED Ekranlı Higrometre


Giriş

Hava durumu haberlerinde özellikle yazın sıkça duyulan termometre şu kadar gösterecek ama biz şu kadar hissedeceğiz gibi haberler yer alır. Bunun sebebi olarakda havadaki nem miktarı gösterilir. Havadaki nemi ölçmek için değişik yöntemler olsada (insan saçının nem ile boyunun değişmesi gibi) bunlar çoğunlukla mekanik yöntemlerdir.

Bu projede Atmega8 işlemcisi ve HH10D nem algılayıcısı kullanarak ölçüm sonucun LED ekran üzerinde gösterecek bir proje gerçekleştireceğiz.
Nem


Şekil-1 :Suyun madde halleri.

Nem bilindiği gibi suyun hava içindeki haline (suyun gaz hali) denebilir.

Gazların birbirine karışabildikleri bilinir. Örneğin atmosfer birçok gazın karışımıdır.(temelde oksijen ve azot) Su gaz haline geçtikten sonra hava içinde bir gaz olarak taşınır. Ama havanın taşıyabildiği su buharı miktarı normal şartlar altında sıcaklığa bağlıdır. (diğer şartların değişmediği varsayılarak) Örneğin hava soğumaya başladığında su yoğunlaşmaya başlar (bulut ve sis gibi hava olayları), dolayısı ile havanın taşıyabildiği su buharı miktarı düşer. Hava ısındıkça havanın taşıyabildiği su buharı miktarı artar. Bu özellikle sahil kesimlerinde yazın aşırı artan nem miktarı ile bilinir.

Normalde belirli nem aralığındaki hava insanlar için uygundur. Az nemli olursa insanlar ağızları kurur ve citleri kuruyarak çatlar. Çok nemli olursa bu durumda insanlar nefes almakta zorlanırlar. Bu nedenle nem kontrolu iklimlendirme sistemleri, seralar, depolama alanları için önemli bir konudur.

Normalde havadaki nem doğrudan ölçülmüyor. Havadaki gazların nem miktarına göre yüzde cinsinden ifade eden RH(%) ifadesi yani bağıl nem kullanılır.
Nem Ölçümü

Elektronikte nem miktarını ölçmek için değişik yöntemler vardır. Burada sadece HH10D nem sensöründe kullanılan yöntem ele alınacaktır.

HH10D üzerindeki nem algıllayıcı aslında basit anlamda bir kondansatördür. Kondansatör iki iletken levha arasındaki bir yalıtkan plakadır. İki plaka arasındaki yalıtkan malzeme olursa, hava aralıklı kondansatör olarak adlandırılır. Hava içindeki nemin havanın dielektrik sabitini değiştirdiği bilindiğine göre, havanın içindeki nem miktarı ile hava aralıklı kondansatörün kapasitesi değiştiği sonucu kolaylıkla çıkarılacaktır. (kondansatör plakaları arasındaki havanın dış ortam ile hava giriş çıkışı olacağı varsayımı ile.)

Burada basit bir kapasite-frekans dönüştürücü kullanarak nem miktarına göre frekansı değiştiren bir devre kullanılarak nem değeri frekans değerine dönüştürülür. Artık yapılması gereken bu frekansın ölçülmesi ve biraz matematik işlemlerin uygulanması.

Şekil-2 :Bir frekansmetrenin blok şeması.

Frekansmetre için fazla uzağa aramaya gerek yok. Hatta Atmega8 işlemcisi bu iş için yeterlidir. İşlemcinin içinde 2 adet 8 bitlik timer/sayıcı ve 1 adet 16 bitlik timer/sayıcı olduğu göz önüne alınarak en azından bu proje için basit bir frekansmetre oluşturulabilir.

Not:Bir frekansmetre projesinin gerçekleştirme planlarımız arasında olsada, bazı zorunluluklar nedeniyle higrometre projesinin öne alınması gerekti.
HH10D Nem Algılayıcı


Şekil-3 :Temel elemanlar ile HH10D şeması.

Hope Microelektronics firması (HOPERF) tarafından üretilmiş olan HH10D nem ölçümü için birçok elektronikçinin ilk tanıştığı elektronik elemanlardan 555 entegresi kullanılarak kapasite-frekans dönüştürücüsünü oluşturulmuş. Devrdeki kondansatör yerine Nem sensörü konulduğu zaman, elbetteki 555 çıkış frekansı ile orantılı olacaktır.

Ama nem sensörü tek başına yeterli değildir. Yani nem ile frekans arasındaki oranı bilmek gerekir. Üretici tarafından HH10D algılayıcısı içine yerleştirilmiş iki adet 2 baytık veri var. Bu veriler, ölçüm değeri ve üretici tarafından verilen matematik ifadesi kullanılarak bağıl nem hesaplanabilir. 2 adet 2 baytlık veri 24C02 tipinde bir EEPROM üzerindeki kayıtlı durumda. Yani i2c veri arayüzü erişimi gerekecektir. Atmega8 üzerindede i2c arayüzü donanım olarak bulunduğundan devre kolayca gereçeklenecektir.

Şekil-4 :HH10D bacak bağlantıları.

Modülün veri kağıtlarında devrenin 3.3V'un altında çalıştırılması gerektiği belirtilmiş, ama üzerindeki elemanlar (NEM sensörü bilgisi yeterisiz olduğu için hariç tutularak) 5V ile çalışabileceği görülüyor. Sonuçta 7555 entegresi 2-18V aralığında çalışabilirken, 24C02 türüne bağlı olarak 2V ile 5V aralığında çalışabilmektedir. (Belki devre kalibrasyonu düşük gerilimlerde gerçekleştirildiği ve devre ölçüm sonucunun tutması için 2.7 ile 3.3V aralığı önerilmiştir)

Şekil-5 :EEPROM okuyucu ile okunmuş HH10D eepromunun içeriği. (Parametrelerin bulunduğu bellek gözeleri kırmızı ile işaretlenmiştir)

Not: EEPROM okuyucu devre 5V ile çalıştığı için eeprom içeriğini okuyabilmek için 5V uygulamak zorunda kalındı ve eeprom okuma işlemi gerçekleştirildi.
Elektriksel Sinyal Seviyesini Çevirme


Şekil-6 :Diyot ile tek yönlü seviye çevirici.(SCL)


Şekil-7 :Mosfet ile iki yönlü seviye çevirici.(Mosfet bacakları arasına bağlı olan diyot aslında mosfetin içindedir).(SDA)

Buradaki önemli konulardan birinin Atmega8 bölümünün 5V ile ve HH10D modülünün 3.3V ile çalışmasıdır. Aslında bu işlemci için bir sorun olmamakla birlikte HH10D modülü için bir sorundur. Hele ki SDA bacağı için daha önemli bir sorundur.(Çünkü iletişim iki yönlüdür)

Bu konuda en güzel çözüm Philips firması tarafından sunulmuş.Gate ucu doğrudan 3.3V bağlantısında olmak kaydı ile Drain uçu 5V tarafındaki alet bacağına ve Source ucu 3.3V tarafındaki alet bacağına bağlamak yeterli. Bu bağlantı şekli ile iki yönlü iletişim bağlantısına imkan tanıyacaktır. (Her iki taraf (3.3V ve 5V için pull up dirençleri mutlaka vardır)

Tek yönlü bağlantı için zaten konu doğrudan bir diyot kullanılarak, ve diyodun her iki ucuna pull up dirençleri kullanarak basit bir seviye çevirici oluşturulur.

Şekil-8 :FOUT ve işlemci arasındaki seviye çevirici .

Tek yönlü devrelerde mesale HH10D FOUT bacağı durumlarda bir transistör seviye çeviricisi yeterlidir. Çünkü yapılan sadece HH10D modülü tarafından oluşturulan sinyalin frekansının ölçümesidir. Bu durumda zaten sürekli değişen sinyal seviyeleri işlemci açısından sorun almayacağından bu transistör devresinin kullanımı yeterlidir.
Devre

Devre basitçe Led ekran, Led ekran sürücüleri, Besleme, işlemci HH10D modülü ve seviye çeviriciler olarak ayrılabilir. Devrenin mümkün olduğu kadar küçük olması yönündeki kararlar sonucunda bazı elemanların SMD olması yönünde tercih yapıldı. Hepsi tek baskı devre kartı üzerinde toplandı.

Şekil-9 :Atmega8 ve HH10D ile Led Ekranlı Higrometre devresi kartı.

Şema

Proje temelde IC1 (Atmega8) üzerine kurulu. Bu işlemcinin saat kaynağı olarak XT1 (4MHZ) kristal ile C4 ve C5 (27pf) kondansatörleri kullanılmaktadır. İşlemcinin bacaklarına bağlanmış R5..R12 (220R) dirençleri DIS1...DIS4 (HDSP-F501) ekranlarının parçalarını sürmektedir. Ayrıca işlemci üzerinden R1..R4 (1K) dirençlerine bağlı Q1..Q4 (BC857) transistörleri DISP1..DISP4 ekranlarının ortak uçlarını sürmektedir.

M1 (HH10D) Nem algıyıcı modülü olup paremetrelerin saklandığı eeprom için SCL ve SDA bacakları varken, nem miktarı ölçümü için bir nem-frekans dönüşümü sinyal çıkışı vardır. IC1 ile M1 SCL bacakları arasına D2 (1N4148) diyodu bağlanmış ve diyodun her iki ucuna işlemci IC1 tarafına R16 (10K) ve M1 tarafına R17 (10K) pull up dirençleri eklenmiştir.

IC1 ile M1 SDA bacakları arasına Gate ucu +3.3V gerilime bağlanmış Source ucu işlemci ve Drain ucu M1 tarafına bağlanmı Q5 (STK7000) mosfeti bağlanmıştır. Bu mosfetin source (işlemci) tarafına R15 (10K) ve Drain (M1) tarafına R18 (10K) pull up dirençleri eklenmiştir.

M1'in FOUT çıkışına bağlı R19 (1K5) direnci üzerinden Q6 (BC847) transistörü sürülür. Bu transistörün emetörü doğrudan gnd hattına bağlanırken kollektör bacağı üzerinden R20(10K) direnci sürülür(pull up). Q6 ve R20 bağlantı noktasından işlemcinin T1 bacağına bağlanır. (frekansmetre için)

Besleme içir P1 klemensine bağlı besleme hattı üzerinden D1 (2W10M) köprüsü üzerinden besleme alınır. (D1 P1 klemensinin kutupsuz şekilde bağlanma olanağı tanır) D1 üzerinden geçen besleme IC2 (7805) ile işlemci için gereken +5V beslemeyi bağlar. IC3 (78L33) ise M1 modülü için gereken +3.3V besleme gerilimini regüle eder.

Devre üzerinde kalan ve belirtilmeyen kondansatörler filtre amaçlıdır.

Şekil-10 :Devrenin blok şeması


Şekil-11 :Sistemin Devre şeması

Devre Yapımı

Devre yapımı konusunda fazla kritik bir nokta yok.

M1 modülü 5'li sıra pin konnektörü üzerinden bağlanmıştır. Ayrıca IC2 ve IC3 arasındaki besleme bağlantı köprüsü unutulmamalıdır. (Şekil-15 üzerinde mavi ile gösterilmiş bağlantıdır).

Şekil-12:Baskı devresi şekli(üstten görünüm)


Şekil-13:Yerleşim planı (SMD elemanlarda eleman yüzünde gösterilmiştir-SMD elemanları PCB tarafına monte ederken elemanları ters çevirmeniz gerekmez.)


Şekil-14:Eleman ve yollarla birlikte yerleşim planı.


Şekil-15:Besleme bağlantı kablosu mavi ile gösterilmiştir.


Devre Elemanları


0R(1206 smd)R13,R14,R21,R22
220R(1206 smd)R5..R12
1K(1206 smd)R1..R4
1K5(1206 smd)R19
10K(1206 smd)R15..R18
10µF/25VC3,C10
100nF(1206 smd)C1,C2,C6,C7,C8,C9
27pF(1206 smd)C4,C5
Atmega8IC1
7805IC2
78L33IC3
HH10DM1
2W10MD1
1N4148(1206 smd)D2
BC857(SOT-23)Q1..Q4
STK7000Q5
BC847(SOT-23)Q6
4MHz KristalXT1
BC847(SOT-23)Q6
HDSP-F501DIS1..DIS4
tip0 2'li klemens)P1
2x6 konnektör isp
1x5 sıra pin-

Bu elemanlara ek olarak 9V'lu bir adaptör gerekmektedir.
Çalışması


Şekil-16:Başlangıçta ofset ve sens değeri için kısa devre edilmiş.


Şekil-17:Kısa devre yerleşim planı üzerinde kırmızı ile gösterilmiştir.

Devre ilk defa çalıştırıldığında sens ve ofset değerlerini bilmediği için elbette yanlış ölçüm sonucu verecektir. Sens ve ofset değerlerini okumak için devrenin gücü kesik iken, isp konnektöründeki MISO (P4) ve GND uçlarını kısadevre edin. Devreye beslemesini verin. İşlemci HH10D üzerindeki EEPROM'dan gerekli verileri okur ve işlemcinin üzerindeki EEPROM'a kaydeder ve artık her açıldığında işlemci üzerindeki EEPROM'dan okumaya devam eder. (Devre çalıştıktan sonra MISO ve GND arasındaki kısadevreyi kaldırmayı unutmayın, aksi durumda ekrande hexadesimal olarak sens değerini göstermeye devam eder).

ISP uçları kısadevre edilme durumları yok iken ekranın sağdan birinci hanesi sönük haldedir. Çünkü Nem ölçüm sonucu onda birlik bir ölçüm içinde verilmektedir. Sağdan birinci hanenin sadece ondalık noktası devrenin ölçüm yaptığı andı göstermek üzere yanıp söner. (Yandığı zaman frekansmetre ölçüm yapmaktadır.

Ölçülen frekans değerini görmek için (hex olarak) verilen işlemci programında belirtilen yerdeki satırları aktif hale getirmeniz, programı derlemeniz ve yüklemeniz gerekiyor.

Gerçi matematik ifadesini HH10D veri kağıtlarında da bulabilirsiniz:

Nem (Yüzde olarak)= (Ofset- ölçülen frekans)*sens/1000 ....(1)

Yukarıdaki ifade tabii ki hex değerleri içermektedir.(girdiler hex sayı sisteminde olmalıdır) Bu şekilde kullanıldığnda sonuç tamsayı olarak çıkacaktır. Eğer bu sonucu görmek isterseniz onluk sisteme çevirmeniz gerekir. Aynı ifadenin onluk sistem olarak;

Nem (Yüzde olarak)= (Ofset- ölçülen frekans)*sens/4096 ....(2)

Bu ifade ile onluk sonuç verecektir. (girdiler onluk sistemde olmalıdır.)

Şekil-18:Aynı sonucun onluk ve 16'lık (hex) gösterimi (hex değer ölçülen frekanstır; onluk değer hesaplanan Nem değeridir).

Eğer (1) nolu ifade ile Şekil 16'daki ölçüm sonucunu hesaplarsanız ekranda göreceğiniz sadece 44'dür.
Sens ve Ofset gösterimi


Şekil-19:Sens ve Ofset için kullanılan kısadevreli konnektörler.

Kullanıcı olarak yapılan ölçüm sonucunu elle kontrol etmek isteyebiliriz. Bunun için isp konnektörü üzerindeki MISO-GND ve SCK-GND bağlantılarını kullanmamız yeterlidir. Sens ve Ofset gösterilmesi devre çalışıyorken yapılabilir. Şekil 19'deki konnektörleri kullanırsanız, konnektör takılı iken kendi değerini gösterir, çıkarıldığında nem değerini gösterir.

MISO-GND Bağlantısı için (SENS değeri)

Şekil-20:Kırmızı ile gösterilen bağlantı.

Sens değeri ekranda HEX olarak gösterilecektir.

Şekil-21:Projedeki HH10D için sens değeri.


SCK-GND Bağlantısı için (OFSET değeri)

Şekil-22:Kırmızı ile gösterilen bağlantı.

Ofset değeri ekranda HEX olarak gösterilecektir.

Şekil-23:Projedeki HH10D için ofset değeri.




Ekler:

Atmega8 için gerekli bilgiler

"Atmega8 ve HH10D ile LED Ekranlı Higrometre" 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