Caută cod

Cod Arduino pentru utilizarea unui senzor Hall NJK-5002C

Cod Arduino pentru utilizarea unui senzor Hall NJK-5002C

Introducere

Acest ghid demonstrează cum să construiești un sistem de detectare a câmpului magnetic folosind un senzor cu efect Hall NJK-5002C și un Arduino. Proiectul arată cum să folosești un magnet pentru a declanșa un releu, care controlează apoi o sarcină de curent alternativ (AC), cum ar fi un bec sau un ventilator. Aceasta este o modalitate practică și sigură de a automatiza dispozitive alimentate cu AC folosind un semnal de control de joasă tensiune.

Ideea de bază este că un senzor Hall detectează prezența unui câmp magnetic. Când un magnet (mai exact, polul său sud) se apropie de senzor, acesta emite un semnal scăzut. Un Arduino citește acest semnal și activează un modul de releu. Releul acționează ca un comutator, conectând sau deconectând alimentarea AC la sarcina ta. Această configurație este o componentă fundamentală pentru multe proiecte de automatizare.

Iată câteva idei practice de proiecte pe care le poți construi cu această tehnologie:

  • Iluminat automat: Aprinde o lumină când o ușă sau o fereastră cu magnet este deschisă.
  • Alarmă de securitate: Declanșează o alarmă sau o lumină când un contact magnetic este întrerupt.
  • Numărare pe linia de producție: Numără articolele pe o bandă transportoare pe măsură ce trec pe lângă un senzor cu magnet atașat.
  • Detectarea poziției: Detectează poziția unui braț robotic sau a unei piese de mașină care are un magnet atașat.
  • Interblocaj de siguranță: Întrerupe alimentarea unei mașini când un dispozitiv de protecție este deschis.

Hardware necesar

  • Arduino Uno (sau orice placă compatibilă)
  • Senzor cu efect Hall NJK-5002C
  • Modul de releu (5V)
  • Sarcină AC (de exemplu, un bec sau un ventilator mic)
  • Cord de alimentare pentru sarcina AC
  • Fire de legătură (jumper wires)
  • Magnet (cu polul sud clar marcat)

Ghid de cablare

Cablarea pentru acest proiect este simplă. Senzorul și modulul de releu sunt alimentate ambele de la pinii de 5V și GND ai Arduino. Semnalul de la senzor este citit pe un pin digital de intrare, iar releul este controlat de un pin digital de ieșire.

Iată o defalcare a conexiunilor:

  • Senzor NJK-5002C:
    • Fir maro → Arduino 5V
    • Fir albastru → Arduino GND
    • Fir negru → Arduino Pin Digital 2
  • Modul de releu:
    • Pin VCC → Arduino 5V
    • Pin GND → Arduino GND
    • Pin IN (sau Signal) → Arduino Pin Digital 8
  • Sarcină AC:
    • Taie un fir din cordul de alimentare al sarcinii AC.
    • Conectează un capăt al firului tăiat la terminalul Normal Deschis (NO) al releului.
    • Conectează celălalt capăt al firului tăiat la terminalul Comun (COM) al releului.

(în video la 05:09) Diagrama de mai jos ilustrează aceste conexiuni. Reține că releul este de tip declanșare pe semnal scăzut, ceea ce înseamnă că se activează când pinul de semnal este setat la LOW.

Arduino code to use an NJK-5002C Hall sensor
Arduino code to use NJK-5002C hall sensor — Arduino code to use an NJK-5002C Hall sensor

Explicația codului

Codul Arduino pentru acest proiect este simplu și se concentrează pe citirea senzorului și controlul releului. Părțile cheie ale codului pe care le poți configura sunt la începutul schiței.

#define sensorPin  2 // pin 2 
#define relayPin 8 // pin

const int wait = 3000;// după activare, așteaptă această perioadă de timp
  • #define sensorPin 2: Aceasta definește pinul digital Arduino conectat la firul negru al senzorului Hall. Poți schimba aceasta la orice pin digital disponibil.
  • #define relayPin 8: Aceasta definește pinul digital Arduino conectat la pinul IN al modulului de releu. Poți schimba aceasta la orice pin digital disponibil.
  • const int wait = 3000;: Aceasta este o variabilă foarte importantă. Setează durata în milisecunde cât releul rămâne activat după detectarea magnetului. În video, este setată la 3000 ms (3 secunde). Dacă vrei ca releul să se oprească imediat când magnetul este îndepărtat, setează aceasta la 0. (în video la 08:15)

