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!
sumber
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 .
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:
Pada pin 3 Anda akan mengukur
HIGH
dan tombol harus terhubung ke pin dan ground. Resistor pull-up I / 0 internal memiliki nilai 50k.sumber
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.
sumber