電子工作に慣れてくると「ドアの開閉を検知したい」「非接触のスイッチを作りたい」など通常のスイッチでは難しい状況にも挑戦したくなると思います。
今回は、そのような「対象物の位置を検出するセンサ」や「非接触スイッチ」が作れる電子部品「ホールセンサ」について解説します。
目次
- ホール素子を利用した「ホールセンサ」とは
- ホールセンサの種類や用途
- ホールICはホールセンサをパッケージ化
- 実際にホールセンサを動かしてみる
- Arduinoとホールセンサを連動させてみる
- まとめ、ホールセンサで電子工作の幅を広げよう
1. ホール素子を利用した「ホールセンサ」とは
「ホールセンサ」とは、半導体を利用した磁気センサの一つです。ホールとは「穴」を意味する単語ではなく、「ホール効果」と呼ばれる電流磁気効果を利用する「ホール素子」を使用していることに由来しています。(ホール効果の詳細についてはこちらを参照 ホール効果 – Wikipedia)
このホール素子の機能を一言で説明すると「磁力を検知できる電子部品」です。
もっとも身近で手軽に利用できる「磁力」は磁石です。そこで、このホールセンサは主に磁石と組み合わせて「非接点の位置検出センサ」として使用します。具体的な例では扉の開閉検出、モータの位置や回転数の検出など幅広いシーンで使われています。
2. ホールセンサの種類や用途
ホールセンサは磁気の検出方式や動作によっていくつかの種類があり、用途も異なります。以下が主なホールセンサの種類と用途です。
リニア出力:磁束の強さに比例した電圧を出力
レバーの位置やダイヤルの回転角度を検出する用途に用いられます。
デジタル出力:磁束の有無で出力をオン/オフ
デジタル出力の場合は検知方式を含めてさらに3種類に分類されます。
片極検知(単極検知):N極かS極のどちらかのみを検知
ドアの開閉検知や非接触スイッチ、ブラシレスモータのシャフトの位置を検出
両極検知:N極とS極の両方を検知
ドアの開閉検知や非接触スイッチ
交番検知:S極からN極、N極からS極への磁界の変化を検知
モータやファンの回転数検知
3. ホールICはホールセンサをパッケージ化
実際の電子機器にホールセンサを組み込む場合は、オペアンプなどの信号を増幅する機能とともにパッケージ化された「ホールIC」を使用します。ホールICは製品ごとに出力や検知方式が異なるので、使用する前にデータシートを参照しながら使い方を考えます。
データシートで確認するのは以下の2点です。
- 端子の機能
- 電源電圧
ホールICの端子は、電源・GND・OUTの3つの機能を持つピンで構成されます。N.C.ピンはデータシートに従ってどのように処理するかを決めます。
電源電圧は5Vまたは3.3Vの製品が販売されています。Arduinoなどの電子工作で使用する場合は電源電圧が5VのホールICを選定しましょう。
動作磁束密度に関しても重要な値であり、本来であれば使用する磁石の寸法や種類、位置関係に対しガウスメータによる測定を行いながら設計を進めます。ただし、手間やコストを考えると、実物を用意して動作を確認しながら作業を進めるのがおすすめです。
4. 実際にホールセンサの動作を確認してみる
今回使用するホールセンサはROHM製の「BD7411G」です。このホールセンサはデジタル出力の両極検知のホールICです。N極でもS極でも磁石を近づければ動作するタイプなので、非接点スイッチなどに使われます。
このホールセンサは表面実装の電子部品なので、変換基板を使用してブレッドボードで動作を検証します。
ホールICにバイパスコンデンサを装着するのを忘れないようにしましょう。
ホールICはVDDとGND端子に電圧を加えるだけで動作します。
この状態で磁石を近づけるとOUT端子の出力状態が変化します。テスターで出力端子を測定してみると、磁石を近づけた時に0V、遠ざけた時に5Vが出力される様子が確認できます。
ちなみに、ホールICは磁気を検出できる位置が決まっています。ホールICのパッケージ上面に対して磁界が垂直にならないと反応しない場合があるので注意しましょう。
5. Arduinoとホールセンサを連動させてみる
ホールICの動作が確認できたら、ホールICとArduinoを連動させてみましょう。
今回の実験では磁石が近づいたらLEDが点灯、離れたら消灯します。
今回使用しているホールICは5V動作のデジタル出力なので、Arduinoと周辺回路はスイッチの状態を読み取る場合と大きな違いはありません。スケッチの処理も同じような書き方で動かせます。(参考:Arduino電子工作の基本⑥ スイッチの状態を読み取る)
void setup() { pinMode(LED_BUILTIN, OUTPUT); pinMode(12, INPUT); } void loop() { if (digitalRead(12) == LOW) { digitalWrite(LED_BUILTIN, HIGH); } else { digitalWrite(LED_BUILTIN, LOW); } }
今回のスケッチは、12番ピンをdigitalRead関数で読み込みホールICの出力に応じてArduinoボード上に実装されているLEDの点灯を制御します。入力が0V(LOW、磁石あり)ならLEDが点灯、5V(HIGH、磁石なし)なら消灯です。
回路とスケッチができたら動作を確認してみましょう。
6. まとめ、ホールセンサで電子工作の幅を広げよう
ホールセンサはシンプルなセンサですが、手軽に扱えるようにアンプが内蔵されたホールICも製品化されているので電子工作のさまざまなシーンで活用できます。
非接触スイッチとして電子機器に組み込めば、物理的な接点を使わないため寿命を気にすることなく運用できます。ほかにも磁石が使える環境であれば、単純なスイッチだけでなく開閉センサなど幅広く応用できるでしょう。
あまり知られていないホールセンサですが、一度使ってみればそのシンプルさと使い勝手の良さに驚くと思います。