Daftar Isi:

Cara Membaca Banyak Switch Dengan Satu Pin MCU: 4 Langkah
Cara Membaca Banyak Switch Dengan Satu Pin MCU: 4 Langkah

Video: Cara Membaca Banyak Switch Dengan Satu Pin MCU: 4 Langkah

Video: Cara Membaca Banyak Switch Dengan Satu Pin MCU: 4 Langkah
Video: BELAJAR ARDUINO #106 - Banyak Pushbutton VS Satu Pin Analog 2024, Juni
Anonim
Cara Membaca Banyak Sakelar Dengan Satu Pin MCU
Cara Membaca Banyak Sakelar Dengan Satu Pin MCU

Pernahkah Anda menenggak sebuah proyek dan proyek itu terus tumbuh dan berkembang, sementara Anda menambahkan lebih banyak hal ke dalamnya (kami menyebutnya sebagai Feaping Creaturism)? Pada proyek baru-baru ini, saya sedang membangun pengukur frekuensi dan menambahkan generator sinyal / synthesizer frekuensi lima fungsi. Saya segera berakhir dengan lebih banyak sakelar daripada pin yang tersisa, jadi apa yang harus dilakukan seorang pria?

Namun, saya segera memiliki tujuh sakelar lagi di Funbox saya (ya, itulah yang saya sebut generator fungsi saya…Saya tahu, saya tidak punya kreativitas) dan inilah instruksi singkat yang menunjukkan kepada Anda bagaimana Anda dapat melakukan hal yang sama. Itu tidak memerlukan register geser atau IC tertentu. Bahkan, itu juga tidak memerlukan mikrokontroler, jika semikonduktor diskrit adalah cara Anda menggulung. Inilah salah satu cara Anda dapat membaca/mengelola beberapa sakelar menggunakan satu pin pada AVR Anda (atau mikrokontroler lain…Saya pernah mendengar ada mikrokontroler lain selain AVR, tetapi saya tidak dapat membayangkannya…).:)

Langkah 1: Yang Esensial (tidak Benar-benar)

Untuk mencapai ini, Anda memerlukan beberapa komponen. Ini membantu untuk memiliki banyak sakelar yang harus Anda kelola. Anda juga memerlukan beberapa resistor dan mikrokontroler yang memiliki ADC (Konversi Analog-ke-Digital) atau cara lain yang Anda inginkan untuk menunjukkan bahwa ada sakelar yang diaktifkan dan sakelar mana yang diaktifkan.

Jika Anda mau, Anda dapat menggunakan osilator yang dikontrol tegangan untuk menunjukkan hal ini, mungkin dengan beberapa lampu yang berkedip, atau sebagai alternatif, dengan suara. Dalam 'ible ini, saya akan berpura-pura kita menggunakan AVR, tetapi di dunia Anda, Anda bisa berpura-pura apa pun yang membuat Anda bahagia. Aku merindukan Bob Ross.

Langkah 2: Pembagi Tegangan

Pembagi Tegangan
Pembagi Tegangan
Pembagi Tegangan
Pembagi Tegangan

Pada dasarnya, cara yang akan kita lakukan adalah dengan menggunakan teknik dan rangkaian yang disebut pembagi tegangan. Pembagi tegangan melakukan, seperti yang Anda duga, membagi tegangan V,, in,, dengan beberapa nilai yang Anda tentukan. Anda dapat membagi tegangan dengan beberapa komponen, termasuk kapasitor dan induktor, tetapi di sini saya akan melakukannya dengan resistor yang bagus. Ide Apa yang kami lakukan adalah menempatkan dua komponen secara seri yang akan menyebabkan, masing-masing secara individual, penurunan tegangan di seluruh komponen. Lihat gambar pertama jika saya tidak masuk akal. Ada beda potensial 9V dari rel ke rel. Antara 9V dan 0V ada dua resistor secara seri. Masing-masing akan mengalami penurunan tegangan sendiri, tergantung pada resistansi, seperti yang mungkin Anda ingat dari V = IR. Jika Anda melakukan pengukuran tegangan antara dua resistor, Anda akan mendapatkan beberapa nilai antara 9V dan 0V, tergantung pada berapa banyak tegangan yang turun pada resistor pertama dan berapa banyak yang tersisa untuk dijatuhkan pada resistor ke-2, sebelum 0V. Ada rumus langsung untuk menghitung penurunan tegangan pada resistor dalam situasi ini dan terlihat seperti ini. Biarkan tegangan pada resistor 1 (R1) menjadi V1 dan tegangan pada resistor dua (R2) menjadi V2. Karena saya tidak bisa menggunakan format lagi, lihat gambar 2 di bawah untuk rumusnya… Jadi, dalam pembagi resistif kami, tegangan Vout dapat ditentukan dengan rumus kami untuk V2 (karena kami akan mereferensikan GND ke 0V). Apa hubungannya ini dengan memiliki banyak sakelar yang terdeteksi dari satu pin? Nah, balik halamannya dan saya akan tunjukkan!

