Harici ADC İçin Kullanım Örnekleri


9

Çoğu Mikrodenetleyici (uC), çevresel setlerinin bir parçası olarak bir Analogdan Dijitale Dönüştürücüye (ADC) sahiptir; bu, iki bileşeni tek bir pakete entegre ettiği için olağanüstü bir durumdur. Bu ADC'ler genellikle verilerin eşlenmesini sağlar ve bu da verilerin hızlı ve kolay bir şekilde çıkarılmasını sağlar.

Bu sıkı entegrasyona rağmen harici ADC'ler satın alabilirsiniz. Bunlar için birkaç durum görebilirsiniz:

  • ADC'nin uC'den izole edilmesi gerekir.
  • ADC örneklerinin bit derinliğinin uC'nin ADC'sinden daha yüksek olması gerekir.
  • Hissedilecek voltaj mikrodenetleyiciden uzaktır ve uzun analog hatlar kabul edilemez.
  • Algılanacak voltaj, UC için uygun olmayan sert bir ortamdadır.
  • Harici ADC, uC'nin ADC'sinden çok daha hızlı numune alır.
  • Bazı numuneler için referans voltajı diğerlerinden farklıdır ve birden fazla Vref pini (ve dolayısıyla birden fazla harici ADC) gerektirir.
  • Mevcut UC'nin yeterli ADC kanalı yok ve yeni bir UC koymanın maliyeti yasaklayıcı.
  • Harici ADC, uC'nin ADC'sinden daha az güç tüketir (buna inanmak için bir örneğe ihtiyacım olurdu).
  • ADC kanalları aynı anda örneklenmelidir (nadir senaryo).
  • Ürün yazılımını üretim zamanında programlama maliyeti, daha pahalı ADC parçasının maliyetinden daha ağır basar (olası değildir).
  • PCB'nin yer kısıtlaması vardır ve hiçbir uC sığamaz (olası değildir).

Her şey iyi ve iyi, ama garip olarak dikkat çeken şey, harici ADC'lerin uC meslektaşlarından genellikle biraz daha pahalı olması, ancak eşdeğer işlevsellik sağlaması. Örneğin, 12bit 1Msps ADC'ye (dahili referansla) sahip bir EFM32Z parçasını yaklaşık 1 $ karşılığında satın alabilir veya yaklaşık 3,50 $ (aynı hızlar (ish), nispeten aynı güç numaraları vb.) aynı görevi gerçekleştirir (ADC verilerini çıkarır).

O zaman soru şu olur: Bir mühendis aynı işlevi yerine getirebildiğinde, bir mühendisin bir UC'nin ADC'sine harici bir ADC'yi tercih etmesinin zorlayıcı nedenleri var mı?


1
Eşzamanlı örnekleme aslında sinyal işleme gibi bazı uygulama alanlarında oldukça yaygın bir senaryodur.
Jason R

Yanıtlar:


12

Mikrodenetleyicinizin dahili ADC'si, ihtiyacınız olan işi o zaman hayır olarak gerçekleştirirse, harici ADC'lere gerek yoktur. Ama sonra, hedefledikleri bu değil.

Harici bir ADC'nin nedenlerinin çoğunu ele aldınız, ancak birkaç tane daha var ve bence, bunlar en önemli nedenlerden bazıları:

  1. Farklı bir örnekleme teknolojisine ihtiyacınız var - örneğin dahili ADC SAR'dır, ancak Delta Sigma yapmanız gerekir.
  2. Dahili ADC, dahili olduğundan ve ana MCU ile aynı kalıbı paylaştığından, MCU'nun geri kalanının gürültüsünden asla% 100 ücretsiz olmayacaktır, bu nedenle harici bir gürültü ultra düşük gürültü yapmak mümkün olacaktır
  3. Seçtiğiniz mikrodenetleyici / SoC / FPGA'nızda ADC yoktur. Son ikisi büyük olasılıkla - en yaygın SoC'ların ve FPGA'ların hiç ADC'si yoktur. Evet, bunu yapanları alabilirsiniz, ancak çoğu almaz. Böylece harici bir tane eklersiniz.

3. nokta için, örneğin Raspberry Pi'yi ele alalım. Hiç ADC mevcut değil, herhangi bir analog iş yapmak için harici bir tane eklemeniz gerekir.


Şimdi bu ilginç. Gürültü söz konusu olduğunda, harici bir ADC almak için ödeme yapmak yerine, daha yüksek bir bit derinliği uC ADC elde edip örneklenen sonucun en az önemli bitlerini göz ardı ederek aynı sonuç elde edilir (bu, ek bitler engelleyici bir faktör değildir).
TRISAbits

