前からずっと挑戦したいと思っていて、春の展示に合わせて作ってみました。
使ったものとかを忘れないうちに残しておきます。
(もう1か月くらい経ってしまったけど…)
まずは動いている結果から。
これでも結構頑張ったんです。
パラメータの調整がね、もう本当に大変。
使った部品
- Arduino nano
- ジャイロセンサ(MPU6050)
- モータードライバ(L298N)
- ギアードモーター(FM90)
- タミヤ スリムタイヤ
実はこれ、2号機なんです。
1号機は適当に作りすぎて、ハード面の問題が明確だったので作り直しました。
ちなみに1号機は下記のような感じでした。
構成は同じなのですが、タミヤのギアボックスの遊びが大きすぎて断念しました。
そこで遊びの少ないものを探し、筐体も重心を考慮した設計にして3Dプリンターで出力しました。
3層構造になっていて、下から順にArduino+ジャイロセンサ、モータードライバ、電池ボックスになります。
電源は、モーター駆動用の9Vと、マイコン駆動用の5Vの2種類。
モータードライバから9Vを5Vに変換できるようになっているのですが、モーターが動くと5Vから電圧が下がってマイコンがうまく動かなかった為、電源を2種類用意することで解決しました。
意外と配線が邪魔でしたね。
配線のポイントとしては、全てのGNDを共通にすること。
電源を分けると、そのあたりを忘れがちになるので注意。
モーターとタイヤの取り付けも、3Dプリンターでコネクタを作りました。
実はこの部分が何度も作り直したんですよね。
適切なはめ合いを出すのが難しかった…。
プログラムも徐々にバージョンアップさせていこうと思い、初めは簡単な制御から徐々に複雑にしていきました。
- デジタル制御(ON/OFFのみ)
- PWM制御
- PID制御
- カルマンフィルタ
PWM制御を適応すると、結構いい感じのところまでいけました。
(今思えば、もっと動画やプログラムを取っておけばよかった…)
PID制御を使うと、先ほどの動画のようなところまでいけました。
カルマンフィルタは私が上手く使いこなせない為、何故かビクビクと痙攣するような動きになってしまいました。
MPU6050のライブラリはこちらを使わせていただきました。
カルマンフィルタのライブラリはこちらを使わせていただきました。
一番苦労したのは、やっぱりPIDパラメータの設定ですね。
ハードによって最適値が異なるので、ここだけは自分で頑張らないといけない。
何日もかけて、ようやくあれだけ踏ん張れるようになりました。
とっても勉強になるので、興味のある方は是非一度試してみて欲しいです。
制御工学を学ぶ大学生の実習テーマにちょうど良い気がしました。