※なにか気になる点がありましたらコメント欄にご記入ください。また、工作や回路を製作する場合には、細かい作業などに対して、細心の注意を払われるようお願いいたします。
【目次】
追記:部品表が完成しました(2023/03/17)「おまけ」の 「B.部品表」を 参照してください。
修正:rev.1 PWM信号に関する処理にて、バグを発見しました。(修正済み)(2023/03/31)
修正箇所はこちらから
1.はじめに
以前、組み立てキットの倒立振子を組み立て、その動作を楽しみました。(以下のリンクを参照)
自分の記事:
【確率・統計ロボティクス学習キット MZIP-01】自作キットを組み立てて動かしてみた - Tanuki_Bayashin’s diary
組立キット:
確率・統計ロボティクス学習キット MZIP-01 マルツエレック製|電子部品・半導体通販のマルツ
(注:販売終了でした)
今回は設計から自分で作ろうと思い、挑んでみました。上の組立キットに関する資料として、以下の文献があり、非常に参考になりました。
トランジスタ技術2019年7月号
(こちらに上の組立キットの回路図や組み立て方に関する記述があります)
結論から言うと、まだ倒立させることはできていないのですが、製作に取り組み始めてから3月末で1年になるので、区切りをつけて現段階でのまとめをしてみたいと思います。
全体の流れとしては、実機の紹介とコードの紹介に分かれます。また、コードは結構な行数になってしまったので、まとまりごとに別のリンク先にて説明していく形を取りました。
2.実機の紹介
使用しているマイコンはRaspberry Pi Pico を使いました。
ご参考:Buy a Raspberry Pi Pico – Raspberry Pi
図1に回路図を載せます。
また、以下に倒立振子の写真を数点載せたいと思います。
3.コードの紹介
生成には、pico-SDK と呼ばれる環境を用い、言語はC/C++にて記述しました。(実際はCのみです)
また今回のコードの母体となっているのは、1章で紹介した組立キット内のコードで、別所伸耕という方によるものです。
トラ技7月号(2019年)の記事を書かれたのもこの方で、この場を借りてお礼の気持ちを伝えたいです。ありがとうございました。
またコードの内容に関して、詳しく説明を付けると煩雑になると思うので省きます。ご容赦ください。
さらに、使用されていない変数や、バグにつながる書き方もあるかと思います。ご了承ください。
気付いた点等ありましたら、ご指摘くださるとありがたいです。
以下の各リンクごとに、各処理のリストと簡単な説明を載せていきます。
a ヘッダファイルのインクルード、マクロの定義、変数の定義
d カルマンフィルタに関する処理
e モーターへの電圧の出力と使い勝手に関する処理
倒立振子のコード その5 モーターへの電圧の出力と使い勝手に関する処理 - Tanuki_Bayashin’s diary
おまけ
A.GitHub 上のデータ
以下のリンク先からデータを入手できるようにしました。
筆者のGitHubのURL
内容は
- 回路図(pngファイル)
- 今回の回路のプロジェクトファイル(KiCAD)
- KiCAD用のシンボルのライブラリのファイル
- 3章で紹介したコード
- 部品表(エクセル使用。「B.部品表」に載せるつもりでいたものです)(追記:2023/03/17)
となっています。
回路図は図1と同じものですが、拡大してみることができます。
しかし、文字が小さくて見づらい場合はKiCAD(ver.6.0)をインストールすれば、回路のプロジェクトファイルから回路図を見ることができるかと思います。
(KiCADの使用法は、ネットでの情報等に譲ります)
ただし、筆者が自分で作成した回路のシンボルもあるので、それらはシンボルのライブラリをKiCAD内に登録することでご覧いただけるかと思います。
C.関連記事の紹介
以下に今まで筆者が記述してきた記事の中で、倒立振子と関連のあるものを載せたいと思います。
参考になればと思います。
傾斜計の試作機の製作 - Tanuki_Bayashin’s diary (2022/05/19)
ラズパイPico によるUART接続~Pico-SDK C/C++開発環境にて - Tanuki_Bayashin’s diary (2022/06/22)
傾斜計の試作機の製作 C言語バージョン - Tanuki_Bayashin’s diary (2022/06/30)
カルマンフィルタを用いた傾斜計の製作 - Tanuki_Bayashin’s diary (2022/08/09)
傾斜計に応用したカルマンフィルターの動特性 - Tanuki_Bayashin’s diary (2022/10/05)
以上です。