Desain penting ketika bekerja dengan 12bit ADC


11

Saat ini saya sedang merancang papan yang melampirkan ADC 12bit (MCP3208) ke Raspberry Pi (selain beberapa hal lain yang berhubungan dengan I / O kecepatan rendah). Ini sebagian besar akan dilampirkan ke sensor analog (sensor temp, sensor jarak IR dan hal-hal serupa, sementara tidak selalu membutuhkan resolusi 12bit, ada kasus-kasus di mana itu akan sangat menyenangkan untuk memiliki potongan informasi tambahan).

Saya tidak punya banyak pengalaman dengan sirkuit analog dan tidak memiliki pemahaman yang baik tentang matematika dan fisika yang mendasarinya.

Saya membaca beberapa panduan desain mengenai ADC dan sering membaca tentang hal-hal seperti filter anti-aliasing, driver ADC untuk sinyal impedansi tinggi, pesawat ground analog, meletakkan jejak dalam pola tertentu untuk mengurangi kebisingan, menjaga elektronik digital berkecepatan tinggi terpisah sebanyak mungkin dari ADC untuk mengurangi kebisingan switching, referensi tegangan presisi dan banyak lagi hal yang saya belum sepenuhnya mengerti.

Jadi apa yang saya mulai bertanya-tanya adalah apakah masuk akal bagi saya untuk menggunakan 12bit ADC, jika saya tidak memiliki keahlian untuk mengimplementasikannya dengan benar karena saya dapat kehilangan 2 LSB karena desain sirkuit yang kurang optimal dan lebih baik hanya pergi dengan ADC 10bit. Atau apakah desain sirkuit yang optimal tidak terlalu penting dalam bidang 12 bit seperti yang saya yakini.

Apa hal-hal yang harus selalu diterapkan untuk mengurangi kebisingan (seperti topi bypass yang jelas)? Apa penyebab kebisingan terbesar dalam aplikasi sinyal campuran seperti milik saya (memiliki prosesor GHz yang berbicara dengan ADC)? Apa saja hal-hal yang sebenarnya hanya diperlukan dalam aplikasi dengan akurasi yang lebih tinggi (14-16bit +)?

Saya benar-benar ingin tahu hal-hal yang masuk akal dan penting yang harus saya perhatikan.


2
Mulailah dengan apa yang Anda coba ukur, dan resolusi apa yang Anda butuhkan, dan kemudian putuskan ADC dan pemrosesan analog seperti apa yang Anda butuhkan. Sebagai tambahan, baca lembar data ADC Anda. Anda kehilangan bit bahkan jika Anda menggunakannya dengan sempurna. Cari "ENOB"
Scott Seidman

Masalahnya adalah bahwa hal-hal yang perlu saya ukur akan terus berubah. Kadang-kadang saya perlu melihat setiap tegangan mungkin, kadang-kadang bahkan 8 bit sudah cukup. Saya ingin memiliki solusi yang dapat memenuhi aplikasi sebanyak mungkin.
PTS

Seberapa cepat Anda harus bisa melihat perubahan? (yaitu, tingkat sampling apa yang Anda cari?)
ThreePhaseEel

2
"Kadang-kadang saya perlu melihat setiap tegangan mungkin, kadang-kadang bahkan 8 bit sudah cukup." Maka persyaratan Anda adalah untuk dapat "melihat setiap tegangan blip mungkin". Jika Anda membutuhkan resolusi 12 bit bahkan hanya sesekali, Anda perlu mendesain dengan 12 bit. Jika Anda pergi ke 10 bit, Anda tidak akan memiliki 12 saat Anda membutuhkannya.
WhatRoughBeast

