mbed を使ったロボット作成 第5回

モータ制御してみる

 

はじめに

今回はロボットの関節で使用するモータの制御について記載していきます。

モータといっても、様々な種類のモータがあります。

ロボットの関節を制御するという観点で着目すると、特定の角度まで制御できること、制御後の状態を保持できるこが必要となってきます。

これらの点で市販製品を探すとサーボモータが最も相応しいと思いますので、サーボモータを使った制御してみようと思います。

サーボモータについて

サーボモータは、パルスを受信しそのデューティ比で回転角度を制御するモータです。

パルス幅としては1msから2ms程度です。

今回使用するのは、KumanというメーカのSG90というマクロサーボを使用します。

製品名 SG90 マイクロサーボ
メーカー Kuman
概要
  • PWMサイクル:20ms
  • 制御パルス:0.5ms~2.4ms
  • 制御角:±約90°(180°)
  • 動作速度:0.1s/60°
  • 動作電圧:4.8V(~5V)
  • 温度範囲:0℃~55℃
  • 外形寸法:22.2×11.8×31㎜
  • 重量:9g
値段 400円

 

サーボモータからは3本線が出ており、茶色がGND線、赤が電源[+V]、橙が制御信号制御信号用の線となります。

mbedとの接続は以下のとおり

 

SG90の赤に電源(5V)を接続し、茶をGNDに接続します。
mbedとの接続は、D2のデータポートをSG90の橙に接続します。
3本接続するだけなので、わりと簡単に配線することができます。

 

ソフトウェアについて

SG90を制御する為にPwmOut(パルス幅変調出力)クラスを継承したServoSg90クラスをC++で作成しました。

このクラスを利用する箇所の実装は以下のとおり。

 

動作確認結果

 

問題なく制御することができました。

今回作成したクラスを使えば、サーボモータが複数個になった場合、その分クラスのインスタンスを生成しておけば、個々で制御することが可能です。

このサーボモータを使って、どの様な関節を構成するが課題として残りますが、

それはまた別の機会にお話ししたいと思います。

 

以上。

次の記事

入社式(2019年度)