(日々の記録)デジタルオシロを買った。(木)モーター制御が先に進まないメカトロニクスだ、ロボットだと意気込んで始めたモーター制御だが、早くも挫折気味である。Xbeeラジコンが一通り動いたので、次はステッピングモーターを動かしてみた。これはすんなり動いたのだが、その先の課題、センシング技術でぱったり歩みが止まってしまった。その顛末はあとでゆっくり説明するとして、とりあえずこの3週間の活動報告から。ステッピングモーターで遊ぶ(4/12/11)モーター制御の次のお題。ステッピングモーターである。マイコンの作ったパルスだけでモーターを回す一種のブラシレスモーターで、こういうしかけは工作心(ごころ)をとても刺激する。先達(ここや、ここなど)のページを読んでやりかたを勉強する。5V近辺では、普通のステッピングモーターでは余り高回転にはできないようだ。kumanさんあたりによると120rpm(1秒に2回転)くらいが限度だと言う。実験なので、ありあわせの5V電源に、LEDマトリックスのとき使ったトランジスタアレイTD62083をドライバーにして早速ブレッドボードに組んでみる。フラッシュは少ないが、ポートが連続して取れるし、何しろ安い(¥100)のが強みである。プログラムは順当にタイマー割り込みで制御タイミングを作り、例のISP-UARTでモーターのスタート・ストップ、速度制御が出来るようにする。コンペアマッチで起きるタイマー割り込みの間隔をUARTのコマンドで調整できるようにして、4bitのポートピンを順次パターンどおり入れて動かしていく。ポートの下半分(上半分にはISP-UARTが入っている)だけをいじりたいので、一旦、ポートごと、ピンを読み出してセーブし、必要なところだけデータを入れ替えてから元へ戻す。いわゆるread/modify/writeでコードを組む。0b00000011};それで、以下のステートメントを割り込みの度に実行させれば、動くはずだ。patternモーターはすんなり動き始めた。おやあ、ジージー音がして、余り良く廻らないぞ。これが脱調と言われるやつか。タイマーの時間を増やしていく。うむ、少しづつ振動が減って回転がスムーズになってきた。音も振動もなく静かにモーターが廻り続ける。おやおや60rpm(回転数/分)以下だ。このステッピングモーターは5Vでは、55rpmを越すと細かい脱調が始まる。スタートストップや、逆回転(逆にしたパターンの配列に換えるだけ)のコマンドを入れて、UARTから自由にモーターが制御できるようにする。こんな簡単な実験でも、やっぱり動きモノは理屈ぬきに面白い。ステッピングモーターは残念ながら実験だけで手近な応用例が見当たらない。この程度の速さなら、時計の針くらいしか用途が思い浮かばない。カメラのパンくらいには使えそうな気もするが、今のモーターでは非力すぎて無理だろう。マイクロマウスにはもっと強力なモーターが必要だ。ステッピングモーターを回すだけのソースですが、とりあえずここに置いておきます。例によってAVRStudioのフォルダーになっています。回路図はつけませんが、ソースのコメントを参照してください。「STPM2313.zip」をダウンロード大阪造幣局の「通り抜け」に行ってきた(4/14/2011)久しぶりに関西に家の用事で戻ったとき、丁度、遅咲きの桜で有名な大阪造幣局の「通り抜け」の公開初日にあたったので見に行ってきた。ここは、見事な八重桜の並木が川沿いに1キロ近く続くところで、所長は関西出身だが、これまでTV、新聞で見るだけで実際にここを「通り抜ける」のは今回が始めてである。平日の初日なので思ったほど人は居なかった。花の時期としてはまだ少し早く、こぼれるような八重桜というわけには行かなかったが、沢山の種類の八重桜を鑑賞できた。混んでも居ないのに係員が「立ち止まるな。足を止めるな」とうるさく拡声器でせかすのは興ざめだった。関西は地震の影響は少ないと聞いていたが、このとき乗ったタクシーの運転手の話に驚いた。国外に避難した外国人だけでなく、関東の日本人もたくさん関西に逃げてきたそうである。明治維新の頃、写真をとられると魂が抜かれると怖がり、明治になってからでも、送電線の下をくぐるとコレラにかかるという迷信が流行ったことがあるそうだ。人間と言うのは、理解できない、目に見えないものに対しては特別な恐怖心を覚えるものらしい。原発の是非をここで議論するつもりはない。冷静に判断して、4月に入ってからの福島原発の状況は、関西まで逃げなければならない状態ではない。事故発生直後の1週間は確かに心配だった(ひそかに風向きとか天候を調べていた)が、今はその危機を脱していることは確実だ。日本は最近まで、放射線照射などによる遺伝子組み換え大豆を輸入していなかった数少ない国の一つだそうであるが、どうも怖がり方のピントがずれている。女優と離婚騒ぎを起こしたネットの有名人が、西表島から「原発から一番遠い南の島より」というメッセージをブログに載せてみんなの顰蹙(ひんしゅく)を買ったが、西表島の西200キロ(東京福島間くらい)には放射能漏れで反対運動の起きている台湾の原子力発電所が3つ以上稼動しており、しかも偏西風で間違いなく風は沖縄にやってくる。怖がるのも良いが、正しい怖がり方をして欲しいものだ。明治の人を笑ってはいられない。FETならもっと早くなると思ったが(4/16/2011)それはともかく電子工作である。旅行から帰った後、工作室に戻っても、やることがなくなってしまった。ステッピングモーターは動いたが、目的がないので、まわってしまえばそれだけの話である。それでは身も蓋もないので、モータードライバーをトランジスタアレイでなく、MOS-FETに換えてみた。秋月で買ったNMOSのFETアレイMP4401である。5つも買ってしまってある。ネットの回路図には、ゲートとマイコンのポートの間に抵抗が入っている(2KΩ程度)のと入っていない直結のものがあるが、実験なので直接つないでしまう。ピンを少しやすりで削り(1mm近くあってブレッドボードにささらない)、トランジスタアレイへの配線からFETアレイの方にジャンパーを飛ばす。このFETアレイには、モーターの逆起電圧をバイパスする、フライバックダイオードも内蔵されているので配線は簡単に済んだ。うむ、トランジスタより快調のようだ。脱調が起きずにスムーズに廻る限界は、トランジスタでは55rpmだったが、FETにすると70rpmくらいまで楽に安定して廻った。オシロで見ると、モーターにかかる電圧はP-Pではどちらも5.2Vで全く変わらない。変わったところは、RMS(実効電圧)で、FETで3.6Vとトランジスタより、0.1Vほど高くなった。モーターは暫く連続して回すと(80~90mA)、ほんのり暖かくなるが、FETの方は全く熱らしいものは持たない。連続3Aをドライブできる石に1/30もかけていない。牛刀で鶏を解体しているようなものだ。トランジスタの場合は、この前のXbeeラジコンカーのTA7291Pでは小さなモーターひとつに結構、熱を持っていたが。FETで動かして、ステッピングモーターでは、やることがなくなった。大きいものを動かさないと大電流の制御をマスターしたことにはならない。この先のマイクロマウスなどは、ステッピングモーターで駆動しているようで、このまま先に行くのはちょっと不安だが、ウェブで見る限りマイクロマウスに使っているモーターは結構高価でそう簡単に試すわけには行かない。計画しているウェブカメラの雲台などの制御はステッピングモーターになると思うが、これは機械工作の方が大変だ。なると、当面の目標はライントレーサーということになる。2モーターの制御はラジコンで確かめてあるので、地面の書かれた線をなぞって車を制御するセンシング技術が次の課題である。¥60)を調達し、これでやるつもりだ。ライン制御のノウハウがわからない(4/18/2011)センサーのロジックを調べ始めた。参考になる情報が極めて少ない。ライントレーサーを話題にしているサイトは山ほどあるのだが、実際にフォトインタラプターの数はどれくらいが良いのか、折れ曲がったライン(直角のラインなどが難しそう)をうまくトレースして2つのモーターの制御を具体的にどうするべきかなどの実践的な情報がないのである。2010年1月号)には簡単な制御ロジックがでているが(P60~65)、こんな簡単な制御(3つのインタラプター出力をコンパレーターにかけ0,1だけで判断)では、少し速度を上げればすぐ破綻するのは目に見えている。頼りになったのは、結局はやはりChaNさんのチョロQのモーターをつかった手のひらサイズのライントレーサーのページである。用紙の上に描かれた8の字コースを器用にクルクル廻る。ここでも制御アルゴリズムとなると途端にPID制御の話が出てきて理解不能に陥る。こちらは昔、なまじ自動制御技術をラプラス変換か何かで勉強させられたのでその復習を、良い機会なのでやりたいのだが、このPID制御理論との整合性がどうにもとれない。他のサイトも、このあたりは極端に省いているか、極端に難しく説明しているかどちらかで、こちらが考えているような具体的な技術(しかけ)に応用できそうなロジックが見つからない。最近、良くコメントを寄せてくれるeNastyさんが紹介してくれたサイトも、全体的な話だけで肝腎のセンシングのアルゴリズムまでは出ていない。秋月で入手した大きめのフォトインタラプターLBR127HLDは、ちょっと試してみたところ、かなり感度は高そうなので性能的には問題なさそうだが、これをいくつ並べて、どの位置から値をとれば良いのかがわからない。ラインセンサーのこの部分はかなり高いノウハウのようで、そう簡単にはウェブでは教えてくれないようだ。意図的に省いているのではないかと勘ぐりたくなるくらいである。やれやれ、これは相当な下準備をして、実験を重ねながら、自分なりのアルゴリズムを考えて実装していく必要がありそうだ。