89C51RD2 ADC0808 DS1621 Voltmetre Termometre

| Mayıs 16, 2023 Tarihinde güncellendi
89C51RD2 ADC0808 DS1621 Voltmetre Termometre

Hazırlayan :Serkan SARIKAYA – Emeği geçen hazırlayan kişilere teşekkürler

ADC0808 A/D Çevirici hakkında genel bilgi Tanımı ve Genel Yapısı

ADC 0808 standart veri kazanım sistemlerinin birçok bileşenini tek bir çip üzerinde barındıran bir elemandır ADC 0808 8 bitlik bir çevirme işlemi yapar ve adres girişinden latch ile 8 kanallı veri seçimi(multiplexer) ve mikroişlemciyle uyumlu birleştirilmiş kontrol lojiği sağlar.

Şekil-1.1 de ADC 0808 in bacak bağlantıları görülmektedir.28 Bacaklı DIP(Dual in Line) paketli modeline ait.

adc0808-02adc0808-02

Şekil-1.1 ADC 0808 Bacak Bağlantıları

Şekilde görüldüğü gibi 8 adet analog sinyal için giriş ucu, 3 adet hangi girişin seçileceğini belirleyen (ADD A, ADD B, ADD C) seçici uçlar,8 adet dijital çıkışın alınacağı çıkış ucu,karşılaştırma yapması için VREF(-) ,VREF(+) referans gerilim uçları ,ALE ucu 3 adet kontrol ucu (Start, Output Enable, End of Conversion(kesme ucu))ve 1 adet kare sinyal için Clock girişi mevcuttur.

ADC 0808 A/D (Analog/Dijital) Çeviricisinin Kontrolü

8 Bitlik çevirme işlemi yapan ADC 0808 girişteki sinyali dijitale çevirirken sıralı yaklaşım tekniğini kullanır.Sıralı yaklaşık yöntemi yüksek bir empedans stabilize karşılaştırıcı,bir analog anahtar gruplu 256R gerilim bölücü ve bir sıralı yaklaşım kaydedicisi aracılığıyla gerçekleştirilir.8 Kanallı multiplexer ise doğrudan 8 analog sinyalden herhangi birine erişmek için kullanılır.Aşağıda ADC 0808’in blok diyagramı yer almaktadır.Blok Diyagramı bakarak ADC’nin nasıl bir işlem sırası yürüttüğü ve girişten neye göre bilgi alıp nasıl onu dijital bilgiye çevirdiğini görebiliriz.

adc0808-03

Şekil-1.2 ADC0808’in Blok Diyagramı

Blok diyagramı incelediğimizde,8 Kanallı multiplexer tarafından analog sinyal girişlerini uygularız.Bu girişlerden hangisinin işlenip çıkışa aktarılacağını 3 girişli Multiplexer(MUX) Adres Kaydedicisi belirler yani ADD A ,ADD B, ADD C uçları Tablo-1.1 de bu uçların muhtemel durumlarına göre hangi giriş sinyalinin seçileceğine ilişken tablo yer almaktadır.

adc0808-06

Tablo-1.1 Seçici Adres Uçları

Burada “L” gösterimi ile 0; “H” gösterimi ile de lojik 1 seviyesinde olduğunu gösteriyor.Tablo dan anlaşılacağı gibi 8 farklı girişe karşılık 8 farklı adresleme vardır..Buradan adres uçlarının durumuna göre ilgili analog sinyal çevirme işlemine tabi tutulacaktır.Buradan seçilen analog giriş karşılaştırıcı (Comperator) devresine giriş yapılır. Karşılaştırıcı devresinin diğer bir girişi anahtar gruplu 256 R gerilim bölücü devresi uygulanır.

Burada karşılaştırma işlemini yaparken 256R gerilim bölücünün uçlarına VREF(-),VREF(+) referans gerilimleri uygulanır ve girişten gelen sinyal bu gerilim değerlerine göre karşılaştırılır.Karşılaştırma sonucu kontrol lojiği bloğuna girer ve kontrol sinyallerine durumuna göre ki birazdan çevirme işleminde kontrol girişlerinin işlevleri izah edilecektir,karşılaştırma sonucu SAR diye adlandırılan Successive Approximation Register yani sıralı yaklaşım kaydedicine girer ve adım büyüklüğüne göre HİGH yani lojik 1 yada LOW yani lojik 0 olarak 3 durumlu (Three State Output Latch) çıkış katına gelir.Burada sonuç OE (Output Enable) kontrol sinyalinin durumuna göre 8 bit olarak çıkışa aktarılır.

