Bagaimana cara memperpanjang jumlah pin analog (input) yang tersedia untuk saya?

26

Saya sudah tahu cara menambah jumlah pin digital pada Arduino menggunakan multiplexer.

Saya ingin menambah jumlah saluran input analog yang saya miliki. Salah satu solusinya adalah menambahkan Arduino lain sebagai budak.

Bagaimana saya menambah jumlah saluran input analog? (Saya berasumsi bahwa beberapa MUXing dan ADC terlibat). Jika terlalu rumit untuk menulis jawaban, garis besar umum dari sirkuit / kode juga akan baik-baik saja.

Saya juga terbuka untuk melindungi saran, meskipun saya lebih suka jika ada solusi perangkat keras yang tidak terlalu sulit.

Manishearth
sumber
Posting terkait electronics.stackexchange.com/a/62500/7036
Nick Alexeev

Jawaban:

32

Jika Anda sudah terbiasa dengan chip multiplexer digital, kabar baik! Mereka dapat digunakan untuk sinyal analog juga.

http://playground.arduino.cc/Learning/4051

Premis dasarnya persis seperti dengan multiplexing sinyal digital. Anda menggunakan chip 4051 sebagai "pengubah jalur" dan membaca sinyal jalur apa pun yang Anda beri tahu pengalih untuk beralih. 4051 menggunakan 3 pin digital dan 1 pin analog (atau digital) tambahan pada Arduino untuk membuat hingga 8 jalur input. Beberapa multiplexer dapat ditularkan, sehingga Anda dapat dengan mudah menambahkan 8 sinyal lebih banyak tanpa harus terus membawanya dari arduino itu sendiri.

Ini persis seperti teknik yang sudah Anda ketahui untuk sinyal digital, cukup sambungkan saluran yang Anda baca dari pin analog alih-alih yang digital, kemudian putar melalui status biner dan baca nilai analognya.

Saya membuat animasi gif untuk Anda.

masukkan deskripsi gambar di sini

Steve Cooley
sumber
3
Meskipun tautan menjawab pertanyaan, dapatkah Anda menjelaskan sedikit? Tulis tentang rangkaian singkatnya? (Tautan jawaban saja tidak disarankan pada jaringan)
Manishearth
Baik. Jawaban diperluas.
Steve Cooley
3
Satu klarifikasi, yang Anda sebutkan 4051 adalah mux analog bukan mux digital, saya akan menjelaskan jawaban Anda karena pasti ada digital muxes yang tidak dapat mencapai ini karena output dan input driver mereka tidak dirancang untuk respon linear. Mungkin patut dicatat tambahan bahwa rantai muxes analog dapat mempengaruhi sinyal tergantung pada karakteristik mux
naven87
1
Perlu dicatat bahwa muxes analog tidak sepele untuk dipilih, perancang harus mempertimbangkan ayunan tegangan (sebagian besar hanya beroperasi dalam kisaran pasokan, seperti opamps), bandwidth, resistansi ON, crosstalk, dll. Dll, ayunan tegangan menjadi potensi terbesar tunjukkan stopper.
Tuan Mystère
Saya percaya Anda juga dapat menggunakan pin digital untuk memberi daya pada sebuah sensor, jadi nyalakan saja pin digital sehubungan dengan VCC indera dan berbagi analog yang sama.
Ciasto piekarz
10

Mungkin penting untuk diingat bahwa chip ATmega Arduino sendiri menggunakan MUX analog. Chip Uno-based (ATmega328) hanya memiliki ADC tunggal. 6 input analog sebenarnya adalah MUX yang menghubungkan ke satu ADC.

Inilah sebabnya mengapa Anda hanya dapat membaca 1 input analog pada satu waktu.

Saat memperluas input analog, mungkin perlu mempertimbangkan berapa banyak waktu yang diperlukan untuk melakukan semua MUXing ini dan apakah ADC eksternal tambahan diperlukan dalam aplikasi Anda.

baldengineer
sumber
1

Pertimbangkan ini: tambahkan ATtiny 85 dengan komunikasi serial dengan Arduino, ia menggunakan 2 pin untuk Rx, Tx, dan Anda memiliki 3 pin lagi yang dapat digunakan sebagai analog. Ini aay Anda dapat mengembangkan protokol Anda sendiri, ATtiny dapat memproses algoritm dan mengirim informasi yang diproses ke Arduino, juga sangat murah, saya mencobanya sendiri itu adalah arsitektur yang bagus saya pikir.

Selamat siang

Avi
sumber