Cari Kode

Pelajaran 7/31-2 : mendeteksi medan magnet menggunakan reed switch | Kit SunFounder

Pelajaran 7/31-2 : mendeteksi medan magnet menggunakan reed switch | Kit SunFounder

Mendeteksi medan magnet adalah salah satu cara paling sederhana dan paling memuaskan untuk memulai input digital pada Arduino. Dalam proyek ini Anda akan membangun detektor medan magnet menggunakan reed switch — sakelar kecil berlapis kaca yang menutup kontaknya setiap kali magnet mendekatinya. Karena reed switch berperilaku persis seperti tombol tekan (entah terbuka atau tertutup), ini adalah pengantar sempurna untuk fungsi digitalRead(), dan juga mengajarkan Anda mengapa resistor pull-down penting dan bagaimana pull-up input bawaan Arduino dapat menggantikannya sepenuhnya.

reed_switch

Setelah ini berfungsi, rangkaian yang sama menjadi inti dari banyak proyek dunia nyata. Berikut beberapa ide praktis yang dapat Anda coba:

  • Alarm pintu dan jendela — pasang reed switch pada kusen dan magnet kecil pada pintu; Arduino melaporkan "terbuka" begitu magnet menjauh.
  • Tachometer non-kontak — rekatkan magnet ke roda yang berputar dan hitung pulsa untuk mengukur RPM.
  • Pembaca meter air atau gas — banyak meter utilitas memiliki output pulsa magnetik yang dapat ditangkap dan dicatat oleh reed switch.
  • Sensor tutup laptop / enclosure — deteksi saat tutup ditutup untuk memicu sleep atau LED status.
  • Speedometer sepeda — magnet pada jari-jari dan reed switch pada garpu memberi Anda satu pulsa per putaran roda.
  • Deteksi tamper — sembunyikan pasangan magnet dan reed switch di dalam enclosure agar Anda tahu jika telah dibuka.

Cara Kerja Reed Switch

lesson-7-reading-reed-with-magnet-multimeter

Reed switch adalah kapsul kaca kecil yang berisi dua bilah feromagnetik tipis (dalam video pada 12:38). Di hadapan medan magnet, bilah-bilah tersebut saling tertarik dan bersentuhan, menutup rangkaian. Lepaskan magnet dan bilah-bilah tersebut terpisah kembali, membuka rangkaian. Itulah seluruh prinsipnya — ini adalah sakelar tanpa tombol bergerak, tanpa keausan akibat tekanan jari, dan tanpa perlu kontak fisik dengan objek yang Anda deteksi.

Anda dapat memverifikasi perilaku ini dengan multimeter dalam mode kontinuitas (dalam video pada 13:59): tanpa magnet di dekatnya, meter menunjukkan rangkaian terbuka, dan begitu magnet mendekat, buzzer berbunyi dan meter membaca rangkaian tertutup. Karena sakelar ini secara elektrik identik dengan tombol tekan, kode dan pengkabelan Arduino sama seperti input digital lainnya.

Input Digital dan Resistor Pull Dijelaskan

Arduino membaca pin digital sebagai HIGH atau LOW. Pada board 5 V, apa pun di atas sekitar 2,2 V diperlakukan sebagai HIGH dan apa pun di bawah sekitar 1,5 V sebagai LOW (dalam video pada 01:49). Masalahnya adalah sakelar yang terhubung langsung antara pin dan 5 V membuat pin mengambang saat sakelar terbuka — pin tidak terhubung ke apa pun, sehingga menangkap noise dan melaporkan nilai acak.

why_use_resistor_switch-1
why_use_resistor_switch-2
why_use_resistor_switch-3
why_use_resistor_switch-4
why_use_resistor_switch-5
why_use_resistor_switch-6
why_use_resistor_switch-7
why_use_resistor_switch-8
tombol tekan dengan INPUT_PULLUP

Itulah sebabnya resistor digunakan. Dua konfigurasi bekerja sama baiknya:

  • Pull-down: resistor 10 kΩ dari pin ke ground. Pin membaca LOW saat sakelar terbuka dan HIGH saat sakelar menghubungkan pin ke 5 V.
  • Pull-up: resistor 10 kΩ dari pin ke 5 V. Pin membaca HIGH saat sakelar terbuka dan LOW saat sakelar menghubungkan pin ke ground.

