皆さんこんにちは、本日のチュートリアルへようこそ。 本日は、Arduinoでホール効果センサーを使用する方法について見ていきます。
ホール効果センサーは、磁界の有無によって出力が変化するセンサーです。 つまり、ホール効果センサが生成する出力信号は、その周囲の磁界密度の関数となります。 周囲の磁束密度があらかじめ設定されたある閾値を超えると、センサーはそれを検知し、磁界の存在を示すためにホール電圧と呼ばれることもある出力電圧を生成します。
ホールセンサーはその汎用性により非常に普及しており、多くの異なるアプリケーションで使用されます。 ホール効果センサーの一般的なアプリケーションの 1 つは、位置検出、距離および速度の測定に使用される自動車用システムです。 また、スマートフォンやコンピュータなどの最新デバイスにも使用されており、磁界の存在を利用して回路を作動または停止させるさまざまなタイプのスイッチにも使用されています。 どちらのタイプであっても、通常、3ピンのパッケージで提供され、1つのピンは信号を表し、残りの2つはセンサに電力を供給します。
今日のチュートリアルでは、ホール効果センサーをLEDと一緒にArduinoに接続し、ホール効果センサーがどのように動作するかを実演します。 磁石をホール効果センサーに近づけるとLEDが点灯し、磁石を離すと消灯するようにArduinoをプログラムします。
必要なコンポーネント
このプロジェクトを構築するには、次のコンポーネントが必要です。
- Hall Effect Sensor
- Cheap Arduino Uno
- Breadboard mini
- LED
- Wires
- Magnets
Schematics
このプロジェクトの回路図は、ホールセンサーの3つのピンとLEDをArduinoに接続するだけのシンプルなものです。 下記の回路図のように部品を接続します。
接続は、さらに分かりやすいように下記に記述しています。
ホール センサー – Arduino
VCC - 5VGND - GNDSIG - D2
Arduino には 13 ピンに内部抵抗が取り付けられているので、LED を直接 Arduino の 13 ピンに正の足を差し込み、もう一方の足を抵抗なしでアース ピンに差し込むことができます。
回路図ができたので、このプロジェクトのコードに進みます。
コード
このプロジェクトのコードは本当にシンプルで、先に述べたようにやりたいことは、磁場を感知しているかどうかをチェックして、イエスならLEDを点灯させ、ノーならLEDを消灯させるということです。
このプロジェクトのコードを簡単に説明すると、まずホールセンサーとLEDを接続するArduinoのピンを宣言し、次にホールセンサーからの値を格納する変数「state」を作成します。
////////////////////////////////////////////// // HALL EFFECT SENSOR DEMO // // Author: Nick Koumaris //// http://www.educ8s.tv ///////////////////////////////////////////////int hallSensorPin = 2; int ledPin = 13; int state = 0;
次にvoid setup関数で、LEDとホールセンサーを接続するArduinoのピンのモードを宣言します。
void setup() { pinMode(ledPin, OUTPUT); pinMode(hallSensorPin, INPUT); }
次にvoid loop関数ですが、ここでの作業は押しボタンでArduinoを経由してLEDを制御したい場合と同じです。 ホールセンサーの出力を読み取り、stateという変数に格納しています。 値がLOWのときはLEDを、HIGHのときはLEDをLOWにするのです。 ホールセンサーは磁界を検知するとHighになる場合があるので、構成が異なる場合があります。
void loop(){ state = digitalRead(hallSensorPin); if (state == LOW) { digitalWrite(ledPin, HIGH); } else { digitalWrite(ledPin, LOW); }}
このプロジェクトの完全なコードを以下に示します。また、このチュートリアルの最後にあるダウンロードセクションからダウンロードできます。
////////////////////////////////////////////// // HALL EFFECT SENSOR DEMO // // //// http://www.educ8s.tv ///////////////////////////////////////////////int hallSensorPin = 2; int ledPin = 13; int state = 0; void setup() { pinMode(ledPin, OUTPUT); pinMode(hallSensorPin, INPUT); }void loop(){ state = digitalRead(hallSensorPin); if (state == LOW) { digitalWrite(ledPin, HIGH); } else { digitalWrite(ledPin, LOW); }}
Demo
コードをコピーして、Arduinoボードにアップロードします。 下の画像のように、磁石を近づけるとLEDが切り替わるのがわかると思います。