ホールセンサーの種類と使い方

2021年2月8日

どもです。
今回のエントリは、表題にある「ホールセンサー」についてです。

1.「ホールセンサー」って何?

ホールセンサーとは、

「ホール効果を利用して『磁石が発する磁界』や『電流が発する磁界』を電気信号に変換して出力する、非接触型の磁気センサー」

だそうです。
この文章から理解できる内容としては、
「磁石や電流が流れる電線が近づいたりしたことに反応するセンサー」
です。
ざっくりな説明ではありますが、そんな感じの理解で書き進めていこうと思います。
(正しい理解か否かについては、まぁ、イロイロあるとおもいますが…)

2.「ホールセンサー」の種類について

ホールセンサーにも、いくつか種類(タイプ)があります。
ここでは、簡単にですが、それらについて説明します。

2.1.ラッチタイプ

これは、近づく磁石の極の違いにより、出力が変化するセンサーです。
また、このタイプのセンサーは磁石が離れても、出力は変化しません。
センサーの出力を元に戻すためには、逆の極を近づける必要があります。

2.2.スイッチタイプ

このスイッチタイプには、「単極検出(ユニポーラ)」と「両極検出(オムニポーラ)」の2種類があります。
この漢字から読み取れる通り、これらは「SまたはN極のいずれかで出力が変化する」タイプと、「S/N極の両方で変化する」タイプです。
さらにこのタイプのセンサーは、磁石を離すと出力は元に戻ります。

2.3.アナログタイプ

先に書いた「ラッチタイプ」/「スイッチタイプ」の出力は、HIGH/LOW(ただし、1か0かではないです)の間で変化します。
しかし「アナログタイプ」では、磁石とセンサーの距離に従って直線的に出力が変化するタイプです。

これまで書いてきたホールセンサーの種類については、ココで図/グラフを用いて説明されています。

3.使ってみよう

さて。
実際にホールセンサーを使ってみます。
まず、ホールセンサーのピンですが、下記のようになっています。
回路を組む際にピンの接続を間違えると、期待する波形が得られないので注意が必要です。
Hall_sensor_pins
以下のように、回路を組みます。
Hall_sensor

ココで、ホールセンサと抵抗が並列で接続されています。
ホールセンサーは、磁石(正確には磁界)の変化によって、抵抗値が変化します。
そのため、何かの折に抵抗値が小さくなった際に、回路が直結されることを回避するため(と、理解しています)です。

次に、Arduinoに下記のスケッチを書き込みます。

#include "Arduino.h"
int digitalInputPin = 7;

/**
    * @brief   Setup function.
    */
void setup()
{
    pinMode(7, INPUT);

    Serial.begin(9600);
}

/**
    *  @brief  Main loop called periodically.
    */
void loop()
{
    int voltage = analogRead(A0);

    Serial.print("voltage = ");
    Serial.println(voltage);
}

実行したら、センサーに対して磁石を近づけます。
その結果、センサーからの出力が変化します。
今回の磁石の近づけ方、およびその結果のグラフを下記に示します。
Hall_sensor_magnet
Hall_sensor_data_001

※今回購入したセンサーは「スイッチタイプ/ユニポーラ」、使用した磁石は「ネオジウム」でした。
そのため、磁石の表裏をひっくり返した場合には、出力値は変化しません。

このように、磁石を近づける/遠ざけることで、センサーの出力値がはっきり変化することがわかります。

4.少し遊んでみた

先に示したグラフは、ホールセンサーに対してゆっくりホールセンサーを近づけたり離したりした場合の結果です。
今度は、磁石を短い時間で近づけたり離したりした場合に、どのように波形が変化するか調べてみました。
で、結果がコレです。
Hall_sensor_data_002
見ての通り、短時間の変化でも、きちんと検出されていることが分かります。

5.まとめ

以上、今回はホールセンサの種類、仕組について書きました。
また、このセンサーを用いた磁石が近づいた/遠のいたことの検知の方法、及び精度(人間の手で実現できるレベルですが…)調べてみた結果についても下記ました。

今後は、このセンサーを用いて、もう少し、実際に利用できそうなモノを作っていく予定/計画です。

ではっ!