3
Gerçek sonrası sinyal işleme, yalnızca örnekleme zamanlamasından bağımsız olan (ve dolayısıyla "rastgele" gürültüye katkıda bulunan) işlemlerden kaynaklanan gürültüye yardımcı olabilir. Bir işlemci sistemindeki gürültünün büyük kısmı, örnekleme süreciyle bir şekilde senkronize edilen güç kaynağı ve toprak yükündeki değişikliklerin bir sonucu olacaktır; bunlardan kaçınmanın tek yolu, ADC'nin kendi ayrılmış tedarik raylarını kullanmasını sağlamaktır. Pek çok ADC'nin analog ve dijital VDD / VSS arasında kolayca 100mV ya da daha fazla tolere edebileceğinden tam izolasyon gerekli değildir.
supercat

9

Harici bir ADC'yi tercih etmenin diğer birkaç nedeni:

  1. Çoğu harici ADC parçası diferansiyel girişler içerirken, mikro denetleyicilerin yerleşik dönüştürücüsü genellikle içermez. Girişlerin çok sayıda ortak mod gürültüsünün olduğu durumlarda, bu çok önemli olabilir.

  2. Birçok harici ADC parçası, dönüştürücünün kendisinden önce bir amplifikatör aşaması içerir, böylece dönüştürücünün yüksek empedanslı bir sinyali doğrudan ölçmesine izin verir. Birçok mikrodenetleyicide, bir giriş sinyalini örnekleme işlemi onu bozabilir. Giriş sinyalinin doğasına bağlı olarak, bu, doğru ölçümler yapmak için gerekli toplama süresini büyük ölçüde artırabilir.

  3. Dahili bir ADC on iki bit genişliğinde bile, bu genellikle 4096'da bir parça için doğru okumalar aldığı anlamına gelmez. Tipik bir harici ADC, her ikisi de aynı reklam bit bit derinliğine sahip olsa bile, genellikle dahili bir ADC'den daha iyi özelliklere sahip olacaktır.

ADC'yi bir mikro denetleyiciye entegre etmek kolaydır. İyi bir ADC'yi entegre etmek çok daha zordur. Bil bakalım hangisi daha yaygın.


1
SAR ADC'leri şarj enjeksiyonundan biraz muzdariptir, çünkü örnekleme kapasitör dizisini girişe geçici olarak bağlamak ölçülen şeyi bozar. Giriş kaynağı yeterince hızlı iyileşmezse, bu ölçüm hatasına neden olur. Daha fazla çözünürlük genellikle daha büyük bir dahili örnekleme kapasitansı gerektirir. Delta-sigma çözünürlüğü yalnızca dijital sayacın genişletilmesine bağlıdır. (İyi yüksek çözünürlüklü INL / DNL özelliklerine ulaşmak önemsiz olsa da.)
MarkU

@supercat: Dönüşümün bir parçası olarak bir amplifikatör aşamasını hiç düşünmemiştim. Bu ilginç devre örnekleme yolları açar.
TRISAbits

2
@ Marku: Bazı devrelerde şarj enjeksiyon sorununu gözlemledim. İlginçtir ki, bazı dönüştürücüler girdiyi önceki örneklenmiş değere (en son hangi girdiden örneklendiyse) yüklemeye çalışıyor, bazıları sıfıra yüklemeye çalışıyor ve en azından biri keyfi olarak ("rastgele") daha yüksek bir değere şarj ediyor gibi görünüyordu ya da oldukça sinir bozucu bulduğum düşük voltaj. Bir parçanın ikincisini neden yapacağını anlamıyorum; bir şeye doğru şarj etmek zorunda olsa bile, sürekli olarak sıfıra doğru şarj etmek bazı "rastgele" değerlere şarj etmekten daha iyi olurdu.
supercat

4

Bazı harici ADC'lerin var olmasının bir başka nedeni: dahili ADC'leri olan mikrolardan çok daha uzun süredir var ve birçok ürüne tasarlandı. Muhtemelen 20 veya 30 yıl daha uzun. (Klasik bir parçanın modern bir kalıp-küçültülmüş varyasyonu olabilir, ancak muhtemelen SOIC kısmı için bağlantı yoktur)

ADC'nin mükemmel bir çözünürlük, doğruluk veya hıza sahip olmadığı, ancak premium bir fiyat verdiği durumlarda, bunun nedeni olabilir.

Yeni tasarımlar için bile, daha yeni bir parçanın etrafında yeniden mühendislik yapmak yerine (sonuçta ortaya çıkan entegrasyon ürün ağacı maliyetini düşürse bile) iyi çalışan blokların yeniden kullanılması tercih edilebilir. Bu yeniden yapılandırma pahalı olabilir; test ve düzenleyici onay süreci daha da fazla.

Şimdi sıfırdan başlıyorsanız ve seçtiğiniz mikrodenetleyicide gereksinimlerinizi karşılayan yeterli ADC kanalı varsa, yukarıdakilerin hiçbiri geçerli değildir.