Tingkat sampling 1Khz + akan lebih disukai. Meskipun saya pikir di sebagian besar aplikasi 120Hz akan cukup baik. Meskipun laju pengambilan sampel akan diperlukan untuk 8 saluran pada satu waktu (tidak pada jam yang sama tetapi mereka semua harus disampel secara berurutan). @WhatRoughBeast Ya itulah alasan saya memutuskan untuk menggunakan 12bits. Padahal saya butuh saran dengan implementasi di sini.
PTS

Jawaban:


19

Untuk aplikasi sinyal campuran tingkat-presisi, sampel-rendah-tingkat-rendah seperti milik Anda, masalah utama yang Anda hadapi adalah memiliki referensi yang cukup akurat dan menjaga gangguan perpindahan digital dari ADC Anda. Ada beberapa langkah untuk ini, mulai dari tahap desain dan berlanjut melalui tata letak papan.

Selama desain sirkuit

Pertama, pada fase desain, referensi yang tepat, decoupling yang benar, dan drive sinyal impedansi rendah harus dipasok ke ADC agar konversi yang benar dapat terjadi. Selain itu, sinyal harus disaring (low-pass filtered dalam aplikasi instrumentasi seperti milik Anda) untuk mencegah ADC menurunkan secara efektif konversi frekuensi yang lebih tinggi ke baseband (aplikasi RF dapat menggunakan filter frontend ADC + bandpass lambat untuk Nyquist-downconvert sinyal, menghemat pada mixer khusus dan LO).

Menstabilkan referensi Anda

Referensi berkisar dari hal sepele dan menyedihkan (Zener diskrit ubur-ubur, baik sampai oh, 4 bit) hingga gila (IC Zen dimakamkan yang dipanaskan, digunakan dalam aplikasi instrumentasi berkinerja tinggi) - dan spesifikasinya sering tidak jelas, unit pencampur di cara yang membingungkan siswa. Bagan di LTC AN82 adalah penangkal yang berguna untuk ini - diberikan aplikasi Anda, di mana ADC Anda adalah unit 12bit yang mampu 11+ ENOB diberi referensi stabil dan pasokan 5V, saya akan menentukan referensi agar akurat menjadi 0,02% atau lebih baik melintasi rentang suhu yang diinginkan, dan derau RMS tidak menjadi masalah karena ini tentang urutan besarnya kurang dari spesifikasi akurasi Anda.

Sayangnya, akurasi awal 0,02% tanpa trim adalah tentang di mana hal-hal mulai agak ... sulit. Menggunakan referensi 4.096V mengingat bahwa kinerja ENOB yang diinginkan berarti bahwa saya ingin menjalankan ADC pada pasokan 5V yang tenang dengan penerjemah tingkat logika ke 3.3VI / O dari Pi, dan 4.096V memberi Anda yang bagus, praktis Hubungan 1mV / hitung, kami terbatas pada ADR4540 , X60003 , MAX6126AASA , atau mungkin LTC6655Bmeskipun bagian terakhir memotongnya karena memiliki akurasi awal 0,025%. Sementara tempco dan histeresis tidak menjadi masalah karena ini adalah aplikasi bangku yang saya duga, dan regulasi jalur dan beban bukan masalah besar karena ini didukung oleh pasokan 5V yang diatur sama seperti ADC dan hanya menggerakkan pin Vref ADC, penyimpangan jangka panjang juga menjadi perhatian di sini karena kurangnya trim - untuk ini, ADR4540 dan MAX6126AASA adalah pemenang yang jelas masing-masing 25ppm / root-khr dan 20ppm / root-khr - sekitar pada rasio 10-1 yang dibutuhkan untuk mempertimbangkan drift jangka panjang tidak signifikan. (Dua bagian lainnya memiliki drift jangka panjang sekitar 50-60ppm / root-khr.)

Memisahkan semuanya

Lembar data MCP3208 merekomendasikan kapasitor 1μF minimum untuk decoupling, dihubungkan dari Vdd ke sistem ground - AGND dan DGND harus diikat kembali ke sistem ground yang sama juga. Decoupler massal keramik 10μF / 10V minimum atau polimer tantalum juga harus digunakan pada papan 5V.

