ハードウェア」カテゴリーアーカイブ

HMC6352 ディジタルコンパスモジュールの実験

遠隔操作の際、車体の向きを知ることはとても重要です。 ジャイロセンサーは相対的な向きですので、現在の方位を得るためにコンパスモジュールは搭載したいデバイスです。 また、応答速度や安定性が高ければ、旋回動作にもコンパスを使用することを検討したいと思います。

HMC6352 ディジタルコンパスモジュール

HMC6352 ディジタルコンパスモジュール

HMC6352 ディジタルコンパスモジュールは、磁気の測定値ではなく、方位として出力するデバイスですので、ホスト側の負荷も軽減できそうです。

接続はI2Cですので、4線でOKです。 電源は3.3Vを使用しました。

スレーブアドレスは、21hで認識しています。

i2cdetect_cmp

HMC6352には、計測モードが3種類ありますが、デフォルトのStandbyモードで試してみます。

i2cset -y 1 0x21 0x57        //ウェイクアップ
i2cset -y 1 0x21 0x41        //読み出しコマンド”A”
i2cget -y 1 0x21 0x43 w   //読み出し

あとは、コマンドA、読み出し を、繰り返す毎に数値が得られます。 PHPで、テストスクリプトを作成しました。

<?php
//HMC6352 コンパスモジュール testプログラム

exec("i2cset -y 1 0x21 0x57");		// ウェイクアップ

exec("i2cset -y 1 0x21 0x43");		//キャリブレーション開始
echo "キャリブレーションを実施して下さい。\n";
$input = fgets(STDIN,4096);			//キー入力待ち
exec("i2cset -y 1 0x21 0x45");		//キャリブレーション終了

while (1){
	exec("i2cset -y 1 0x21 0x41");	//読み出しコマンド"A"
	$cmp = exec("i2cget -y 1 0x21 0x43 w");	// 読み込み
	$cmp = hexdec(substr($cmp,-2).substr($cmp,2,2)) / 10;

	printf("方位 %.1f 度\n", $cmp);

	sleep(1);
}
?>

 

キャリブレーション実施待ちのフローは、はじめはなっかたのですが、キャリブレーションを行わないと数値が全く安定しません。 データシートには、2回転を20秒以上実施とあります。 実際には、1回転行えば、ほぼ、安定した計測値が得られますが、サーボや走行用モーターの動作中は数値が不安定になります。

モジュールの取り付け位置を、サーボやモーターから、離す必要がありますね。 絶対方位の取得は魅力なのですが、現状ではモーター動作時に旋回制御センサーとしての役割を担うことは厳しそうです。

 

DC-DCコンバータの超高効率を実感!

電子工作で使用する、定電圧回路にはリニアレギュレータが定番です。 できるだけ効率のよいものを選定するようにはしますが、この手のパーツはストックがあったり、使い回しをしたりで、古い型のものを使う場合も少なくありません。

DC-DCコンバータを使った電源基板

DC-DCコンバータを使った電源基板

ハウスローバーの電源レギュレータも少し(?)旧型のレギュレータを使っていましたが、ヒートシンクが触れなくなるほどの高温に…。 小型のバッテリーで、触れられないほどの熱を出し続けるのは相当な電力を無駄にしていると感じ、DC-DCコンバータに入れ替えてみることにしました。

スーパー3端子レギュレータ V7805-1000

スーパー3端子レギュレータ V7805-1000

スーパー3端子レギュレータ V7805-1000。 秋月電子で630円。 低損失リニアレギュレータなら100円で入手できますから、高価なパーツですね。

バッテリーのコンディションを監視する」で検証したINA226モジュールも含めた、電源基板を作成。 早速、効果の程を実測です。

電流測定回路

電流測定回路

バッテリー側にマルチメーターを繋ぎ、負荷はRaspberry Pi、webカメラ、無線LANアダプタ等、通常接続しているハードウェアです。

アイドル時
(起動3分後)
高負荷時
(ストリーミング使用)
シャットダウン時
(CPU停止)
リニアレギュレータ
LM2940-5
570mA680mA510mA
DC-DCコンバータ
V7805-1000
410mA470mA350mA

年季の入った古いマルチメーターでは、その差が計測できないのでは?と思っていましたが、予想を超える数値でした。 概ね、30%程度の省エネルギー化です。 発熱もほとんど感じられず、稼働時間も伸び、 630円は高くない買い物でした。

 

移動量センサーを実験する

ロボットの移動量測定には、フォトインタラプタなどによる車輪の回転量計測や加速度センサー等によるものなどがありますが、非接触で移動量を検出する身近で安価なアレが使用できないかと思い立ち実験してみました。

ロジテックマウスMX510

これです。 ロジテック光学マウスMX510。 2、3年使い込んだ現役引退物ですので、結構古いです。

光学マウスはその性質上、マウスの底面から3ミリ程度までしか反応しないように設計されています。 そこで、センサー部に別のレンズを使用して反応距離を伸ばそうという試みです。

マウス基板  マウス基板

レンズと言っても適当なものがなく、古いデジカメから取り外しセンサー部に取り付け、位置や距離を試行錯誤。

なんとか、レンズ面から30ミリの距離で床面の移動を検知出来る状態になりました。

実装するとすれば、こんな感じでしょうか。

IMG_0293  IMG_0294

なんとか、使い物になりそうな感じですが、床面との距離には敏感で、焦点深度4ミリといったところでしょうか。 凹凸のある路面では厳しいかな…。

光源や光学系の性能次第ですね。

光学センサーを用いた移動ロボット用位置推定システムについて、東北大学の方が論文を書かれていました。

http://www.astro.mech.tohoku.ac.jp/~keiji/papers/pdf/2010-Robomec-IN-online.pdf

安価なセンサーだからといっても、移動ロボット用として信頼性を上げるのは簡単なことではなさそうです。