
AT89C51RD2, ADC0808 ve DS1621 ile voltmetre-termometre uygulaması. Bu uygulamada AT89C51RD2 mikrodenetleyicisi kullanılarak aynı anda hem analog gerilim ölçümü hem de dijital sıcaklık ölçümü yapılmaktadır. Gerilim bilgisi ADC0808 A/D çeviricisi üzerinden, sıcaklık bilgisi ise DS1621 dijital sıcaklık sensörü üzerinden alınır. Ölçülen iki değer 16×2 karakter LCD ekranda ayrı satırlarda gösterilir. Devrenin en pratik tarafı, paralel veri çıkışlı bir A/D çevirici ile I2C tabanlı bir sıcaklık sensörünü aynı sistem içinde birleştirmesidir.
Hazırlayan : Serkan SARIKAYA – Emeği geçen hazırlayan kişilere teşekkürler.
Kullanılan ana elemanlar ve görevleri
İçerik
| Parça | Görevi |
|---|---|
| U1 AT89C51RD2 | Ana kontrol birimidir. ADC0808’den gelen 8 bit veriyi okur, DS1621 ile seri haberleşir ve LCD ekranı sürer. |
| U2 ADC0808 | Analog gerilimi 8 bit dijital bilgiye çevirir. Bu projede voltmetre bölümü için kullanılır. |
| DS1 DS1621 | Dijital sıcaklık sensörüdür. Sıcaklık bilgisini 2 telli seri arabirimle mikrodenetleyiciye iletir. |
| LCD1 LM016L | Ölçülen gerilim ve sıcaklık değerlerini kullanıcıya gösterir. |
| U3:A – U3:B 74HC04, X1, C1, C2, R1, R2 | ADC0808 için saat sinyali üreten osilatör bölümünü oluşturur. |
| RV2 1K | Voltaj girişini test etmek için ayarlanabilir analog kaynak görevi görür. |
ADC0808 ile gerilim ölçümü nasıl yapılıyor?
ADC0808, 8 bit çözünürlüklü ve 8 kanallı bir A/D çeviricidir. Girişindeki analog gerilimi sayısal değere çevirerek mikrodenetleyicinin okuyabileceği forma getirir.
Bu sayede AT89C51RD2 doğrudan analog ölçüm yapamasa da ADC0808 üzerinden 0V ile referans aralığı içindeki gerilimleri izleyebilir.


ADC0808’in önemli tarafı yalnızca tek girişli bir dönüştürücü olmaması, aynı zamanda çoklayıcılı yapısı sayesinde birden fazla analog kaynağa bağlanabilmesidir.
Çoklayıcılı giriş mantığını daha genel düzeyde incelemek isteyenler çoklayıcı ve veri seçici yapıları konusuna da göz atabilir.

Yazılım tarafında ADC çevrimi kısa bir START darbesi ile başlatılır. Ardından EOC hattı izlenir.
Çevrim tamamlandığında OE aktif edilerek 8 bit veri okunur. Bu veri doğrudan mikrodenetleyicinin veri portuna alınır ve gerilim hesabında kullanılır.
Program içinde adım değeri 5/256 olarak tanımlandığı için sistem temel olarak 0V ile 5V aralığına göre ölçeklenmiştir.

Bu yaklaşımda yaklaşık bir LSB değeri 19.53 mV seviyesindedir.
Yani voltmetre bölümü temel eğitim, gösterge ve basit izleme uygulamaları için yeterlidir.
Daha hassas ölçüm istenirse referans gerilimi, giriş ölçekleme katı ve yazılım kalibrasyonu yeniden düzenlenebilir.
DS1621 ile sıcaklık ölçümü
DS1621, sıcaklık bilgisini dijital olarak üreten ve 2 telli seri haberleşme kullanan bir sensördür.
Bu yüzden sıcaklık ölçümü için harici A/D çevrimine ihtiyaç duymaz.
Sistem içinde bir yandan ADC0808 analog voltajı çevirirken, diğer yandan DS1621 doğrudan derece bilgisini üretir.
Bu yapı aynı projede iki farklı ölçüm yöntemini bir araya getirmesi bakımından öğreticidir.


DS1621 tarafında SDA veri hattı, SCL ise saat hattıdır. A0, A1 ve A2 uçları sensör adresleme için kullanılır.
Aynı hatta birden fazla sensör bağlanacaksa bu adres uçları önem kazanır.
Aynı sensör ailesiyle hazırlanmış başka bir 8051 uygulamasını görmek isteyenler AT89C51 ile DS1621 sıcaklık sensörlü termometre çalışmasına da bakabilir.

