倒立振子・自己バランスロボットの作成 – 回路設計

倒立振子・自己バランスロボットとは?

倒立振子・自己バランスロボット(以下は自己バランスロボットと表記します)は、傾斜角度をセンサーで検出し、モーターを制御して姿勢を保つロボットです。 代表例は「セグウェイ」や「倒立振子ロボット」です。ロボットは以下の情報を使ってバランスを取ります。

  • 加速度センサー(傾き)
  • ジャイロセンサー(角速度)
  • 距離センサー(障害物検知:HC-SR04)
  • モーター(姿勢を戻す力)

この Vol.1 では、これらを Arduino で制御するための 回路設計 を解説します。

使用する主要部品と役割

主要部品の役割を説明します。

● Arduino UNO

ロボットの「頭脳」。センサー情報を読み取り、モーターを制御します。

● MPU6050(加速度+ジャイロ)

ロボットの傾きと傾く速度を検出するセンサー。

● HC-SR04(超音波距離センサ)

ロボット前方の障害物を検知するセンサー。 倒立制御とは直接関係しませんが、前進中の衝突防止を阻止できます。

  • Trig ピン:超音波を発射
  • Echo ピン:反射波を受信
  • Arduino で距離を計算し、一定距離以内なら停止・回避が可能

連続回転サーボモーター(FS90R)

車輪を回して姿勢を調整します。 DC モーターより小型で消費電流が少ない。

バッテリー(7.4V LiPo)

モーターと Arduino の電源です。動作時の電圧降下を避けるためモータへは別経路で5V レギュレータで安定化後に電流を供給します。

自己バランスロボットの動作は?

ロボットが前に倒れそうになると、車輪を前に回して姿勢を戻します。 後ろに倒れそうなら逆方向に回します。

この制御を行うために、Arduino は MPU6050 から以下の情報を取得します。

  • 角度(傾き)
  • 角速度(倒れる速さ)

さらに、HC-SR04 を使うことで、

  • 前方の障害物までの距離

も取得でき、前進中の衝突を防げます。

— 自己バランスロボットの傾きと補正の概念図 —

回路構成(Arduino+MPU6050+HC-SR04+サーボ)

  • Arduino UNO3と加速度・角速度センサ、連続回転サーボモータ、超音波距離センサをどのポートに接続するかを決めます。
  • サーボモータ用の電源に5VレギュレータICを取り付けます。5VレギュレータICが出力されている時にLEDをONします。5VレギュレータICへはArduino UNO3のVin経由で電圧を供給します。Vinの電圧は7.4Vバッテリーから供給します。デバッグ中に連続回転サーボモータが回ると煩わしいのでトグルスイッチを付けて連続回転サーボモータ用の5VレギュレータICへの電圧の供給をON/OFFできるようにします。

回路図

Arduino と MPU6050 と HC-SR04 とサーボの配線図

配線ポイント

加速度・角速度センサ GY521(MPU6050)

  • SDA → A4 (SDA)
  • SCL → A5 (SCL)
  • VCC → 5V
  • GND → GND

超音波距離センサ HC-SR04

  • Trig → 任意のデジタルピン(例:D2)
  • Echo → 任意のデジタルピン(例:D3)
  • VCC → 5V
  • GND → GND

連続回転サーボモータ(FS90R)

  • 信号線 → D5 / D6
  • 電源 → 5V レギュレータから給電
  • GND → 共通 GND

電源

  • バッテリー 7.4VをArduino UNO R3のDCジャックへ接続
  • サーボモーター用の電源は、Arduino UNO R3のVinの電圧を5V レギュレータ(LM7805)で安定化し供給する

電源設計の注意点

  • サーボモータは消費電流が大きいため、Arduino の 5V ピンから直接取らないず、Vinへ供給されている7.4Vを5V レギュレータ(LM7805)で安定化して供給する。
  • ノイズ対策として5V レギュレータ(LM7805)付近にコンデンサを追加する

主要部品リスト

