Arduino プログラム モータ制御 回路 電子工作 高専3年生

【モータ制御③】PWM出力とRCサーボモータ【Arduino】

前回はモータの回転数制御について学びました。

今回はLEDの明るさを調整したい場合やRCサーボモータを制御する場合に使用するPWM制御について勉強してゆきます。

PWM制御

PWMとは、Pulse Width Modulationの頭文字をとったもので「パルス幅変調」とも呼ばれる手法です。

矩形波(方形波)において周期Tに占めるHの時間tの割合(デューティ比)を変化させることで、疑似的なアナログ出力を実現することができます(実際のアナログ出力ではないので注意してください)。

PWMは、DCモータの回転速度制御やLEDの明るさの制御(調光)などに利用されています。また、人型ロボットの関節などに利用されるRCサーボモータの制御にも利用されています。

Arduinoでは、analogWrite命令を使用すれば、簡単にPWM出力を行なうことができます。

「analog」という名称であるが、電圧が変化している訳ではなく、あくまで疑似アナログ出力なので注意してください。

Arduino UNOの場合、analogWriteによりPWM出力が可能なポートはデジタル入出力ポートのうち「~」の印がついている「3」「5」「6」「9」「10」「11」 の6ポートのみです。

使用例:analogWrite(9,125);

第1引数には、PWM出力可能なデジタルIOのピン番号を入力します。 → 3, 5, 6, 9, 10, 11

pinModeの設定は不要です。

アクティブLの外部LEDを9番ポートに接続し、analogWriteによりLEDの調光(明るさの制御)ができることを確認してみてください。

#define LED 9
#define T 1000

void setup() {
}

void loop(){
  analogWrite(LED,0);
  delay(T);
  analogWrite(LED,64); 
  delay(T);
  analogWrite(LED,128); 
  delay(T);
  analogWrite(LED,192); 
  delay(T);
  analogWrite(LED,255); 
  delay(T);
}

モータ制御 実験③

デジタル9番ポートにアクティブLのLEDが接続されている。初期状態ではLEDは消灯しており、0.5秒ごと10%ずつ明るくなっていき、100%出力まで達したら今度は0.5秒ごと10%ずつ暗くなるような動作を繰り返すプログラムを作成せよ。

また、PWMの変化をオシロスコープで観察し、レポートにて報告せよ。

RCサーボモータ

RCサーボモータはロボット用サーボとも呼ばれ、その名前のとおりヒューマノイドロボットの間接部などで利用されます。もともとは、ラジコンカーのステリアリングをコントロールするために使われていたものであり,Radio Controlの略となっています。

PWM信号により回転軸を任意の角度に回転できるのが特徴であり,一般に10~20msの周期で、パルス幅を1~2ms程度の範囲で変化させることで回転軸の位置を制御します。

PWM信号以外で制御するタイプのサーボモータ、シリアルサーボもあるが高額です。

RCサーボモータの中には駆動源となる小型DCモータ,減速装置,ポテンションメータ,モータ制御用基板が内蔵されており,PWMで制御するタイプのRCサーボモータからは、3本の線が伸びています。

配線の割り当ては下の図に示すように,黒(茶):GND,赤:電源,白(橙):信号となっており,サーボモータには、駆動のために大きな電流が必要なので、制御用マイコンの電源とは別系統で供給する必要があります。

モータ本体に駆動回路が内蔵されているため,PWM信号線はFET等で増幅する必要はなく,マイコン直結で問題ないため,駆動回路は必要ありません。

選定のポイントは保持トルクと回転速度であり,保持トルクの大きいモータは回転速度が遅いなど,トレードオフ関係にあります。

Arduinoでサーボモータを制御する際には以下のように専用のライブラリを使用すると簡単です。

PWMを出力可能なポートのみ使用することが出来ます。

#include <Servo.h>
#define SERVO 9
Servo S;
void setup() {
  S.attach( SERVO );// 9番ピンをサーボ制御に割り当て
}
void loop() {
   S.write( 20 );// 角度を20°に
   delay( 1000 );
   S.write( 160 );// 角度を160°に
   delay( 1000 );
}

モータ制御 実験④

半固定抵抗によりアナログ入力を行い、アナログ入力に比例してサーボモータの角度が変化するシステムを実装せよ。

サーボモータは必ず別電源で供給する事。

また、抵抗値及びPWMの変化をオシロスコープ、マルチメータにて測定し、抵抗値とPWMの関係についてレポートにて報告せよ。

次回はこちら

Follow me!

-Arduino, プログラム, モータ制御, 回路, 電子工作, 高専3年生
-, , , ,

PAGE TOP