Arduino juga memiliki resistor pull-up internal yang dapat diaktifkan dalam perangkat lunak dengan INPUT_PULLUP (dalam video pada 19:52). Ini menghilangkan kebutuhan akan resistor eksternal sepenuhnya — pin tetap HIGH saat idle, dan menutup sakelar ke ground akan menariknya menjadi LOW. Konsekuensinya adalah logikanya terbalik: ditekan (atau magnet ada) sekarang membaca 0 bukan 1.

Perangkat Keras dan Komponen

  • Arduino Uno (atau papan apa pun yang kompatibel)
  • Modul reed switch atau reed switch telanjang
  • Resistor 10 kΩ (hanya diperlukan untuk versi pull-down)
  • Breadboard dan kabel jumper
  • Magnet kecil untuk pengujian
  • Kabel USB untuk pemrograman dan daya

Panduan Pengkabelan

lesson-7-reading-reed-schematic
lesson-7-reading-reed-wiring

Reed switch dikabeli persis seperti tombol tekan. Satu kaki reed switch terhubung ke 5 V, kaki lainnya terhubung ke pin 2 Arduino dan ke salah satu ujung resistor 10 kΩ. Ujung resistor lainnya terhubung ke ground (dalam video pada 14:40). Ini adalah konfigurasi pull-down, jadi pin membaca LOW saat tidak ada magnet dan HIGH saat magnet menutup sakelar.

Pada breadboard, letakkan reed switch sehingga kedua kakinya berada di baris yang berbeda, hubungkan resistor dari baris yang sama dengan salah satu kaki ke rel ground, jalankan kabel merah dari kaki lainnya ke rel 5 V, dan kabel hijau dari persimpangan reed switch dan resistor ke pin 2 (dalam video pada 15:53). Hitam ke ground, merah ke 5 V, hijau ke pin 2 — konvensi warna yang sama yang digunakan di seluruh kit SunFounder.

Jika Anda lebih memilih melewatkan resistor, kabeli satu kaki reed switch ke pin 2 dan kaki lainnya langsung ke ground, lalu aktifkan INPUT_PULLUP dalam kode seperti dijelaskan di bawah.

Penjelasan Kode

Sketsa ini sengaja dibuat sangat kecil. Semua yang ingin Anda ubah berada di dua tempat di bagian atas file.

int reedPin = 2;//the pin reed switch is connected to 

void setup() {
  Serial.begin(9600);
  pinMode(reedPin, INPUT);
}

reedPin — ubah angka ini jika Anda mengabeli reed switch ke pin digital yang berbeda. Pin digital apa pun pada Uno berfungsi; pin 2 digunakan di sini hanya karena praktis pada breadboard.

Serial.begin(9600) — mengatur kecepatan serial monitor. Jika Anda mengubah nilai ini, Anda juga harus mengubah dropdown baud rate di jendela Serial Monitor, jika tidak Anda akan melihat karakter sampah (dalam video pada 11:25).

pinMode(reedPin, INPUT) — mengonfigurasi pin sebagai input impedansi tinggi sehingga dapat merasakan tegangan yang ditetapkan oleh reed switch dan resistor. Jika Anda menggunakan pull-up internal sebagai gantinya, ubah baris ini menjadi pinMode(reedPin, INPUT_PULLUP); dan ingat bahwa pembacaannya akan terbalik.

Loop hanya membaca pin dan mencetak hasilnya:

void loop() {
  Serial.println(digitalRead(reedPin));
  delay(10);       
}

digitalRead(reedPin) mengembalikan 1 saat pin HIGH dan 0 saat LOW. Karena nilainya langsung diteruskan ke Serial.println(), tidak perlu variabel perantara — pembacaannya dicetak langsung. Dengan pengkabelan pull-down, 0 berarti "tidak ada medan magnet" dan 1 berarti "magnet terdeteksi" (dalam video pada 18:31).

delay(10) mengontrol seberapa sering pembacaan dicetak. Sepuluh milidetik cukup cepat sehingga Anda akan melihat nilainya berubah seketika saat magnet mendekat. Jika Anda lebih suka tampilan yang lebih tenang, Anda dapat menaikkannya ke 200 ms, tetapi perhatikan bahwa ini juga memperlambat deteksi (dalam video pada 12:01).