部品型番用途
ArduinoArduino UNO R3制御
加速度・角速度 センサGY-521 (MPU6050)傾き検出
超音波距離センサHC-SR04障害物検知
サーボモーターFS90R駆動
バッテリー7.4V LiPo電源
5V レギュレータLM7805電源安定化

自己バランスロボットの構想は?

  • 主要部品は決定しました。それぞれの大きさは解っているので、自己バランスロボットのどのように組み立てるかを考えます。Arduino UNOとバッテリーが大きな部品になります。色々と考えて構想をまとめました。横幅は15cm、縦は12cm程度の大きさです。
  • 超音波距離センサ、加速度・角速度センサ、定電圧ICなどは自作シールドを作成し、そこに配置します。半田付けで配線する煩わしが減らします。また完成品の外観がさっぱりとします。 
  • バッテリーはロボットの下部に配置し重心を下げてロボットのバランスを取りやすくします。

自作シールドの部品

  • 主要部品以外で自作シールで使用する部品リスト
No.部品名品番・仕様購入先員数
1シールド用PCB基板PCBメーカへ発注FusionPCB1
2ブロックターミナルTB112-2-2-E-1秋月電気通商3
3電源ICLM7805秋月電気通商1
5セラミックコンデンサ1uF秋月電気通商2
6Al電解コンデンサ470uF/16V秋月電気通商1
7角度検出センサGY-521 (MPU6050)(キットに付属)1
8LED(品番不明)(キットに付属)1
9抵抗1KΩ(キットに付属)1

※ キットとは「ELEGOO Arduino用のUNO R3 最終版スタータキット」です。

自作シールドの設計

  • KiCADを使って自作シールドの回路図からパターンを作成し、自作シールド基板をPCB基板メーカーに発注することにしました。
— KiCADでパターン図を設計すると、部品の3D情報が含まれていれば実装時の3Dイメージを確認できます —
  • 部品の配置を3Dイメージで確認し、他の部品との干渉が起こらないか確認します。
— 部品実装 3Dイメージ —
KiCADを学習する記事は?
[KiCADの入手方法と学習方法 ] — KiCADの概要を説明しています。

専用シールドを発注します

  • 安価な費用でPCB基板を製造するサービスが多くの企業から提供されています。またKiCADのような多機能のCADがフリーで使える状況になりました。自分自身でPCB設計をしてしまえば安価にPCBを入手できます。
  • KiCADで設計したPCBをFusion PCBに発注しました。
  • 発注して、5日後にシールドPCBが発送されたとの連絡がありました。発送後8日間で配達されてきました。設計したそのままにPCBが出来上がっているのは少し感動です!
  • PCBの発注の費用は、PCBのサイズが10cm x 10cm以内であれば、10枚で$4.9です。(2026年1月時点の価格です。現在155円/ドル程度なので、760円です。この価格に輸送料金が加わります。輸送料金は輸送会社により異なり、$19から$29程度まで異なります。料金が高いほど輸送期間は短いようです。)

専用シールドが届きました

  • 届いたPCBに部品を半田付けして、加速度・角速度センサと超音波距離センサを取り付けると完成です。
— 自作シールド用PCBに部品を半田付けし、センサーを取り付けました —
  • 部品を半田付けした自作シールドをArduinoi UNOに挿入すれば結線が終了です。
— Arduino UNO R3と自作シールドとの配線はピンヘッダを挿入するのみの作業です —
PCBの発注方法をまとめた記事は?
[KiCADでPCBレイアウト設計してFusion PCBに発注しました]– KiCADで設計したPCBを発注する方法をまとめました。

筐体設計とプログラミングの記事への展開

自己バランスロボットの作成プロジェクトは分量が多いので以下のように分けて記事にしています。

  • 倒立振子・自己バランスロボットの作成 – 回路設計
  • 倒立振子・自己バランスロボットの作成 – 筐体設計
  • 倒立振子・自己バランスロボットの作成 – プログラミング

御質問、誤植の指摘、記事の改善点の気づきなどありましたら「問い合わせ 」のページからお願いします。