2016年10月28日金曜日

16.10.28 しつこくうろうろ歩き


うろうろ歩きを孫のリー君に見せたところ、「迷路はできないの?」と言われたので準備を始めた。レゴのモーターを使うことにするが、早く歩くようにする・180度方向転換する・迷路用に交差点でその場で回転して方向転換する、の3点の変更を行った。


レゴのモーターで早く歩く仕組みを考えた結果、右の車輪は歯車で駆動し、左の車輪はチェーンで駆動することにした。見た目は美しくないが、速度は16/40から24/24となり、2.5倍になった。



センサー・基板はレゴのうろうろ歩きのものをそのまま使う。180度方向転換のときは、安定度を高めるために速度を3/4に落とすころにした。180度方向転換が追加になり、動きの感じがかなり変わった。



交差点で回転してうろうろ歩きするようにした。センサーの位置を1列後ろに変更し、車輪が交差点の中央にきたところでブレーキをかけて次の方向を決める。交差点で毎回ブレーキをかけるので動きはギクシャクしている。また、180度方向転換しても迷路の壁にぶつからないことも確認した。


2016年10月17日月曜日

16.10.17 高速版うろうろ歩き


前回作ったレゴのモーターのものは歩くのがあまりに遅かったので、もっと速く歩けるものを作ってみた。安定度は下がったが、格段に速く歩けるようになった。


レゴのプーリーにつけたゴムタイヤの外周をタミヤのミニモーターの軸で直接駆動する。以前も作ったが、モーターの軸をうまくタイヤに押し付けないと安定して動作しないのが難点。今回も輪ゴムを使った。3つ目の車輪はタミヤのボールキャスター。車輪とモーターが小さいので、レゴのモーターのものに比べると高さが半分程度になった。


センサーはレゴのものと同じ反射型のフォトインタラプタを2ヶ使う。取付方法もほぼ同じ。


基板は以前16bitのPIC24FJ64GA002で作ったものを使う。モータードライバはロームのBD6211を2ヶ実装してある。PWMのチャンネル数は十分あるので、左右2つずつのPWMを使ってモーターの回転数を制御している。センサーのインターフェイスの部品はついていないので、端子に部品を乗せた子基板を取り付けた。


ライントレースは、レゴのもので作ったソフトを一部修正して使っている。楕円形のコースでライントレースして走らせると、最高速でもうまく走る。うろうろ歩きはさすがに最高速ではうまくできないので、スピードを遅くしてある。

2016年10月13日木曜日

16.10.13 またもやうろうろ歩き


格子状の道をうろうろ歩きまわる2輪車をまたもや復活。以前は交差点でいったん止まり、その場で90度回転していたが、今回は止まらずに90度方向を変えるようにしてみた。


レゴのモーターを使い、できるだけコンパクトなボディを作った。飾り気は全くない。サイズを優先したため、歯車の組み合わせが限定され、速度はかなり遅い。倒れないように後ろ側だけタミヤのボールキャスターを付けた。


センサーは反射型のフォトインタラプタを2ヶ使う。車輪の少し前の位置に道路の幅より少し外側になるように取り付けた。交差点を検出したときの車輪の位置が重要なので、センサーの前後の位置は試行錯誤で決定した。


基板は以前3輪車用に作ったものを使う。CPUは16bitのPIC24FV32KA301。モータードライバはロームのBD6211を2ヶ実装してある。PWMのチャンネル数が少ないので、PWMの出力をコンデンサに充電してPWMの幅で電圧が変化するようにし、これをBD6211のVREF端子に接続してモーターの回転数を制御している。


ライントレースは、左右のセンサーの値の差が0になるように制御する。一応PID制御でやっているが積分の項は使っていない。両側のセンサーが暗くなったら交差点と判断し、次に進む方向をランダムに決定する。右回転する場合は右側の車輪にブレーキをかけ、左側の車輪を回転させる。右のセンサーが明るくなったら回転終了。スピードが遅いせいもあり、ライントレースや回転でコースを外れることはほとんんどない。

2016年10月10日月曜日

16.10.10 バッテリーチェッカー


凝り性の山仲間から、「バッテリーチェッカーは10Ωの負荷で電池の電圧を図るべき」という意見が出てきた。なるほどそういうものかと思い、なるべく簡単に使えるバッテリーチェッカーを作ってみた。


以前作ったものは電圧をLEDのブリンク数で表示したが、これは見にくいと不評だったので、複数のLEDで電圧を表示することにする。いつものリモコン基板を使うことにすると、電池の入力とスリープからの起動のスイッチを除くと4ヶのLEDしか使えない。4ヶのLEDで8段階の電圧を表示することにした。
電圧表示は以下のようにする。(◇:点灯、◆:消灯、B:ブリンク)
 電圧      Led0 Led1 Led2 Led3
 1.5 -       ◆   ◆   ◆   ◇
 1.4 - 1.5  ◆   ◆   ◇   ◇
 1.3 - 1.4  ◆   ◆   ◇   ◆
 1.2 - 1.3  ◆   ◇   ◇   ◆
 1.1 - 1.2  ◆   ◇   ◆   ◆
 1.0 - 1.1  ◇   ◇   ◆   ◆
 0.9 - 1.0  ◇   ◆   ◆   ◆
      - 0.9  B   ◆   ◆   ◆


負荷抵抗は、いくつか切り替えできるよう、ピンに差し込むようにした。とりあえず、10Ω、100Ωを用意した。元気な電池なら10Ω負荷でも1.5V以上の表示になるが、くたびれた電池だと0.9V以下になる。こういう電池でも負荷抵抗を100Ωに変更すると、1V以上になることもある。10Ω負荷で0.9V以下ならモーターを回すのには使えない、100Ω負荷で0.9V以下なら捨てる、という基準にする。


電圧測定は、PICの10bitsのADコンバータで行う。ADのプラス側の基準電圧を2048mvの内部基準電圧にする。これで電池の電圧をAD変換した値がAdBatとすると、電圧VBatは、VBat = 2*AdBatと簡単な計算で求めることができる。大きさの違う電池の電圧測定ができるよう、測定用のリード線を出しておくことにした。赤い線を電池のプラス側、黒い線を電池のマイナス側に押し当てて測定を行う。