Mengapa sebagian besar ADC, seperti yang ada di Arduino , memberikan resolusi 10 bit daripada 8 atau 16 bit?
Tampaknya aneh bahwa mereka tidak cocok dengan ukuran data standar, terutama yang terintegrasi.
Mengapa sebagian besar ADC, seperti yang ada di Arduino , memberikan resolusi 10 bit daripada 8 atau 16 bit?
Tampaknya aneh bahwa mereka tidak cocok dengan ukuran data standar, terutama yang terintegrasi.
Jawaban:
Tidak ada masalah teknis utama dengan memperpanjang SAR (perkiraan berturut-turut) ADC untuk mengkonversi 16 bit, tetapi masalahnya adalah Anda mulai melihat lantai kebisingan front-end analog. Ini cenderung membuat pelanggan panik karena mereka melihat kode ADC melompat-lompat, dan tidak selalu menyadari bahwa mereka melihat puluhan microvolts deviasi.
Dengan asumsi tegangan referensi 5,00 V dan ADC 10-bit, LSB mewakili tegangan 4,88 mV (5 V × 2 -10 ). Untuk ADC 16-bit dengan referensi 5,00 V, tegangan LSB akan menjadi 76 μV.
Tetapi catu daya dalam sistem digital tidak tepat 5,00 V, biasanya ditentukan dalam kisaran 4,75 V hingga 5,25 V. Setiap kali ada peristiwa transien switching di dalam mikrokontroler, ada sedikit pulsa arus yang menyebabkan pasokan tegangan ke kedutan. Jika LSB sekitar 5 mV Anda mungkin hampir tidak dapat melihatnya, tetapi pada level 76 μV sulit untuk tidak melihat kebisingan ini.
Bahkan, setelah Anda melewati 12-bit ADC, Anda benar-benar perlu memiliki referensi tegangan analog alih-alih hanya menggunakan catu daya digital. Sehingga menambah beberapa biaya lagi. Untuk hasil terbaik, referensi tegangan ini sebenarnya harus berupa chip terpisah, dengan saluran listrik sendiri, dan idealnya harus jauh dari sirkuit digital panas / berisik.
Jika Anda ingin 16-bit ADC memberikan bacaan stabil yang bagus, Anda memerlukan tegangan referensi yang sangat sangat bersih, dan kontrol termal, dan lebih baik jauhkan dari sinyal digital switching yang cepat ... jadi mengintegrasikan SAR 16-bit ke chip yang sama dengan mikrokontroler, sebenarnya akan mengalahkan tujuan memiliki bit-bit tambahan. Anda hanya akan mengukur noise acak pada bit-bit tambahan itu.
Ada aplikasi pelanggan yang menggunakan ADC resolusi lebih tinggi. Perusahaan tempat saya bekerja membuat beberapa di antaranya. Automated test equipment (ATE), ultrasound medis, dan beberapa tipe pelanggan khusus lainnya menggunakan ADC resolusi tinggi, dalam beberapa kasus 18 atau bahkan 24-bit.
Pengujian produksi ADC resolusi tinggi memakan waktu (dan karenanya mahal). Pelanggan yang membutuhkan kinerja semacam ini membayar premi untuk ADC mandiri eksternal, bukan jenis SAR murah yang dibangun ke banyak mikrokontroler modern.
Lalu ada aplikasi kecepatan tinggi seperti radar atau osiloskop pengambilan sampel digital, yang perlu diambil sampel pada kecepatan 100 MHz atau lebih cepat - pada kecepatan ini, Anda beruntung mendapatkan 8 bit yang berarti.
Trade off antara resolusi dan biaya.
8 bit menghasilkan 2 8 = 256 kombinasi, dimana 0 adalah satu, meninggalkan 0 hingga 255 sebagai nilai digital yang mungkin. Ini tidak cukup untuk banyak aplikasi. Setiap bit ekstra menggandakan resolusi dan 10-bit memberikan 1024 langkah yang cukup baik untuk sebagian besar proyek. Sistem industri mungkin menggunakan 12-bit untuk resolusi yang lebih baik.
ADC resolusi tinggi membutuhkan toleransi yang lebih ketat dan lebih mahal untuk diproduksi.
Sejumlah poin yang baik dan valid telah dibuat. Saya telah menggunakan 8, 10, 12 dan 16 bit ADC secara ekstensif, selama bertahun-tahun, dan saat ini cukup mudah untuk mencapai 16 bit dengan waktu konversi 4 atau 5 mikrodetik (lebih baik tersedia, saya akan tetap berpegang pada apa yang mungkin bisa dilakukan) bagi kebanyakan orang untuk menggunakan), dalam chip mandiri. Tapi ini mengandung jaringan tangga presisi, sering menggunakan resistor film tipis, dan berbagai teknik desain analog yang sangat khusus. (Ada juga, hampir selalu, kebutuhan untuk transistor bipolar kinerja tinggi di suatu tempat di sirkuit ADC presisi, tetapi semua mikrokontroler modern adalah CMOS, jadi ada banyak langkah fabrikasi tambahan untuk membuat apa pun dengan akurasi analog yang baik dan logika CMOS digabungkan. ) ADC yang bagus juga harganya lebih mahal dari kebanyakan mikrokontroler! Tidak begitu mudah dibuat,
Sebagai contoh, perhatikan TI ADS8509, yang pendahulunya ADS7509, tidak begitu cepat, saya telah digunakan di banyak tempat dalam proyek besar dan penting.
http://www.ti.com/lit/ds/symlink/ads8509.pdf
Ini cukup biasa dengan standar saat ini. Namun fitur desain internalnya tidak kompatibel dengan proses pembuatan yang murah untuk mikrokontroler. Dan, harganya mencapai $ 15,72, lebih banyak daripada kebanyakan mikrokontroler. Saya menggunakannya dalam bentuk mati semikonduktor telanjang, dimasukkan ke dalam hermetic metal can hybrids, dengan sirkuit dukungan yang dirancang dengan cermat, dan benar-benar mendapatkan hampir lebih dari 1 LSB pp noise, sehingga dapat dilakukan, jika Anda tahu apa yang Anda lakukan, dan memiliki sumber daya, termasuk anggaran. Tetapi Anda tidak akan pernah melihat noise rendah seperti itu di dalam atau di sekitar mikrokontroler.
Masalah utama, seperti yang setidaknya dijelaskan oleh satu orang, adalah bahwa kebisingan pada rel pasokan digital akan secara langsung memengaruhi ADC. Sekarang Anda dapat menyiasatinya, dengan menggunakan referensi tegangan eksternal yang baik, di mana pin disediakan untuk itu, tetapi Anda harus dapat melakukan hal yang sama dengan tanah juga. Dan, pin-pin itu harus dibatasi hingga beberapa ratus mV dari pasokan digital dan ground, atau benda itu meledak. Plus, tentu saja, internal noise coupling di dalam silikon, dari logika, mengubah keadaan dengan cara yang kompleks pada frekuensi clock, dan lebih buruk lagi, dari pin I / O, beberapa di antaranya mungkin mengemudi dan mengganti 10s mA, jika Anda telah memuatnya hingga batas. Kebisingan, kebisingan, dan kebisingan lainnya ...
Bagian yang saya kutip (dan Google berkeliling untuk yang lebih murah, lebih cepat atau berbeda, menukar fleksibilitas dengan biaya) memiliki antarmuka SPI, sehingga mudah digunakan SECARA EKSTERNAL ke mikrokontroler, dengan ground pesawat lokal sendiri, penyaringan, dll. , Dengan hati-hati, itu benar-benar akan memberi Anda 16 bit.
Dulu cukup sulit untuk mendapatkan lebih dari sekitar 10 bit bebas noise dari 12 bit ADC, dan masih berada dalam lingkungan yang kotor, seperti dekat dengan logika digital, yang sebagian besar mengapa ADC on-board dalam chip prosesor adalah kurang lebih terjebak pada resolusi itu, dan mungkin akan selamanya. Tetapi TI memiliki chip eksternal 32 bit. Belum melihat lembar data, atau biaya ...
Jika Anda dapat mengorbankan akurasi absolut (yaitu faktor skala mungkin keluar sebesar 5% atau lebih, belum lagi DC offset dan arusnya dengan waktu dan suhu, tetapi linearitasnya akan sangat baik) ADC kelas audio mungkin cocok untuk Anda. Mereka setidaknya 16 bit dan dirancang untuk pasar massal, sehingga seringkali bernilai baik, tetapi jangan berharap untuk menggunakannya dalam instrumen presisi yang harus mengukur sinyal DC hingga +/- 0,1%.
Anda tidak dapat memiliki semuanya sekaligus. Ini semua adalah pertanyaan tentang apa yang paling penting. Presisi, kebisingan, penyimpangan jangka panjang, kecepatan, biaya, daya, jenis antarmuka (serial atau paralel) dll. Anda juga mungkin ingin multiplex beberapa saluran, jadi perlu waktu respons langkah cepat, yang mengesampingkan banyak ADC sigma-delta, yang selain itu memiliki beberapa sifat yang sangat baik.
Saat memilih ADC. Google, seperti biasa, adalah teman Anda. Ada banyak artikel dan catatan aplikasi dari TI, Linear, Nasional dan berbagai produsen semikonduktor lainnya. Selalu waspada terhadap apa yang tidak diceritakan oleh lembar data, dan periksa untuk melihat parameter apa yang ditekankan pesaing mereka.
Tetapi jika Anda ingin semuanya pada chip mikrokontroler Anda, jangan berencana untuk menggunakan lebih dari 10 bit (mungkin 9 dapat digunakan, LSB berisik) dalam proyek Anda. Dan, rencanakan referensi analog terpisah dan arde jika chip Anda memungkinkan. Dengan begitu, Anda tidak akan membuang-buang waktu.
8 bit ADC mengerikan untuk digunakan karena langkah 0,49% - Saya sudah cukup melihatnya. Arduino, yang dirancang untuk elektronik hobi, menggunakan langkah 4 kali lebih banyak, sehingga mendekati 0,1%, yang mendekati sinyal yang dapat dicapai terhadap noise (ditambah dengung) yang diharapkan dari op-amp atau transistor sensor circuits biasa. Lebih baik dari itu akan terbuang sia-sia untuk elektronik buatan rumah kelas hoby, dan lebih buruk dari itu akan terlalu steppy dan mengerikan.
Sementara 16 bit ADC tersedia secara komersial, mereka membutuhkan waktu lebih lama untuk diselesaikan, selama dengungan atau derau telah bergerak, sehingga Anda tidak mendapatkan pengukuran yang lebih baik dan lebih lambat.
Ketika ADC melakukan konversi, ADC memberikan nilai digital (terkuantisasi) untuk sinyal analog kontinu. Karena nilai digital tidak akan persis dengan nilai analog pada saat konversi, perbedaannya dapat dianggap sebagai derau tambahan. Semakin tinggi resolusi ADC, semakin dekat nilai digital dari nilai analog. Dengan kata lain, kami meningkatkan signal to quanitization noise ratio (SQNR) dengan meningkatkan bit ADC. Oleh karena itu, 10-bit ADC lebih baik daripada yang 8-bit (sekitar 12dB).
Menggunakan 16-bit A / D akan lebih baik dalam hal SQNR. Namun, harganya lebih mahal. Dan dalam banyak aplikasi 10-bit ADC menyediakan SQNR yang cukup diperlukan.
Sebagai aturan umum Anda ingin jumlah bit dalam coveter Anda sedemikian rupa sehingga langkah quantisation Anda sedikit atau lebih di bawah lantai kebisingan (analog) sistem.
Menggunakan lebih banyak bit dan karenanya memiliki langkah quantisation lebih jauh di bawah lantai kebisingan membuat Anda sedikit meningkatkan kinerja kebisingan secara keseluruhan tetapi menggunakan lebih banyak silikon membuat waktu konversi Anda lebih lama atau membutuhkan internal konverter Anda untuk berjalan lebih cepat (dan karenanya menjadi lebih berisik)
Menggunakan bit lebih sedikit dan karenanya memiliki langkah quantisation di atas lantai kebisingan umumnya buruk. Ini berarti Anda membuang-buang kinerja sirkuit analog dan dalam beberapa kasus dapat membuat kesalahan sistematis yang tidak dapat dihapus melalui rata-rata (memang kadang-kadang desainer akan sengaja menambahkan suara ke sistem untuk menghindari kesalahan sistematis karena quantisation).
Perbedaan antara 8 bit dan 16 bit adalah BESAR. Yang pertama berakhir dengan langkah quantisation yang terlalu besar bahkan dalam sistem dengan kinerja noise yang cukup buruk. Yang terakhir ini terbuang sia-sia pada sistem apa pun yang tidak memiliki desain analog yang sangat hati-hati. Jadi tidak mengejutkan mikro-controller berakhir di suatu tempat di antara keduanya.
Perhatikan bahwa orang sering berbicara tentang "kebisingan quantisation" tetapi penting untuk diingat bahwa konsep "noise quantisation" adalah model kenyataan yang disederhanakan yang rusak dalam beberapa keadaan.
Penggunaan ADC yang paling umum dapat diperdebatkan di bidang pemrosesan suara (VoIP, CD musik, dll.). Musik tidak menarik di sini, karena itu membutuhkan 16 bit. Tetapi VoIP adalah yang mendorong pasar ADC bit-lebih rendah. VoIP biasanya menggunakan companding, yang menghasilkan kode PCM terkompresi 8-bit dari sinyal input 12-bit. Input ke langkah kompresi harus memiliki lebih banyak bit - biasanya 12, atau kadang-kadang 10 sudah cukup (Anda selalu dapat memalsukan dua bit terendah).
Akibatnya, permintaan untuk ADC 8-bit sangat rendah, tetapi ADC bit lebih tinggi dalam permintaan tinggi, dan karenanya tersedia dengan murah. Arduino kemungkinan akan menggunakan komponen yang murah dan ada di mana-mana.