Tutorial Serial Baca Digital - menghitung nilai resistor

9

Arduino Digital Read Serial tutorial memandu Anda melalui kabel tombol sederhana. Pertanyaan saya terpusat di sekitar resistor.

Mengapa resistor itu perlu?

Saya pikir saya mengerti ini, tetapi perbaiki saya jika saya salah. Untuk memastikan bahwa pin input membaca sinyal rendah, dan tidak mengambang, kita harus menghubungkan pin ke ground ketika tombol tidak ditekan. Ketika tombol ditekan, kita akan memiliki sinyal 5V yang mengalir ke pin dan ground. Hukum tegangan Kirchhoff menyatakan bahwa total tegangan dalam loop tertutup harus sama dengan nol, jadi kita harus berurusan dengan 5V ini yang mengalir langsung ke ground. Itu sebabnya kami menempatkan resistor antara tombol dan ground.

Bagaimana nilai resistor dipilih?

Inilah yang saya tidak jelas. Hukum Ohm menyatakan bahwa ...

resistance = voltage / current

Ini adalah pasokan 5V dan spesifikasi Arduino Uno mengatakan bahwa pin menyediakan 40 mA arus DC. Begitu..

resistance = 5V / 0.04A = 125 Ohms

Dalam tutorial Digital Read Serial , mengapa kita memiliki resistor 10K Ohms? Itu keterlaluan, kan? Yang mengarah ke pertanyaan lain: Dapatkah Anda menempatkan terlalu banyak perlawanan di tempat, jika satu-satunya tujuan Anda adalah untuk menghilangkan tegangan?

Terima kasih sebelumnya atas umpan balik apa pun!

Rip Leeb
sumber

Jawaban:

6

Anda sangat dekat. Resistor ada untuk bertindak sebagai resistor pull down; Jika pin input mengambang itu hanya antena mengambil statis acak. Kuncinya adalah ketika positif disediakan (dengan menekan tombol) sumber positif perlu "membanjiri" resistor pull down sehingga pin input berbunyi positif.

Jika tidak ada perlawanan, maka pin input akan membaca di tengah jalur langsung yang tidak mendukung positif atau negatif. Selain dari kekurangan langsung yang akan terjadi, negara mana yang akan dibaca oleh arduino, saya curiga akan acak atau properti dari catu daya; Mungkin masih membaca dasar.

Dengan resistor, sinyal dibaca langsung terhubung ke positif, sebelum hambatan beban. Dengan cara ini pasti akan mendapatkan sinyal TINGGI.

Ukuran yang tepat dari resistor adalah konsekuensi kecil. Terlalu kecil dan Anda membuang-buang arus, tetapi terlalu banyak perlawanan secara efektif hanya memutus hubungan lagi. Ada rentang nilai yang sangat luas yang akan bekerja dengan baik di antara nilai-nilai itu.

Saya ingin mencatat bahwa ketika pin Arduino diatur ke mode input, itu secara efektif tidak akan memasok arus. Dapat dimoddeled secara seri dengan resistor 100 megaOhm. lihat http://arduino.cc/en/Tutorial/DigitalPins untuk detailnya.

BrettAM
sumber
2
Kuncinya di sini adalah bahwa jika Anda tidak menggunakan resistor, ketika saklar ditutup, Anda telah memendekkan volt +5 ke ground. Hubungan pendek langsung akan membebani catu daya dan menyebabkan rangkaian perlindungan pada catu daya, menyebabkan seluruh Arduino mati. Anda ingin resistor dengan impedansi yang cukup tinggi untuk menjaga aliran arus rendah. Saya biasanya menggunakan resistor 100k, yang banyak untuk menarik sinyal input ke 0 volt ketika saklar terbuka, dan hanya memungkinkan 0,00005 pas untuk mengalir, jumlah arus yang sepele. Sebuah resistor 10k juga berfungsi, tetapi itu memungkinkan arus 10 kali lebih banyak untuk mengalir.
Duncan C
2

Mengapa resistor itu perlu?

Input Arduino memiliki daya tahan yang sangat tinggi. Datasheed dari Atmega328 mengatakan 100 MOhm untuk ADC, nilai-nilai tinggi seperti itu bagus, tetapi juga memiliki kelemahan untuk menangani efek parasit (resistensi, induktansi, kapasitansi). Efek seperti itu juga dapat digunakan sebagai Sensor Kapasitansi .

Bagaimana nilai resistor dipilih?

Resistor harus memiliki nilai arbitrer, yang lebih kecil dari resistansi input. 10k dan di atas bagus untuk menonaktifkan kebocoran input.

Namun Anda juga dapat meninggalkan resistor saat Anda menggunakan reseptor pull-up internal. Dalam hal ini Anda berurusan dengan logika negatif:

pinMode(3, INPUT);
digitalWrite(3, HIGH);

Pada pin 3 Anda akan mengukur HIGHdan tombol harus terhubung ke pin dan ground. Resistor pull-up I / 0 internal memiliki nilai 50k.


sumber
1

Anda sudah mendapatkan beberapa jawaban yang bagus tentang mengapa resistor pull-down diperlukan.

Untuk meringkas, Anda perlu menghubungkan input ke ground untuk menjaga input dari mengambang semi-acak antara tinggi dan rendah. Anda menggunakan resistor sehingga ketika Anda menutup sakelar, Anda tidak membuat hubungan pendek antara pasokan + 5V dan arde.

Namun, poin lainnya. Input Arduino mencakup resistor pull-up internal yang dikendalikan perangkat lunak opsional . Jika Anda pertama-tama mengatur pin sebagai input, kemudian menulis nilai TINGGI ke port itu, itu akan mengaktifkan resistor pull-up. Itu menyebabkan pin dibaca sebagai TINGGI ketika tidak ada yang terhubung dengannya.

Anda kemudian dapat menghubungkan sakelar ke ground alih-alih + 5V. Anda kemudian perlu mengubah logika kode Anda untuk memperlakukan nilai TINGGI sebagai tidak ditekan, dan nilai RENDAH sebagai ditekan. Ini memungkinkan Anda sedikit menyederhanakan kabel, karena Anda tidak memerlukan resistor eksternal.

Duncan C
sumber