モーター制御が先に進まない
メカトロニクスだ、ロボットだと意気込んで始めたモーター制御だが、早くも挫折気味である。Xbeeラジコンが一通り動いたので、次はステッピングモーターを動かしてみた。これはすんなり動いたのだが、その先の課題、センシング技術でぱったり歩みが止まってしまった。
その顛末はあとでゆっくり説明するとして、とりあえずこの3週間の活動報告から。
ステッピングモーターで遊ぶ(4/12/11)
モーター制御の次のお題。ステッピングモーターである。マイコンの作ったパルスだけでモーターを回す一種のブラシレスモーターで、こういうしかけは工作心(ごころ)をとても刺激する。今度のプロジェクト(ライントレーサーが一応の目標)の買い物をしたときに、用もないのに面白がって秋月で一番小型で手頃なステッピングモーターを買ってあった(SPG20-1362 ¥250)。
先達(ここや、ここなど)のページを読んでやりかたを勉強する。5V近辺では、普通のステッピングモーターでは余り高回転にはできないようだ。kumanさんあたりによると120rpm(1秒に2回転)くらいが限度だと言う。実験なので、ありあわせの5V電源に、LEDマトリックスのとき使ったトランジスタアレイTD62083をドライバーにして早速ブレッドボードに組んでみる。
マイコンは、お馴染みのAVR Tiny2313。フラッシュは少ないが、ポートが連続して取れるし、何しろ安い(¥100)のが強みである。 プログラムは順当にタイマー割り込みで制御タイミングを作り、例のISP-UARTでモーターのスタート・ストップ、速度制御が出来るようにする。
コンペアマッチで起きるタイマー割り込みの間隔をUARTのコマンドで調整できるようにして、4bitのポートピンを順次パターンどおり入れて動かしていく。ポートの下半分(上半分にはISP-UARTが入っている)だけをいじりたいので、一旦、ポートごと、ピンを読み出してセーブし、必要なところだけデータを入れ替えてから元へ戻す。いわゆるread/modify/writeでコードを組む。
配列phase[4]に二相駆動のパターンをconstで定義し、
const phase[4] = {0b00001001, 0b00001100, 0b00000110, 0b00000011};
それで、以下のステートメントを割り込みの度に実行させれば、動くはずだ。
pin_save = PINB & 0xF0; // save upper nibble of PINB
pin_save |= phase[i++]; // take next pattern
if(i == 4) i = 0; // repeat it evry 4 times
PORTB = pin_save; // set new PORTB pattern
モーターはすんなり動き始めた。おやあ、ジージー音がして、余り良く廻らないぞ。これが脱調と言われるやつか。タイマーの時間を増やしていく。うむ、少しづつ振動が減って回転がスムーズになってきた。遂に全く音も振動もなく静かにモーターが廻り続ける。おやおや60rpm(回転数/分)以下だ。このステッピングモーターは5Vでは、55rpmを越すと細かい脱調が始まる。
スタートストップや、逆回転(逆にしたパターンの配列に換えるだけ)のコマンドを入れて、UARTから自由にモーターが制御できるようにする。こんな簡単な実験でも、やっぱり動きモノは理屈ぬきに面白い。しばらく遊ぶ。
ただ、ステッピングモーターは残念ながら実験だけで手近な応用例が見当たらない。この程度の速さなら、時計の針くらいしか用途が思い浮かばない。カメラのパンくらいには使えそうな気もするが、今のモーターでは非力すぎて無理だろう。マイクロマウスにはもっと強力なモーターが必要だ。
ステッピングモーターを回すだけのソースですが、とりあえずここに置いておきます。例によってAVRStudioのフォルダーになっています。回路図はつけませんが、ソースのコメントを参照してください。
大阪造幣局の「通り抜け」に行ってきた(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モーターの制御はラジコンで確かめてあるので、地面の書かれた線をなぞって車を制御するセンシング技術が次の課題である。センサーのハードそのものは、このまえ既に秋月で、大きめのフォトインタラプタ(LBR127HLD ¥60)を調達し、これでやるつもりだ。
ライン制御のノウハウがわからない(4/18/2011)
センサーのロジックを調べ始めた。しかし参考になる情報が極めて少ない。ライントレーサーを話題にしているサイトは山ほどあるのだが、実際にフォトインタラプターの数はどれくらいが良いのか、折れ曲がったライン(直角のラインなどが難しそう)をうまくトレースして2つのモーターの制御を具体的にどうするべきかなどの実践的な情報がないのである。
モーター制御の特集をした雑誌(インターフェース誌 2010年1月号)には簡単な制御ロジックがでているが(P60~65)、こんな簡単な制御(3つのインタラプター出力をコンパレーターにかけ0,1だけで判断)では、少し速度を上げればすぐ破綻するのは目に見えている。
一番頼りになったのは、結局はやはりChaNさんのチョロQのモーターをつかった手のひらサイズのライントレーサーのページである。こいつはコイン電池2つを載せてA3 の用紙の上に描かれた8の字コースを器用にクルクル廻る。素晴らしい。
しかし、ここでも制御アルゴリズムとなると途端にPID制御の話が出てきて理解不能に陥る。こちらは昔、なまじ自動制御技術をラプラス変換か何かで勉強させられたのでその復習を、良い機会なのでやりたいのだが、このPID制御理論との整合性がどうにもとれない。
他のサイトも、このあたりは極端に省いているか、極端に難しく説明しているかどちらかで、こちらが考えているような具体的な技術(しかけ)に応用できそうなロジックが見つからない。最近、良くコメントを寄せてくれるeNastyさんが紹介してくれたサイトも、全体的な話だけで肝腎のセンシングのアルゴリズムまでは出ていない。
秋月で入手した大きめのフォトインタラプターLBR127HLDは、ちょっと試してみたところ、かなり感度は高そうなので性能的には問題なさそうだが、これをいくつ並べて、どの位置から値をとれば良いのかがわからない。どうもラインセンサーのこの部分はかなり高いノウハウのようで、そう簡単にはウェブでは教えてくれないようだ。意図的に省いているのではないかと勘ぐりたくなるくらいである。
やれやれ、これは相当な下準備をして、実験を重ねながら、自分なりのアルゴリズムを考えて実装していく必要がありそうだ。一筋縄では行かない。道は遠そうである。
雑誌付録基板LPC2388のLANポートを作り始めた(4/20/2011)
そんなことを思い悩んでいるうち、このブログに、2年近くも前のXbee電力ロガーの記事を目当てに来るお客さんが急に増えた。調べてみると、震災後の話題のひとつ節電にからんだ交流電力の測定の話である。こちらのURLがいくつかのサイトで紹介されているようだ。そこでも話題になっているのが、正確な交流電力の測定のための専用のチップADE7753である。2年前に買ってそのままになっている。
そう言えばあのとき一緒に買った、EtherNetの物理層(PHY層)のIC、DP83848も、変換基板に載せたままそのままになっている。久しぶりに、このチップ2つを取り出して眺めているうち、どういうはずみか、急にネットワークチップDP83848の実装がやりたくなった。
この石は、もともとCPU基板の雑誌付録(インターフェース誌2009年5月)とタイアップした部品販売店のLAN&SDカード拡張基板が法外に高価なのに反発して、自分で作ってやろうと手に入れたのだが、ぐずぐずしているうちに、STM32でお世話になっている「ねむい」さんに先にあっさり実装されてしまい、変換基板に半田付けした時点で、すっかりやる気をなくして放置してある。
このLANチップの親のCPU基板は、LPC2388である。この基板も、ChaNさんが雑誌に詳しく制作記事を掲載されたのを契機に制作意欲を失い、開発環境を試しただけでそのままになっている。へそ曲がりで天邪鬼(あまのじゃく)な性格なのは困ったものだ。結局ARMはSTM32の方に走った。
今となっては少し古い設計だが規模から言えば、この石(LPC2388)なら静止画くらいのウェブサーバーを作れそうである。ここにステッピングモーターを使ったカメラの移動装置を作りこめば面白いかもしれない。イーサネットPHY層のチップ、DP83848の実装が無駄にならないですみそうだ。
寄り道をする癖がついてしまって、DP83848を載せた変換基板に、かねてより準備していた回路図でハードの実装を始めた。この回路図は、「ねむい」さんが、実装するのに利用したKeilのLPC23XX用の評価ボードMBC2300の回路図である。こちらも同じ頃、独自に発見して残してあった。
実装も彼のやりかたをそっくり真似て、千石でサンハヤトの片面べたアースの汎用基板を手に入れた。このまえのマイクロチップのLANチップENC28J60は普通の基板で問題なく動いたが、今度は100BASE/Tでも動くNICチップである。彼の言うように用心するに越したことはない。価格も¥250とサンハヤトにしてはそう高くない。
まず、変換基板上につけられるだけのパスコンをチップコンデンサーでハンダ付けする。べたアース基板は気をつけないと簡単にショートしてしまいそうで実装には気を遣いそうだ。久しぶりの細かいハンダ付けである。モジュラージャックの固定が問題だ。
ソフトをたくさんダウンロードしすぎた(4/25/11)
配線そのものは予想したとおり、そう難しいところはない。「ねむい」さんが50Mhzの配線に気を遣っておられるが、データシートでは25Mhzのクリスタルを外付けすることになっている。良くわからない。RMIIモードでは50Mhzを出力するピンがあるが、Keilの回路図ではここはどこともつながっていない。まあ、組むだけ組んでみよう。それよりソフトを用意しなければならない。
LPC2388にDP83848を付けてウェブサーバーにしているサンプルソースは、いくつかウェブ上に見つかっている。ただ、OSを使うか使わないかの判断が難しい。CPUお膝元のNXPのサイトには、この評価ボード用のデモソースがあるが、これはOSを使っていない(AN10799)。 uIPのサイトからもLPC23XX用のOSを使わないDP83848を使ったWebServerのデモソースを落とす。これもOSなしだ。
ウェブカメラのようなアプリケーションを制御するならOSなしより、OSが入っていたほうが圧倒的に開発が楽になるので、FreeRTOS6.0とlwIP1.3を使ってWebServerをこの評価ボードで作った個人のサイトからも、ソースを頂く。当然、「ねむい」さんのところからも。ChaNさんのFatFSが、FreeRTOSのもとで動くか心配だが。
TOPPERS/JSPもLPC2388で動くようだ。TOPPERS/JSPは、参考書も買って一時、H8に入れようとしたが、開発環境がLinuxだったりして敷居が高く、先に進まなかった。ChaNさんのFatFSはTOPPERSの標準ファイルシステムだ。TOPPERSにしたい気持ちもある。今まで外国製品ばかり使っている。H8もNECの78K0も、ルネサスのSH2もろくに使っていない。
ここでOSまでもFreeRTOSにすると非国民と言われそうなので、TOPPERSを無理にでも入れたいのだが、初めての評価ボードにいきなり実装するのは余りにも冒険過ぎるだろう。OSにこだわるのは、一旦、入れてしまうと別の環境に移りにくく、いわゆるロックインされてしまうからだ。
あれやこれやと迷路の迷路に入り込んで、ウェブをさまよう。まあ、これが面白くて電子工作しているようなものだけどね。
結局、ウェブからソースコードが5セットも集まった。OS付きが3つ、OSなしが2つ。色々迷った結果、正規のFreeRTOS7.0のデモソースが、この評価ボードをターゲットにしていることを確認し、これが一番新しそうなので、これをインストールして動かすことに決めた。さて始めてのOSである。うまく動くかどうか。
| 固定リンク
「AVR」カテゴリの記事
- ソフトI2Cはクロックストレッチまで手を出してあえなく沈没(2017.09.02)
- オシロのテストどころかソフト開発で大はまり(2017.07.26)
- 超音波方式の人感センサーI2C化と新しいオシロ(2017.06.29)
- motionの動体検知はRaspi3の電源が安定しない(2017.04.16)
- 赤外線学習リモコンはデータ再現で挫折したまま進まず(2016.07.21)
「電子工作」カテゴリの記事
- 生存証明2(2022.10.19)
- 生存証明(2022.01.23)
- パソコン連動テーブルタップの修理を諦めて自作(2021.02.16)
- 半年ぶりのブログ更新に漕ぎつけた(2019.09.19)
- 研究所活動は停滞したままでCCDカメラ顕微鏡導入など(2019.02.08)
「ARM」カテゴリの記事
- 心電計プロジェクト:スケールが出ると心電計らしくなる(2015.01.08)
- 心電計プロジェクト:TFT液晶に念願の心電波形が出た(2014.12.18)
- 心電計プロジェクト:STM32F103の心電波形表示で悪戦苦闘(2014.12.03)
- 心電計プロジェクト:CooCoxでARMの表示系ソフトを開発する(2014.10.16)
- 心電計プロジェクト:表示部のARM基板の開発環境を一新する(2014.09.19)
コメント
ステッピングモータの駆動原理は難しいですね。
またその通り駆動する回路も、
ソフトウエアも難しいですね。
投稿: ねむ | 2011年7月 5日 (火) 14時17分
collectorさん、度々ありがとうございます。
ああ、このページは、ブログを上げたあと私も発見しました。ブックマークしてあります。
PID制御って、こういう機械的な計算でやるものなのですね。このあたりがまだいまいち納得できない部分です。
投稿: がた老 | 2011年5月 8日 (日) 22時33分
釈迦に説法と思い恐縮ですが、プログラムの話だけなら。http://monoist.atmarkit.co.jp/mn/kw/et_robo_seigyo.html
http://monoist.atmarkit.co.jp/mn/articles/1007/26/news083.html
分岐路とかはハードウエアで力ずくとかではないでしょうか。
競技の場合はコース上に分岐を示すマーカーがあるようです。
他人のページを偉そうに紹介して誠に申し訳ありませんでした。
では、失礼します。
投稿: collector | 2011年5月 8日 (日) 20時05分
collectorさん、こんにちは。
沢山の情報ありがとうございました。知っているサイトもありましたが、殆どは始めてでとても参考になります。ありがとうございました。
今は少し別のところに道草しているので、本格的にライントレースを研究する時に役に立つと思います。私は最初、理論のようなものがあると思ったのですが、こういう実践的な手法でやっているのですね。
ラインを外した時にバックするようなことを考えていたのですが、それでも良いんだ(分岐路はどうするんだろう)。まあ、こんなことを考えていると時間の経つのを忘れます。
投稿: がた老 | 2011年5月 8日 (日) 18時32分
はじめまして、制御の関係はどうか知りませんが
ロボコンの関係では、次に来る人たちのために技術が公開されていると思っています。ただ動いてなんぼで理論といわれると?ですね。
http://www.eleki-jack.com/h8/2010/03/
http://www.eleki-jack.com/h8/2010/04/
http://www.eleki-jack.com/h8/2010/05/
http://www.eleki-jack.com/h8/2010/09/
http://www.eleki-jack.com/h8/2011/02/
http://www2.himdx.net/mcr/product/mini_micom_car_ver2.html
http://www2.himdx.net/mcr/product/servo_four_wheel_steering_set.html
http://www.arakin.dyndns.org/ec_lt5.php
投稿: collector | 2011年5月 8日 (日) 00時50分
eNastyさん、早速のコメント(しかも長文)をありがとうございました。
>この領域ではSSEST2が良く知られ
いえ、初めて知りました。見てきました。参考になります。いろいろな情報ありがとうございます。
個人的には、今のライントレーサーのセンサー部が長く出ているのが嫌いで、何とかボディの下のセンサーで後進も含めたインテリジェントな制御ができないかと頭をひねっています。ソースが欲しいのではなくロジックなのですが、これがなかなかない(ChaNさんのページはさすがです)。
>HC393からの結線がテレコになっている。
あ、あーほんとだ。ソースの中から間違っていますね。
完全な勘違いです。たまたま間違えて配線したので、うまくいっている。こんなこともあるんだ。いやはやお恥ずかしい。直しておきます。
投稿: がた老 | 2011年4月29日 (金) 17時21分
こんにちは。(長文注意)
一寸、名前が出てきたこともあり、またしゃしゃり出ました。
(所長の完成プロジェクトをトレースして幾つか再現・改造して遊んでいます。また不具合を発見しましたのでその件は文末に)
さてライントレーサ関連開示情報の件ですが、エフテックのPROBO2サイトでは以前は回路図やCのソースがgetできたのですが、現状はできなくなっていますね。情報が古くて申し訳ありませんでした。
このPROBO2はPIC16F84Aと、赤外線フォトIC、LEDを3個づつ使い、マブチFA-130をウォームギヤ車輪駆動しているものですが、初めてCを学んで2週間ほどの新入社員が作ったプログラムでも「八の字」や「正三角形」「鼓型」などのコースを走行できます(速度は遅い/PWM制御)。コースを外れたときの復帰動作が味噌のようです。
また、既に調査済みかとも思いますが、この領域ではSSEST2が良く知られ(既に解散)ていますが、多少の情報は残っています。(http://www.ertl.jp/SSEST/top/index.php?SSEST6%2F%BB%F6%C1%B0%BC%C2%BD%AC)
雑誌過去記事ではInterface2007/6号にはTOPPERS(CPUはV850)上でライントレーサを動かす製作記事掲載がありました。一応、超簡単な状態遷移図等も載ってます(18頁ほどの記事で前半はV850の説明)。
このソースがダウンロード可能と思っていたのですが、再確認したところ雑誌付録のCDに載っていただけでオンラインでは公開されていないようです(図書館等で利用者本人による私的Copyなら著作権上も問題ないと思いますが第三者が勝手にCopyして提供するのは法規制内なので控えておきます)
あと、類似ですが同年9月号にも記事があります。こちらはライントレーサではなく自立走行ロボットですので色センサなどを搭載している点も面白いです(こちらは記事の前半2頁をhttp://www.cqpub.co.jp/interface/sample/200709/I0709118.pdf で閲覧可)。以上いずれも「ライントレース用位置センサはフォトトラ3個」ですね。
PS.
以下について所長記事をPaparazziしています(~ああ、今日はPrince William Arthur Philip Louisの結婚式ですな..)。
・以前組み立ててあった秋月のFGキットに所長の「 秋月キットを使ったLCD周波数表示付きFG完成」から周波数表示部分を盗作Copy....あっ、回路図のレシプロカル入力と直接入力のHC393からの結線がテレコになっている。(ご本人が「...はともかく回路図は余り自信がない・・・自己責任でお使いください。」と仰っていましたが。
・電力ロガーは、カレントトランスのコイル巻きに一寸手を付けて止まっています。ADE7753に関しても他サイトでまた話題になっているようですが。正確な電力測定は難しいのですね。
投稿: eNasty | 2011年4月29日 (金) 11時55分