Demonstrasi Proyek Langsung

Setelah mengunggah sketsa, buka Serial Monitor dan atur baud rate ke 9600. Tanpa magnet di dekatnya, jendela akan dipenuhi angka nol. Dekatkan magnet kecil ke kapsul kaca dan outputnya langsung berubah menjadi satu; jauhkan magnet dan kembali ke nol (dalam video pada 17:04). Responsnya instan dan berfungsi bahkan ketika magnet dipegang satu atau dua sentimeter dari sakelar.

lesson-7-reading-reed-wiring-on-breadboard

Jika Anda membuat versi pull-up sebagai gantinya, logikanya terbalik: monitor menunjukkan 1 saat diam dan 0 saat magnet ada (dalam video pada 22:13). Bagaimanapun, Anda sekarang memiliki detektor medan magnet tanpa kontak yang andal yang harganya hampir tidak ada dan dapat dimasukkan ke salah satu ide proyek yang tercantum di bagian atas artikel ini.

Versi tombol tekan dari pelajaran pembacaan digital yang sama ini dibahas secara terpisah dalam Pelajaran 7/31: Tombol Tekan Digital Read, mendeteksi medan magnet SunFounder Kit | Robojax.

Proyek terkait dari video ini

Bab

  • [00:00] Pendahuluan: dua contoh pembacaan digital
  • [01:33] Apa arti pembacaan digital dan HIGH/LOW
  • [02:46] Cara kerja sakelar tombol tekan
  • [03:25] Teori resistor pull-up dan pull-down
  • [05:18] Pengkabelan tombol tekan pada breadboard
  • [08:21] Membuka dan menjelaskan sketsa tombol
  • [10:55] Mengunggah dan menguji contoh tombol
  • [12:38] Memperkenalkan sakelar reed dan mengujinya dengan multimeter
  • [14:40] Menghubungkan sakelar reed ke pin 2
  • [16:46] Menguji sakelar reed dengan magnet
  • [17:19] Menjelaskan sketsa sakelar reed
  • [19:45] Menggunakan INPUT_PULLUP tanpa resistor eksternal

Gambar

reed_switch
reed_switch
push button with INPUT_PULLUP
push button with INPUT_PULLUP
why_use_resistor_switch-1
why_use_resistor_switch-1
why_use_resistor_switch-2
why_use_resistor_switch-2
why_use_resistor_switch-3
why_use_resistor_switch-3
why_use_resistor_switch-4
why_use_resistor_switch-4
why_use_resistor_switch-5
why_use_resistor_switch-5
why_use_resistor_switch-6
why_use_resistor_switch-6
why_use_resistor_switch-7
why_use_resistor_switch-7
why_use_resistor_switch-8
why_use_resistor_switch-8
lesson-7-reading-reed-with-magnet-multimeter
lesson-7-reading-reed-with-magnet-multimeter
lesson-7-reading-push-button-schematic
lesson-7-reading-push-button-schematic
lesson-7-reading-push-button-wiring
lesson-7-reading-push-button-wiring
lesson-7-reading-reed-schematic
lesson-7-reading-reed-schematic
lesson-7-reading-reed-wiring
lesson-7-reading-reed-wiring
lesson-7-reading-reed-wiring-on-breadboard
lesson-7-reading-reed-wiring-on-breadboard
932-Lesson 7/31-2: Digital read, working with reed switch
Bahasa: C++
/*
 * Lesson 7/31-2: Digital read, working with reed switch
Download and resource page https://robojax.com/RJT590
watch video tutorial https://www.youtube.com/watch?v=yyJrqFKn-X4
 * written/updated by Ahmad Shamshiri www.Robojax.com
 * Dec 12, 2022
 * 

*/

int reedPin = 2;//the pin reed switch is connected to 

void setup() {
  Serial.begin(9600);
  pinMode(reedPin, INPUT);
}

void loop() {
  Serial.println(digitalRead(reedPin));
  delay(10);       
}

Sumber daya & referensi

Berkas📁

Pustaka Arduino (zip)

Panduan Pengguna