Kebanyakan Microcontrollers (uC) memiliki Analog to Digital Converter (ADC) sebagai bagian dari perangkat periferal mereka, yang fenomenal karena ini mengintegrasikan dua komponen ke dalam satu paket. ADC ini biasanya didaftarkan juga dipetakan, yang memungkinkan data untuk diekstraksi dengan cepat dan mudah.
Terlepas dari integrasi ketat ini, Anda masih dapat membeli ADC eksternal. Saya dapat melihat beberapa kasus untuk ini:
- ADC perlu diisolasi dari UC.
- Kedalaman bit sampel ADC harus lebih tinggi dari ADC uC.
- Tegangan ke indra jauh dari mikrokontroler dan garis analog yang panjang tidak dapat diterima.
- Tegangan ke indera berada di lingkungan yang keras yang tidak cocok untuk UC.
- Sampel ADC eksternal jauh lebih cepat daripada ADC UC.
- Tegangan referensi untuk beberapa sampel berbeda dari yang lain, membutuhkan beberapa pin Vref (dan dengan demikian beberapa ADC eksternal).
- UC saat ini tidak memiliki cukup saluran ADC dan biaya pemasangan UC baru sangat mahal.
- ADC eksternal mengkonsumsi daya lebih sedikit daripada ADC UC (saya perlu contoh untuk mempercayainya).
- Saluran ADC harus disampel secara bersamaan (skenario langka).
- Biaya pemrograman firmware pada waktu pembuatan lebih besar daripada biaya bagian ADC yang lebih mahal (tidak mungkin).
- PCB memiliki batasan ruang dan tidak ada UC yang dapat ditampung (tidak mungkin).
Ini semua baik dan bagus, tetapi yang menurut saya aneh adalah bahwa ADC eksternal biasanya sedikit lebih mahal daripada rekan UC mereka, namun menyediakan fungsionalitas yang setara. Misalnya, Anda dapat membeli bagian EFM32Z dengan 12bit 1Msps ADC (dengan referensi internal) sekitar $ 1 , atau Anda dapat membeli ADC 12bit 200ksps setara dengan sekitar $ 3,50 (kecepatan yang sama (ish), nomor daya yang relatif sama, dll) dan melakukan tugas yang sama (mengekstraksi data ADC).
Pertanyaannya kemudian menjadi: apakah ada alasan kuat mengapa seorang insinyur lebih menyukai ADC eksternal daripada ADC UC ketika yang terakhir dapat melakukan fungsi yang sama?
sumber
Jawaban:
Jika ADC internal mikrokontroler Anda melakukan pekerjaan yang Anda perlukan lalu tidak, tidak perlu ADC eksternal. Tapi kemudian, itu bukan yang mereka tuju.
Anda telah membahas sebagian besar alasan untuk ADC eksternal, tetapi ada beberapa alasan lagi, dan menurut saya, itu adalah beberapa alasan paling penting:
Untuk poin 3, ambil Raspberry Pi misalnya. Itu tidak memiliki ADC tersedia sama sekali, Anda harus menambahkan yang eksternal untuk melakukan pekerjaan analog sama sekali.
sumber
Beberapa alasan lain untuk mendukung ADC eksternal:
Banyak bagian ADC eksternal memasukkan input diferensial, sedangkan konverter bawaan mikrokontroler sering tidak. Dalam kasus di mana input memiliki banyak noise mode umum, itu bisa sangat penting.
Banyak bagian ADC eksternal termasuk tahap penguat sebelum konverter itu sendiri, sehingga memungkinkan konverter untuk mengukur sinyal impedansi tinggi secara langsung. Pada banyak mikrokontroler, tindakan pengambilan sampel sinyal input dapat mengganggu itu. Bergantung pada sifat sinyal input, ini dapat sangat meningkatkan waktu akuisisi yang diperlukan untuk melakukan pengukuran yang akurat.
Sekalipun ADC internal lebarnya dua belas bit, itu umumnya tidak berarti ia membutuhkan pembacaan yang akurat untuk satu bagian pada tahun 4096. ADC eksternal tipikal akan sering memiliki spesifikasi yang lebih baik daripada internal, bahkan ketika keduanya memiliki kedalaman bit yang diiklankan yang sama.
Mengintegrasikan ADC ke dalam mikrokontroler itu mudah. Mengintegrasikan ADC yang baik jauh lebih sulit. Tebak mana yang lebih umum.
sumber
Alasan lain untuk beberapa ADC eksternal ada: mereka sudah ada jauh lebih lama daripada micros dengan ADC internal, dan dirancang menjadi banyak produk. Mungkin 20 atau 30 tahun lebih lama. (Mungkin tidak demikian halnya dengan bagian SOIC yang ditautkan, meskipun mungkin merupakan variasi die-shrunk modern dari bagian klasik)
Jika ADC tidak memiliki resolusi, keakuratan, atau kecepatan, namun memerintahkan harga premium, inilah alasannya.
Bahkan untuk desain baru mungkin lebih baik untuk menggunakan kembali blok yang berfungsi dengan baik, daripada merekayasa ulang di bagian yang lebih baru (bahkan jika integrasi yang dihasilkan mengurangi biaya BOM). Rekayasa ulang itu bisa mahal; proses persetujuan tes dan peraturan, terlebih lagi.
Sekarang jika Anda memulai dari awal, dan mikrokontroler pilihan Anda memiliki cukup saluran ADC yang memenuhi persyaratan Anda, tidak satu pun di atas yang berlaku.
sumber
Saya menyadari ini adalah pertanyaan yang sangat lama, tetapi ini adalah pertanyaan yang sering kami debat secara internal.
Anda benar, itu akan menjadi tidak biasa untuk memilih ADC eksternal jika versi eksternal persis sama fungsinya. Namun, dalam pengalaman saya, mikro biaya rendah biasanya memiliki ADC cukup buruk dengan suhu melayang, jumlah bit rendah (10 - 12 bit) dan kebisingan dari VCC (+/- 20mV dalam beberapa kasus) ... meskipun kebalikannya bisa benar. .. Anda dapat meningkatkan S / N jika sampel berlebihan dan ada noise. Dalam kegiatan pengembangan produk kami, sangat jarang mendasarkan pilihan MCU kami pada kualitas ADC yang ada di dalamnya. Biasanya ini lebih tentang toolchain, biaya, firmware yang ada, dll. ADC internal biasanya terbatas pada tugas-tugas yang tidak penting seperti membaca tegangan baterai.
Dengan berbagai mikroskopi, mungkin juga ada masalah dengan pengatur waktu bersama yang perlu dimonopoli untuk waktu pengambilan sampel yang cepat, tetapi mengganggu hal-hal lain di MCU (port serial perangkat lunak, ISR, dll.) Ketika mereka dimonopoli untuk ADC.
Juga, apa itu VREF? Jika Anda menggunakan VCC sebagai referensi dalam firmware, bahkan jika Anda mengkalibrasi ke VCC "nyata", nilai itu dapat berfluktuasi secara dramatis selama operasi. Jika Anda memiliki perangkat arus tinggi (radio, wifi, MCU, dll.) Dengan penggunaan arus transien yang besar, VCC mungkin turun hingga 4,8 volt selama pengiriman dan jika sampel Anda terjadi selama jendela itu, dan Anda secara naif mengubah 0-1023 Nilai baca ADC ke voltase dengan ADC_VAL / 1023 * 5.0 - Anda telah kehilangan presisi 200mV. Atau, jika Anda memiliki mode daya yang berbeda (USB, kutil dinding, baterai) - VCC di MCU dapat berubah (terutama dengan USB). ADC eksternal (bahkan dengan jumlah bit yang sama) dapat memberikan vref internal yang solid di bawah kondisi VCC yang berfluktuasi.
Resolusi cukup penting. Saya membayangkan ada beberapa penggunaan (di dunia nyata) untuk resolusi 10-12 bit, tetapi untuk semua jenis aplikasi dunia nyata (deteksi gas, pengukuran akustik, pengukuran akselerometer, pengukuran suhu presisi, dll) 16-bit biasanya resolusi minimum untuk mencapai sinyal yang memadai untuk karakteristik noise dan resolusi. Bahkan MCU 32-bit yang benar-benar bagus seperti Atmel's SAMD terbatas pada ADC internal 12-bit.
Clock jitter juga merupakan masalah dan ada juga beberapa ketidaktepatan yang melekat ketika mik 8-bit lainnya diperlukan untuk menyediakan pembacaan lebar 12-bit dan membutuhkan setidaknya 2 siklus clock untuk memanipulasi nilai 12-bit, yang mungkin tidak benar dengan ADC eksternal (karena mereka dapat memiliki osilator internal).
Ada juga saat-saat ketika kedekatan fisik dengan transduser Anda dan isolasi dari MCU itu penting. Beberapa transduser yang sangat sensitif memerlukan daya terkondisi sendiri, bidang tanah yang diisolasi, dan ampere helikopter transimpedansi yang sangat sensitif dengan 0,01% pasif.
Kadang-kadang ada alasan kuat untuk menggunakan ADC internal. DMA adalah salah satu alasan ... laju sampling adalah alasan lain. Kemudahan oversampling adalah hal lain. Menghubungkan ADC eksternal dengan kecepatan data yang tinggi dapat memakan banyak pin I / O multipleks yang berharga dan menghasilkan desain yang lebih rumit. Juga, banyak ADC yang kami gunakan berbasis I2C, sehingga laju pengambilan sampel sangat dibatasi oleh kecepatan bus I2C. Bahkan pada 1mbits / detik, pembacaan 16-bit membutuhkan waktu yang sangat lama.
sumber