2010年3月末で仕事が終わりになり時間ができたので、3才の孫(男の子)が遊べるおもちゃを作ることにした。動くものに限ると思いあれこれ検討した結果、以前息子用に買ってあったレゴのマインドストームを使うことに決めた。制御は自作することにしてネットでCPUの調査を行い、昔ながらのDIPのパッケージが自作向きなのでPICを使うことにした。 いくつかおもちゃを作成し、自分用のメモを作っておくことにしたがついでなのでブログを作成して公開することにした。 写真と動画を見て笑っていただきたい。 なお、1ページで表示できなくなってきたので、以前のものを見る場合は、このページの最後の「前の投稿」をクリックしてください。
2011年1月21日金曜日
4.1 秒針がカチカチ動くキッチンタイマー
前回作ったタイマーは秒針をモーターで回しているだけなので、動きにシャープさがないのが不満であった。時計のテンプのように歯車をストッパーで止める仕組みを作り、秒針がカチッカチッと動くようにしてみることにした。
ストッパー
歯車の形に合うようにレゴの軸を削り、アームに取り付けて具合を試してみたところ、微妙な位置関係のせいで、秒針が右回りになるように歯車を回すとストッパーが自然に持ちあがって回るが、逆方向だとストッパーが強く効いてストッパーを外さないと歯車が回らないことがわかった。
秒針右回りのバージョンと、カムでストッパーを持ちあげる仕掛けを入れた左回りのバージョンの2つを作ってみる。
秒針を動かす歯車
1秒毎に秒針を動かしたいが、レゴの歯車の歯数の関係で1秒毎はできず、1秒に2回ずつ秒針を動かすことにした。
秒針は40歯の歯車に取り付け、これを8歯の歯車で回す。8歯の歯車と同じ軸に24歯の歯車をつけ、これをストッパーで止める。こうすることで、24歯の歯車が1歯動くと、秒針の40歯の歯車が1/3歯動く。24歯の歯車が120歯動くと、秒針の歯車が40歯動き、ちょうど一回りすることになる。
それぞれの軸の歯車の歯数は、
モーター軸:8
1軸目:24->8
2軸目:24->8 ストッパー
3軸目:40 秒針
モーターは500ms毎に起動し、一定時間(90ms)で停止するようにした。
カムを動かす歯車
カムはストッパーのアームを持ちあげるため、500ms毎に1回転させる。
秒針を動かすモーターと同じモーターでカムを動かしたかったが、簡単にできるメカを思いつけず、カム専用のモーターを使うことにした。モーターを減速せずカムの軸を回す。こちらのモーターも一定時間で停止するようにしてみたが、電池の残量が変わると止まる位置が変化することが判明したため、カムの軸に40歯の歯車を着け、これをフォトインタラプタでカウントして、30カウントになったところで駆動を停止するようにした。
結果
カムなしのほうがガチッガチッと大きな音がする。カムありのほうはカチッカチッと軽い音で動き、秒針の動きにシャープさがあるが、カムを動かすモーターの音がうるさい。
メカがシンプルで電池の使用量も少ないカムなしのほうが省エネで良さそうである。
孫の反応
これには興味を示さないだろうと思ったが、スイッチの操作を覚え、父親に動かして見せたりしている。クネクネ動かないので気持ち悪くないのか。
2011年1月16日日曜日
5.3 転びにくくなった逆立ち三輪車
先日、ジタバタ動く逆立ち三輪車をアップしたが、歩かせようとするとジタバタ動くだけですぐに転んでしまい、とても歩いたとは言えない状態であった。
どうにも悔しくて、しつこく調整をやってみたところ、少しは転びにくくなったので再度アップすることにした。
修正点
歩くときにボディを傾けるのをやめた、これで転びにくくなった。
センサーと床の距離(x)からモーターを駆動するPWMのデューティー(y)を計算するところをいくつか試してみた。y=ax, y=(ax)*(ax)の2つの式で係数aを数種類試してみたところ、y=1.75xが一番転びにくく、少しは歩いている風に見えるのでこれを採用した。
歩く時の前後の駆動の強さの比は1:(1/8)とした。
結果
前回よりは転びにくくなり、ゆっくりではあるが歩こうとしているように見える。ただし、前に歩かせようとしても、前に行ったり後ろに戻ったりするので、どちらに進んでいるのかわかりにくい、、、。
2011年1月13日木曜日
5.2 逆立ちしてジタバタ動く三輪車
以前、逆立ち2輪車を歩かせようとしたが、制御がいいかげんなため立ち上がるのがやっとで歩かせることはできなかった。久しぶりに逆立ち歩きに再挑戦することにした。
前回は2輪車のボディを作ったが、三輪車のボディが斜めに逆立ちできることに気がついたので、ボディは三輪車をそのまま使うことにした。
制御は前回と同じ方式とし、センサーも前回と同じ超音波の送・受信器を使う。
前回はセンサーを2セット使ったが、ボディの角度がわかれば良いのでセンサーは1セットあれば良いことに気がつき、ボディの前方に1セットだけセンサーを取り付けた。受信の感度を高くするため、また転んだときにセンサーが外れにくくするため、センサーの取り付け角度が変わるようにしてある。
逆立ち
ボディの角度をセンサーと床までの距離で測定する。ちょうど逆立ちになる位置にボディを置き、スイッチを押すとそのときのセンサーから床までの距離を測定し、これをゼロ点の値とする。測定の間隔は数ms程度で、リモコンで調整できるようにしてある。
2回連続して前方または後方に傾いたら、反対側にボディを動かすため、そのときの測定値とゼロ点の値の差をもとにして車輪の駆動のPWMのパルス幅を決めて駆動する。
ゼロ点の設定が難しいので、設定した後リモコンでゼロ点の値を調整できるようにした。逆立ちした状態でゼロ点の値を増やしたり減らしたりしながら、安定して逆立ちするよう調整する。
歩かせる
歩く方向にボディを傾けるようにしてみた。歩き始めるとすぐに速度が上がり、制御できなくなって転んでしまう。
次は歩く方向と逆方向に駆動する時の駆動力を弱くしてみた。4分の1くらいにすると転ばずにジタバタ動こうとする。ただし、2つのモーターの特性の違いのせいか、まっすぐに動かずに曲がってしまう。片方の車輪だけ駆動力の制御をしてみたところ、転びにくくなったので、この方法で歩かせることにした。
これだけだとあまり動かないので、歩き初めに少しだけボディを傾け、徐々に傾きをなくすようにしてある。
歩く方向はリモコンで指示する。前・後・右前・左前・右後・左後・停止。
結果
歩きたがっているのはわかるが、ちょっと動いたと思っても、しばらくすると元の場所に戻っていたりして、とても歩いたとは言えない。いいかげんな制御ではこのあたりが限界か。
孫の反応
逆立ちしているのを見て「へー」という顔をしていたが、歩いていると認識できないようで、それ以上の興味は示さなかった。
登録:
投稿 (Atom)