PIC AVR 工作室別館 arduinoの館->TopPage->接続くん->ホールセンサーICとの接続

ホールセンサーICとの接続

ホールセンサーとは

ホールセンサーというのは、Hall効果を利用して磁気を検知するセンサーです。

ホールセンサーには大別すると、素子単体がパッケージに入った「ホール素子」と、ホール素子やアンプなどを組み合わせてIC化 された「ホールセンサーIC」があります。ホール素子のお話は後で行うとして、まずは扱いが簡単なホールセンサーICについて 触れてみます。

写真は、ホールセンサーIC「DN6851」をreduino-nanoに接続しているところです。

写真左にある黒くて小さい3本足の部品がDN6851です。うち2本は電源(VccとGND)で、残りの1本が出力端子です。 この部品に磁石を近づけると出力端子から信号が出力されます。電源電圧3.6V~16Vで使用可能なICです。

①がVcc、②がGND、③が出力端子です。写真手前側が部品名がプリントされている面です。今回はreduino-nanoから 電源をもらっているため、5Vで動作させています。

磁石が近くにない時は0Vが、磁石を近づけると5Vが出力端子に出力されます。これをarduinoなどマイコンの 入力端子に接続すれば、センサーに磁石が近づいているか否かを判別することが出来ます。

(DN6851の出力を直接マイコンの入力端子に繋げば信号の入力が可能です…ただし出力インピーダンスは27kΩなので LEDなどを直接光らせるには少々インピーダンスが大きすぎです)

次章で実際にarduinoに接続してみます。

なお、Hall効果については、 wikipediaをご覧ください。

arduinoにホールセンサーICを接続

arduinoにDN6851を繋いでみる

ホールセンサーICを実際に繋いでみました。ICの出力をアナログ0番に繋いで、出力される電圧を眺めて見ます。

実験してみてわかったのですが、このICはデジタル出力のICでした。 なので本当はarduinoのデジタル入力ピンに接続すればよかったのですが、てっきりアナログICだと思っていたので、 アナログ入力に繋ぐスケッチを使いました。こんなスケッチです。

サンプルスケッチ

int ledPin = 3;
int analogpin0 = 0;
int data = 0;


void setup() {
  pinMode(ledPin, OUTPUT);
  Serial.begin(9600);

  Serial.println("start");

}

void loop() {

  data = analogRead(analogpin0);
  Serial.println(data);

  analogWrite(ledPin, data/4);

  delay(100);
}

このスケッチは実はアナログ入力のテストをする時に汎用的に私がよく使い回ししているモノです。基準電圧には デフォルトの5Vを適用し、アナログ0番から入力した電圧(AD変換値)をarduino-IDEのシリアルモニタに表示しつつ、 アナログ値をデジタル3番に繋がったLEDにアナログ出力をするという処理内容です。

(reduino-nanoの場合、アナログ3番はPWMによるアナログ出力端子…普通のarduinoの場合はデジタル3番に LEDと電流制限抵抗を接続して使うなりしてください)

磁石を近づけると出力値は1023、離すと0になります。つまり、5Vか0Vかということになります。

実験のムービー

実験風景をムービーに撮ってみたので貼っておきます。

このムービーでは、磁石の代わりに手元に有ったミニミニスピーカーを使いました。スピーカーには磁石が 内蔵されていますので…。

磁石を近づけるとLEDが消灯、遠ざけると点灯しているのがおわかりいただけるかと思います。 実験に使ったreduino-nanoのLEDはアクティブLOW(LOWの出力で点灯、HIGHの出力で消灯)なので、 磁石を近づけた時にDN6851からHIGHが、遠ざけた時にLOWが出力されていることが判ります。

実験結果について

今回の実験では、ホールセンサーICにDN6851を、磁石にはミニミニスピーカー内蔵の小さい磁石を用いました。

この磁石はいわゆるネオジム磁石のような強力なものではなく、ごく普通の磁石だと思われます。この磁石では 約1cm程度に近づけるとセンサーがオンになり、2cm位まで離れるとオフになりました。

磁石が近くにあるか否かを判断するという目的では、直接マイコンのデジタル入力に接続できるICなので 使い方はとても簡単だと思います。

なお、オンになる位置とオフになる位置に違いがある理由は、DN6851に内蔵されたシュミットトリガー回路によるものと 考えられます。

設計者の意図ははっきりとは判りませんが、このICはデジタル出力のICなので、弁別閾近辺で出力信号が バタバタと暴れるのを防ぐ目的があるのかと思われます。そのおかげで、出力はオンかオフかが安定して 出力されていることが確認出来ました。

なお、磁石の片側ではセンサーが反応するのですが、反対側では反応が見れませんでした。データシートにも 少し記述があるのですが、N極とS極で反応が違うようです。

英語があまり得意ではないのですが、データシートを読み解いた感じではICの印刷面に N極を近づけた時に反応し、S極では反応しないという仕様になっているようです。

その他のホールセンサーについて

DN6851の類似品、DN6852について

千石電商などで入手が容易なホールセンサーICには、DN6851のほかにDN6852というものもあります。

DN6852の出力回路はDN6851と少しだけ違っていて、出力がオープンコレクタになっています。 データシートをみる限り、この2つのICでは出力回路以外は同じ内容になっているようです。 どちらもアンプとシュミットトリガ回路が内蔵されています。

IC化されているので扱いは容易ですが、DN6852はオープンコレクタ出力なので出力部分にプルアップ抵抗が必要になります。 それ以外はDN6851と比べて大きな差はないようです。

マイコンが3.3VでセンサーICが5Vというように、動作電圧が異なる場合にはこちらのDN6852を使うことになるかと思います。 特にマイコンが3.3V動作の場合は、センサーICと電源が共用できないので、DN6852を使うことになるだろうと思います。

DN6851にしてもDN6852にしても、アンプが内蔵されていることで扱いはとても簡単なのですが、 増幅率が固定になっており、比較的磁石が近く(1cm前後)に近づかないと反応しないようです。もっと高感度に するためには、自分でアナログ回路を組む必要があるようで、その場合にはホールセンサーICではなく、 ホール素子を使って、自分でアナログ信号の増幅などを行う必要があるようです。

ホール素子について

… 続きます …