Impedansi input pin analog Arduino Uno?

18

Saya menggunakan ACS712 hall-effect berdasarkan penginderaan saat ini chip pada beberapa motor lengan robot kecil, dan membaca di tegangan analog dengan Arduino Uno. Saya sudah mendapatkan hasil yang cukup baik, tetapi hanya setelah memasukkan filter RC pada output. Namun, dalam catatan aplikasi pada lembar data, dikatakan tidak melakukan itu:

"Penambahan filter RC ke output IC sensor dapat menghasilkan pelemahan output perangkat yang tidak diinginkan - bahkan untuk sinyal DC."

Kemudian ia memberikan formula untuk menghitung redaman, tetapi itu tergantung pada mengetahui impedansi input dari apa pun yang membaca sinyal, jadi itulah yang saya cari di sini.


sumber

Jawaban:

23

Ada beberapa faktor di sini.

Pertama, impedansi input dari ADC. ATmega328P menggunakan ADC aproksimasi berturut - turut . Dengan demikian, input pada dasarnya adalah input ke komparator, sehingga ADC memiliki impedansi input yang sangat tinggi.

masukkan deskripsi gambar di sini

ADC ditetapkan memiliki impedansi input 100 MΩ (yaitu MegaOhm).
Namun, ini agak mencurigakan bagi saya. Bersama dengan fakta bahwa tidak ada kebocoran input analog yang ditentukan, saya akan menebak bahwa ini adalah karakteristik listrik hanya ADC, daripada ADC bersama dengan seluruh struktur pin IO. Saya akan menebak bahwa jalur ADC IO yang dibagi dengan IO digital memiliki lebih banyak arus bocor (1 uA dari dokumen) kemudian garis IO yang hanya analog (50 nA, dengan asumsi bahwa pembanding SAR mirip dengan pembanding analog) masukan topologi).


Namun, ada pertimbangan lain di sini, yang merupakan alasan mengapa Atmel menentukan impedansi sumber <10 KΩ:
Input Kapasitansi

masukkan deskripsi gambar di sini

Pada dasarnya, koneksi input ke ADC di dalam chip, setelah multiplexer memiliki beberapa kapasitansi. Jika Anda melihat sirkuit setara untuk input ATmega ADC:
masukkan deskripsi gambar di sini

Anda dapat melihat seperti apa input itu.

Masalah dengan sumber impedansi tinggi muncul ketika Anda mengganti multiplexer input dari satu pin ke yang lain. Jika Anda memiliki dua input, satu di 0,5V dan satu di 4,5V, ketika Anda beralih dari satu ke yang lain, input harus mengisi (atau melepaskan) kapasitor 14 pF.

Jika sumber sinyal impedansi sangat tinggi, harus mengisi kapasitor dapat menyebabkan tegangan input turun sementara. Jika ADC mengonversi input saat masih mengisi daya kapasitor, Anda akan mendapatkan nilai yang salah.

Ini mungkin dapat diatasi dengan membiarkan input ADC menetap untuk jangka waktu tertentu setelah beralih saluran ADC, tetapi cara terbaik untuk mengatasinya adalah dengan hanya memastikan bahwa sumber input dapat mengisi kapasitansi dengan cukup cepat sehingga itu bukan masalah.

Connor Wolf
sumber
1
Diucapkan dengan baik.
gwideman
2
Saya tahu ini adalah pertanyaan lama, tetapi bagaimana seseorang "hanya memastikan bahwa sumber input dapat mengisi kapasitansi dengan cukup cepat sehingga itu tidak menjadi masalah."?
RubberDuck
2
@RubberDuck - Jika input Anda memiliki impedansi tinggi atau tidak dikenal, buffer itu, menggunakan sesuatu seperti op-amp yang dikonfigurasi sebagai pengikut tegangan gain-gain .
Connor Wolf
+1 untuk "Ada kapasitansi di sini". Sekarang saya mengerti.
Eiver
8

Lembar data tidak sepenuhnya jelas.

http://www.atmel.com/images/atmel-8271-8-bit-avr-microcontroller-atmega48a-48pa-88a-88pa-168a-168pa-328-328p_datasheet_complete.pdf

(24.6.1) menyatakan: "ADC dioptimalkan untuk sinyal analog dengan impedansi keluaran sekitar 10 kΩ atau kurang. Jika sumber seperti itu digunakan, waktu pengambilan sampel akan diabaikan."

Itu yang paling dekat dengan apa pun yang pernah saya temukan di lembar data yang berbicara tentang impedansi ADC.

baldengineer
sumber
Jika Anda membutuhkan nilai yang tepat, 100MΩ tercantum dalam Tabel 29-15 di halaman 310.
Brian Gordon
Itu menyebutnya "Analog Input Resistance" - Jadi, mengisi topi 14 pF melalui ini? Lebih baik punya sesuatu di ujung depan, kataku. Saya menggunakan 0,01 caps untuk tegangan DC yang tidak berubah dengan cepat.
SDsolar