レトロでハードな物語

レトロなゲーム機・マイコン・中古デバイスなどをArduinoやAVRで再活用する方法を模索しています。

ホールIC

2020年09月30日 | 電子工作

前回の温度センサーと一緒に秋月電子のお楽しみ袋にはホールIC(DN837)というセンサーが入っていました。



ホールICには磁気の強さを検出するものと磁気の極性を検出するものがあるそうですが、このDN837は磁気の強さを検出するタイプのようです。5V電源で動作するのでArduinoなどにそのまま接続できそうです。

今回のセンサーのテストにはATtiny13Aを使ってみます。センサーの出力を読み取るだけなので、フラッシュメモリが1024バイトしかないATtiny13Aでも十分でしょう。
読み取ったセンサー値の表示には昔作ったPICをコントローラーにしたLCDを使います。

DN837には電源端子と2つの出力端子があります。データシートによると出力端子の電圧や電流を計測することで様々な利用方法があるようですが、今回は出力端子1つの電圧を読み取り、磁石を近づけたときに電圧がHIGHやLOWになるのを確認します。
出力端子はオープンドレインとのことなので10KΩのプルアップ抵抗を付け、それをATtiny13Aにつなげて電圧を読み取ります。磁気が無いときのセンサーの出力はATtiny13Aのアナログ入力が10ビットなので3FFに、センサーに磁石を近づけたときは0となるはずです。

配線は以下のようにしました。

DN837(2ピンは10kΩでプルアップ)←→ATtiny13A
1 VCC
2 Output1 − A3(3ピン)
3 Output2
4 GND



スケッチはこちらです。

ATtiny13HallIC.ino

このスケッチはMicroCoreを使ってコンパイルしました。スケッチ中のsendChar()とsendStr()はLCD表示のために作った独自コマンドなので、スケッチを利用するときには書き換えて下さい。
ATtiny13Aはフラッシュメモリが少ないので、読み取ったアナログ値を文字列に変換するときにsprintf()などのライブラリは大きすぎてフラッシュに書き込めません。そのためアナログ値を16進文字列にするhexString()を用意しました。

センサーのテストにはダイソーのネオジム磁石を使いました。



ホールICの出力はプルアップされているので、通常は5V(アナログ値は3FF)になっています。ここにネオジム磁石を近づけると出力が0になるのを確認できました。ただし、ホール素子には検出できる磁束の向きがあるので、磁石の向きが合っていないと検出できません。

DN837のデータシートにスイッチタイプとあるように、まさに磁石によってオンオフ出来るスイッチですね。色々な用途に使えそうです。非接触のスイッチになるので頻繁にオンオフするような消耗の激しい場所に向いてそうです。

お楽しみ袋にはDN837が幾つか入っていたので、複数組み合わせて入力デバイスが出来そうです。なにに使えるか後で考えてみましょう。



最新の画像もっと見る

コメントを投稿