Menggunakan saklar SPST sebagai input digital?

10

Saya baru mengenal "teknik elektro" dan saya sedang mengerjakan proyek arduino kecil. Saya ingin sakelar SPST digunakan sebagai input digital di papan tulis.

Saya memiliki salah satu saklar yang terhubung ke posative dan yang lainnya terhubung ke input digital. Masalah dengan ini adalah bahwa ketika mematikannya saya tidak bisa memastikan input akan di-ground. Bagaimana saya bisa memastikan input di-ground ketika sakelar dimatikan?

Apakah ini akan berhasil jika saya menghubungkan input digital ke resistor yang terhubung ke ground sehingga ketika sakelar dimatikan maka akan terhubung ke ground, tetapi ketika sakelar di atasnya tidak akan mati - apakah itu berhasil?

Spongebob
sumber

Jawaban:

9

Solusi paling konvensional adalah menghubungkan satu sisi saklar ke ground. Hubungkan yang lain ke input digital, dan juga ke resistor antara 1 dan 10 K ohm menuju pasokan positif.

Sebaliknya, dengan resistor pull down seperti dijelaskan Bruno, mungkin tetapi kurang disukai. Banyak input sudah memiliki tingkat pull-up implisit dan akan membaca '1' jika tidak terhubung, meskipun tidak cukup andal. Tetapi jika saklar Anda sudah terhubung ke rail positif, maka pull down adalah solusi yang oke, meskipun banyak yang lebih suka menggunakan resistor kecil ketika menghubungkan input logika ke rail positif.

Banyak mikrokontroler juga memiliki pullup internal dan / atau pull down resistor pada pin GPIO yang dapat diaktifkan dengan menulis ke register konfigurasi. Jika Anda mengendarai input mikrokontroler seperti itu, Anda mungkin tidak memerlukan resistor tarik-turun eksternal sama sekali, meskipun tidak semua mikrokontroler memiliki fitur ini.

Chris Stratton
sumber
4
Selain itu, jika Anda menggunakan uC dengan pull up atau pull down bawaan, ada baiknya untuk mengaktifkannya pada pin yang tidak digunakan untuk mempertahankannya dalam kondisi yang diketahui.
Matt Young
Sebenarnya lebih mudah, untuk proyek saya untuk menghubungkan switch ke ground. Jadi saya akan coba gunakan pull up resistor. Terima kasih!
Sponge Bob
2
Bagus! Kembalilah ketika Anda ingin bertanya kepada kami tentang "alihkan bouncing" :)
gbarry
Ternyata Arduino akan melakukan pullup secara otomatis. Saya tidak yakin bagaimana, tetapi dalam kode ada Digital "INPUT_PULLUP" dan saya bahkan tidak perlu resistor. Itu mudah. Juga, tentang saklar bouncing, saya perhatikan ketika saya sedang memantau output serial. Jadi saya baru saja menambahkan penundaan 3ms dalam kode. Itu menyelamatkan saya perjalanan lain ke toko. :)
Sponge Bob
Jika Anda mengarungi lembar data ATMEGA Anda akan melihat ada sedikit yang dapat ditulis dalam register konfigurasi untuk mengaktifkan pullup. Perpustakaan Arduino hanya membuatnya lebih nyaman. Untuk pantulan, mengabaikan input (itu) untuk sementara waktu adalah hal yang biasa, meskipun 3ms mungkin agak pendek. Jika penundaan memblokir seluruh sistem Anda, Anda mungkin harus membuatnya singkat, jika hanya mengabaikan input itu daripada Anda dapat membuatnya sedikit lebih lama karena aktivasi ulang yang disengaja akan tetap lebih lambat.
Chris Stratton
9

Ya itu akan bekerja seperti yang Anda gambarkan. Itu disebut resistor pull-down karena meyakinkan bahwa ketika kontak terbuka input digital berada pada keadaan logika 0 (rendah). Biasanya Anda dapat menggunakan resistor 10 KΩ untuk tujuan ini.

Bruno Ferreira
sumber
2

Itu akan bekerja, dan akan memberi Anda logika positif: tingkat tinggi (logika "1") ketika saklar ditutup.

Tapi seperti kata Chris, hal yang terbalik lebih umum: saklar terhubung ke ground, dan resistor pull-up (bukan pull-down) ke catu daya. Logika Anda akan terbalik: logika "1" akan sesuai dengan sakelar terbuka.

Alasan yang bagus untuk versi pull-up adalah karena sebagian besar mikrokontroler mengintegrasikannya, dan Anda dapat mengaktifkan / menonaktifkannya tergantung pada kebutuhan Anda. Beberapa mikrokontroler juga memiliki pull-down yang dapat dikonfigurasi, tetapi ini kurang umum.

Jika Anda menginginkan pull-up eksternal 10 kΩ mungkin merupakan nilai yang baik. Input mikrokontroler dapat memiliki arus bocor hingga 1 μA, dan kemudian 10 kΩ akan menjatuhkan 10 mV yang dapat diabaikan. Nilai yang lebih rendah tentu mungkin, tetapi perlu diingat bahwa mereka akan memiliki arus yang lebih besar ke ground ketika saklar ditutup. Sebuah resistor 1 kΩ akan menarik 5 mA pada pasokan 5 V, yang merupakan pemborosan daya. Untuk 10 kΩ itu hanya 500 μA. Untuk aplikasi berdaya sangat rendah, Anda dapat meningkatkan nilainya menjadi 100 kΩ, tetapi ingat arus bocor; 1 μA akan memberikan penurunan 100 mV!

stevenvh
sumber