倒立振子をサクッと作る

ちょっとPID制御の関係で倒立振子をネタで作った。制作時間は4時間ほど。ネット上のコードのお助けでサクッと。皆さんの英知、素晴らしい。動きはこんな感じ。

 

 


 

 

■ 必要なもの
全て手持ちであった物を使っている。メインで使うものはこんな感じ。MPU6050でロールを取って、それに合わせてモーターを動かす。モーターはTB6612FNGデュアルモータードライブを使って。トータルで3000円弱といった感じかな。

ATMEGA328P 3.3V : $2.1/pcs
TB6612FNG モータードライバ : $1.05/pcs
MPU 6050 : $0.81/pcs
タミヤギアボックス : 615円
タミヤ スリムタイヤ : 373円
タミヤ ユニバーサルプレート : 455円
Lipo 720mAh x 2: $3.0/pcs

このほかにケーブル類、ブレッドボードとダイソーでゲットした両面テープを使った。

■ 組み立て
まずはギアボックスを組み立てて、ユニバーサルプレートに固定する。ギア比は114.7:1を使った。ちなみにモーターにはノイズ対策でコンデンサを適当にくっつけている。

次にダイソーの両面テープでユニバーサルプレートの上に、ブレッドボード固定用の両面テープをくっつける。厚手の両面テープでも3枚重ねにしていい感じにくっつける。

次にブレッドボード上につけたMPU 6050とモータードライバ、ATMEGA328Pをユニバーサルプレート上の両面テープにくっつける。接続はI2CでMPU 6050とATMEGA328Pを接続して、モータードライバはPWMで制御する、といった感じ。まぁ、普通にブレッドボード上に接続してそんな感じ。この前に両面テープを3枚重ねにしたのは、ギアボックスとユニバーサルプレートを固定するプラの高さに合わせていた。

LiPoはギアボックスの下あたりに2個重ねで。1個はモーター駆動用で、もう1個はATMEGA328P/MPU 6050/モータードライバ駆動用に与えている。

これで物は完成。良い感じに重心のバランスを取ってあげるといいかも。まぁ、適当でもいいけど。

■ コード
プログラムはgithub上に上げている。こちら。VScode/PlatformIOで動かせる。

■ 参考
参考にさせていただいたのはこちら。自分のプログラムの中ではカルマンフィルタでMPU 6050の値にフィルタをかけてからPIDの処理をしている。
倒立振子を作る
Arduino-KalmanFilter

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください