ADC'nin genel çalışma prensibi. Basit bir ADC, PC'ye bir eklentidir. Şema, açıklama

  • 30.04.2019

Öyle oldu ki, sürekli birlikte çalıştığım ve görevlerin büyük çoğunluğunu yaptığım ana MC, ATTiny2313- popülerdir ve en önemlisi, en ucuz kontrolör tüm hattan AVR 8'den fazla bacak sayısı ile 18, chtol, ruble şey için onları yaklaşık üç yüz sayısında aldım. Ama işte burada - ADC'si yok... Hiç de bile. Ve sonra ona ihtiyaç duyuldu - sensörden gelen sinyali ölçmeniz gerekiyor. pusu. Bu tür çöpler yüzünden daha doldurulmuş olana geçiş yapmayın. ATTiny26- ayrıca bizden satın alabileceğiniz incir ve daha pahalıya mal olur ve sonra bu atılımla ne yapmalı ATTiny2313 daha önce ne satın alındı? beynimi kullandım...

neden beceriksiz ADC sıralı karşılaştırma? Tabii ki, hız ve doğruluk bir çeşme olmayacak, ancak MK tipini değiştirmeden ve ek gövde kitinin sadece iki kuruş detayı ile, tam teşekküllü, fren de olsa 8-bit ADC'yi tamamen tatmin edeceğim mütevazı isteklerim!

Seri karşılaştırma ADC'si nasıl çalışır?
bizde ne var ATTiny2313 analog? Doğru - . Şimdi ölçülen sinyali girişine uygulamak ve referans voltajının değerini doğrusal olarak değiştirerek referans voltajı ile metodik olarak karşılaştırmak yeterlidir. Karşılaştırıcının hangi referans voltajlarında tetiklendiği, ölçülen + / _ sinyali referansı değiştirme adımına yaklaşık olarak eşittir.

Alternatif bir referans voltajı elde etmek için kalır ve denetleyicinin tamamen dijital bir çıkışından ne analog bir sinyal çekebilirsiniz? PWM! Daha önce entegre etmiş olmak. Entegrasyon için en basit RC filtresini kullanıyoruz. Kondansatörümüz yükü entegre edecek ve direnç, kondansatör şarj edildiğinde portun ölmesine izin vermeyecektir. PWM'yi böyle bir filtreden geçirmenin sonucu, oldukça kararlı bir sabit voltaj olacaktır.

Sadece filtre derecelendirmelerini tahmin etmek için kalır. Kesme frekansı - filtrenin değişken bileşeni nemlendirmeye başladığı frekans, L şeklindeki RC filtresinde zaman sabitinin tersine eşittir w = 1 / RC... kondansatörü taktım 0.33E-6 F ve direnç açık 470 Oha ortaya çıktı w = 6447 rad/s... kadarıyla açısal frekans hiçbir yere direnmedik, sonra onu 2pi = 6.28'e böldük, kesin olarak yaklaşık bir kilohertz, 1026,6 Hz elde ettik. Zaman sıklığı PWM ancak kolayca onlarca kilohertz'e sahip olabiliriz, o zaman çıktı önemsiz titreşimlerle çok düzgün bir sabit olacaktır.

Şimdi bu üstleri karşılaştırıcının girişine sarıyoruz, saniyesinde ölçülen sinyalimizi başlatıyoruz ve kodla eğlenmeye başlıyoruz. Sonuç olarak bir araya getirilmiş böyle bir diyagramdır. Ancak burada ATTiny2313 değil, ADC'si olan Mega8, ancak şimdilik varlığını unutacağız. Filtremiz kırmızı çizgilerle çizilmiştir.

Kod basit olacak, rahatsız etmemek için ayrı kaynakları dosyalar şeklinde düzenleyeceğim:

  • - Baş dosya
  • - Kesinti vektör tablosu
  • - Çevrenin başlatılması
  • ve - Makrolar ve makrolar

Sadece ana fonksiyon hakkında yorum yapacağım kireç.
Bir prosedür çağırırken kireç ilk işimiz:

  1. Analog karşılaştırıcı yapılandırılır ve en önemlisi kesmeleri etkinleştirilir.
  2. Ardından ilk tarama değeri 255, tarama kaydına (R21) yüklenir.
  3. Daha sonra bu değer PWM karşılaştırma kaydına atılır. OCR1AL... PWM önceden, bölümdeydi init.asm yapılandırılır ve çalışır, böylece çıkışında hemen görev döngüsüne sahip bir sinyal belirir (görev döngüsü, sinyal süresinin bu sinyalin süresine oranıdır) 1 yani, aslında, sadece bir iken.
  4. Gecikme fonksiyonunda geçici sürecin bitmesi için bir süre bekleriz (kapasitör voltajını anında değiştiremez)
  5. Tarama kaydının değerini azaltın (bu, OCR1AL görev döngüsünü 1/255 azaltacaktır), sıfır olup olmadığını kontrol edin. Değilse, 3. adıma gidin.
Sonuç, sinyal görev döngüsünde 1'den 0'a bir adımla sıralı bir düşüş olacaktır. 1/255 , filtreden sonra azalan bir voltaja dönüştürülecek. Ve ana prosedürden beri kireççevrimsel olarak çağrılırsa, karşılaştırıcının girişinde bir testere olacaktır.

Görüldüğü gibi üst kısımda bir kesim var. Bunun nedeni, tüm dirençlerdeki düşüşleri hesaba katarak MK bacağının verebileceği maksimum voltajın 4,7 volt mertebesinde olması ve ana potansiyometreden 5'ini de sökebilmemdir. Eh, ayrıca üst kısımlar biraz bunalmış. Frekansı düşürürseniz, aralık biraz genişleyecektir.

Böylece, biraz ustalık ve toplam bir ruble ve bir düzine kod satırı için iki ek ayrıntı kullanarak, bir demet hamur biriktirdim =)

ADC - Analogdan dijitale dönüştürücü. Adından, bir sayıya dönüştürülen girişe bir analog sinyalin beslendiğini tahmin edebilirsiniz.

Söylenecek ilk şey, mikrodenetleyicinin ADC'sinin sadece voltajı ölçebildiğidir. Diğer fiziksel büyüklükleri ölçmek için önce gerilime dönüştürülmeleri gerekir. Sinyal her zaman referans voltajı adı verilen bir noktaya göre ölçülür, aynı nokta ölçülebilen maksimum noktadır. Referans voltaj kaynağı (referans voltaj) olarak oldukça kararlı bir voltaj kaynağı seçilmesi önerilir, aksi takdirde tüm ölçümler referans ile birlikte dans eder.

En önemli özelliklerden biri, ölçüm doğruluğunu etkileyen çözünürlüktür. Tüm ölçüm aralığı parçalara ayrılmıştır. Minimum sıfır, maksimum voltaj referansı. 8 bit ADC için 2 ^ 8 = 256 değer, 10 bit 2 ^ 10 = 1024 değerdir. Böylece bit derinliği ne kadar yüksek olursa, sinyal o kadar doğru ölçülebilir.

Diyelim ki 0 ila 10V arasında bir sinyal ölçüyorsunuz. 10 bit ADC'li bir Atmega8 mikrodenetleyici kullanıyoruz. Bu, 10V aralığının 1024 değere bölüneceği anlamına gelir. 10V / 1024 = 0.0097V - bu adımla voltajı ölçebileceğiz. Ancak mikrodenetleyicinin 0.0097, 0.0098, 0.0099 ... değerlerini aynı kabul edeceğini unutmayın.

Yine de, 0.01'lik bir adım oldukça iyidir. Bununla birlikte, bu doğruluğun gözlemlenemeyeceği birkaç öneri vardır, örneğin, 10 bitlik bir doğrulukla ölçümler için, ADC'nin çalıştığı frekans 50-200 kHz olmalıdır. İlk dönüşüm 25 döngü ve 13 döngü daha sürer. Böylece 200 kHz frekansında maksimum değeri sıkabileceğiz.
200.000/13 = 15.384 ölçüm.

Gerilim referans kaynağı olarak bir dahili kaynak ve bir harici kaynak kullanılabilir. Düşük stabilite nedeniyle dahili besleme voltajı (2.3-2.7V) önerilmez. Program ayarlarına bağlı olarak AVCC veya Aref bacağına harici bir kaynak bağlanır.

Bir ADC kullanırken, AVCC pini bağlı olmalıdır. AVCC voltajı, mikrodenetleyici besleme voltajından 0,3V'den fazla farklılık göstermemelidir. Belirtildiği gibi, ölçülen maksimum voltaj referans voltajına (Vref) eşittir, 2V-AVCC aralığındadır. Bu nedenle, mikrodenetleyici 5V'tan daha fazlasını ölçemez.

Ölçüm aralığını genişletmek için sinyali bir voltaj bölücü üzerinden ölçmeniz gerekir. Örneğin, ölçülen maksimum voltaj 10V, referans voltajı 5V'dir. Ölçüm aralığını genişletmek için ölçülen sinyali 2 kat azaltmanız gerekir.

Bölen hesaplama formülü şöyle görünür:

U çıkışı = R'de U 2 / (R 1 + R 2)

Değerlerimizi formüle yerleştirelim:

5 = 10 * R2 / (R1 + R2)

onlar. herhangi iki özdeş direnci alabilir ve bunları şemaya göre bağlayabilirsiniz.

Bu nedenle, bölücü üzerinden voltajı ölçtüğümüzde, elde edilen ADC değerini faktör = Uout / Uin ile çarpmamız gerekiyor.

Ölçülen voltajı hesaplamak için tam formül şöyle görünecektir:
U = (referans voltajı * ADC değeri * bölücü faktör) / ADC bit sayısı

Örnek: 5V referansı, ADC ölçülen değeri = 512, bölücü oranı = 2, 10-bit ADC.

(5 * 512 * 2) / 1024 = 5V - gerçek ölçülen voltaj değeri.

Bazı programcılar bir program yazarlar ki mikrodenetleyici otomatik olarak bölücü faktörünü hesaplasın bunun için çıkış sinyali örnek bir cihaz ile ölçülerek programa girilir. Mikrodenetleyicinin kendisi, gerçek voltajı ADC'nin her değeriyle ilişkilendirir, işlemin kendisi bir defalıktır ve kalibrasyon olarak adlandırılır.

Gelelim yazılım uygulamasına. Belirtilen parametrelerle bir proje oluşturuyoruz. Ayrıca bilgileri görüntülemek için D bağlantı noktasına bir ekran bağlarız.

Ölçüm otomatik modda gerçekleştirilecektir, kod bir kesintide işlenir, AVCC bacağına referans voltajı bağlanır. Aslında, yalnızca alınan verileri işlememiz gerekir. Ölçülen veriler adc_data değişkeninde saklanır. Birkaç kanalı yoklamanız gerekiyorsa, hangi kanalların taranacağını seçin ve veriler adc_data'da bacak 0 için, adc_data'da bacak 1 için vb. olacaktır.

Ana döngüde aşağıdaki satırları ekleyin:

sonuç = ((5.00 * adc_data) /1024.00); // ADC değerini volt olarak yeniden hesapla
sprintf (lcd_buffer, "U =%. 2fV", sonuç); // sonucu geçici bir değişkene koy
lcd_puts (lcd_buffer); // Görüntüle

Küçük bir not, kayan noktalı sayıları kullanmak için, (s) printf Özelliklerini değiştirmeniz gerekir: int, float için genişlik, genişlik, kesinlik proje ayarlarında. Bu yapılmazsa, ondalar ve yüzdeler göremeyiz.

