Impedansi masukan ADC pada MCU

12

Apa impedansi input dari MCU ADC yang khas? Dalam hal ini saya bekerja dengan PIC24FJ64GA004. Saya tidak perlu pengambilan sampel kecepatan tinggi - maksimal 100 sampel per detik.

Saya ingin menghubungkan pembagi resistif dengan resistor 100 k dan resistor 10 k, sehingga impedans harus lebih tinggi dari 1M atau jika tidak impedansi akan mulai miring bacaan.

Thomas O
sumber
Impedansi input bukan yang harus Anda khawatirkan pada laju sampel 100 Hz dengan sumber sub-megaohm, tetapi hal-hal seperti aliasing atau menangkap transien (jika itu penting).
Nick T

Jawaban:

10

Input Kebocoran Arus

Untuk menentukan drop tegangan resistor dari gerbang, Anda harus menggunakan arus bocor dari lembar data. Microchip menentukan "Arus Kebocoran Input" pada lembar data mereka. The datasheet bahwa saya telah mendongak menentukan input kebocoran arus dari 1uA. Ini dapat menyebabkan .1V atau 100mV, yang hanya dua kali lipat dari yang dihitung robert, mungkin bukan masalah pada sinyal Anda.

Sekarang ingat, jika Anda membagi 30V sinyal ke 30/11 (2.7V) volt penuh baca maka 100mV ditambahkan ke ini, menyebabkan hingga 3% kesalahan pada sinyal 30V Anda.

Jika Anda membutuhkan resolusi 1V, bagilah dengan 11 dan kemudian tambahkan 100mV. 100mV ini bisa lebih besar dari sinyal 1V.

Input Kapasitansi

Robert benar, akan ada kapasitansi, tetapi ini benar-benar menentukan jumlah waktu yang diperlukan untuk melakukan pengukuran ADC. Ini juga, dikombinasikan dengan resistansi input yang Anda pilih, membuat filter low pass, jika Anda ingin mengukur sinyal dengan frekuensi yang lebih tinggi, Anda tidak akan bisa menangkapnya.

Mengurangi kesalahan

Cara termudah adalah dengan mengurangi resistensi pada pembagi Anda, atau untuk buffer sinyal Anda. Ketika Anda menyangga sinyal, Anda akan mengganti arus bocor PICs dengan arus bocor op-amp yang bisa Anda dapatkan cukup rendah.

Kasus 1uA ini adalah yang terburuk, kecuali jika Anda harus mengeluarkan biaya besar untuk membuat perubahan kecil pada desain, buat desain Anda keren dan uji seberapa buruknya bagi Anda.

Tolong beri tahu saya jika ada yang bisa saya lakukan untuk membuatnya lebih mudah dibaca.

Kortuk
sumber
Oke, 3% cukup tinggi ... apakah ada cara untuk mengurangi ini? Saya kira saya bisa mengurangi resistensi pembagi ...
Thomas O
3% jika bacaan terkecil Anda adalah 30V.
Kortuk
informasi tambahan ditambahkan.
Kortuk
12

Input MCU ADC dapat mengalami impedansi input variabel tergantung pada apakah sampel-dan-tutup terus terhubung ke pin atau tidak. Mungkin sepadan dengan kesulitan untuk menggunakan op amp untuk buffer sinyal. Op amp akan memiliki manfaat tambahan yang memungkinkan Anda untuk menyaring frekuensi di atas Nyquist, yang juga merupakan praktik yang baik.

ajs410
sumber
Sayangnya saya tidak dapat menyediakan ruang untuk op-amp.
Thomas O
2
Anda tidak dapat menyisihkan ruang untuk komponen SC70-6 dan Anda menyebut diri Anda noob?
akohlsmith
setuju, satu op amp untuk memfilter di bawah tingkat nyqusit dan mengatur gain, dan yang kedua opsional untuk buffering input.
smashtastic
6

Satu poin yang belum disebutkan adalah kapasitansi yang diaktifkan pada input. Banyak ADC akan menghubungkan kapasitor ke input saat mereka melakukan pengukuran dan kemudian melepaskannya beberapa saat kemudian. Keadaan awal tutup ini mungkin tegangan terakhir diukur, VSS, atau sesuatu yang tidak konsisten. Untuk pengukuran yang akurat, input harus tidak bergerak ketika kapasitansi terhubung, atau memantul dan pulih sebelum kapasitor dilepas; dalam praktiknya, ini berarti bahwa kapasitansi pada input harus di atas nilai tertentu, atau waktu RC yang dibentuk oleh kapasitansi input dan impedansi sumber harus di bawah nilai tertentu.

Misalkan, misalnya, kapasitansi input yang diaktifkan adalah 10pF, dan waktu akuisisi adalah 10uS. Jika impedansi input adalah 100K, tidak ada kapasitansi input selain kapasitansi ADC, dan perbedaan antara tegangan cap awal dan tegangan yang akan diukur adalah R, maka konstanta waktu RC akan menjadi 1uS (10pF * 100K) , sehingga waktu perolehan akan menjadi 10 konstanta waktu RC, dan kesalahannya adalah R / exp (10) (sekitar R / 22.000). Jika R mungkin adalah tegangan skala penuh, maka kesalahan akan menjadi masalah untuk pengukuran 16-bit, tetapi tidak untuk pengukuran 12-bit.

