検索コード

ArduinoコードでNJK-5002Cホールセンサーを使用する方法

ArduinoコードでNJK-5002Cホールセンサーを使用する方法

はじめに

このガイドでは、NJK-5002Cホール効果センサーとArduinoを使用した磁場検出システムの構築方法を説明します。このプロジェクトでは、マグネットを使用してリレーをトリガーし、電球やファンなどのAC負荷を制御する方法を示します。これは、低電圧の制御信号を使用してAC駆動デバイスを自動化する、実用的で安全な方法です。

核となる考え方は、ホールセンサーが磁場の存在を検出するというものです。マグネット(具体的にはS極)がセンサーに近づくと、センサーはLow信号を出力します。Arduinoはこの信号を読み取り、リレーモジュールを起動します。リレーはスイッチとして機能し、AC電源を負荷に接続または切断します。この設定は、多くの自動化プロジェクトの基本的な構成要素です。

この技術を使用して構築できる実用的なプロジェクトのアイデアをいくつか紹介します:

  • 自動照明:マグネットが付いたドアや窓が開いたときに照明を点灯します。
  • セキュリティアラーム:磁気接点が切断されたときにアラームや照明をトリガーします。
  • 生産ラインの計数:マグネットが取り付けられたアイテムがセンサーを通過する際に、コンベアベルト上のアイテムを計数します。
  • 位置検出:マグネットが取り付けられたロボットアームや機械部品の位置を検出します。
  • 安全インターロック:安全ガードが開かれたときに機械への電源を遮断します。

必要なハードウェア

  • Arduino Uno(または互換ボード)
  • NJK-5002Cホール効果センサー
  • リレーモジュール(5V)
  • AC負荷(例:電球や小型ファン)
  • AC負荷用電源コード
  • ジャンパーワイヤー
  • マグネット(S極が明確にマークされたもの)

配線ガイド

このプロジェクトの配線は簡単です。センサーとリレーモジュールはどちらもArduinoの5VおよびGNDピンから電源を供給されます。センサーからの信号はデジタル入力ピンで読み取られ、リレーはデジタル出力ピンで制御されます。

接続の内訳は以下のとおりです:

  • NJK-5002Cセンサー:
    • 茶色のワイヤー → Arduino 5V
    • 青いワイヤー → Arduino GND
    • 黒いワイヤー → Arduinoデジタルピン2
  • リレーモジュール:
    • VCCピン → Arduino 5V
    • GNDピン → Arduino GND
    • IN(または信号)ピン → Arduinoデジタルピン8
  • AC負荷:
    • AC負荷の電源コードの1本のワイヤーを切断します。
    • 切断したワイヤーの一端をリレーのノーマルオープン(NO)端子に接続します。
    • 切断したワイヤーのもう一端をリレーのコモン(COM)端子に接続します。

(ビデオの05:09時点) 以下の図はこれらの接続を示しています。リレーはLowトリガータイプであり、信号ピンがLOWに設定されると起動することに注意してください。

Arduino code to use an NJK-5002C Hall sensor
NJK-5002C ホールセンサーを使用するための Arduino コード — Arduino code to use an NJK-5002C Hall sensor

コードの説明

このプロジェクトのArduinoコードはシンプルで、センサーの読み取りとリレーの制御に焦点を当てています。設定できるコードの主要部分はスケッチの先頭にあります。

#define sensorPin  2 // ピン2
#define relayPin 8 // ピン

const int wait = 3000;// スイッチON後、この時間待機します
  • #define sensorPin 2:これは、ホールセンサーの黒いワイヤーが接続されているArduinoデジタルピンを定義します。利用可能な任意のデジタルピンに変更できます。
  • #define relayPin 8:これは、リレーモジュールのINピンに接続されているArduinoデジタルピンを定義します。利用可能な任意のデジタルピンに変更できます。
  • const int wait = 3000;:これは非常に重要な変数です。マグネットが検出された後、リレーがONのままになる時間をミリ秒単位で設定します。ビデオでは3000ms(3秒)に設定されています。マグネットが取り外されたときにリレーをすぐにオフにしたい場合は、これを0に設定します。(ビデオの08:15時点)

コードはまた、メインループの最後にdelay(300)を使用しています。これは、急速で意図しないオン/オフ切り替えを防ぐためのデバウンス遅延です。この値は調整できますが、安定した動作には100msから300msの設定が一般的に適しています。(ビデオの11:03時点)

ライブプロジェクトデモンストレーション

ビデオデモンストレーションでは、システムがAC電球で動作している様子が示されています。マグネットのS極がセンサーに近づけられると、センサーのLEDが点灯し、ArduinoがLOW信号を読み取り、リレーを起動します。これによりAC電源が電球に接続され、電球が点灯します。シリアルモニターにも「Sensed」と表示されます。

(ビデオの11:19時点) センサーは極性に敏感であることに注意することが重要です。マグネットのS極でのみトリガーされます。N極は検出されません。さらに、確実な検出のためには、マグネットがセンサーの面に非常に近く、適切に位置合わせされている必要があります。デモンストレーションでは、センサーが側面や距離を置いては機能しないことが強調されています。

チャプター

  • [00:00] はじめにとプロジェクト概要
  • [00:39] NJK-5002Cセンサーの仕様
  • [02:44] リレーモジュールと配線のセットアップ
  • [05:09] 完全な配線図とAC負荷の接続
  • [07:55] コードの説明
  • [11:19] ライブデモンストレーションとテスト
  • [13:30] 結論と最終的なヒント

画像

NJK-5002Cホールセンサーを使用するためのArduinoコード
NJK-5002Cホールセンサーを使用するためのArduinoコード
NJK-5002C ホールセンサーを使用するための Arduino コード
NJK-5002C ホールセンサーを使用するための Arduino コード
169-Arduino code to use an NJK-5002C Hall sensor
言語: 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
}

必要かもしれないもの

リソースと参考文献

まだリソースはありません。

ファイル📁

ファイルは利用できません。