2,97 dolarlık bir ADC ne kadar kötü olabilir?
(excamera.substack.com)- Ucuz ADS1115 ADC modülü, resmi teknik özelliklerle neredeyse aynı işlevleri sunuyor
- Programlanabilir kazanç yükselteci özelliği sayesinde çok küçük gerilim aralıklarında da yüksek ölçüm hassasiyeti sağlanabiliyor
- Bazı ucuz kartlarda ölçüm hızı ve doğruluk tarafında sapma görüldüğü doğrulandı
- Basit bir kalibrasyon algoritması uygulandığında oldukça hassas sonuçlar elde edilebiliyor
- Ucuz parçaların üretim kaynaklı kusurlu ya da kopya ürün olma ihtimali var, ancak temel kullanım için büyük bir sorun görünmüyor
Ucuz ADS1115 ADC'nin gerçek performans deneyi
Genel bakış
- Gömülü sistem çalışmalarında genelde mikrodenetleyiciye entegre ADC (analog-dijital çevirici) kullanılır
- Entegre ADC'ler ucuz ve hızlıdır, ancak gerçek ölçüm bit sayısı (ENOB) genelde 8~9 bit düzeyindedir
- Yakın zamanda Texas Instruments(TI) tarafından üretilen ADS1115 modülü üzerinde test yapıldı
- ADS1115, en fazla 16 bit doğruluk sunan bir harici ADC'dir
ADS1115'in başlıca özellikleri
- Dinamik aralık genişletme özelliği sayesinde küçük gerilimleri ölçerken 20 kata kadar daha ayrıntılı ölçüm yapılabilir
- Programlanabilir kazanç yükselteci (PGA) ile toplam ölçüm aralığı ±6.144 V ile ±0.256 V arasında ayarlanabilir
- En küçük LSB yaklaşık 7.8 μV'tur (0.256 V ÷ 32768); bu da son derece küçük değişimlerin bile algılanabilmesini sağlar
- Geleneksel mikrodenetleyici içi ADC'lerde (3.3V referans, 9 ENOB) bir adımın yaklaşık 6mV olmasına kıyasla çok daha yüksek çözünürlük sunar
- Dahili gerilim referansı kullanması, RP2040 gibi harici analog referans gerektiren MCU'lara karşı avantaj sağlar
Fiyat konusu ve test ortamı
- ADS1115 için 1.000 adet bazında Digikey'de yaklaşık $4, LCSC'de ise $0.60 gibi büyük bir fiyat farkı bulunuyor
- Amazon'dan birim başına $2.97 olan ADS1115 breakout kartı satın alındı (muhtemelen $0.60'lık parça kullanıldığı düşünülüyor)
- Karşılaştırmalı test için Adafruit'in pahalı (orijinal) kartı da ayrıca satın alınacak
Gerçek test süreci
-
Ucuz kart, I²CMini ve hassas DC gerilim kaynağı kullanılarak test edildi
-
Temel kontrol noktaları:
- Teknik özelliklerde anlatıldığı gibi çalışıp çalışmadığı
- Ya da daha ucuz başka bir parçanın ADS1115 diye satılıp satılmadığı
-
Test sonuçları
- Temel çalışma, 16 bit çıkış, programlanabilir kazanç yükselteci, çeşitli örnekleme hızları gibi noktalar genel olarak TI veri sayfasıyla uyumlu çıktı
- Differential mode'da giriş bağlandığında her zaman 0 ölçmesi, 2.5V girişte doğru ölçüm yapması ve kutuplar ters bağlandığında ters işaretli değer vermesi gibi temel davranışlarda sorun görülmedi
Ölçüm doğruluğu ve hata
- Data Rate (örnekleme hızı): TI teknik özelliklerine göre ±10% içinde sapmaya izin veriliyor
- 8 SPS modunda üç kart 6.5~7 SPS civarında, yani biraz yavaş çalıştı
- Bir kart ise 300 SPS seviyesinde tamamen yanlış zamanlamayla çalıştı ve sonrasında test dışı bırakıldı
- Hassas gerilim (2.50067V) ölçümünde 2.4883V çıktı, yaklaşık 12mV/%0,5 hata oluştu (TI'nin resmi teknik özelliklerinden daha büyük)
- Mikrodenetleyicide basit bir doğrusal kalibrasyon algoritması uygulandığında hata 10 μV içine kadar iyileşti
Sonuç
- Ucuz hobi elektroniği dağıtım kanallarına kusurlu ya da orijinal ürüne göre düşük özellikli parçaların karışmış olabileceği düşünülüyor
- Temelde oldukça hassas ölçüm yapılabiliyor ve yazılımsal kalibrasyon uygulandığında gerçek kullanımda büyük bir sorun oluşturmuyor
- Orijinal ve pahalı kart ayrıca temin edildikten sonra aynı koşullarda yeniden test edilecek
Kapanış
- Ucuz ADS1115, fiyatına göre oldukça dikkat çekici bir verim sunuyor
- Donanım/ürün yazılımı seviyesinde basit bir kalibrasyon eklendiğinde pratikte yeterli doğruluk elde edilebiliyor
- Kusurlu ürün gibi sorunları doğrulamak için satın alma kaynağına ve kalite kontrolüne dikkat etmek gerekiyor
1 yorum
Hacker News görüşleri
Ucuz ve orijinal parçaları ince zımpara ile aşındırıp izopropil ile temizledikten sonra optik mikroskop altında koyarsanız karşılaştırmak kolay olur; ayırt edici işaretlere veya metal katmanlara kadar inmeye gerek kalmadan çip kalıbının yapısal benzerlikleri ve farkları hemen görülebilir. Klon parçalar genelde teknoloji düğümü, mimari, çip boyutu vb. açısından büyük farklar gösterir; çünkü çoğu esasen yalnızca işlevi taklit eden klonlardır. Zımpara kullanan düşük teknolojili söküm yöntemini tavsiye ediyor ve ilgili görselleri paylaşıyorum (görsel 1 / görsel 2)
Bunu birkaç kez yapmışlığım var; çoğunlukla bileşen kaynağı anlaşmazlıklarını çözmek için kullandım. Çoğu epoksi paket, kaynar sülfürik/nitrik asitte çözülünce hızla çıkar. Benim deneyimimde örneklerin çoğu basit yeniden etiketleme, bin değişikliği veya açıkça QC’den kalmış parçaların kamufle edilmesi oluyor. Birkaç yıl öncesinden örnek bir video da var (video bağlantısı)
Mutlaka klon olmak zorunda değil; asıl yazarın dediği gibi, üretim sürecinde standart altı sayılan ürünlerin yeniden paketlenip genel dağıtım kanalına verilmesi de çok yaygın.
Burada etiketleme özelliği varsa bu konu Ken Shirriff’in tam ilgisini çekerdi; bloguna(righto.com) bakmanızı öneririm.
"Ucuz, nispeten hızlı ama kalite olarak pek iyi değil; 12/16 bit çıkış spesifikasyonuna rağmen etkin bit sayısı (ENOB) 8-9 civarında" iddiasına katılmıyorum. Modern bir MCU’da harici referans gerilimini kararlı sağlamak ve çip içindeki gereksiz alt sistemleri kapatmak gibi önlemler alınırsa 10 bit üstü ENOB gayet elde edilebilir. Elbette tek başına bir ADC, bağımsız bir ADC kadar iyi olmayacaktır ama ADC ihtiyaçlarının %90’ı için pratikte yeterlidir. Daha yüksek bit istiyorsanız tasarıma daha çok emek vermek gerekir; ama yazıda yazarın kullandığı güç kaynağı, MCU gürültüsü veya RFI yönetimi hakkında bir şey söylenmiyor. Bu yüzden gerçekten düşük spesifikasyonlu sahte bir IC mi var, yoksa deney ortamı mı gürültülüydü, karar vermek zor.
İki GPIO’yu 1. dereceden sigma-delta topolojisinde, harici iki direnç ve bir kapasitörle, histerezis kapalı şekilde kurarsanız ilginç sonuçlar alabilirsiniz. RP2040 ve LDO besleme ile diferansiyel ölçümde (kanallardan biri sadece eşik gürültüsünü izleyerek) 1kHz’de 16 ENOB, DC’de ise daha da yüksek ENOB elde ettim. Çip üzerinde periyodik çalışan hiçbir şey bırakmamak çok önemli. Örneğin spektrumu dağıtmak için rastgele aralıklarla sleep kullanmak gerekiyor; USB’yi de -100dB altı gürültüyle kullanabildim. DC doğruluğunu henüz test etmedim ama benzer GPIO kanallarıyla CC hattı algılama veya analog joystick gibi kritik olmayan, düşük hassasiyetli işlerde kullanılabilir.
İki taraf da haklı olabilir. Asıl yazar sadece düşük maliyetli MCU’ları temsil etmiş olabilir, yorumu yazan kişi ise daha üst sınıf MCU’ları düşünmüş gibi. RP2350’nin 12 bit ADC’si spesifikasyona göre 9.2 ENOB. Çoklu örnekleri decimate ederseniz daha yüksek olabilir ama yazarın iddiasının dayanağı veri sayfası (Raspberry Pi resmi doküman bağlantısı). Daha da ucuz bir MCU olan CH32V003’ün ADC performansı bundan kötü. Öte yandan STM32H7 serisi gibi 16 bit ADC’de 13+ ENOB veren MCU’lar da var. Ama H7, RP2350’den 10 kattan fazla pahalı olduğundan hobicilerin sık el attığı bir şey değil (STM32H7 ADC application note)
Birkaç STM32F103 geliştirme kartını Siglent SDM3055 multimetre ve Siglent SPD330X güç kaynağıyla test ettim. Çipin 12 bit SAR ADC’si yerleşim ve kart tasarımından ciddi biçimde etkileniyordu. En kötü örnek bile 10 bit civarındaydı, en iyisinde ise neredeyse 12 bit etkili çözünürlük gördüm. Üstelik bu sonuçları özel bir yazılım ayarı yapmadan aldım; haberleşme aktifken performans düşüyordu ama onun dışında belirgin bir gürültü etkisi yoktu.
Projemde (gerçek) ADS1115 kullanmayı planlıyordum ama sonunda STM32g071 seçtim. Daha ucuzdu, o dönemde daha kolay bulunuyordu ve daha esnekti. Son dönem STM32g/h serisi ADC’lerde eski f103 ailesine kıyasla donanım/yazılım tarafındaki riskler belirgin biçimde azalmış durumda.
"İlgili paragraf, 'mikrodenetleyicinin ADC’si sabit 3.3V aralığında olduğundan 9 ENOB yaklaşık 6mV fark demek' diyor; bu da sanki bütün MCU’larda bağımsız referans gerilimi yokmuş gibi bir izlenim veriyor. Oysa NXP dahil, dahili programlanabilir referans gerilimi sunan birçok MCU var" noktasını vurgulamak istedim.
"Ucuz parçalar genelde ya mükemmel kopyalardır ya da QC’yi geçememiş başarısız ürünler tedarik zincirine sızmıştır" yorumuna karşılık, benim gördüğüm sahte çiplerin çoğu ghost shift (resmî çalışma saatleri dışında gizli üretim) kaynaklıydı. Ama TI tüm analog ürünlerini kendi içinde ürettiği için ghost shift veya QC’den kalmış ürün olma ihtimali düşük görünüyor. Ben şahsen bunun yeniden etiketlenmiş bir ADS1015 olma ihtimalini daha yüksek buluyorum.
Bana zarar veren sahte ürünlerin (FDTI, STM32 klonları vb.) çoğu doğrudan kopya sahte ürünlerdi. Fazla stok, ghost shift veya kusurlu ürünlerin yeniden paketlenmesinden ziyade bunu daha çok dijital ve karma sinyal tarafında gördüm. Bu arada STM32 klon çiplerinde yığın kalıp flash var; flash sürecini kendileri yapamadıkları için ayrı katman halinde üst üste koymuşlar, bu nedenle paketi zımparaladığınızda ekstra bir bonding wire seti görünüyor. Bu bus üzerinden okuma korumasını atlatmak da mümkün.
Yazının yazarı benim; ADS1015’in ADS1115 olarak yeniden etiketlendiğine dair raporlar olduğunu ben de biliyorum. Eğer ADS1015 olsaydı çıkış 12 bit seviyesinde kesilirdi ama benim test ettiğim parçalar kesin olarak 16 bit readout veriyordu.
ADC alanındaki hikâyeler ve arka plan ilgimi çekiyor. Gerçekte şimdiye kadar sadece yavaş hızlarda kullandım. MCP3208(SPI) ile başladım; 8 kanal ve 100Ksample/s kullanıyordum ama yavaş geldiği için daha hızlı bir ADC gerekti ve ADS7953’e geçtim. 16 kanallıydı ve 10 kat daha hızlıydı; performansı açıkça daha iyiydi. Ama programlaması daha zordu ve en yüksek hız için girişleri belirli sırada taramak gerekiyordu. Bana bu çipler otomobiller gibi geliyor; ADS7953 bir süper otomobil, MCP3208 ise sade bir Toyota gibi. Bu ADC çiplerinin piyasada nasıl konumlandığı, ne kadar yaygın kullanıldığı gibi endüstriyel tarihleri de merak ediyorum.
CERN’de 12 bit ADC’nin onlarca GHz örnekleme hızına çıktığı bir proje görmüştüm. İşin sırrı paralellikti: MHz sınıfında çalışan birkaç 12 bit SAR birimini kopyalayıp büyük bir analog multiplexer ile sinyali round-robin dağıtıyorlardı. Çip alanı çok büyüyor ama hız bu şekilde elde ediliyordu. Böyle uç yöntemlerin dışında flash ADC(Flash ADC wiki) veya hassasiyet için multislope ADC(multislope ADC tutorial) de kullanılıyor. Tarihi ve perde arkası da ilgimi çekiyor.
AD9226’yı da anmak isterim. Tek kanallı ama 12 bit ve 65MSa/s’e kadar çıkabiliyor. AliExpress’ten yaklaşık $12’a alıp analog video yazılımsal decode denemelerinde kullandım. Ben 8 bit, 20MSa/s civarında Raspberry Pi Zero ve SMI peripheral ile kullanırken şaşırtıcı biçimde darboğaz veri aktarımıydı. İlgili SMI kullanım yöntemi için (iosoft.blog bağlantısı).
100Ksample/s benim dünyamda inanılmaz hızlı sayılır. Benim için PLC programında standart 2Ksample/s’i 10K’ya çıkarmak bile pratikte çok yüksek performans kabul ediliyor.
Çok yüksek hızlı ADC’ler mikrodenetleyiciyle doğrudan ele alınamayacak kadar zahmetli olduğundan daha çok FPGA alanına giriyor. Genelde FPGA ile ADC verisini doğrudan alıp, MCU’nun daha kolay işleyebileceği paralel bir bus’a dönüştürmek gerekiyor. Aşırı hızlı aktarım için çok sayıda pin, elle işleme ve DMA ihtiyacı da arttığından iş pratikte zorlaşıyor.
"12-16 bit ADC’nin ENOB’u 8-9 civarı" iddiasının aksine, SACD’de kullanılan 1 bit dönüştürme yöntemi (saniyede milyonlarca örnek) 120dB dinamik aralık ve ~100kHz bant genişliği sağlayabiliyor. CD (16 bit PCM) ise 96dB ve 20kHz aralığında. Analog donanım karmaşıklığı açısından 1 bit/bitstream dönüştürücü çok daha basit. 16 bit ADC’lerin ucuz olmasının nedeni de büyük ölçüde seri üretim. Gerçekte bit derinliğini örnekleme hızıyla takas etme fikri oldukça cazip; 3D grafikte SSAA’nın daha fazla piksel örnekleyerek yüksek frekanslı bilgiyi yakalamasına benziyor (1-bit DAC wiki, Direct Stream Digital wiki).
$3’lık bir ADC ucuz sayılmaz; gerçek düşük maliyetli ADC, ucuz MCU’nun içine gömülü olandır. TI da bilerek 10/12 bit ile sınırlı AES/ADC’leri ucuza satıyor ama gerçek doğrusallıkları 16 bit üstüne çıkabiliyor. Kusurlu ürün ile iyi ürün arasındaki üretim maliyeti neredeyse aynı; yarı iletken süreç aynıysa ve tasarım da sağlamsa, ucuz bir ADC’nin performansı özel olarak kötü olmak zorunda değil.
LCSC, TI gibi firmalardan doğrudan büyük miktarda alıp düşük marjla sattığı için ucuz olabilir. LCSC’de klon çipler gördüm ama çoğu farklı marka adıyla satılıyordu.
Düşük fiyat ille de düşük kalite demek değil. Yüksek hassasiyetli ADC’ler, yüksek örnekleme hızı gerekmiyorsa sinyal işleme teknikleri sayesinde uygulanması kolay şeyler; delta-sigma veya ramp tipi ADC yaklaşımları sample-and-hold devresi ve tek bir bitle bile yüksek hassasiyetli ölçüm yapabiliyor. Sadece zaman gerekiyor. Ama 16 bit 100MHz bir flash ADC istiyorsanız evinizi ipotek ettirecek kadar pahalı olabilir.
Çoğu şirketin bölgesel fiyat politikası vardır. Örneğin Spotify aboneliğim ABD fiyatının yaklaşık %60’ı. Elektronik sektöründe de Çin’e özel fiyat listeleri bulunuyor. Ayrıca Batı’daki resmî liste fiyatlarının çoğu zaman yalnızca üst sınır olduğunu, küçük projelerde bile satış ekibiyle doğrudan temas kurarsanız indirim alınabildiğini unutmayın.
Gerçekte $3’lık ADC çok da ucuz bir parça değil ve üretim maliyetlerinin düşük olduğu ülkelerde çok daha ucuza alınabiliyor. Sonuçta önemli olan, fabrikanın testinde ürünün düzgün çalışması ve ürün bazlı test jig’inin koyduğu koşulları geçmesi; pratikte bu çoğu zaman yeterli oluyor.