ADC 0808 in 3 adet kontrol ucu vardır.Bunlar Output Enable (OE),Start,Ende Of Conversion (EOC) dır. OE çıkış bilgisinin gönderilmesi için izin verir ve lojik 1 de iken aktiftir.Start girişi düşen kenarlı tetiklemelidir ve çevirme işleminin başlaması için gereken kontrol ucudur.EOC ise çevirme işleminin bitirmek için uygulanır ve lojik 1 olduğunda aktiftir.

ADC 0808 bu uçlardan hariç birde Clock giriş ucu vardır.Bu uçtan 10KHz ile 1280 KHz arasında herhangi bir kare dalga sinyal uygulandığında ADC’nin çevirme işleminde süreyi belirleyecektir.Katalog bilgisi olarak Clock girişinden 640KHz’lik bir sinyal uygulanması ADC den en iyi performansı almamızı sağlayacaktır.Bu giriş sadece çevirme süresi için önemlidir.

ADC 0808 A/D (Analog/Dijital) Çeviricisinin Çalışma Prensibi

adc0808-07

Şekil-1.3 Zaman Diyagramı

Şekil-1.3 de ADC 0808’ in zaman diyagramı yer almaktadır..Bu şekilde Clock ,Adres,ALE ve kontrol uçlarının durumuna göre girişen alınan bilginin çevrilerek çıkış elde edilme sürecini göstermektedir.

Clock çevrim için gerekli olan saat darbesini üretir.En ideal frekans 640KHz.Ama bu frekans aralığı 10KHz ile 1280Khz arasında seçilebilir.

Adres girişinden ise hangi analog girişini kullanılacağını gösteren ADD A-B-C adres bilgisidir.

Start biti ise çevrimin başlaması için gereken tetiklemeyi verir.Şekilde de görüldüğü gibi bir çevrim boyunca bir defa kuruluyor.Her çevrim için kurulur.Düşen kenar tetiklemelidir.

Output Enable (OE) biti, çevrim sonunda oluşan bilginin çıkıştan alınması için gerekli olan kontrol bitidir.

End Of Conversion (EOC) biti, başlamış olan çevrimin bitmesi sağlar.Şekilde görüldüğü gibi EOC biti 0 iken çevrim yapılmakta ve lojik 1 olduğunda ise çevirme işlemi biter.

Input ve Output ise 8 bitliktir ve çevrilecek olan analog sinyal ve çıkıştan elde edilen dijital çıkışı ifade eder.

ADC0808 Analog/Dijital Çeviricisinin Çevrim Gerçekleştirilmesi için Gereken İşlemler

* Start Bitini kısa süreliğine çevrimi başlatması için lojik 1 gönderilip lojik 0 a düşürülmeli.

* Hangi analog girişin aktif olacağını seçmek için adres uçlarına gerekli girişi yapılmalı.

* EOC ucu çevrim bitene kadar lojik 0 da tutulur ve çevrim bittiğinde ise lojik 1 olur.Çevrim tamamlanana kadar lojik 0 seviyesinde tutulmalı.

* Çevrim EOC bitinin 1 olması ile biter OE biti lojik 1 e kurulur ve çıkış alınması sağlanır.

DS1621 Isı sensörü hakkında genel bilgi Tanımı ve Genel Yapısı

DS1621 9 Bit ısı okuma sağlayan dijital termometre ve termost elemanıdır. Kullanıcı tanımlı sıcaklık ayarları kalıcı bir bellek de depolanır.DS 1621 sıcaklık okuma ve kullanıcı tarafında ayarlanan sıcaklık ayarları için bütün haberleşme 2-Wire seri arabirim üzerinden gerçekleşir.Buna I2C de denir.

DS1621’ in temel özelliklerini şöyle sıralayabiliriz;