Böylece sadece ADC değerini volta çevirdik ve görüntüledik. Proteus'taki sonuç şöyle görünür:

Direnç voltajı değiştirebilir, ölçülen voltaj görüntülenir. Gerçek donanım üzerine montaj yapılırken Aref bacağına 0,1 uF kondansatör bağlanmalıdır. Ders biraz zor oldu ama seveceğinizi düşünüyorum.

Proteus dosyası ve üretici yazılımı:

Güncelleme:
Mevcut ölçüm:

Şu anda, amatör radyo tasarımlarında analogdan dijitale dönüştürücüler (ADC) giderek daha fazla kullanılmaktadır. Bunun nedeni, uygun fiyatlı ADC yongalarının ortaya çıkması ve analog sinyallerin dijital olarak işlenmesinin faydalarıdır. ADC'yi kullanarak bir kişisel bilgisayarı (PC) herhangi bir sanal ölçüm cihazına kolayca dönüştürebilirsiniz. Üstelik böyle bir cihazın elektronik kısmı çok basit olabilir ve tüm sinyal işleme yazılımda yapılacaktır.

Makalede açıklanan cihaz, bir analog sinyali dijital altı haneli bir koda dönüştürmek için tasarlanmıştır ve bir PC'ye ön ek görevi görebilir. Uygulamaları, sanal enstrümantasyondan çeşitli ses kayıt sistemlerine kadar uzanır.

"Radyo" dergisinin sayfalarında, ADC'ye dayalı tasarımlar defalarca yayınlandı. Bununla birlikte, esas olarak ikili ondalık çıkış kodu veya yedi elemanlı göstergeler için bir kod içeren mikro devreler kullandılar. Bu yaklaşım, bir bilgisayara bilgi girmek için uygun değildir.

Okuyucuların dikkatine sunulan cihazda, yüksek hızlı paralel altı bitlik bir ADC olan KR1107PV1 mikro devresi kullanılıyor. -2 ... 0 V aralığındaki voltajı paralel okuma için potansiyel kodlardan birine dönüştürmek için tasarlanmıştır: ikili kod (ileri ve geri) ve ikisinin tamamlayıcı kodu (ileri ve geri). Bu mikro devre seçildi, çünkü ilk olarak, çok çeşitli radyo amatörleri tarafından kullanılabilir ve nispeten ucuzdur ve ikincisi, yüksek bir hıza sahiptir (maksimum dönüşüm frekansı 20 MHz'dir, bir dönüşümün süresi 100'den fazla değildir). ns).

Cihazın şematik diyagramı Şek. 1.

KR1107PV1A'yı açmak için önerilen devre temel alınmıştır ve dönüştürme doğruluğunda gözle görülür bir bozulma olmadan önemli ölçüde basitleştirilmiştir. XS1 soketinin 1. soketi ve R4 rezistörü aracılığıyla dönüştürülen analog sinyal, op-amp DA1'in ters çevirme girişine beslenir. Böyle bir dahil etme kullanılır, çünkü daha sık olarak pozitif polarite voltajını dijitalleştirmek gerekir ve ADC mikro devresi voltajı 0 ila -2 V aralığında dönüştürür. Sıfır önyargı voltajı, düzeltici R1 kaydırıcısından çıkarılır. Dirençler R5 ve R4, gerekli op amp kazancını belirler. Güçlendirilmiş analog sinyal, R7-R9 dirençleri aracılığıyla ADC'nin 10, 13, 15 pinlerine beslenir.

DA2 ADC, PC'den (XS2 soketinin 8 numaralı pini üzerinden) pin 4'e gelen saat darbeleri ile kontrol edilir. Saat darbesi kesmesinden geçildikten sonra kodlama yapılır ve dönüştürme işleminde elde edilen sonuç çıkışa aktarılır. Bir sonraki saat darbesi cephesiyle aynı anda kaydedin. Bu, saat darbesinin kenarlarının bir sonraki örneği üretmesine izin verir, yani n'inci örneğin sonucu DA2'nin çıkışında mevcut olduğunda, (n + 2) -'inci örnek girişte yapılır. Dijital kod D1 - D6 çıkışlarından alınır ve XS2 soketine çıkış yapılır.

Mikro devrenin çıkışlarının tanımlanmasının ağırlıklarının tersi olduğuna dikkat edilmelidir: D1 çıkışı en önemli bite ve D6 - en az anlamlı olana karşılık gelir. Mikro devrenin çıkışlarındaki kod tipi (doğrudan, ters, ek), mikro devrenin C1 ve C2 girişlerindeki sinyal seviyeleri ile belirlenir. +5 V veriyoluna bağlantıları, yüksek seviyeli bir beslemeye ve ortak kabloya - düşük bir seviyeye karşılık gelir. Mikro devrenin çıkışındaki gerekli kod türü, tabloya göre C1 ve C2 girişlerindeki sinyal seviyelerinin bir kombinasyonu ile ayarlanır. 1.

ADC KR1107PV1A, +5 ve -6 V voltajlı iki kutuplu bir besleme gerektirir. Ek olarak, iki referans voltajı gereklidir. Dijitalleştirilecek voltaj aralığını tanımlarlar. Bu durumda, bu voltajlardan biri (Uobp1) sıfır olarak alınır (mikro devrenin pimi 16 ortak tele bağlanır) ve ikincisi (Uobp2) -2 V'a eşittir, bu da buna göre belirler. ADC giriş voltajı aralığı 0 ...- 2 V Referans voltajı -2 V, negatif kutuplu besleme voltajı devresine dahil olan trimleme direnci R6'nın kaydırıcısından çıkarılır. Girişimi ortadan kaldırmak için C1 - C5 kapasitörleri kullanılır.