Langkah 3: Tangga Pembagi Tegangan

Tangga Pembagi Tegangan
Tangga Pembagi Tegangan

Sekarang anggaplah kita memiliki semua sakelar kita, mungkin enam atau delapan atau enam belas, semuanya terhubung melalui resistor yang masing-masing bertindak sebagai pembagi tegangan sehingga ketika keadaan pin sakelar berubah, tegangan dibaca dan berdasarkan level tegangan, kita dapat mengetahui sakelar mana yang baru saja diaktifkan. Lihat ke bawah. Pada gambar di bawah, saya telah menghubungkan dua blok sakelar. Blok paling atas memiliki dua sakelar, dan blok paling bawah memiliki lima sakelar. Anda dapat menghubungkan sakelar sakelar, sakelar sesaat, taktil, dll yang terpisah dengan cara yang sama. Yang penting untuk diperhatikan adalah resistor yang terhubung dengan sakelar Anda. Dalam contoh saya, saya hampir menggandakan resistansi resistor berikutnya untuk membuat celah tegangan yang mudah diukur dan tidak salah untuk sakelar sebelum atau sesudahnya. Jika Anda belum memperhatikan sebelumnya, lihat lagi, dan sadari bahwa kita kembali ke teman lama kita, pembagi tegangan resistif. Resistor pertama, 10k ohm, dihubungkan ke 5V dan resistor kedua -- resistor yang akan menentukan Vkeluar untuk pin SWITCH_ADC, terhubung ke setiap sakelar dan oleh karena itu, setiap sakelar dikaitkan dengan tegangan Vout tertentu yang dapat dibaca dari pin ADC yang terhubung di SWITCH_ADC. Selanjutnya, tentukan Vout yang diharapkan dari setiap sakelar seperti itu

Vout = Vin * (R2 / (R1 + R2))

untuk beralih satu:

Vout = 5V * (500 / (10000 + 500)) = 5*0,048 = 0,24V atau 240 mV

untuk saklar dua:

Vout = 5V * (2200 / (10000 + 2200)) = 5 * 0,18 = 0,9V atau ~900mV

dan seterusnya.. Jangan ragu untuk mengganti nilai Anda sendiri untuk R2 jika Anda hanya memiliki resistor tertentu yang berguna … Kuncinya di sini adalah menjaga celah tegangan yang cukup lebar di antara sakelar sehingga margin kesalahan apa pun pada ADC menang' t menempatkan Anda ke tegangan yang diharapkan dari saklar tetangga. Saya telah menemukan hal termudah untuk dilakukan adalah membangun tangga pembagi dan meletakkan multimeter/voltmeter pada pin ADC dan tekan setiap pin dan lihat nilai apa yang Anda dapatkan. Mereka harus cukup tepat untuk apa yang Anda hitung. Setelah Anda memiliki semua nilai tegangan yang diharapkan dari setiap sakelar menggunakan resistor tertentu, maka Anda dapat meminta MCU Anda membaca pin ADC dan membandingkannya dengan nilai yang Anda ketahui untuk menentukan sakelar mana yang ditekan. Misalnya, Anda telah mendaftarkan rutin layanan interupsi yang akan dipanggil setiap kali ada perubahan yang terdeteksi pada pin ADC. Di dalam ISR itu, Anda bisa membaca ADC dan membandingkan nilai itu dengan tabel sakelar Anda. Jika Anda menggunakan nilai ADC 8-bit, tegangan Anda akan diubah menjadi angka antara 0 dan 255 yang sesuai dengan tegangan antara 0V dan 5V. Ini mengasumsikan Anda telah mengkonfigurasi ADC Anda dengan cara ini.

Langkah 4: Ringkasan

Jadi, sekarang Anda harus tahu cara berhemat menggunakan pin GPIO untuk sakelar. Setiap kali Anda kehabisan pin GPIO, atau hampir tidak memiliki apa-apa untuk memulai, atau jika Anda menyadari bahwa Anda akan menggunakan bank sakelar, pembagi resistif adalah cara untuk menyelamatkan pin GPIO Anda sambil tetap menyediakan mekanisme yang kuat untuk mendeteksi akses sakelar.

Direkomendasikan: