2011年8月28日日曜日

8.5 自分で荷物を取り台に乗せるフォークリフト







フォークリフトが自分で荷物を取り、台に乗せる仕組みを作った。
作成中にモーターをもう1つ調達できたので、車輪の駆動を左右それぞれ独立に行うようにした。これで、ディファレンシャルギアなしでも曲がりやすくなったし、駆動力も強くなった。
モーターは4つ使っており、車輪の駆動に2つ、フォークの上下に1つ、ステアリングに1つ使用している。
フォークの上下とステアリングはフォトインタラプタで移動量を監視しているが、車輪の駆動はフォトインタラプタを使えないので、駆動時間だけで制御している。

センサーは駐車場に車を停めるのと同じ超音波センサーを使い、制御もほぼ同じ仕組みで行っている。
台の方向は、台から送信される超音波が左右の受信器に届く時間差で検出する。
フォークリフトから送信する超音波が台の壁で反射され、左右の受信器に戻ってくる時間を測定し、台との距離と台との角度を測定する。

台はマニュアル動作用に作成したテーブルと散歩のお供で使った引っ張る車を合体させ、壁を拡大して作った。200ms毎に40KHzの超音波を発生する。
フォークリフトは受信用のセンサーを左右それぞれ1つ持ち、距離測定用の送信器を1つ持つ。送信器の位置は最初はフォークの後ろにしたが、これだとフォークの上下の位置の制限もあるし、台との間に柱などもあったりして不安になり、結局フォークの下に取り付けることにした。

動かす前にマニュアルでフォークを床ギリギリの高さにし、ステアリングを真っ直ぐにしてリセットボタンを押しておく。

荷物を取り上げるところは、方向の検出はなしでやることにした。荷物をフォークリフトの正面に置き、フォークを少し持ちあげて荷物までの距離を測定し、一定距離まで前進する。そこで再度距離を測定し、フォークを床に降ろして前進し荷物を台より少し高い位置まで持ち上げる。

その後、荷物を持って後ろに下がり、台と真っ直ぐになるように方向を調整し、だいたいまっすぐになったところで停止し、台に向かって真っ直ぐ前進する。

台と一定の距離に近付いたら停止し、台の中心に近いか、台との角度が直角に近いか測定する。OKなら前進して荷物を台に降ろし、後ろに下がって終了。
NGの場合は再度後ろに下がり、やり直す。

これで、なんとか予定の動きができるようになったが、成功の確率がかなり低いのが残念である。

動画は2つあり、最初のものは一度で成功した例で、2番目はやり直して成功した例。

孫の反応
一度動かしてみせ、うまく台に乗せることができたが、どうもリモコンで操作していると思っているらしい。自分で動いていることを説明してもう一度見せる必要がある。

2011年8月1日月曜日

8.4 ハンドルがモーターで動くフォークリフト











レゴのモーターを1つ調達できたのでフォークリフトのハンドルをモーターで動かすようにした。
また、以前のフォークリフトを友人に見せたときに「こいつが自分で荷物を取ってテーブルに置くのか」と言われたことを思い出したので、実現方法を検討し、駐車場に車を停める仕組みを使うことにした。

以前のフォークリフトをベースに、ハンドル用のモーターと超音波の送信用のピエゾ1つ、受信用のピエゾを2つ追加した。
ピエゾを実装する位置の関係でフォーク用のモーターは高い位置に置かざるをえなくなり、以前よりも背が高くなった。

フォークリフトが自分で荷物を運ぶ制御はこれから作り始めるが、マニュアルでは動くようになったので、とりあえずブログに書き込むことにした。今月中には自分で荷物を取ってテーブルに置く仕組みを動かすつもりである。

ハンドルの駆動は、以前手で回していた軸に歯車をつけ、これをモーターで駆動する。ハンドルの角度を検出するため、歯車にフォトインタラプタをつけてある。ハンドルは右回転・左回転・停止・直進の制御ができる。右回転・左回転の場合、一定の角度になるとそれ以上角度が大きくならないようにモーターを停止させる。

フォークを駆動するモーターの取り付け位置が高い所に変更になったので、駆動用のチェーンが短くなり、フォークが以前よりも高い位置まで上がるようになった。フォークの上下の位置を制御するため、フォークを駆動する歯車にもフォトインタラプタを取り付けた。

超音波を送信するピエゾは車体の中央に置く。フォークの後ろ側にしか置けなかったので、超音波を送信するときはフォークを高い位置に移動させておく必要がある。
受信用のピエゾは車体の左右に置く。

荷物までの距離を測定できるよう、荷物のタイヤの後ろに壁を作った。
荷物の台から超音波を送信する、また距離測定用の壁も必要なので、荷物の台に以前作った散歩のお供の引っ張る車をそのままくっつけてある。

写真は10枚ある。最初の3枚はフォークリフト全体の写真。最初の写真に送信用のピエゾが見える。次の2枚はフォークの駆動部とフォトインタラプタ、次の2枚はハンドルの駆動部とフォトインタラプタ。次はフォークリフトと荷物の台で最後の2枚は荷物の台。
動画は2つあり、最初は仕組みの説明で、次は荷物をマニュアルで台に移動するデモ。

2011年7月25日月曜日

10.0 新コントローラー





クレーン車やフォークリフトでモーターが2つでは足りなくなってきたが、モーターを調達するめどが立ってきたので、モーターを4つ使える制御基板の製作を開始した。
PICはこれまでと同じPIC18F2431を使うことにした。モーターが2つから4つに増えたため、モーターの制御に必要な制御信号が増える。従来の制御基板は動作状態を表示するLEDを5つ持っていたが、これを2つに減らし、入・出力ピンはジャンパプラグで用途を切り替えるようにして、なんとか収まった。

モーターの数は2から4に増えたが、他の機能は以前のものと同じにしてある。
Piezoの入力は2チャンネル、Piezoの出力も2チャンネル分用意してある。
2つ同時に使うことも考え、モーター用の電池基板も新規作成した。
LEDの数が少なくなったのでデバッグの手間が増える可能性があるが、赤外線でPCに情報を送ることができるので、これでデバッグすることにする。

ハードの製作とデバッグがほぼ終了したので、久しぶりにブログに書き込むことにした。

以前のソフトウエアからの変更点は、赤外線の入力をメインループで監視しながら処理していたのを、今回は赤外線入力の変化で割り込みをかけて処理するようにしたくらいである。
ピエゾ入力による割り込み処理、ピエゾ出力、赤外線リモコンの入力、赤外線出力、モーター駆動などの動作確認を行った。
最後にフォークリフトを新しいコントローラで動かし、問題なく動作することを確認した。

写真はいずれも右側が新コントローラ、左側が旧コントローラである。見掛け上の違いは、モーターを駆動するTA7291Pが4つに増えたこと、LEDが減ったこと、ジャンパプラグがついていることなど。

2011年7月4日月曜日

8.3 フォークリフト





働く車シリーズでフォークリフトを作った。
荷物を乗せるフォークが上下するメカを作るところで苦労したが、2本のレールで左右からフォークを挟み込む形とし、ひもで上から引っ張り上げるようにした。ガタも少なく、スムーズに上下できている。
動かす部分は、フォークの上下、車体の前後、ハンドル、の3つとしたが、モーターが2つしかないので、残念ながらハンドルは手で回して動かすことにした。

作っていると、形をきれいにしたい、とかできるだけコンパクトにしたい、とかフォークに重い荷物を乗せてもずるずる落ちないようにモーターからの減速比を大きくしたい、とかいくつも改善したい点が出てきて、何度も作り直すことになった。

結局、フォーク駆動の減速比は(40/8)*(24/16) = 7.5となっている。フォーク停止中はモーターでブレーキもかけているので、重い荷物を乗せてもずり落ちることはない。

車輪の駆動はディファレンシャルギアを付けて小回りができるようにしたかったが、ハンドルも手動だし、デフ部分が大きくなって形がフォークリフトらしくできないので、デフなしで両輪を駆動している。
フォークリフトなので、前輪を駆動し、後輪でハンドルを切る。
ハンドルの角度はあまり大きくならないように設定してある。
フォークと車輪の操作はいつものように赤外線リモコンで行う。

動画は2つあり、最初のものは動きの説明で、次のものは荷物を移動する実演。

孫の反応
これまでで一番興味を持ったようである。荷物を台に乗せるのをやって見せて、動かし方を教えてあげたら、自分でもやってみて、両親にやって見せたりしていた。

2011年6月23日木曜日

8.2 小さなクレーン車





リー君とレゴで遊んでいて、リー君が作った車にクレーンをつけることになった。フックの部分のパーツはリー君が選んだパーツを使う、という条件付き。その日は時間がなかったので、「次に来る時までに作っておくよ」と言って車の屋根にクレーンのアームとフックを付けて錘も付けておいた。

昨日迎えにいったところ「クレーンできてる?」と聞かれた。作っておいて良かった。
家につくと、さっそくいじってみて「これだめじゃん」と言う。アームを前に倒したときに錘が床に着くのが気に入らないらしい。作り直そうかとも思ったが、アームの先のフックの部分を逆に折り曲げ、錘をアームの上に置くようにしてみたところ、これで許してもらえた。

アームは3段階の角度で止められる。フックの部分はバイクの後車輪を支えるスプリングつきのパーツ。荷物は以前のクレーンで使った釣りの錘。

写真は上から、アームが立っているクレーンその1、その2、「ダメ」な状態、許してもらった状態。

2011年6月19日日曜日

9.1 聴力テスト用アプリ



先日聴力テスト用のサイン波を作成したので、それを使ってテストを行うアプリケーションを作成した。
初めてJavaを使ってみた。きちんと勉強したわけではなく、サンプルをネットで探し、HTMLをつぎはぎしながらなんとか動くようになった。

初心者の悲しさで、使い勝手も見栄えもほめられたものではないが、最低限必要な機能は持っているし、使う人も限られているので許してもらうことにした。
作者はインターネット上で使えるサーバーを持っていないので、今回はアプリはCDに焼いて配達する。

テストする周波数はオージオグラム測定と同じ周波数とした。音圧は絶対値の設定はできないので、相対値の表示となる。
左右・周波数毎に-60dBから0dBまで徐々に大きくなるサイン波を聞き、聞こえた時点にストップボタンを押し、聴力を測定する。
これを繰り返し、全部終わったところで結果をグラフで表示する。

画面のスナップショットを2枚用意した。
最初のものは使いかたの説明と、操作ボタン。
次のものは作者がテストした結果をグラフにしたもの。
4KHzが一番良く聞こえている。8KHzが聞こえにくいのは老人性のものであろう。
低い周波数が聞こえにくいのは、PCの再生環境やヘッドホンの特性なども影響している可能性がある。

2011年6月15日水曜日

5.5 ひらがなを書く三輪車





一筆書きの家に続いて、孫のリー君の名前をひらがなで書くことにした。
最初に「り」のデータを作り、次に「ひ」のデータを作っていたら、初期値付きのデータのサイズがオーバーした、とメッセージが出てビルドできない。データのフォーマットを修正し、なんとか「りひ」まで書けるようになった。
調べてみたところ、使っているPIC18F2431にはRAMは768Bytesしかない。「りひ」のデータで256Bytes弱を使っていて、スタックも256Bytes使っていることが判明。スタックはほとんど使わないので、スタックを小さくし、メモリのレイアウトも修正して文字のデータを追加してビルドしてみたが、やはりNG。これ以上調べるのはやめにして、「りひ」だけ書くことにした。

ブログを見た友人から、写真の背景のカーテンの模様がうるさい、というコメントがあり、背景には無地の布を使うのが良いというアドバイスもあった。
今回の写真は背景にバスタオルを使って撮影した。カメラは絞り優先モードで絞りは18に設定し、タオルの色を変えたり明るさを調整してみたり何度かテストし、明るさを-0.7に設定した。カメラは三脚に取り付け、リモコンで撮影。

孫の反応
前回、次はリー君の名前を書こう、と言っておいたので、動かしてみたらすぐに自分の名前を書いているとわかった。「りひ」までしか書けないことを説明して写真に撮った文字を見せたところ、「り」の幅が広すぎて、これは「い」だから「いひ」だね、と言われてしまった。最終版は「り」の幅を少し狭めるように調整しておいた。