Di atas ini, referensi harus dipisahkan sesuai datasheet - ini sering 100nF pada output dengan 100nF pada input selain setiap kapasitansi decoupling massal hadir, tetapi LTC6655 membutuhkan kapasitor output yang jauh lebih besar (menggunakan yang sama P / N sebagai decoupler massal berfungsi), dan X60003 pilih-pilih pada arah yang berlawanan karena desain daya yang rendah.

Input drive / buffering / filtering

Untungnya, ini tidak sulit - akurasi 0,02% diterjemahkan menjadi offset input maksimum 800μV, dan saya bisa mendapatkan beberapa pesanan dengan magnitude lebih baik dari itu dengan GBW dalam rentang MHz sambil berjalan pada pasokan 5V tunggal yang tersedia dengan nol hari ini - Amplifier amplifier internal dan dipangkas. The AD8630 pasokan suara rendah auto-nol pilihan, sementara cepat dipangkas internal amp diimbangi rendah termasuk OPA4350 dan OPA4192 . Either way, dua-tiang Sallen dan Key low-pass filter anti-aliasing dari datasheet MCP3208 dapat digunakan, dengan frekuensi sudut diatur sekitar 5kHz atau lebih - desain filter lainnya dapat bekerja juga.

Catu daya dan antarmuka digital

Spesifikasi MCP3208's ENOB (jumlah efektif bit) bergantung pada pasokan - berkinerja lebih baik dengan pasokan 5V daripada yang dilakukan dengan 2,7-3,3V; itu juga harus kehabisan 5V untuk menggunakan referensi 4.096V. Ini menimbulkan masalah bahwa Pi menggunakan logika 3.3V dan tidak toleran 5V, membutuhkan IC terjemahan tingkat logika seperti TXB0104 - sisi A pergi ke Pi sedangkan sisi B pergi ke ADC.

Selain itu, suplai 5V harus cukup bersih - regulator linier harus digunakan untuk menghasilkan on-board dari tegangan suplai yang lebih tinggi. Jika tidak ada tegangan suplai yang lebih tinggi tersedia dalam aplikasi, rel 5V yang ada dapat digunakan asalkan jaringan decoupling LC digunakan untuk menjaga kebisingan digital dalam jumlah besar dari ADC dan rel pasokan op amp.

Waktu tata letak

Ada dua kunci untuk tata letak sinyal campuran yang efektif: partisi dan tata letak pasokan / pengembalian . Saya akan menyentuh mereka pada gilirannya.

Pertama, saya akan membagi tata letak papan dengan rapi menjadi dua sisi - sisi digital dan sisi analog. Semua jejak digital (antarmuka SPI, dalam kasus MCP3208 yang Anda gunakan) buka sisi digital papan - sisi papan ini juga berisi chip penerjemah level logika dan konektor I / O ke Pi. Sisi analog papan berisi semua jejak dan sirkuit analog - referensi voltase ada di sini, dan begitu juga input filter, perlindungan input, dan konektor input analog. ADC (dan filter induktor jika Anda menggunakan 5V dari Pi) adalah satu-satunya komponen yang menjembatani kesenjangan ini - pada kenyataannya,

Perhatikan juga, bahwa semua bagian yang saya tautkan tersedia dalam paket SMT pitch kasar - tata letak satu sisi dengan bagian belakang sebagai bidang GND kontinu sangat dianjurkan jika papan dua sisi digunakan di sini. Jika biaya bukan keberatan, papan empat-lapisan akan memberikan pesawat Vdd analog kontinu di samping bidang tanah, serta ruang untuk "genangan listrik" untuk sisi logika 3.3V dari IC penerjemah level logika. Namun, tidak diperlukan split ground plane pada aplikasi ini - rute yang tepat dari jejak sinyal akan menjaga arus balik di tempat mereka berada .

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.