* Harici bir elemana gerek duymadan sıcaklık ölçümlerini yapar.
* -55 °C ile +125 °C arasında sıcaklık ölçümü yapabilir.
* Sıcaklık okumasını yaparken sıcaklığı 9 bitlik bir değer olarak alır.
* Sıcaklık değerini 1 saniyeden az bir sürede dijital bilgi ye çevirir.
* Termostatik ayarlar kullanıcı tarafından tanımlanabilir ve kalıcı olarak depolanır.
* Bilgi okuma/yazma 2-Wire arabirimi(I2C) ile gerçekleşir.

Şekil-2.1 de DS 1621’in DIL paketli dış görünümü görülmektedir.8 Bacaklı bir elemandır.

adc0808-10ds1621

Şekil-2.1 DS1621 Bacak Bağlantısı

Bacakları kısaca tanımlayacak olursak;
* SDA, I2C Seri Bilgi Giriş/Çıkışı ucu.
* SCL, I2C Seri Bilgi Saat Darbe girişi
* Tout Termost Çıkışı.
* A0, A1, A2 ise Adres uçlarıdır.

DS 1621 Isı Sensörünün Kontrolü

adc0808-11

Şekil-2.2 DS 1621’ in blok diyagramı

Şekil-2.2 de blok diyagramı görülmektedir.Algılayıcı seçimi(adreslemesi) yapılmasından sonra seri veri saat darbeleriyle SDA ile veriler seri olarak okunmak veya yazılmak için alınır. DS1621 sıcaklık okuma /yazma yaparken belli komutlara göre yapar.(Bu komutlardan daha sonra bahsedilecektir.)

ds1621_tablo

Tablo-2.1 DS 1621 Sıcaklık Ölçüm Aralıkları

Tablo-2.1 de DS 1621 ‘in yapılan sıcaklık okuma işlemleri sonun da yada termost da kullanılacak aralıklar için çıkış bilgisi için 2 Byte’lık sıcaklık tanımlamaları yapılmıştır.Bu bilgiler I2C ile seri haberleşme protokolü kullanılarak ilk olarak yüksek bit alınarak. Bu tablodan da görüldüğü gibi 55 °C ile +125 °C arasında 0.5 °C hassasiyetle ölçümü gerçekleştirir.

Burada hassasiyet ayarlanabilir ki şöyledir.Eğer 0.5 °C hassasiyet gerekiyorsa 2 Byte’lık bir okuma /yazma, 1 °C’lık bir hassasiyet için ise tek Byet’lık bir okuma/ yazma yeterli olacaktır.

DS1621 Seri Veri İletim Yöntemi (I2C Protokolü)

DS 1621 bilgi okuma /yazma yaparken tek bir hat üzerinden bu işlemleri gerçekleştirir. DS 1621 veri gönderiminde SDA diye tanımlanana Seri Veri I/O ucundan veri gönderimi yaparken ,okuma yaptığı zaman yine aynı hat üzerinden veri iletimini sağlar.Bu işlemler gerçekleşirken DS 1621 mikro denetleyici arasında şöyle bir ilişki vardır. DS 1621 “slave” yani Türkçe anlamı “köle”, karşılığından anlaşıldığı gibi başka bir birimden gelen komutlara göre hareket eder.Mikro denetleyici ise “master” dır ve çevre birimlerine yani komutlara göre yönlendirir.

DS 1621 I2C protokolünde “slave” konumundadır.Mikro denetleyici ile DS1621 arasında kontrol sağlayıcı bit SCL bitidir. Isı sensörü bu hat üzerinden kontrol edilir.Veri ise SDA bitiyle seri olarak alınır. Şekil-2.3 de DS 1621 ‘in I2C ile haberleşme şekli verilmiştir.

ds1621_i2c_veri

Şekil-2.3 DS 1621 I2C ile Veri İletim Şekilleri

Şekil-2.3 de bakıldığında DS 1621 ile Mikro denetleyici arasında veri iletimi daha önce de denildiği gibi SDA ucuyla gerçekleştirilir.SCL bitinden ise eş zamanlı saat darbeleri gönderilerek gerekli olan saat darbesi Mikro denetleyici tarafından gönderilir .
I2C protokolünün işlem görmesi için önce START biti gönderilmelidir.Bu bilgi gönderilmeden asla okuma/ yazma yapılmaz.Start bitinin ardından “1001 bilgisi ve ardından A0, A1, A2 adres bitlerine girilen adres okunur/yazılır. Burada bu adresler birden fazla algılayıcı kullanıldığında önemi artıyor.