Misalkan ada 10pF kapasitansi di papan selain 10pF kapasitansi yang diaktifkan. Dalam hal ini, kesalahan awal akan dipotong setengah, tetapi konstanta waktu RC akan digandakan. Akibatnya, kesalahannya adalah R / 2 / exp (5) (sekitar R / 300). Cukup bagus untuk pengukuran 8-bit.

Tingkatkan kapasitansi sedikit lebih dan segalanya menjadi lebih buruk. Dorong kapasitansi ke 90pF dan kesalahannya adalah R / 10 / exp (1) (sekitar R / 27). Di sisi lain, jika tutupnya menjadi lebih besar dari itu, kesalahan akan kembali turun. Dengan kapasitansi 1000pF, kesalahannya sekitar R / 110; pada 10.000pF (0,01uF), sekitar R / 1000. Pada 0,1uF, itu akan menjadi sekitar R / 10.000, dan pada 1uF, itu akan menjadi sekitar R / 100.000.

supercat
sumber
5

Lihatlah halaman 198 lembar data . Ada 6-11pF di pin dan 4.4pF di tutupnya.

Robert
sumber
Ya tapi apa artinya ini bagi saya? Maaf, saya masih noob.
Thomas O
Input akan menarik sekitar 500nA (sumber saat ini). Kapasitor akan membatasi laju sampel. Chold perlu waktu untuk mengisi daya ketika beralih ke pin input.
Robert
500nA akan turun 50mV, yang cukup tinggi, tetapi tidak banyak rentang skala 0-30V saya, itu akan menjadi sekitar 5mV yang baik-baik saja. Terima kasih!
Thomas O
3

Selain poin bagus yang telah diangkat oleh supercat di posnya, ada kehalusan lebih lanjut untuk dicatat ketika Anda menggunakan pembagi tegangan unbuffered dengan kapasitor eksternal.

Transfer biaya yang terjadi setiap kali Anda menjalankan urutan pembacaan ADC, ketika dikalikan dengan tingkat pengulangan urutan, menjadi arus . Nilai rata-rata DC dari arus ini adalah Csamp * deltaV * f, di mana Csamp adalah kapasitansi pengambilan sampel (bukan kapasitansi eksternal!), DeltaV adalah tegangan antara saluran input berturut-turut, dan f adalah frekuensi pengulangan urutan (seberapa sering Anda menelusuri 1 urutan sampel lengkap).

Ketika Anda memiliki kapasitor eksternal untuk mengurangi efek transfer muatan dan menjaga agar tidak memiliki waktu pengambilan sampel yang lama, itu memiliki efek negatif dari low-pass-filtering saat input ini diperlukan untuk mengisi kapasitor sampel, yang akan muncul sebagai tegangan input Arus bocor -dependen yang menyebabkan tegangan offset melintasi impedansi sumber Anda.

Hanya untuk beberapa nomor sampel: pembagi tegangan Anda (100K || 10K) sekitar 9K, dan jika deltaV antara saluran = 3V, Csamp = 10pF, dan f = 10kHz, ini akan menyebabkan kesalahan tegangan 2,7mV, atau sedikit kurang dari 0,1% dari deltaV. Tidak banyak, tetapi cukup untuk diperhatikan. Anda seharusnya tidak menggunakan 1M || Pembagi tegangan 100K dengan tingkat pengulangan urutan 10kHz - tentu saja, ini cukup cepat, dan untuk tingkat pengulangan yang lebih lambat, Anda tidak perlu terlalu khawatir.

Saya telah menulis tentang ini dan masalah mengemudi ADC lainnya dalam posting di blog saya .

Jason S
sumber
Poin Anda tentang switching kapasitif berulang yang muncul sebagai arus kontinu adalah bagus. Dalam skenario di mana saya memiliki masalah paling besar dengan perilaku switching kapasitif tingkat sampling saya di bawah 1Hz, sehingga arus yang bersumber atau tenggelam oleh input yang diaktifkan adalah bukan masalah, tetapi untuk situasi yang melibatkan akuisisi data terus menerus itu adalah masalah yang tidak akan menang ' t dipecahkan dengan tutup filter input tidak peduli seberapa besar itu.
supercat
BTW, berkenaan dengan blog Anda, pasangan lain mendekati untuk memecahkan jenis masalah yang dimiliki insinyur lain mungkin untuk mengubah urutan pemungutan suara untuk (sampel thermister # 1), (sampel tetap sinyal nol-volt), (sampel thermister # 2 ), (sampel tetap sinyal nol-volt), atau jika titik awal untuk tutup selalu tegangan sebelumnya yang dibaca, sampel setiap termister dua kali untuk setiap kelompok sampel, baik hanya menggunakan nilai kedua, atau mungkin menyesuaikan nilai kedua berdasarkan pembacaan kedua sensor lain dan nilai pembacaan pertama.
supercat