Codul folosește, de asemenea, un delay(300) la sfârșitul buclei principale. Aceasta este o întârziere de debounce pentru a preveni comutarea rapidă și neintenționată on/off. Poți ajusta această valoare, dar o setare de 100 ms până la 300 ms este, în general, bună pentru o funcționare stabilă. (în video la 11:03)

Demonstrație live a proiectului

În demonstrația video, sistemul este arătat funcționând cu un bec de AC. Când polul sud al unui magnet este adus aproape de senzor, LED-ul senzorului se aprinde, Arduino citește un semnal LOW și activează releul. Aceasta conectează alimentarea AC la bec, aprinzându-l. Monitorul serial afișează, de asemenea, "Sensed".

(în video la 11:19) Este crucial să reții că senzorul este sensibil la polaritate. Se va declanșa doar cu polul sud al magnetului. Polul nord nu va fi detectat. Mai mult, magnetul trebuie să fie foarte aproape și aliniat corect cu fața senzorului pentru o detectare fiabilă. Demonstrația subliniază că senzorul nu funcționează din lateral sau de la distanță.

Capitole

  • [00:00] Introducere și prezentare generală a proiectului
  • [00:39] Specificațiile senzorului NJK-5002C
  • [02:44] Modulul de releu și configurarea cablajului
  • [05:09] Diagrama completă de cablare și conexiunea sarcinii AC
  • [07:55] Explicația codului
  • [11:19] Demonstrație live și testare
  • [13:30] Concluzie și sfaturi finale

Imagini

Arduino code to use an NJK-5002C Hall sensor
Arduino code to use NJK-5002C hall sensor
Arduino code to use an NJK-5002C Hall sensor
Arduino code to use NJK-5002C hall sensor
169-Arduino code to use an NJK-5002C Hall sensor
Limba: C++
++
/*
 * This is the Arduino code to use NJK-5002C hall sensor to control a DC or AC load.
 * In the video, I have explained that this can be used without Arduino and with Arduino.
 * Watch video instructions on YouTube: https://youtu.be/7RQ8QoJWhpY
 * 
 * 
 * Written by Ahmad Shamshiri for Roboja Video, www.Robojax.com
 * Date: November 10, 2018, Saturday at 09:34 in Ajax, Ontario, Canada
 * Please keep this note with the code.
 * This code is available on Robojax.com
 * 
 * This code is "AS IS" without warranty or liability. Free to be used as long as you keep this note intact.
 * This code has been downloaded from Robojax.com
    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation, either version 3 of the License, or
    (at your option) any later version.

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with this program.  If not, see <https://www.gnu.org/licenses/>.
 */

#define sensorPin  2 // pin 2 
#define relayPin 8 // pin

const int wait = 3000;// after switched ON, wait for this amount of time

void setup() {

  // Robojax.com 20181110 NJK-5002C hall sensor
  pinMode(sensorPin, INPUT_PULLUP);// define pin as input for sensor
  // watch video explaining the INPUT_PULLUP
  //https://robojax.com?vid=robojax-push_botton_resistor
  
  pinMode(relayPin, OUTPUT);// define pin as output

  Serial.begin(9600);// initialize serial monitor with 9600 baud.
}

void loop() {
  // Robojax.com 20181110 NJK-5002C hall sensor
  int sensed = digitalRead(sensorPin);// read pin 2 and put the result in the "sensed" variable
  if(sensed == LOW){
    Serial.println("Sensed");
    digitalWrite(relayPin, LOW);// if sensed turn relay ON
    delay(wait);// keep the relay ON for the "wait" amount of time
  }else{
    digitalWrite(relayPin, HIGH);// else turn the relay OFF
    Serial.println("====");
  }
 delay(300);// delay for 0.3 seconds
  // Robojax.com 20181110 NJK-5002C hall sensor
}

Lucruri de care ai putea avea nevoie

Resurse și referințe

Încă nu sunt resurse.

Fișiere📁

Nu sunt disponibile fișiere.