Gerek işlerimin yoğunluğundan gerekse üşengeçlikten uzun süredir siteme proje koyamıyordum.
Bugün biraz bunu kırmak amaçlı ufak da olsa, pek çok amatör mikrodenetleyici kullanıcısının göz ardı ettiği ADC çoğullamaya değinmek istedim.
Öncelikle mantık devreleri dersinde hepimizin kullandığı multiplexer ya da demultiplexer entegrelerine benzer bir entegre arayışına girdim. Fakat kullanacağım yapı TTL mantığında çalışmaması gerektiğinden (yani 1V’tu sıfır algılamasını istemiyorum) multiplexer ve demultiplexer’ın bu iş için uygun olmayacağını biliyordum. Bir kaç yerde bu sorunumu dile getirdiğimde ise piyasada oldukça fazla kullanılan 74HC4051 ve 74HC4052 entegrelerini işittim.
Bu entegrelerin kullanımı ise oldukça basit. Öncelikle entegreyi enable eden pini toprağa çekiyorsunuz, ardından okumak istediğiniz kanalı, A-B-C pinlerinden ‘binary’ şeklinde girip, tek çıkışından, istediğini kanalı okuyorsunuz. Ben uygulamamda 74HC4051 kullandım. Entegrenin nasıl kullanıldığını datasheet’e bakmadan da görmeniz mümkün.
Daha sonra düşündüğümde ise sadece bunu gösterip ‘alın işte size proje’ demek içime sinmedi. Onun için stajda bolca uğraştığım NTC’leri projeye dahil ettim. Bir de merak ettiğimden Atmega16’ya 140ms’lik bir Watchdog kurdum. Anlayacağınız bir taşla 3 kuş vurmuş oldum. Bir de tüm sıcaklık değerlerini görmek için 4×20 LCD ekledim. Açılış ve çalışma ekranını aşağıdan görebilirsiniz.
NTC için ise aşağıdaki 8 bit çözünürlüklü tabloyu kullandım. Bu tablo genel bir tablo olmayıp, kullandığınız NTC’den NTC’ye değiştiği için, hazır buldum, kullanayım demeyin. Ben 40-50C civarlarının hassas olmasını istediğimden tabloyu buna göre düzenledim.
const signed char ntc_table[256] ={ 127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127, 127,127,127,127,127,127,127,127,126,124,122,121,119,118,117,115, 114,113,112,111,109,108,107,106,105,104,103,102,101,100,100,99, 98,97,96,95,94,94,93,92,91,91,90,89,88,88,87,86, 86,85,84,84,83,82,82,81,80,80,79,78,78,77,77,76, 76,75,74,74,73,73,72,72,71,70,70,69,69,68,68,67, 67,66,66,65,65,64,64,63,63,62,62,61,61,60,60,59, 59,58,58,57,57,56,56,55,55,54,54,53,53,52,52,51, 51,50,50,50,49,49,48,48,47,47,46,46,45,45,44,44, 43,43,42,42,41,41,41,40,40,39,39,38,38,37,37,36, 36,35,35,34,34,33,33,32,32,31,31,30,30,29,29,28, 28,27,27,26,26,25,25,24,23,23,22,22,21,21,20,20, 19,18,18,17,17,16,15,15,14,13,13,12,12,11,10,10, 9,8,7,7,6,5,4,4,3,2,1,0,0,-1,-2,-3,-4,-5,-6,-7, -8,-9,-10,-11,-12,-13,-15,-16,-17,-19,-20,-22, -23,-25,-27,-29,-31,-33,-35,-38,-40,-44,-47, -51,-56,-63,-71,-85};
Proje ile ilgili proteus simülasyon, c kodu ve .hex kodları;
Şifre-Pass: 320volt.com
Herkese iyi çalışmalar.
Yayım tarihi: 2010/07/09 Etiketler: Atmega16 Projeleri, atmel avr projeleri, nct ölçüm, ntc lcd
Hocam bu entegre sayesinde kaç volt girerse girsin ne girerse o mu çıkıyor?
Mesela abc pinlerinde 001 girdik, yani x1 deki pini seçtik bu pinden 4V giriyorsa biz onu 4 volt olarak mı okuyoruz?
Eğer öyleyse güzel bir şeymiş 😀
Teşekkürler proje için.
@Gökhan: Aynen dediğin gibi Gökhan, zaten onun için bu entegreyi kullandım ya 😉
iyi fikir 3 kuşi emeğine sağlık, teşekkürler:)