ポケットサイズ金属探知機:Arduino Pro Mini搭載、4コイル・LED・振動で高感度検知
プロジェクト概要
このコンパクトなポケット金属探知機は、木材中の小さな釘や画鋲を検出できる高感度さを持ちながら、狭い場所にも入り込む携帯性を兼ね備えています。4つの独立したパルス誘導型サーチコイルとカラーLEDインジケーターにより、広範囲を素早くスキャンしつつ、ターゲットを正確に特定できます。ワンボタンで自己キャリブレーション、USB充電式、カラーLED・音・振動の三重アラートでターゲット強度を通知します。設計図、テストデータ、コード、3Dプリントファイルすべてが提供されています。
仕組み
Arduino Pro Miniが4つの独立したパルス誘導サーチコイルを駆動します。各コイルは独立したTX(送信)コイルとRX(受信)コイルで構成され、TXコイルにパルスを流してRXコイル周りに電磁場を生成します。変化する電場がRXコイルに電圧を誘導し、これを検出・増幅してパルス幅をArduinoで読み取ります。スムージングアルゴリズムでノイズを除去し、起動時の平均値から閾値を設定するキャリブレーションアルゴリズムで安定動作を実現しています。
金属物体が電磁場内に入ると、渦電流(エディ電流)が物体内に発生し、エネルギーが分流されるためRXコイルのパルス幅が減少します。このパルス幅の減少を検出することで金属の存在を感知します。閾値を下回るとLED点灯、ブザー音、振動モーター作動で知らせ、信号強度に応じてLED色が変化(青→緑→赤→紫)します。
材料リスト
- 3.7V 350mAh LiPoバッテリー (38×20×7.5mm)
- TP4056 USB LiPo充電ボード + 4.7kΩ抵抗(充電電流300mA以下に制限)
- Arduino Pro Mini 328 5V/16MHz
- FTDI USB-シリアル変換モジュール
- LM339 クアッド差動コンパレータIC
- ユニバーサル基板 20×9穴 ×2枚、34×9穴 ×1枚
- BC548 NPNトランジスタ ×4
- 2N7000 MOSFETスイッチ ×5
- ピエゾブザー
- コイン振動モーター
- WS2812 RGB LEDモジュール ×4
- 各種抵抗・コンデンサ(詳細本文参照)
- 0.3mmエナメル銅線(約25g巻)
- PCB取り付け用プッシュスイッチ
- 3Dプリンター、10mmドリルビット、ハンドドリル、ラベルプリンター等
LM339コンパレータの動作
LM339は電圧コンパレータとして動作し、正負入力の差動電圧を比較してローレベルまたはハイインピーダンス(プルアップでハイ)を出力します。本回路では正入力をVccに、出力にプルアップ抵抗を接続しており、負入力電圧が3.5Vを超えると出力がローになります。データシートの「入力電圧範囲:0V〜Vsup-1.5V」に基づく動作です。
制作手順
ステップ1:ケースの3Dプリント
5パーツに分けてプリント(Thingiverseでファイル公開中)。持ちやすさとコイルの検出面への近接性を重視した設計です。プリント後は余分なプラスチックを丁寧に除去し、電子部品の配置合わせを確認します。
ステップ2:サーチコイルの巻線と取り付け
プリントしたコイルフォーマーにエナメル線を25ターン巻き、20cm以上のリード線を残します。フォーマーの穴を使って均一に巻き、裏返しながらベースユニットに接着固定します。8個のコイル(TX/RX各4組)を配線ガイドブロックで整理し、内側コイルを上段、外側コイルを下段に配置して識別しやすくします。
ステップ3:回路基板の製作
- ドライバーボード:22×11穴のユニバーサル基板を20×9穴にカットし、回路図通りに部品実装。トラック切断は10mmドリルビットで手作業で行います。
- メインボード:36×11穴を34×9穴にカットし、Arduino、LM339、周辺部品を実装。同様にトラック切断を行います。
ステップ4:LEDインジケーターの取り付け
WS2812 LEDをコイルエンクロージャの蓋にホットグルーで固定。3本の単芯線(VCC、GND、DATA)をはんだ付けし、蓋がフラットに閉まることを確認して配線を固定します。
ステップ5:組み立てと段階的テスト
- メインボード単体でArduinoシリアルケーブル接続し、コード書き込みテスト(エラーなし、発煙なしを確認)
- ドライバーボードを接続し、ケース内への収まりを確認
- コイルを接続し、テストコードでシリアルプロッターまたはオシロスコープで各チャネルのパルス幅(5000〜7000μs)を確認。コインを近づけてパルス幅減少を観測
- 全チャネル正常なら配線を整理してケースを閉じる
- LEDを接続して動作確認、蓋を接着
テスト用コード(シリアル出力付き)と本番用コードの2種類が提供されています。注意:LiPoバッテリーは最終工程まで接続しないでください。誤ってショートさせると発熱・発火の危険があります。
ステップ6:充電式バッテリーの接続
TP4056充電ボードの表面実装抵抗を4.7kΩに交換して充電電流を300mA以下に制限(ホットグルーで固定)。マイクロUSBで充電テスト後、プッシュボタンスイッチを蓋の穴に合わせて取り付け、充電器出力とArduino VCC間に配線。バッテリーをホットグルーで固定し、USBコネクタを蓋の穴に合わせます。
ステップ7:最終テストと操作
配線を整理してケースを閉じ、メインボードを蓋に固定。電源ボタンを長押しでキャリブレーション開始、全LED点滅で準備完了。ボタンを押し続けて探索し、ターゲット強度に応じてLEDが青→緑→赤→紫と変化。紫になると振動フィードバックも作動します。
コード
提供コード:Pocket_Metal_Locator_V11.ino(C/C++)。FastLEDライブラリ必須。4チャネル同時駆動、ローパスフィルタ、起動時キャリブレーション、4段階閾値判定、振動フィードバック制御を含む完全な実装です。テスト用シリアル出力版も別途提供されています。
3Dプリントファイル・回路図
- Thingiverse: CADファイル公開中
- 回路図・基板レイアウト・Fritzingファイル提供
製造プロセス