2010年3月末で仕事が終わりになり時間ができたので、3才の孫(男の子)が遊べるおもちゃを作ることにした。動くものに限ると思いあれこれ検討した結果、以前息子用に買ってあったレゴのマインドストームを使うことに決めた。制御は自作することにしてネットでCPUの調査を行い、昔ながらのDIPのパッケージが自作向きなのでPICを使うことにした。 いくつかおもちゃを作成し、自分用のメモを作っておくことにしたがついでなのでブログを作成して公開することにした。 写真と動画を見て笑っていただきたい。 なお、1ページで表示できなくなってきたので、以前のものを見る場合は、このページの最後の「前の投稿」をクリックしてください。
2011年12月14日水曜日
10.8 クルクル回って動く3輪車
クルクルつながりで、クルクル回って動く3輪車を作った。
クルクル回転しながら目標の方向に進んでいく。前・後・右・左は、ボディが回転しながらほぼ直線的に目標に向かっていく。右回転・左回転・上回転・下回転はボディが回転しながら、進行方向も回転する。
ボディの回転角度を測定するため、最初はジャイロの角速度センサを使ってみたが、角度を求めるために積分する必要があり、ここで誤差の影響が大きいのかうまく角度を求めることができず、車輪の回転数を測定するよう変更した。フォトインタラプタを左右の車輪の歯車につながるもう一つの歯車に取り付け、ここで回転数を測定する。
制御の仕組みは、ボディが90度回転するごとに、次の駆動方向を決める。
たとえば、前に進む時は、最初の90度は左の車輪を前進させてボディを右に回転させ、つぎの270度までは右の車輪を後退させてボディを右に回転させ、最後の360度までは左の車輪を前進させてボディを右に回転させる。
右回転など、方向が回転する場合は、制御を約100度毎に行うようにした。ボディが右回転していれば、進行方向も右に曲がり、左回転していれば左に曲がる。
前進と右方向は右回転しながら進み、後退と左方向は左回転しながら進むようにした。
こうやってまじめに作ったものであるが、動きはバカバカしい。
自分で操作していても、どちらに進めようとしているのかすぐにわからなくなってしまう、、。
2011年11月24日木曜日
10.7 クルクル回して動かす3輪車
またもや2番煎じであるが、今度は3輪車をクルクル回すコントローラで動かした。
右側の歯車で右の車輪を動かし、左側の歯車で左の車輪を動かす。
4輪車とは違う動かし方になるが、前進・後退はほぼまっすぐ動かせるし、方向転換やその場で回転も無理なくできる。クネクネ動かすのもできる。
コントローラが安定して動くようにいくつか改良してきた。一番効果があったのはフォトインタラプタの取り付けの高さを微調整したこと。これで安定して希望の位相とデューティーで出力を得られるようになった。ネジにはスプリングワッシャをいれてゆるみにくくしてある。
次は、歯車とフォトインタラプタを取り付けてあるブロックの強度を補強したこと。これで歯車とフォトインタラプタの位置がずれにくくなった。
2011年11月20日日曜日
10.6 クルクル回すコントローラ
ロータリーエンコーダのアプリを考えていて、歯車をクルクル回してコントロールする4輪車のリモコン、というアイデアを思いつき、さっそく作ってみた。
回す歯車はステアリング用と車輪駆動用の2つを用意する。
車輪は歯車をクルクル回す方向と速さで前進・後進と速度を制御することにした。ステアリングは歯車の位置でハンドルの角度を制御するようにしてみたが、車輪とステアリングで歯車の動かし方が違うと操作しにくいことに気がつき、ステアリングもクルクル回して制御するように変更した。
歯車は大きい歯車と小さめの歯車を同じ軸に取り付け、ロータリーエンコーダを大きい歯車に取り付け、小さめの歯車を手で回す。勢いよく回すと2-3秒は回っているので、続けて回せば連続して走ったりハンドルが動いたりする。
赤外線の信号を送信するのに100ms弱の時間がかかり、ステアリングと車輪の信号を送るので、それぞれ100msずつ時間をとることにし、200msの周期で信号を送ることにした。
歯車の回転の変化を検出するのに200msの時間が必要となり、車輪やハンドルの動きの開始や停止に遅れが生じるのが気に入らないが、今回はこのまま使うことにした。
PICの基板は、最初は三輪車のものをはずして使っていたが、最初に作ったPIC18F1320の基板が空いているのを思い出し、こちらに移植した。
赤外線LEDは基板に実装されていないので、別基板に組み込んだ。トランジスタでドライブするようにして、駆動電流も大きくしてある。
動画は2つあり、最初はコントローラの説明で次は4輪車を動かすデモ。
孫の反応
動かし方を説明したら、少し遊んでいたが、興味はないようですぐにやめてしまった。
2011年11月7日月曜日
10.5 ロータリーエンコーダ
これまで歯車の回転数はフォトインタラプタ1つで測定していたが、これだと回転の方向は検出できないので、きちんとしたロータリーエンコーダの取り付けを検討した。少し調べてみたところで、歯車にフォトインタラプタを2ヶ付ければよいことに気がつき、さっそく実験してみた。
ユニバーサル基板にフォトインタラプタをハンダ付けして固定するので、取り付けの間隔は2.54mmの倍数となる。とりあえず一番近くに並ぶように取り付けてみた。
これで2つのフォトインタラプタの出力を見たところ、最初の写真のように位相がほぼ180度ずれており、ロータリーエンコーダとしては使えないことが判明。
次に、2つのフォトインタラプタを接着剤で接着して取り付けてみた。1つはリード線を基板にさしこんで固定し普通に配線するが、もう1つの方は基板には取り付けできないので空中配線となる。これで実験してみたところ、2番目の写真のように位相はほぼ90度のずれで、デューティーもほぼ1:1となっており、十分使えると判断した。
4輪車のステアリングの歯車の回転数の測定にロータリーエンコーダを組み込んだ。
手で歯車を動かしても方向と回転数を測定できるので、一度直進状態に設定するとモーターで動かしても手で動かしても常に位置を検出できるようになった。
次に、3輪車の左右の車輪にロータリーエンコーダを取り付け、逆立ちして歩かせてみようとした。動いた方向が分かれば多少役に立つはず、と思ったが、残念ながらいいかげんな制御では歩くのは無理、ということが良く分かった。
3輪車のほうは、ロータリーエンコーダを取り付けると、他の機能が使えなくなるし、大きな歯車を追加しないといけなくて見た感じも美しくないので、小さめの歯車にフォトインタラプタを1つ付けて回転数を数えるようにしておいた。
ロータリーエンコーダならではのアプリを考えることにする。
2011年11月1日火曜日
10.4 並んで歩く2台の車
散歩のお供は3輪車が後から追いかけてくるが、2台が並んで歩くのをやってみることにした。
センサーは超音波ではやりにくそうなので、他のものを使うことにし、まず歪ゲージを検討して見た。種類も多く調達が面倒なのと、きちんとしたアンプを作らないと使えないことが判明し、歪ゲージはあきらめた。以前ショベルカーで作ったメッキ線を巻いたスイッチが使えそうなので、これでやってみることにした。
4輪車から横に棒を出し、これで3輪車のスイッチを動かすことにする。
前・後・左・右を検出できるよう、まん中に軸を1本立て、その周りに4本軸を立て、軸にメッキ線を巻きつけてスイッチとする。まん中の軸と周りの軸の距離が少し離れているので、まん中の軸には軸をつなぐパーツを取り付けて直径を大きくし、そこにメッキ線を巻いた。まん中の軸に4輪車からの棒を取り付け、これでスイッチを動かす。
これで簡単に動くだろうと思っていたが、けっこう調整が必要であった。
右に曲がるときと左に曲がるときで、棒の先端にかかる力の方向が違い、左右バランス良く曲がれるように調整する必要があった。棒の先にユニバーサルジョイントを付けてみたり、角度を変えて棒をつないでみたり、つなぐ棒の長さを変えてみたりして、なんとかバランスがとれる組み合わせになった。
後退させるのは難しいことが判明したので、前進だけとしてある。
前のスイッチだけオンなら直進、前と右のスイッチがオンなら右前、前と左のスイッチがオンなら左前に進み、それ以外は停止する。
スイッチのチェックは100ms毎に行っている。
おまけで、3輪車を逆立ちさせた。
以前のものよりボディが小さくなり、固有振動数が大きくなったせいか、立たせるのにけっこう苦労した。相変わらずいきあたりばったりのいい加減な制御しかできないので、ジタバタしながら立っているのがやっとである。
動画は3つあり、最初のほうから、3輪車のスイッチの説明、並んで歩くところ、3輪車の逆立ち。
2011年10月21日金曜日
10.3 2代目散歩のお供
③散歩のお供:
ここで使っている車の説明が10.1、10.2にあるので、そちらもぜひご覧ください。
前を走る4輪車はリモコンでステアリングと前進・停止を制御する。4輪車が200ms毎に40KHzの超音波を送信するので、後を追いかける3輪車は超音波を受信し、左右の受信器の時間差で超音波の方向を判断する。また、車間を測定するため、3輪車が超音波を発信し、4輪車からの反射音が戻ってくる時間を測定する。
動作の制御は、停止中に車間が大きくなったら前進する。方向は前の車からの超音波の方向を目指す。車間が近づいたら停止する。
孫の反応:
最初に散歩のお供を見せたときは、クネクネ動くのを怖がって逃げて行ったが、それから1年半が経ち強くなってきた。怖がることなく見ているので、「前の車にうしろの車がついてくるんだよ」と言うと「それはわかってる」などと生意気なことを言うようになってきている。
10.2 2代目散歩のお供の3輪車
②3輪車:
3輪車はサイズをできるだけ小さくすることを目指して作成した。
後輪のタイヤを小さいものにし、後輪を支える仕組みを作り直すことで、ボディの高さは以前よりもかなり低くできた。後輪は1つの軸に2つついているが、それぞれが自由に軸の周りを回転できるので、曲がりやすくなったはず。
左右の前輪をそれぞれモーターで駆動する。左右両方のモーターで駆動すると直進、片方だけだと右または左に曲がり、左右のモーターを逆方向に駆動するとその場で回転する。
車体の前部左右に超音波の受信器をつける。前部中央には、距離測定用に超音波の発信器をつけてある。
リモコンで直進・右前・右回転・右後・後退・左後・左回転・左前・停止の制御ができる。
4輪車と比べて動きの制御のボタンが多いし、その場で回転もでき、動きの変化も速いので、リモコンで動かすのは3輪車のほうが面白いようである。
最初の動画は3輪車の動作説明、2つ目はリモコンで走らせるデモ。
10.1 2代目散歩のお供の4輪車
モーターが4つになったので、車2台で何かやらせることにした。あれこれ考えてみたが良いアイデアがまとまらず、2番煎じであるが、散歩のお供の2代目をつくることにした。
前を行く車は4輪車とし、後から追いかける車は3輪車とする。4輪車をリモコンで操作すると、3輪車が追いかけていく。
①4輪車:
4輪車は、ステアリングとディファレンシャルギアつきのものとするが、以前のものと同じでは面白くないので、メカを作り直すことにした。以前のものはステアリングの部分は左前輪のところに大きな歯車がついていて、左右対称でなかったので、この歯車をボディの中央に持ってくるようにした。本来は、1本のタイロッドで左右の前輪を左右に動かすのだが、レゴのパーツだけでは作成が難しかったので、歯車から左右に1本ずつバーを出し、これで前輪を動かすようにした。バーの取り付け位置の関係で左右のバーが1直線にならず、ステアリングを真っ直ぐにした状態で、左右の前輪が並行でないのが難点であるが、走るスピードも遅いので、走行に問題はない。
ステアリングの位置を管理できるよう、歯車にフォトインタラプタをつけ、回転数を測定する。
また、以前はディファレンシャルギアをレゴの普通のパーツで作ったので、ギアが大きくなり、車輪はバイク用の大きなものしか使えなかったが、ディファレンシャルギア用のギアボックスを入手できたので、これを使いコンパクトに作成できた。タイヤは普通のサイズのタイヤが使える。モーターからの駆動は、前回と同様チエーンで駆動する。
車体の後部に超音波発信器をつける。また3輪車からの超音波を反射する反射板もつける。
リモコンでステアリングの右・左・中央と前進・後退・停止のコントロールができる。
最初の動画は4輪車の動作説明、2つ目はリモコンで走らせるデモ。
2011年10月4日火曜日
8.6 ショベルカー
働く車シリーズでショベルカーを作った。
以前レゴテクニックの8047(ショベルカーのセット)を買ってあったので、バケツやアームなどはほとんどそのまま使うことにした。
モーターで動く部分は、バケツの上下、アームの上下、全体の左右回転の3つ。
バケツとアームの上下は歯車で動かすのは難しく、ひもで引っ張ることにした。(写真4)
アームの上下は、降ろす方は重力で自分で降りて行くので、上げる方だけひもで引っ張る。バケツは上げる方も降ろす方もひもで引っ張らないとうまく動かないため、1本の軸の左右に逆方向にひもを巻きつけ、左側のひもで巻き上げ、右側のひもで降ろすことにした。左右逆方向にひもを巻きつけてあるため、ひもにたるみが生じ、逆に動かす時に動き始めるまでにちょっと時間がかかるのが難点である。
バケツとアームの位置を管理するため、歯車にフォトインタラプタを取り付け、移動量を測定するようにしてみたが、ひもで引っ張っているためか、再現性が低く使えないことが判明した。結局バケツとアームの一番上と一番下の位置にスイッチを取り付け、その範囲だけで動くようにした。(写真5,6)
スイッチはレゴのパーツにメッキ線を巻きつけ、2つのメッキ線が接触するのを検出するようにした。長期間安定して使うことはできないと思われるが、うまく動作している。
歯車の回転数測定からスイッチ方式に変更したため、スイッチや配線ケーブル作成に予想以上に時間がかかってしまった。
全体の左右の位置の検出は反射式のフォトインタラプタを使用した。(写真7)フォトインタラプタをボディの左右に取り付け、右いっぱい、中央、左いっぱいを検出する。
バケツで掬う荷物は、最初レゴの一番小さいブロックを使ってみたが、四角くて角があるため、引っかかって飛び散ることが多くあきらめた。丸いものにしようと考えていて、友人がBB弾を持っていたのを思い出し、少し提供してもらった。試してみたところ、具合が良くこれに決めた。
レゴのブロックで箱を作り、これに入れておく。
トラックもレゴで作成した。
マニュアル動作では、リモコンでバケツの上下、アームの上下、全体の左右回転を制御する。
自動動作では、全体左回転->バケツ降ろす->アーム降ろす->バケツ巻き上げ(荷物を掬う)->全体右回転->バケツ降ろす(荷物をトラックに載せる)、の動作を2回行い、最後は全体が正面を向き、バケツ・アームを巻き上げた状態で終了となる。
動画は2つあり、1番目は動作説明で2番目は自動動作のデモ。
孫の反応
最近はキラキラ光る折り紙で何かを作るのに熱中しており、レゴのおもちゃには興味を示さない。唯一興味を持ったのはBB弾だけ。
2011年8月28日日曜日
8.5 自分で荷物を取り台に乗せるフォークリフト
フォークリフトが自分で荷物を取り、台に乗せる仕組みを作った。
作成中にモーターをもう1つ調達できたので、車輪の駆動を左右それぞれ独立に行うようにした。これで、ディファレンシャルギアなしでも曲がりやすくなったし、駆動力も強くなった。
モーターは4つ使っており、車輪の駆動に2つ、フォークの上下に1つ、ステアリングに1つ使用している。
フォークの上下とステアリングはフォトインタラプタで移動量を監視しているが、車輪の駆動はフォトインタラプタを使えないので、駆動時間だけで制御している。
センサーは駐車場に車を停めるのと同じ超音波センサーを使い、制御もほぼ同じ仕組みで行っている。
台の方向は、台から送信される超音波が左右の受信器に届く時間差で検出する。
フォークリフトから送信する超音波が台の壁で反射され、左右の受信器に戻ってくる時間を測定し、台との距離と台との角度を測定する。
台はマニュアル動作用に作成したテーブルと散歩のお供で使った引っ張る車を合体させ、壁を拡大して作った。200ms毎に40KHzの超音波を発生する。
フォークリフトは受信用のセンサーを左右それぞれ1つ持ち、距離測定用の送信器を1つ持つ。送信器の位置は最初はフォークの後ろにしたが、これだとフォークの上下の位置の制限もあるし、台との間に柱などもあったりして不安になり、結局フォークの下に取り付けることにした。
動かす前にマニュアルでフォークを床ギリギリの高さにし、ステアリングを真っ直ぐにしてリセットボタンを押しておく。
荷物を取り上げるところは、方向の検出はなしでやることにした。荷物をフォークリフトの正面に置き、フォークを少し持ちあげて荷物までの距離を測定し、一定距離まで前進する。そこで再度距離を測定し、フォークを床に降ろして前進し荷物を台より少し高い位置まで持ち上げる。
その後、荷物を持って後ろに下がり、台と真っ直ぐになるように方向を調整し、だいたいまっすぐになったところで停止し、台に向かって真っ直ぐ前進する。
台と一定の距離に近付いたら停止し、台の中心に近いか、台との角度が直角に近いか測定する。OKなら前進して荷物を台に降ろし、後ろに下がって終了。
NGの場合は再度後ろに下がり、やり直す。
これで、なんとか予定の動きができるようになったが、成功の確率がかなり低いのが残念である。
動画は2つあり、最初のものは一度で成功した例で、2番目はやり直して成功した例。
孫の反応
一度動かしてみせ、うまく台に乗せることができたが、どうもリモコンで操作していると思っているらしい。自分で動いていることを説明してもう一度見せる必要がある。
登録:
投稿 (Atom)