聞きかじりめも

主にC++やメディア処理技術などに関して気付いたことを書いていきます.ここが俺のメモ帳だ!

倒立振子制作日記(そのいち)

はじめに

急に作りたくなったので.

私は一応,大学で機械工学を修め,ロボコンで実践的なロボット製作にも携わったことがある人間ですが,今ではすっかり情報系という半端モンでございます.研究でバーチャル空間にどっぷり漬かっている間にそろそろ機械工学の知識が風化し始めているので,ここいらでちょっと制御工学の復習をしとこうと思ってロボットの製作を思い立ったというわけであります.丁度夏休みだし.
そこで今回は,制御対象として比較的わかりやすい(であろう)部類であり,困ったときの先達がたーっくさんいる倒立振子を課題として,制御コードや回路から作って完成させようというプロジェクトを立ち上げてみました.勉強が目的なので,今後の制作では先達の情報は大いに参考にしつつも,できるだけ正解は見ないように(パクらないように)したいと思います.

部品集め

主にaitendo,秋月電子千石電商で買いあさりました.それにしてもaitendoはセンサ・IC類がバカ安だな...とはいえ自分で全部揃えると結構かかりました.なるべく安く抑えようと思ったんだけどなー
(注)下表の他に,適当なジャンパ線,ケーブル類,はんだ,ピンヘッダ等が必要です.

品名・型番 購入場所 価格(円) 用途
びんぼうでいいの aitendo 999 制御マイコン
DCジャック aitendo 30 制御マイコン
Arduino用ピンヘッダ aitendo 95 制御マイコン
ATD6050 3軸加速度/ジャイロモジュール aitendo 450 センサ
ATD712-M 高感度電流センサモジュール aitendo 750 * 2 センサ
Arduino用ユニバーサル基板 aitendo 200 基板実装
電池ボックス単3x4本 秋月電子 60 電源
9V電池スナップ-DCプラグ変換アダプタ 千石電商 100 電源
L298N フルブリッジドライバ 秋月電子 350 モータードライバ
ブレッドボード 千石電商 270 回路テスト
MYU-004 50mmタイヤセット(3mm六角シャフト用) 千石電商 270 機体
タミヤ 70097 ツインモーターギヤーボックス 千石電商 790 機体
タミヤ 70157 ユニバーサルプレート2枚セット 千石電商 570 機体
合計 5,684

ちょっと解説

  • 「びんぼうでいいの」とは,aitendo独自のArduino互換機です.ブートローダーが書き込まれていないので,Arduinoを持っていない場合は初めにこれを買うのは止した方がいいと思います.後述しますが結構書き込むの面倒だったので・・・
  • 今回の倒立振子は,現在の角度のみを(ジャイロ+加速度で)センシングして,その情報から駆動輪の出力を決定するフィードバック制御モデルを構成する予定です.
  • ブラシ付DCモータの制御は電流制御入力の方がよいらしい(参考)ので,電流センサをわざわざ購入しました.結構高い・・・実は電流は2~5Ωくらいの抵抗があればオームの法則V=RIで直接計測できるんですが,どうしても抵抗で損失が生じてしまうせいで最大出力が落ちてしまうのが嫌だったので,購入に踏み切りました.実験的に抵抗でもやってみましたが,損失を少なくしようとするとどうしても出力電圧が小さくなります.まあオペアンプ買って電流センサ回路自作しても良かった気がするけど本質じゃないし・・・
  • ギヤボックスのギヤ比は58.2:1を選びました.203.7:1はちょっと遅すぎた.

ハードウェア制作

テスト用回路

あとでアップロードします.

困った所

びんぼうでいいのへのブートローダー書き込み

Arduino IDEにはブートローダー書き込み機能がありますが,これを利用するにはブートローダー書き込み済みArduinoなどの書き込み装置が必要です.殆どの場合Arduino UNOを利用すると思います(ネットのTipsでもUNOばかり)が,生憎手元にはArduino Leonardoしかありませんでした.Leonardoの場合はちょっと特殊な操作が必要で,こちらの記事が参考になります.繋ぎ方はこちらの記事の通りにするとよいです.上記事を参考にする場合は,Arduino IDE 1.6.9では全くうまくいかなかったので,旧バージョンの1.0.6を使うと上手くいきました.参考にしてください.

L298Nのつなぎ方

実はデータシートの等価回路図をよく見ると分かるのですが,電流センサ用ピンのPin1とPin15はGNDに繋がないと動きません! なぜかというと,これらはセンサ用と書いてありますが,実はHブリッジ回路のGNDに接続すべき部分になっているためです(センサと書いてあったので私は内臓センサのアナログ出力Pinだと誤解していました・・・).つまりこれらのピンは各モータの電流の通り道そのものであって,センサを使わないからと言って浮かしてしまうとモータに電流が流れなくなってしまいます.従って,使わない時はGNDに接続し,電流センサに接続するときにも一方をGNDに接続する ことを忘れないようにしましょう.(このことに気づくまでに1日かかってしまったことは内緒)

以上,とりあえず文章だけ挙げておきます.余裕があったら追記していきます.