Saya memiliki 14-bit ADC . Namun, melihat lembar data (lihat tabel 2 di halaman 5), jumlah efektif bit (ENOB) selalu kurang dari 12 bit.
Mengapa DAC saya mengklaim sebagai 14-bit ADC padahal hanya memiliki akurasi 12-bit? Apa gunanya memiliki dua bit tambahan jika tidak ada artinya?
Jawaban:
Anda telah diperas bambu!
14-bit adalah pemasaran berbicara, dan perangkat keras juga memberi Anda itu, jadi mereka akan mengatakan Anda tidak perlu mengeluh. Tepat di atas ENOB dalam lembar data itu memberikan angka SINAD (Signal to Noise and Distortion). Itu 72 dB, dan 1 bit sesuai dengan tingkat 6 dB, sehingga 72 dB memang 12 bit. 2 bit terendah adalah noise.
Dimungkinkan untuk mengambil data yang lebih rendah dari lantai kebisingan, tetapi membutuhkan korelasi yang sangat baik, yang berarti harus sangat dapat diprediksi.
sumber
Misalkan seseorang ingin mengukur tegangan tetap seakurat mungkin, menggunakan ADC yang akan mengembalikan nilai 8-bit untuk setiap pengukuran. Misalkan lebih lanjut bahwa ADC ditentukan sehingga kode N akan secara nominal dikembalikan untuk tegangan antara (N-0,5) / 100 dan (N + 0,5) / 100 volt (jadi misalnya kode 47 secara nominal akan mewakili sesuatu antara 0,465 dan 0,475 volt). Apa yang seharusnya orang ingin memiliki output ADC jika diberi tegangan steady-state tepatnya 0,47183 volt?
Jika ADC selalu menampilkan nilai yang mewakili kisaran yang ditentukan di atas di mana input jatuh (47 dalam kasus ini), maka tidak peduli berapa banyak pembacaan yang dilakukan, nilainya akan menjadi 47. Menyelesaikan sesuatu yang lebih baik daripada yang seharusnya mustahil.
Anggaplah sebaliknya bahwa ADC dibangun sehingga nilai acak "dither" didistribusikan secara linear dari -0,5 ke +0,5 ditambahkan ke setiap bacaan sebelum mengubahnya menjadi bilangan bulat? Di bawah skenario itu, tegangan 47,183 volt akan mengembalikan pembacaan 48, sekitar 18,3% dari waktu, dan nilai 47 yang lain 81,7% dari waktu. Jika seseorang menghitung rata-rata 10.000 bacaan, ia harus memperkirakan sekitar 47.183. Karena keacakannya, mungkin sedikit lebih tinggi atau lebih rendah, tetapi harus cukup dekat. Perhatikan bahwa jika seseorang mengambil bacaan yang cukup, seseorang dapat mencapai tingkat presisi yang diharapkan sewenang-wenang, meskipun setiap bit tambahan akan membutuhkan lebih dari dua kali lipat jumlah bacaan.
Menambahkan tepat satu LSB dari dithering yang didistribusikan secara linear akan menjadi perilaku yang sangat baik untuk ADC. Sayangnya, menerapkan perilaku seperti itu tidak mudah. Jika dithering tidak didistribusikan secara linier, atau jika besarnya tidak tepat satu LSB, jumlah presisi nyata yang dapat diperoleh dari rata-rata akan sangat terbatas, tidak peduli berapa banyak sampel yang digunakan. Jika alih-alih menambahkan satu LSB dari keacakan terdistribusi linier, satu menambahkan nilai LSB multipel, mencapai tingkat presisi tertentu akan membutuhkan lebih banyak bacaan daripada yang diperlukan dengan menggunakan keacakan satu LSB yang ideal, tetapi batas akhir untuk akurasi yang dapat dicapai dengan mengambil jumlah bacaan yang sewenang-wenang akan jauh kurang sensitif terhadap ketidaksempurnaan dalam sumber dithering.
Perhatikan bahwa dalam beberapa aplikasi, yang terbaik adalah menggunakan ADC yang tidak merusak hasilnya. Ini terutama benar dalam situasi di mana seseorang lebih tertarik untuk mengamati perubahan nilai ADC daripada nilai-nilai yang tepat itu sendiri. Jika dengan cepat menyelesaikan perbedaan antara +3 unit / sampel dan +5 unit / sampel peningkatan laju lebih penting daripada mengetahui apakah tegangan kondisi-mantap tepat 13,2 atau 13,4 unit, ADC yang tidak ragu-ragu mungkin lebih baik daripada dithering satu. Di sisi lain, penggunaan ADC dithering dapat membantu jika seseorang ingin mengukur hal-hal yang lebih tepat daripada yang dibacakan oleh satu bacaan.
sumber
Pelajaran bonus: Anda benar-benar mendapatkan 14 bit presisi , tetapi akurasi hanya 12 bit .
sumber
Peringatan tambahan ... kadang-kadang Anda benar - benar menginginkan keacakan .
Sebagai contoh:
Dalam aplikasi kriptografi (keamanan / keaslian), keacakan "murni yang tidak dapat dilewati" diperlukan. Menggunakan LSB konverter (yang di bawah lantai kebisingan) adalah cara cepat untuk menghasilkan angka acak murni.
Ketika perangkat keras ADC tersedia untuk tujuan lain (sensor dan sejenisnya), ini adalah cara cepat dan mudah untuk menyemai komunikasi yang aman. Anda dapat meningkatkan efek dengan memaksimalkan gain pada penguat input jika tersedia (banyak MCU menawarkan fitur seperti itu) dan mengambang input.
Keacakan ADC terutama berasal dari dua prinsip fisik: kuantisasi-noise dan noise termal.
Efek ini memiliki ambang batas pada tingkat makroskopik. Sebagai contoh, angka-angka yang cukup jauh dari batas bit tidak perlu dibulatkan dan karena itu tidak mengalami kesalahan kuantisasi atau keacakan. Kebisingan termal tidak memengaruhi bit yang lebih signifikan dalam konversi di sebagian besar skenario.
Dengan ekstensi, Anda dapat melihat bahwa memvariasikan parameter konversi (waktu pengambilan sampel, kedalaman, laju, tegangan referensi) akan mempengaruhi perubahan keacakan hasil dengan memindahkan ambang keacakan (baik meningkatkannya dengan menaikkan atau menurunkannya dengan menurunkan ambang) ). Efek serupa dicapai dengan memvariasikan parameter lingkungan / sistem (suhu, catu daya, dll).
Yang mengatakan, banyak generator nomor komersial perangkat keras yang sukses bergantung pada teknik ini karena efek luar, hanya mengurangi keacakan - mereka sama sekali tidak menghilangkannya (secara fisik tidak mungkin).
Anda dapat mengkompensasi pengurangan keacakan dengan melakukan lebih banyak konversi dan menambahkan hasilnya. Proses ekstensi bit ini (rangkaian bit konversi rendah berturut-turut) digunakan di STM32 Nucleo Dongles, FST-01 (termasuk NeuG 1.0), keluarga perangkat Grang LE Tech, dan banyak lainnya.
Perangkat Grang menghasilkan bit dengan mengkonversi lebih dari 400 juta konversi per detik (1 bit per konversi). Jika Anda melakukan konversi yang cukup, Anda dapat menjamin keacakan yang tinggi bahkan dalam menghadapi kondisi lingkungan.
sumber