2015年のロードマップ

迎春。

ハウスローバー 迎春スタイル

ハウスローバー 迎春スタイル

ハウスローバーの製作は、「きままに」 「無計画に」を、基本としているのですが、年頭にあたり「今年の製作予定と成果計画」を、おおまかに記録しておこうと思います。

前期

加速度センサーの検証

走行距離を知るために加速度センサーの実験を行います。 ジャイロセンサー同様、そこそこのCPU負荷とドリフトを考慮し、採用できるかを見極めます。 使えなければ、車輪へのフォトセンサーを取り付け等を検討します。

インターフェース基板の更改

実験の度に、ジャンパーを追加したりしていたので、基板上が煩雑になってきたのと、搭載するパーツが固まってきましたので、インターフェース基板を刷新します。 モータードライバ用ICも、別なものを使ってみたいと思います。

中期

コントロールWebページの更新

こちらは少し手を付けている部分でもあるのですが、加速度センサーの検証結果によって影響を受ける部分がありますので、その実験後になります。 情報表示をグラフィカルに、操作性の高いインターフェースにします。

シャーシ、ボディーの製作

ユニバーサルプレートのサンドイッチ構造は開発段階では機能的ですが、専用シャーシの製作は、まともな加工工具を持っていないので、なかなか着手できません。  素材も樹脂かアルミか検討中です。 既成品で良い物があれば飛びついちゃうかもしれません。(安易) 実は、IKEAのフードキーパーに製作意欲を掻き立てられる物があるんです。(かなり安易)

後期

ホストCPUの構成

Raspberry Piは、蓄積されたLinuxのソフトウェアが利用できる利点がありますが、電力消費が大きいのが欠点です。 また、ハードウェアに近い低レベルの制御には好適とは言えません。 開発を進めていると、ハードウェアの高速制御や割り込み制御を使いたい場面が度々あります。 計画としては、高レベルミッション用CPUとハードウェア高速制御用のCPUを搭載したいと考えています。 ハードウェア制御用CPUとしては、arduinoやPICが候補に挙がりますね。 Raspberry Piの+モデルは電源周りが改善されたようですが、更に消費電力を絞ったモデルが出ないか、期待したいところです。

自立性ソフトウェアの開発

外部からのコマンドにより動作する点は変わりませんが、部分的な自立性は随時組み込んでいく予定です。 例えば、コントロール信号が途絶えた時、「危険を避ける」 「バッテリー消費を抑える」などの制御ができるようにしていきたいと思います。

 

番外

「なんの役にも立たないハウスローバー」ですが、明確な(?)役割機能を持たせることを計画中です。 ヒントはこの動画ですが…。

ロシア無人地上戦闘車両 戦闘シミュレーション

 

さて、ロードマップとしてはかなり大雑把ですが、これらの計画、どこまで実行できるでしょうか?

 

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円は高くない買い物でした。

 

バッテリーのコンディションを監視する

バッテリー駆動の機器では、バッテリーパックのコンディションを監視することがとても重要です。 以前から、バッテリーの電圧検出回路は搭載する予定でしたが、Raspberry PiにはADコンバータがありませんので、適当なデバイスを探していました。 今回は、I2Cインターフェースで簡単に接続でき、電流、電力も取得できる ストロベリー・リナックス社のINA226 I2Cディジタル電流・電圧・電力計モジュールを使用してみました。

INA226 I2Cディジタル電流・電圧・電力計モジュール

 

このモジュールには、電流測定用のシャント抵抗も含まれているので、初期設定として、その補正値を設定するだけで、測定を開始できます。 また、必要に応じて、複数回の平均値で計測したり、異常値の検出、測定サイクル速度の変更などができます。 テキサス・インスツルメンツ社のデータシート(英語!)

接続はこんな感じでハイサイド接続。

ina226接続図

コマンドラインから

i2cset -y 1 0x42 0x05 0x0a00 w  // Calibrationレジスタに a00hを書き込み

i2cget -y 1 0x42 0x02 w               // 電圧レジスタの読み込み

i2cget -y 1 0x42 0x04 w              // 電流レジスタの読み込み

i2cget -y 1 0x42 0x03 w              // 電力レジスタの読み込み

という感じで、値を確認できます。 簡単ですね。 (今回、I2Cアドレスを42hにしています)

電流値はそのままの数値でmA表示ですが、電圧は1.25倍、電力は2.5倍にする必要があります。 また、表示される数値はリトルエンディアンなので、右側1バイトが上位、左側1バイトが下位となります。(ここちょっとハマりました)

PHPでサンプルプログラムを作成しましたが、リトルエンディアンの変換がスマートではありません。 unpack()で、サックとできそうなのですが、文字列操作でこねまわしちゃいました。(!)

<?php
//ina226 testプログラム

// Calibrationレジスタに a00hを書き込み
exec("i2cset -y 1 0x42 0x05 0x000a w");

while (1){
	$vol = exec("i2cget -y 1 0x42 0x02 w");	// 電圧レジスタの読み込み
	$anp = exec("i2cget -y 1 0x42 0x04 w");	// 電流レジスタの読み込み
	$pow = exec("i2cget -y 1 0x42 0x03 w");	// 電力レジスタの読み込み

	$vol = hexdec(substr($vol,-2).substr($vol,2,2)) * 1.25 / 1000;
	$anp = hexdec(substr($anp,-2).substr($anp,2,2));
	$pow = hexdec(substr($pow,-2).substr($pow,2,2)) * 0.025;

	printf("電圧 %.2f V  電流 %.1f mA  電力 %.2f W\n", $vol,$anp,$pow);

	sleep(1);
}
?>

 

ina226テストプログラム実行

 

これで、バッテリーパックの状態が把握できるようになりました。