Program akışında önce sensöre 0x22 komutu gönderilerek dönüşüm durdurulur, ardından 0xEE komutu ile yeni sıcaklık dönüşümü başlatılır.
Sonrasında 0xAA komutu ile sıcaklık verisi okunur. Okunan ilk bayt tam sayı kısmını, ikinci bayt ise yarım derecelik bilgiyi taşır. Kod içinde ikinci bayt 0x80 olduğunda ölçüme 0.5 derece eklenmesi bu mantığa göre yapılmaktadır.
Bu sayede LCD’nin alt satırında derece bilgisi doğrudan gösterilir.
Sensör dijital yapıda olduğu için, sıcaklık ölçümünde analog gürültü ve referans gerilimi kaynaklı klasik ADC hataları daha düşük seviyede hissedilir.
LCD ekran ve yazılım akışı
LCD ekran 8 bit veri yoluyla sürülmektedir. Veri hatları P1 portu üzerinden, kontrol hatları ise P2 portunun ilgili bitleri üzerinden yönetilir.
Program sürekli döngü içinde önce gerilim ölçümünü, ardından sıcaklık ölçümünü yapar ve iki bilgiyi LCD’ye yazar. Üst satırda gerilim, alt satırda sıcaklık gösterilir.
- Gerilim satırı: DC xx.xx V
- Sıcaklık satırı: xx.xx °C
Bu yapı kullanıcı açısından okunması kolay bir arayüz sağlar.
Benzer ölçüm mantığının farklı mikrodenetleyici yapılarında nasıl kurulduğunu incelemek için ATmega8 ile hazırlanan dijital volt-amper metre örneği de faydalı olabilir.
Şemadan okunabilen ana bloklar

- LCD gösterge bölümü, AT89C51RD2’nin paralel portlarıyla doğrudan sürülmektedir.
- ADC0808’in veri çıkışları mikrodenetleyicinin veri portuna bağlanmıştır.
- ADC0808’in START, EOC ve OE kontrol hatları ayrı ayrı kullanılmıştır.
- DS1621 sıcaklık sensörü seri haberleşme ile sisteme eklenmiştir.
- 74HC04 tabanlı kristal osilatör bölümü ADC0808 için saat üretmektedir.
- RV2 potansiyometresi test amaçlı ayarlanabilir analog giriş oluşturmaktadır.
Uygulamada dikkat edilmesi gerekenler
- Gerilim hesabı yazılımda 0V ile 5V aralığına göre yapıldığı için daha yüksek girişler doğrudan uygulanmamalıdır.
- Gerçek devreye aktarımda ADC0808 referans uçları ve analog giriş ölçeklemesi mutlaka yeniden kontrol edilmelidir.
- DS1621 seri hatlarında besleme, adresleme ve haberleşme sırası doğru kurulmazsa sıcaklık bilgisi okunamaz.
- Eski Proteus projelerinde bazı net bağlantıları, sabit seviye atamaları veya görünür hat çizimleri ekranda sadeleştirilmiş görünebilir. Bu nedenle çalışan proje dosyası ile port tanımları birlikte kontrol edilerek ilerlemek daha güvenlidir.
- Bu proje eğitim ve uygulama geliştirme açısından güçlü bir örnektir; istenirse ADC0808’in diğer girişleri kullanılarak çok kanallı ölçüm sistemine dönüştürülebilir.
AT89C51RD2, ADC0808 ve DS1621 ile kurulan bu yapı; analog gerilim ölçümü, dijital sıcaklık izleme ve LCD gösterimini tek bir devrede birleştiren öğretici bir uygulamadır.
Özellikle 8051 mimarisiyle çalışanlar için paralel veri okuma, I2C haberleşme, ekran sürme ve temel ölçüm yazılımı konularını aynı projede görmek açısından oldukça faydalıdır.
Küçük iyileştirmelerle laboratuvar tipi izleme, panel gösterge veya eğitim amaçlı deney kartı olarak rahatlıkla geliştirilebilir.
Projenin C Kod dosyaları ve Proteus isis ares ile hazırlanmış pcb simülasyon;

Merhaba Serkan, bunu can_bus kullanarak da üzerinde can trascıvier olan bir ıişlemci ile yapabilirmiyim. Uğraştım ama böyle bir işlemci ile c515c nasıl analog veriyi alıp can verisine çevireceğimi bulamadım.
Yardımcı olursan cok sevinirim.
İyi çalışmalar…