Tek bir algılayıcı kullanıldığında yine adres bilgisi girilir ama istenilen adres verilebilir.Bu adres bilgilerine bakarak 3 adres ucu olduğuna göre 8 adet algılayıcı bağlanabilir.

Adres gönderiminden sonra okuma-yazma yapabilmesi için “w” bitinin konumu önemlidir.Eğer “w” biti lojik 1 ise okuma yapma moduna geçer yada “w” lojik o ise yazma moduna geçer.Yazma/okuma yapılacağına karar verildikten sonra “ACK” ile gösterilen kabul bitinin gelmesi gerekir. Daha sonra 8 bitlik bilgi gönderimi yada alınır başlar.Bili ulaşımı gerçekleştikten sonra verinin ulaştığını haber veren “ACK” kabul biti gönderilir.ve arkasından STOP biti ile veri iletimi biter.

Eğer gönderim/alım gerçekleşmiş olsa dahi STOP biti gönderilmediği taktirde I2C protokolü tamamlanmaz ve daha sonra ki veri iletimi/gönderimi gerçekleşmez.

Ne zaman NSTOP biti geldi o zaman veri okuma/yazma bitmiştir ve bir sonraki veri iletişimi için hazır hale gelir. Daha önce dediğimiz DS1621 bu işlemleri gerçekleştirirken bazı komutlar kullanılır ve bu komutlara göre sıcaklık okuma ve yazma gerçekleştirdiğini değinmiştir.Şimdi Tablo-2.2 de bu komutlar görülmektedir

ds1621_i2c_tablo

Tablo-2.2 DS 1621’nin Komut Listesi

Bu tabloda DS 1621’nin veri alımı/gönderimi yaparken kullandığı komutlar ve protokol numaraları yer almaktadır.Bu komutlardan bizim kullandığımız olanları incelersek;

* Read Temperature (Sıcaklık Oku) protokol değeri AAh dır.Ölçülen son sıcaklık değerini okur ve 2 Bytelık okuma bilgisini gönderir.

* Read Counter (Sayıcı Oku) protokol değeri A8h dır.”w” biti lojik 1 iken çalışır ve sayıcı bytenı okur.

* Start Convert T (Sıcaklık dönüşümünü Başla) protokol değeri EEh dır.

* Stop Convert T (Sıcaklık dönüşümünü durdur) protokol değeri 22h dir.

* Access TH (TH’ e erişim) protokol değeri A1h dır.”w” biti lojik 0 iken TH değeri algılayıcıya yazılır.

* Access TL (TL’ e erişim) protokol değeri A2h dır. “w” biti lojik 0 iken TL değeri algılayıcıya yazılır.

* Access Config. (Konfigürasyona Erişim) protokol değeri ACh dır. “w” biti lojik 0 iken veri buraya yazılır.”w” lojik 1 iken okunan veri burada tutulur.

DS1621 ile I2C Yardımıyla Haberleşme Yapılırken Dikkat Edilecekler Hususlar

Yol meşgul değil, SDA ve SCL bitleri lojik 1 ise yol meşgul değildir.
Veri İletimine başla, SCL lojik 1 iken SDA ise START bitinin gelmesiyle yani SDA bitinin 1’den 0’a geçtiği an başlar. Veri İletimini durdur, SCL lojik 1 iken SDA dan STOP bitinin gelmesiyle yani SDA bitinden 0’dan 1’ e geçtiği an durur

Projenin C Kod dosyaları ve Proteus isis ares ile hazırlanmış pcb simülasyon;

at89c51rd2-adc0808-ve-ds1621-ile-voltmetre-termometre

Şifre-Pass: 320volt.com

Yayım tarihi: 2008/05/17 Etiketler: , , , , , , , , ,



1 Yorum “89C51RD2 ADC0808 DS1621 Voltmetre Termometre

  1. MustafaMustafa

    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…

    CEVAPLA

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir