人間の脳は複雑な構造の層で構成されており、地球上で優勢な種になるのに役立ちます。たとえば、脳の嗅内皮質は方向感覚を与えて、慣れていない場所を簡単にナビゲートするのに役立ちます。しかし、私たちとは異なり、ロボットや無人のアリエル車両は、新しい地形や風景で自律的に操縦できるように、この方向感覚を得るために何かが必要です。さまざまなロボットがさまざまなタイプのセンサーを使用してこれを実現しますが、一般的に使用されるのは磁力計です。これにより、ロボットが現在向いている地理的方向を通知できます。これは、ロボットが方向を感知するのに役立つだけでなく、事前定義された方向と天使に交代するのにも役立ちます。
センサーは地理的な北、南、東、西を示すことができるので、私たち人間も必要なときにそれを使用することができます。したがって、この記事では、磁力計センサーがどのように機能し、Arduinoのようなマイクロコントローラーとインターフェースする方法を理解してみましょう。ここでは、北方向を指すLEDを点灯させることで方向を見つけるのに役立つ、クールなデジタルコンパスを作成します。このデジタルコンパスはPCBGOGOのPCBできれいに作られているので、次回野生に出かけるときに持ち運びでき、家に帰る道を見つけるためにこれを使うだけで迷子になりたいと思っています。始めましょう。
必要な材料
- Arduino Pro mini
- HMC5883L磁力計センサー
- LEDライト-8Nos
- 470オーム抵抗器– 8Nos
- バレルジャック
- PCBgogoのような信頼できるPCBメーカー
- ミニ用FTDIプログラマー
- PC /ラップトップ
磁力計とは何ですか?それはどのように機能しますか?
回路に飛び込む前に、磁力計とそれらがどのように機能するかについて少し理解しましょう。名前が示すように、マグニートーという用語は、空中でピアノを弾くだけで金属を制御できる驚異のクレイジーなミュータントを指していません。ああ!しかし、私は彼がかっこいいあの男が好きです。
磁力計は、実際には地球の磁極を感知し、それに応じて方向を示すことができる機器です。私たちは皆、地球が北極と南極を持つ巨大な球形の磁石であることを知っています。そしてそれのために磁場があります。磁力計はこの磁場を感知し、磁場の方向に基づいて、私たちが向いている方向を検出できます。
HMC5883Lセンサーモジュールのしくみ
HMC5883Lている磁力計センサは同じことを行います。 Honeywell製のHMC5883LICが搭載されています。このICには、x、y、z軸に配置された3つの磁気抵抗材料があります。これらの材料を流れる電流の量は、地球の磁場に敏感です。したがって、これらの材料を流れる電流の変化を測定することで、地球の磁場の変化を検出できます。変化が磁場を吸収すると、値はI2Cプロトコルを介してマイクロコントローラーやプロセッサーなどの組み込みコントローラーに送信できます。
センサーは磁場を感知して動作するため、金属を近くに置くと出力値に大きな影響を与えます。この動作を利用して、これらのセンサーを金属探知機としても使用できます。磁石からの強い磁場がセンサーに誤った値を引き起こす可能性があるため、このセンサーに磁石を近づけないように注意する必要があります。
HMC5883LとQMC5883Lの違い
多くの初心者にとって、これらのセンサーを中心によくある混乱があります。これは、一部のベンダー(実際にはほとんど)がHoneywellの元のHMC5883Lの代わりにQMC5883Lセンサーを販売しているためです。これは主に、QMC5883LがHMC5883Lモジュールよりもはるかに安価であるためです。悲しい部分は、これら2つのセンサーの動作がわずかに異なり、同じコードを両方に使用できないことです。これは、両方のセンサーのI2Cアドレスが同じではないためです。このチュートリアルで提供されるコードは、一般的に入手可能なセンサーモジュールであるQMC5883Lでのみ機能します。
使用しているセンサーのモデルを知るには、IC自体を詳しく調べて、その上に書かれている内容を読み取る必要があります。それはのようなものを書かれている場合はL883、それはHMC58836Lであり、それはのようなものを書かれている場合DA5883それはQMC5883L ICです。簡単に過小評価できるように、両方のモジュールを下の図に示します。
回路図
このArduinoベースのデジタルコンパスの回路は非常にシンプルです。HMC5883LセンサーをArduinoに接続し、8つのLEDをArduino ProminiのGPIOピンに接続するだけです。完全な回路図を以下に示します。
センサモジュールは、5本のピンのうち持って、我々は連続モードでセンサを動作しているので、DRDY(データレディ)は私たちのプロジェクトで使用されていないのを。 Vccとグランドピンは、Arduinoボードから5Vでモジュールに電力を供給するために使用されます。 SCLとSDAは、それぞれArduino ProminiのA4ピンとA5I2Cピンに接続されているI2C通信バスラインです。モジュール自体のラインにプルハイ抵抗があるため、外部に追加する必要はありません。
方向を示すために、8個のLEDを使用しました。これらはすべて、470オームの電流制限抵抗を介してArduinoのGPIOピンに接続されています。コンプリート回路は、バレルジャックを介して9Vバッテリーで駆動されます。この9VはArduinoのVinピンに直接供給され、Arduinoのオンボードレギュレータを使用して5Vに調整されます。この5Vは、センサーとArduinoへの電力供給にも使用されます。
デジタルコンパス用のPCBの製造
回路のアイデアは、各LEDが8つの方向すべて、つまりそれぞれ北、北東、東、南東、南、南西、西、北西を指すように8つのLEDを円形に配置することです。そのため、ブレッドボードやパフォーマンスボードにきれいに配置するのは簡単ではありません。この回路用のPCBを開発すると、見た目がすっきりして使いやすくなります。そこで、PCB設計ソフトウェアを開き、LEDと抵抗をきちんとした円形パターンに配置し、トラックを接続して接続を形成しました。完成したときの私のデザインは以下のようになりました。下記のリンクからガーバーファイルをダウンロードすることもできます。
- デジタルコンパスPCBのガーバーファイルをダウンロード
ArduinoをPCBの底面に配置して、PCBの上部の外観を損なわないようにするため、両面ボードとして設計しました。両面PCBに高額の支払いが必要になるのではないかと心配している場合は、しばらくお待ちください。
これで、デザインの準備ができたので、それらを製造する時が来ました。PCBを完成させるのは非常に簡単で、以下の手順に従ってください。
ステップ1: www.pcbgogo.comにアクセスし、初めての場合はサインアップします。次に、[PCBプロトタイプ]タブで、PCBの寸法、層の数、および必要なPCBの数を入力します。私のPCBは80cm×80cmなので、タブは下のようになります
ステップ2: [ 今すぐ見積もり ]ボタンをクリックして 続行し ます。使用するトラック間隔など、必要に応じていくつかの追加パラメータを設定するページが表示されます。ただし、ほとんどの場合、デフォルト値で問題なく機能します。ここで考慮しなければならないのは、価格と時間だけです。ご覧のとおり、ビルド時間はわずか2〜3日で、PSBの費用はわずか5ドルです。その後、要件に基づいて希望の配送方法を選択できます。
ステップ3:最後のステップは、ガーバーファイルをアップロードして支払いを続行することです。プロセスがスムーズであることを確認するために、PCBGOGOは、支払いを続行する前に、ガーバーファイルが有効かどうかを確認します。このようにして、PCBが製造に適していて、コミットされたとおりに到達することを確認できます。
PCBの組み立て
ボードが注文された後、数日後に私に届きましたが、きちんとラベルが貼られたよく詰められた箱に入った宅配便で、いつものようにPCBの品質は素晴らしかったです。私はあなたが判断するために以下のボードのいくつかの写真を共有しています。
はんだごての電源を入れて、ボードの組み立てを始めました。フットプリント、パッド、ビア、シルクスクリーンは完全に正しい形状とサイズであるため、ボードの組み立てに問題はありませんでした。箱を開梱してからわずか10分でボードの準備が整いました。
はんだ付け後のボードの写真を以下に示します。
Arduinoのプログラミング
ハードウェアの準備ができたので、Arduinoボードにアップロードする必要のあるプログラムを調べてみましょう。コードの目的は、QMC5883L磁力計センサーからデータを読み取り、それを度(0〜360)に変換することです。度がわかったら、特定の方向を指すLEDをオンにする必要があります。このプログラムで使用した方向は北です。したがって、どこにいるかに関係なく、ボード上で1つのLEDのみが点灯し、LEDの方向は北の方向を示します。後で他の方向を計算できたら、一方の方向がわかっています。
このデジタルコンパスプロジェクトの完全なコードは、このページの最後にあります。ライブラリを含めた後、ボードに直接アップロードすることができ、準備が整います。しかし、あなたが知りたいのなら