2

Bunun çok eski bir soru olduğunun farkındayım, ama bu dahili olarak oldukça sık tartıştığımız bir soru.

Haklısınız, harici sürüm tam olarak işlevsel olarak eşdeğerse harici bir ADC seçmek olağandışı olacaktır . Ancak, tecrübelerime göre, düşük maliyetli mikrolar genellikle sıcaklık kayması, düşük bit sayısı (10-12 bit) ve VCC'den (bazı durumlarda +/- 20mV) gürültü ile oldukça berbat ADC'lere sahiptir ... tersi doğru olabilir. .. aşırı örnek varsa ve mevcut gürültü varsa S / N artırabilirsiniz. Ürün geliştirme faaliyetlerimizde, MCU seçimimizi mevcut ADC kalitesine dayandırmak oldukça nadirdir. Genellikle daha fazla araç zinciri, maliyet, mevcut ürün yazılımı vb. İle ilgilidir. Dahili ADC'ler genellikle pil voltajını okumak gibi kritik olmayan görevlerle sınırlıdır.

Çeşitli mikrolarla, hızlı örnekleme süreleri için tekelleştirilmesi gereken, ancak ADC için tekelleştirildiklerinde MCU'daki (yazılım seri bağlantı noktaları, ISR'ler vb.) Diğer şeylere müdahale eden paylaşılan zamanlayıcılarla ilgili sorunlar da olabilir.

Ayrıca, VREF nedir? Ürün yazılımında VCC'yi referans olarak kullanıyorsanız, "gerçek" VCC'ye kalibre etseniz bile, bu değer işlemler sırasında oldukça çarpıcı bir şekilde dalgalanabilir. Büyük geçici akım kullanımına sahip bir yerleşik yüksek akım cihazınız (radyo, wifi, MCU vb.) Varsa, VCC bir iletim sırasında ve örneğiniz bu pencere sırasında meydana gelirse 0-1023'ü saf olarak dönüştürürsünüz ADC_VAL / 1023 * 5.0 ile ADC voltaj değerini okuma - 200mV hassasiyette bir kayıp verdiniz. Veya farklı güç modlarınız varsa (USB, Duvar siğili, pil) - MCU'daki VCC değişebilir (özellikle USB ile). Harici ADC'ler (aynı bit sayısında bile) dalgalanan VCC koşulları altında kaya gibi sağlam vref sağlayabilir.

Çözünürlük oldukça önemlidir. 10-12 bit çözünürlük için bir miktar kullanım olduğunu (gerçek dünyada) hayal ediyorum, ancak her türlü gerçek dünya uygulaması için (gaz algılama, akustik ölçüm, ivmeölçer ölçümü, hassas sıcaklık ölçümü, vb.) 16 bit genellikle gürültü ve çözünürlük özelliklerine yeterli sinyal elde etmek için minimum çözünürlük. Atmel'in SAMD'si gibi gerçekten güzel bir 32 bit MCU bile 12 bit dahili ADC'lerle sınırlıdır.

Saat titremesi de bir sorundur ve 12 bit genişliğinde bir okuma sağlamak için diğer 8 bitlik mikro veriler gerektiğinde ve 12 bitlik bir değeri değiştirmek için en az 2 saat döngüsüne ihtiyaç duyulduğunda doğal bir tutarsızlık vardır. harici bir ADC ile (dahili osilatörlere sahip olabileceğinden).

Dönüştürücünüze fiziksel yakınlığın ve MCU'dan izolasyonun önemli olduğu zamanlar da vardır. Bazı çok hassas dönüştürücüler kendi koşullandırılmış güçlerini, izole edilmiş zemin düzlemlerini ve% 0,01 pasifleri olan son derece hassas transimpedans kıyıcı amfilerini gerektirir.

Bazen dahili ADC'leri kullanmak için zorlayıcı nedenler vardır. DMA bunun bir nedenidir ... örnekleme oranı başka bir şeydir. Aşırı örnekleme kolaylığı başka bir şeydir. Harici ADC'leri yüksek veri hızlarında birbirine bağlamak çok değerli çoğullamalı I / O pinlerini yiyebilir ve daha karmaşık bir tasarım sağlayabilir. Ayrıca, kullandığımız ADC'lerin çoğu I2C tabanlıdır, bu nedenle örnekleme oranı I2C veri yolu hızı ile çok sınırlıdır. 1mbits / sn'de bile, 16 bitlik okuma acı verici bir zaman alır.


Bu mükemmel bir fikir! Yıllar geçtikçe (ve tecrübelerim büyüdükçe) katılıyorum: dahili MCU ADC'leri oldukça berbat olabilir.
TRISAbits
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.