Cihazın montajında ​​her türlü MLT, OMLT dirençleri, oksit ve seramik kapasitörler kullanılır. Düzeltici direnç R1 - ayrıca herhangi bir tipte, R6 - tercihen tel sargılı çok turlu, örneğin, SP5-1V, SP5-14, SP5-15, SP5-2, vb. OU DA1 - hemen hemen her türlü, azaltılmış beslemede çalışabilen voltajlar, örneğin KR140UD7. Frekans aralığını genişletmek için, birim kazanç frekansı 10 MHz olan operasyonel amplifikatör K574UDZ'yi kullanabilirsiniz.

Cihaz, 35 ... 40 mA akımda +5 V ve 200 mA akımda -6 V çıkış voltajı sağlayan bipolar stabilize kaynaktan beslenir.

ADC'yi ilk kez açmadan önce, direnç R6'nın motoru orta konuma ayarlanır. Gücü açarak, DA2 mikro devresinin 9 numaralı pimindeki örnek voltajı ölçün ve mümkün olduğunca doğru bir şekilde -2 V'a ayarlayın. Gerekli sıfır ofseti, bir trimmer R1 ile elde edilir. ADC'nin analog girişlerindeki (10, 13, 15 DA2 pinleri) çıkış dijital kodu veya sabit voltaj ile sıfırın konumunu kontrol edebilirsiniz. Bu noktada, ayar tamamlanmış sayılabilir.

ADC, anakart üzerindeki boş bir ISA konektörüne takılı arabirim (Şekil 2) aracılığıyla bilgisayara bağlanır.

Arayüz kartı, ZE0N-ZEZN adreslerine sahip dört G/Ç bağlantı noktası içerir. DD1.1-DD1.3 ve DD2 öğeleri bir adres kod çözücü oluşturur. PC adres yolundan gelen sinyaller girişlerinde alınır ve üzerinde bir ZE0H-ZEZN kombinasyonu belirirse, DD2 çıkışında düşük seviyeli bir izinli voltaj oluşur. Bağlantı noktalarının adres alanındaki bağlantı noktası numarasını belirleyen sinyaller, adres yolunun en az anlamlı iki bitine karşılık gelir ve DD4 kod çözücüye beslenir. Ayrıca AEN veri yolu üzerinden izin verilen sinyalleri alır (bu, bu döngüde belleğe doğrudan erişim olmadığı anlamına gelir) ve harici bir cihaza yazma ve bu cihazdan okumaya karşılık gelen IOW, IOR sinyallerini alır. Dekoderin pin 15'inden gelen sinyal, DD7 veri yolu sürücüsünün E girişine beslenir ve ADC'den veri yoluna veri aktarımına izin verir.

DD4 dekoderinin 14 numaralı pininde görünen sinyal, ADC DA2'yi, pin 13'te - DD6.1 flip-flop'u sıfırlamak için ve pin 12'de - ondan veri yoluna bilgi beslemesini sağlamak için saatlemeye hizmet eder. Tetik, ADC'yi, senkronizasyon darbeleri veya hazır bir sinyal üretebilen harici bir cihazla senkronize etmek için tasarlanmıştır. Harici bir cihazdan gelen saat sinyali, XS2 soketinin 1 numaralı pimi üzerinden tetikleyicinin saat girişine beslenir. İkincisinin durumu program tarafından okunur. DD6.1'in pim 5'inde yüksek bir seviye algılanırsa, bu, harici bir cihazdan bir senkronizasyon darbesi alındığı anlamına gelir. Flip-flop durumu okunduktan sonra, bir sonraki saat darbesine hazırlanmak için sıfırlanmalıdır.

Limanların amacı hakkında birkaç söz. ЗЕ0Н adresli bağlantı noktası, ADC'den veri okumak için tasarlanmıştır (D0-D5 bitleri sayısallaştırılmış sinyalin değerini içerir), ЗЕ1Н adresiyle - ADC'ye bir saat darbesi sağlamak için (bu bağlantı noktasına herhangi bir bayt yazıldığında) , analog sinyalin dijitale dönüştürülmesi başlar). ZE2H bağlantı noktası, durumunu okuduktan sonra DD6.1 senkronizasyon tetikleyicisini sıfırlamak için kullanılır. Bu bağlantı noktasına herhangi bir bayt yazıldığında sıfırlama gerçekleşir. Son olarak, ZESN bağlantı noktası, bu bağlantı noktasından okunan baytın 5. biti tarafından yansıtılan flip-flop durumunu okumak içindir. Kısa süreli senkronizasyon darbelerini yakalamak için tetikleyici gereklidir. ZEZN bağlantı noktasından okurken, tetikleyicinin doğrudan çıkışında (bit D5 = 1) yüksek bir mantık düzeyi algılanırsa, program ZE2H bağlantı noktasına herhangi bir bayt yazarak bunu orijinal durumuna döndürür.

Pascal ile yazılmış ADC'den veri okuma programı Tablo'da gösterilmektedir. 2.

Tasarım temeli olarak ISA yuvası için hatalı bir genişletme kartı kullanmak uygundur. Tüm "yüksek" elemanlar (kapasitörler, konektörler) ondan çıkarılır ve yuvaya takılan parçanın kontak pedlerine giden baskılı iletkenler kesilir (Şekil 2'deki XP1 fişi). Parçalar, standlarla genişletme kartına sabitlenen küçük bir baskılı devre kartına monte edilmiştir. Cihazın terminalleri, montaj telinin kısa bölümleriyle XP1 fişinin kontaklarına bağlanır. ISA yuvasının pin atamaları içinde bulunabilir.

Sonuç olarak, çoğu durumda bir analog sinyali temsil etmek için altı bitin yeterli olduğunu not ediyoruz. 2 V'luk bir voltajı ölçmek için 0 ... 2 V giriş voltaj aralığına sahip bir ADC kullanılırsa, hata 0,03 V'u (veya %1,5) aşmaz. 0,2 V'luk bir voltaj ölçülürken hata %15'e yükselir. Ölçüm doğruluğunu artırmak için, daha büyük kapasiteli bir ADC kullanabilir veya ölçülen voltajı aralığın üst sınırına yakın bir değere yükseltebilirsiniz (örneğin, direnç R5 ve R4 dirençlerinin oranını değiştirin). Şemada belirtilen değerlerle (bkz. Şekil 1) cihaz, 0 ... 0,5 V aralığında giriş voltajlarını sayısallaştırır ve bir tüketici mikrofonu ile çalışabilir.

Zayıf sinyallerin "dijitalleştirilmesi" nedeniyle daha yüksek bir bit derinliği gerekiyorsa, KR1107PV1A mikro devresi sekiz bitlik bir K1107PV2 dönüştürücü ile değiştirilebilir (elbette "pin çıkışı" ve güç tüketimindeki farklılıklar dikkate alınarak) .

Edebiyat

  1. Biryukov S. Termometre "Ev - Sokak". - Radyo, 2000, No. 3, s. 32, 33.
  2. Novachenko I.V., Petukhov V.M., Bludov I.P., Yurovsky A.V. Ev radyo ekipmanları için mikro devreler. Dizin. - E.: KUBK, 1995.
  3. Danilin N.S, Ulitenko V.P., Kripak A.A. IBM PC bilgisayarlarında sorun giderme ve onarım için yönergeler. - M.: Standartların yayınevi, 1992.

Diğer makalelere bakın Bölüm.

1. Derece 2. Derece 3. Derece 4. Derece 5. Derece

Yonga PCF8591 aşağıdaki yeteneklere sahiptir:

Besleme geriliminin tek kaynağı;
- 2,5 ila 6 V besleme gerilimleri aralığında performansın korunması;
- düşük akım tüketimi;
- bağımlı adres atamasının üç çıktısı;
- programlanabilir açma özelliğine sahip dört analog giriş (doğrudan ve diferansiyel);
- ardışık yaklaşım ve 8 bitlik sayı aralığı ile A / D dönüşümünün kullanılması;
- bir analog çıkışlı çoklanmış D / A dönüştürücü.

Bu mikro devre, CMOS teknolojisi kullanılarak yapılır, I2C veri yolundaki ayar verileriyle kontrol edilen 4 analog giriş ve 1 analog çıkışa sahiptir. bitler A2 ... A0 bağımlı adreste, mikro devreler geleneksel şekilde harici sinyallerle ayarlanır: karşılık gelen terminalleri ortak kabloya veya besleme voltajına bağlayarak. Bu, aynı tipte 8 adede kadar mikro devre kullanmanıza izin verir. Bir parçası olarak PCF8591 sadece bir A / D dönüştürücü var, ancak çoğullama tekniklerinin kullanılması çipin giriş yeteneklerini genişletiyor. ADC girişi 4 sinyal girişine seri olarak bağlanır ve bunlardan bilgi okunur. Ne yazık ki D/A dönüşümü için çoğullama kullanılamaz, bu nedenle sadece bir analog çıkış vardır. Maksimum veri dönüştürme hızı, I2C veri yolunun maksimum hızı ile sınırlıdır.

Şekil 1. PCF8591 pin çıkışı

Şekil 2. Mikro devre elemanlarının iç yapısını ve etkileşimini gösteren blok diyagram

Tablo 1. Pin ataması PCF8591

Sembol Çıktı Açıklama
AIN0 1 Analog giriş (A / D)
AIN1 2 Analog giriş (A / D)
AIN2 3 Analog giriş (A / D)
AIN3 4 Analog giriş (A / D)
A0 5 Adres girişi 0
A1 6 Adreslenebilir giriş 1
A2 7 Adreslenebilir giriş 2
vs 8 Mikro devrenin ortak kablosu (güç kaynağı)
SDA 9 I2C veriyolunun SDA hattı
SCL 10 I2C veriyolunun SCL hattı
OSC 11 Harici jeneratör bağlantı terminali
HARİCİ 12 Harici / dahili jeneratör
AGND 13 Analog toprak
Vref 14 referans voltajı
AOUT 15 Analog çıkış (D / A)
Vdd 16 Besleme gerilimi "+"

Mikro devrenin bağımlı adresi, Şekil 3'te gösterildiği gibi ayarlanır. Sabit bir parça (bit 7 ... 4) ve değişken bir parça (bit 3 ... 1) içerir. Bit 0, her zaman olduğu gibi "R/W" (okuma/yazma) işaretini taşır.

Şekil 3. Mikro devrenin bağımlı adresi

Köle adresini takip eden ikinci bayt, kontrol ve yönetim baytı olarak adlandırılır. Bu bayt, kullanıcı görevleri için mikro devreyi yapılandırır. İlk olarak, analog çıkışı etkinleştirmek veya devre dışı bırakmak için kullanılabilir. İkinci olarak, analog girişleri hem doğrudan hem de diferansiyel bağlantıda konfigüre etmek mümkündür. Üçüncüsü, dönüşümün gerçekleşeceği A / D kanalının numarasını (iki bit ile) ayarlamak mümkündür. Otomatik artış bayrağı ayarlanırsa, her A / D dönüşümünden sonra giriş kanalı numarası bir artırılır. Otomatik artış modu, bu modda sürekli çalışacağından, dahili bir jeneratör ile birlikte kullanılması en mantıklı olanıdır. Belgelerde belirtildiği gibi, kanal değiştirirken jeneratörün başlatılmasındaki gecikme, veri dönüştürme hatalarına yol açar. Ayrıca kullanılmadığında analog çıkışın devre dışı bırakılması (Z-durumuna alınması) önerilir. Bu önlem, mikro devrenin mevcut tüketimini azaltacaktır. İncirde. 4, izleme ve kontrol baytının olası durumlarını gösterir.

Şekil 4. Kontrol ve yönetim baytının durumları

D / A dönüştürme

PCF8591 yongasının alması gereken üçüncü bayt, D / A dönüştürücü için veri baytıdır. Doğal olarak, bu durumda, izleme ve kontrol baytında analog çıkış etkinleştirilmelidir (Şekil 4).

Fiziksel olarak, D / A dönüştürücü, Şekil 2'de gösterilen bir direnç dizisinden oluşur. 5. Dirençlerin bağlantı noktaları, anahtarlar kullanılarak çıkış hattına bağlanan dalları oluşturur. Kademe kod çözücü devreyi kontrol eder. Çıkış voltajı (L) AC çıkışı) daha sonra otomatik olarak sıfırlanmış birlik kazanç yükselticisine beslenir. Bu amplifikatör ya açılabilir (kontrol ve kontrol baytı aracılığıyla) ya da yüksek empedans (2) çıkış durumuna getirilebilir.

Şekil 5. D / A Dönüştürücü

D / A dönüştürücünün, ardışık A / D dönüştürme prosedüründe de kullanıldığını not etmek önemlidir. Bu yöntem literatürde ayrıntılı olarak açıklanmıştır ve bu kitap çerçevesinde ona geri dönmenin bir anlamı yoktur.

Şekil 6. D / A Dönüştürme Prosedürü

D / A dönüştürme prosedürü Şekil 2'de gösterilmektedir. 6. Grafikte 00h ... FFh aralığındaki herhangi bir nokta aşağıdaki formülle belirlenebilir:

nerede VA0UT- D / A dönüştürücünün çıkış voltajı; VREF- referans voltajı; VAGND- analog "toprak" potansiyeli; NS- veri baytının karşılık gelen biti.

Ayrıca şek. 7. Bir veri bayt zincirini birbiri ardına aktararak bir mikro devre ile çalışmak mümkündür. Ön ayara karşılık gelen voltaj seviyesi, ACK sinyali verildiği anda çıkışta görünür. Mikro devrenin çıkışında kontrol ve yönetim baytının (Şekil 4) alındığını doğrulayan ACK sinyalinin verildiği anda, mikro devre işleminin önceki döngüsünün bitiş anından itibaren DAC kaydında yer alan veriler görünür.

Şekil 7.

A/D dönüşümünü gerçekleştirmek için önce R/W = 0 bayrağı ile kontrol ve yönetim baytını aktarmanız gerekir.Ardından Şekil e göre verileri okuyun. sekiz.

Şekil 10. Diferansiyel ölçüm modu

A / D ve D / A dönüşümlerinin kararlılığını sağlamak için mikro devrenin Vref ve AGND pinlerine bağlı özel bir voltaj referansı gereklidir. A / D dönüşüm döngüsü sağlamak ve otomatik sıfır tampon amplifikatörünü düzeltmek için yerleşik osilatör gereklidir.

Dahili osilatörü çalıştırmak için EXT pini Vss'ye kısa devre yapılmalıdır. Ardından, OSC pininde izlenebilen bir dönüşüm frekansı sinyali görünecektir. EXT pini VDD'ye bağlanırsa dahili osilatör yüksek empedans durumuna geçer ve harici osilatörden gelen sinyal OSC pinine uygulanabilir.

Edebiyat:
B. Yu. Semenov, "RADYO MÜHENDİSLİĞİ İNŞAATLARINDA I2C OTOBÜS"

Farklı türlerdeki eylem ilkesine atfedilebilecek ana konulara bakalım. Sıralı sayma, bit düzeyinde dengeleme - bu kelimelerin arkasında ne gizli? Bir mikrodenetleyicinin ADC'sinin çalışma prensibi nedir? Bunları ve diğer birçok konuyu makale çerçevesinde ele alacağız. İlk üç bölümü genel teoriye ayıracağız ve dördüncü alt başlıktan çalışmalarının prensibini inceleyeceğiz. ADC ve DAC terimlerine çeşitli literatürlerde rastlayabilirsiniz. Bu cihazların çalışma prensibi biraz farklıdır, bu yüzden onları karıştırmayın. Bu nedenle, makale analogdan dijital forma geçerken, DAC tam tersi şekilde çalışır.

Tanım

ADC'nin prensibini düşünmeden önce, ne tür bir cihaz olduğunu öğrenelim. Analogdan dijitale dönüştürücüler, fiziksel bir miktarı karşılık gelen sayısal temsile dönüştüren cihazlardır. Hemen hemen her şey başlangıç ​​parametresi olarak kullanılabilir - akım, voltaj, kapasitans, direnç, şaft dönüş açısı, darbe frekansı vb. Ama emin olmak gerekirse, sadece bir dönüşümle çalışacağız. Bu voltaj kodudur. Bu çalışma biçiminin seçimi tesadüfi değildir. Sonuçta, ADC (bu cihazın çalışma prensibi) ve özellikleri büyük ölçüde hangi ölçüm kavramının kullanıldığına bağlıdır. Bu, belirli bir değeri önceden belirlenmiş bir standartla karşılaştırma süreci olarak anlaşılır.

ADC özellikleri

Ana olanlar bit derinliği ve dönüşüm frekansıdır. Birincisi bit olarak, ikincisi ise saniyedeki sayı olarak ifade edilir. Modern analogdan dijitale dönüştürücüler, 24 bitlik bir bit genişliğine veya GSPS birimlerine kadar çıkan bir dönüştürme oranına sahip olabilir. Lütfen ADC'nin size aynı anda özelliklerinden yalnızca birini sağlayabileceğini unutmayın. Göstergeleri ne kadar yüksek olursa, cihazla çalışmak o kadar zor olur ve kendisi daha pahalıya mal olur. Ama neyse ki cihazın hızından taviz vererek gerekli bit hızlarını elde edebilirsiniz.

ADC türleri

Çalışma prensibi, farklı cihaz grupları için farklılık gösterir. Aşağıdaki türleri ele alacağız:

  1. Doğrudan dönüşüm.
  2. Tutarlı bir yaklaşımla.
  3. Paralel dönüştürme ile.
  4. Yük dengeli analogdan dijitale dönüştürücü (delta-sigma).
  5. ADC'leri entegre etme.

Farklı mimarilere sahip, kendine özgü özellikleri olan birçok başka ardışık düzen ve birleştirilmiş tür vardır. Ancak makale çerçevesinde ele alınacak örnekler, bu özgüllükteki cihazların nişlerinde belirleyici bir rol oynamaları nedeniyle ilgi çekicidir. Bu nedenle, ADC'nin çalışma prensibini ve fiziksel cihaza bağımlılığını inceleyelim.

Doğrudan analogdan dijitale dönüştürücüler

Geçen yüzyılın 60'lı ve 70'li yıllarında çok popüler oldular. 80'li yıllardan beri formda üretiliyorlar. Bunlar çok basit, hatta önemli bir performansla övünemeyen ilkel cihazlardır. Bit derinlikleri genellikle 6-8 bittir ve hızları nadiren 1 GSPS'yi geçer.

Bu tip ADC'nin çalışma prensibi şu şekildedir: giriş sinyali, karşılaştırıcıların pozitif girişlerinde aynı anda alınır. Negatif terminallere belirli bir büyüklükte bir voltaj uygulanır. Ardından cihaz çalışma modunu belirler. Bu, referans voltajı sayesinde yapılır. Diyelim ki 8 karşılaştırıcının olduğu bir cihazımız var. Referans voltajın ½'si uygulandığında sadece 4 tanesi açılır. Öncelikli kodlayıcı tarafından oluşturulacak ve çıkış kaydı tarafından sabitlenecektir. Avantajları ve dezavantajları ile ilgili olarak, çalışmanın yüksek hızlı cihazlar oluşturmanıza izin verdiğini söyleyebiliriz. Ancak gerekli bit derinliğini elde etmek için çok terlemeniz gerekir.

Karşılaştırıcı sayısı için genel formül şöyle görünür: 2 ^ N. N altında, basamak sayısını girmeniz gerekir. Daha önce tartışılan örnek tekrar kullanılabilir: 2 ^ 3 = 8. Üçüncü basamağı elde etmek için toplamda 8 karşılaştırıcıya ihtiyaç vardır. İlk oluşturulan ADC'lerin çalışma prensibi budur. Çok uygun değil, bu yüzden diğer mimariler daha sonra ortaya çıktı.

Ardışık yaklaşım analogdan dijitale dönüştürücüler

Burada "tartım" algoritması kullanılır. Kısaltılmış biçimde, bu tekniği kullanan cihazlara basitçe sıralı ADC'ler denir. Çalışma prensibi şu şekildedir: cihaz, giriş sinyalinin değerini ölçer ve ardından belirli bir yönteme göre üretilen sayılarla karşılaştırılır:

  1. Olası referans voltajının yarısını ayarlar.
  2. Sinyal # 1 noktasından itibaren değer sınırını aşmışsa, kalan değerin ortasındaki sayı ile karşılaştırılır. Yani, bizim durumumuzda referans voltajının ¾'ü olacaktır. Referans sinyali bu göstergenin altına düşerse, aynı prensibe göre aralığın diğer kısmı ile karşılaştırma yapılacaktır. Bu örnekte, bu, voltaj referansının ¼'üdür.
  3. Adım 2'nin N kez tekrarlanması gerekiyor, bu bize sonucun N bitini verecektir. Bunun nedeni karşılaştırmaların H sayısıdır.

Bu çalışma prensibi, ardışık yaklaşım ADC'leri olan nispeten yüksek bir dönüştürme oranına sahip cihazların elde edilmesini mümkün kılar. Gördüğünüz gibi çalışma prensibi basittir ve bu cihazlar çeşitli durumlar için mükemmeldir.

Paralel analogdan dijitale dönüştürücüler

Seri cihazlar gibi çalışırlar. Hesaplama formülü (2 ^ H) -1'dir. Daha önce ele alınan durum için (2 ^ 3) -1 karşılaştırıcıya ihtiyacımız var. İş için, her biri giriş ve bireysel referans voltajını karşılaştırabilen bu cihazların belirli bir dizisi kullanılır. Paralel A / D dönüştürücüler oldukça hızlı cihazlardır. Ancak bu cihazların tasarım ilkesi, performanslarını sürdürmek için önemli miktarda güç gerektirecek şekildedir. Bu nedenle, bunları pil gücüyle kullanmak pratik değildir.

Bit dengeli analogdan dijitale dönüştürücü

Önceki cihaza benzer şekilde çalışır. Bu nedenle, ADC'nin çalışmasını açıklamak için, yeni başlayanlar için çalışma prensibi tam anlamıyla parmaklarında ele alınacaktır. Bu cihazlar dikotomi olgusuna dayanmaktadır. Başka bir deyişle, ölçülen değerin maksimum değerin belirli bir kısmı ile sıralı bir karşılaştırması gerçekleştirilir. ½, 1/8, 1/16 ve benzeri değerler alınabilir. Bu nedenle, analogdan dijitale dönüştürücü tüm süreci N yinelemede (sıralı adımlar) tamamlayabilir. Ayrıca H, ADC'nin bit derinliğine eşittir (önceden verilen formüllere bakın). Böylece, teknolojinin hızı özellikle önemliyse, önemli bir zaman kazancımız var. Önemli hızlarına rağmen, bu cihazların statik hatası da düşüktür.

Şarj Dengeli A / D Dönüştürücüler (Sigma Delta)

Bu, en azından çalışma prensibi nedeniyle en ilginç cihaz türüdür. Giriş voltajının entegratör tarafından toplanan voltajla karşılaştırılmasından oluşur. Girişe negatif veya pozitif polariteye sahip darbeler beslenir (hepsi önceki işlemin sonucuna bağlıdır). Dolayısıyla böyle bir analogdan dijitale dönüştürücünün basit bir takip sistemi olduğunu söyleyebiliriz. Ancak bu sadece bir karşılaştırma örneğidir, böylece ADC'yi anlayabilirsiniz. Çalışma prensibi sistemiktir, ancak bu analogdan dijitale dönüştürücünün etkin çalışması için yeterli değildir. Sonuç, dijital alçak geçiren filtreden geçen sonsuz bir birler ve sıfırlar akışıdır. Onlardan belirli bir bit dizisi oluşturulur. Birinci ve ikinci dereceden ADC dönüştürücüler vardır.

Analogdan dijitale dönüştürücüleri entegre etme

Bu, makale çerçevesinde ele alınacak son özel durumdur. Daha sonra, bu cihazların çalışma prensibini açıklayacağız, ancak zaten genel düzeyde. Bu ADC, bir itme-çekme entegrasyonu analogdan dijitale dönüştürücüdür. Böyle bir cihazı dijital multimetrede bulabilirsiniz. Ve bu şaşırtıcı değil, çünkü yüksek doğruluk sağlarlar ve aynı zamanda paraziti iyi bir şekilde bastırırlar.

Şimdi nasıl çalıştığına odaklanalım. Giriş sinyalinin kapasitörü sabit bir süre şarj etmesi gerçeğinden oluşur. Tipik olarak bu süre, cihaza güç sağlayan şebeke frekansının birimidir (50 Hz veya 60 Hz). Ayrıca birden fazla olabilir. Böylece yüksek frekanslı girişim bastırılır. Aynı zamanda, ana güç kaynağının kararsız voltajının elde edilen sonucun doğruluğu üzerindeki etkisi dengelenir.

A/D dönüştürücünün şarj süresi sona erdiğinde, kondansatör belirli bir sabit hızda boşalmaya başlar. Cihazın dahili sayacı, bu işlem sırasında üretilen saat darbelerinin sayısını sayar. Bu nedenle, zaman aralığı ne kadar uzun olursa, göstergeler o kadar önemli olur.

Push-pull entegrasyonunun ADC'leri yüksek doğruluğa sahiptir ve bu nedenle nispeten basit bir yapı yapısının yanı sıra mikro devreler gibi gerçekleştirilirler. Bu çalışma prensibinin ana dezavantajı, ağ göstergesine bağımlılıktır. Yeteneklerinin güç kaynağının frekans periyodunun uzunluğuna bağlı olduğunu unutmayın.

İkili entegrasyon ADC'si bu şekilde çalışır. Bu cihazın çalışma prensibi oldukça karmaşık olmasına rağmen, kalite göstergeleri sağlar. Bazı durumlarda, bu basitçe gereklidir.

İhtiyacımız olan çalışma prensibi ile AOC'yi seçiyoruz

Diyelim ki önümüzde belirli bir görev var. Tüm ihtiyaçlarımızı karşılayabilmesi için hangi cihazı seçmeli? İlk olarak, çözünürlük ve doğruluk hakkında konuşalım. Pratikte birbirlerine çok zayıf bir şekilde bağımlı olmalarına rağmen, çoğu zaman kafaları karışır. 12 bitlik bir A / D dönüştürücünün 8 bitlik bir dönüştürücüden daha az doğru olabileceğini unutmayın. Bu durumda çözünürlük, ölçülen sinyalin giriş aralığından kaç segmentin çıkarılabileceğinin bir ölçüsüdür. Yani, 8-bit ADC'lerin 2 8 = 256 gibi birimi vardır.

Doğruluk, belirli bir giriş voltajında ​​olması gereken ideal değerden elde edilen dönüşüm sonucunun toplam sapmasıdır. Yani, ilk parametre ADC'nin potansiyel yeteneklerini karakterize eder ve ikincisi pratikte sahip olduğumuz şeyi gösterir. Bu nedenle, yüksek doğruluk nedeniyle ihtiyaçları karşılayacak daha basit bir tip (örneğin, doğrudan analogdan dijitale dönüştürücüler) bizim için uygun olabilir.

Neyin gerekli olduğu hakkında bir fikir sahibi olmak için önce fiziksel parametreleri hesaplamanız ve etkileşim için matematiksel bir formül oluşturmanız gerekir. Statik ve dinamik hatalar içlerinde önemlidir, çünkü bir cihaz oluşturmanın çeşitli bileşenlerini ve ilkelerini kullanırken, özelliklerini farklı şekillerde etkilerler. Daha ayrıntılı bilgi, her bir belirli cihazın üreticisi tarafından sunulan teknik belgelerde bulunabilir.

Örnek

SC9711 ADC'ye bir göz atalım. Bu cihazın çalışma prensibi, boyutu ve yetenekleri nedeniyle karmaşıktır. Bu arada, ikincisinden bahsetmişken, gerçekten çeşitli olduklarına dikkat edilmelidir. Bu nedenle, örneğin, olası çalışma frekansı 10 Hz ila 10 MHz arasındadır. Yani saniyede 10 milyon örnekleme yapabiliyor! Ve cihazın kendisi ayrılmaz bir şey değil, modüler bir yapı yapısına sahip. Ancak, kural olarak, çok sayıda sinyalle çalışmanın gerekli olduğu karmaşık teknolojide kullanılır.

Çözüm

Gördüğünüz gibi, ADC'ler farklı çalışma prensiplerine dayanmaktadır. Bu, ortaya çıkan ihtiyaçları karşılayacak cihazları seçmemize ve aynı zamanda mevcut fonları makul bir şekilde elden çıkarmamıza izin verecektir.