DCサーボモータをArduinoで動かす②制御を探る

2021/04/29

Arduino DCサーボモータ

t f B! P L

今回の目標

前回、DCサーボモータをとりあえず動かすことが出来ました。

今回は、どうやって制御しているのかを確認することにします。

前回の記事→DCサーボモータをArduinoで動かす①とにかく動かす


DCサーボモータ「SG-90」を分解

前回の「SG-90」の中身を調べます。


SG-90の入力側、裏ブタを外した

裏ブタ側からねじ4本をめがね用プラスドライバーで外しました。

SG-90の外部配線3本は中の基板端に直付けされ、基板の反対側に位置するポテンショメータ(回転角度を抵抗値としてとらえる素子。原理は可変抵抗器)らしきものに直付けで固定されております(ポテンショメータをケースから取り出せず、細かく写せませんでした)。

基板とポテンショメータの隣にはモータがあり、基板から赤の配線2本がつながっております。


SG-90のモータ出力側のフタを外した

モータ軸の回転がギアでポジションメータに伝わっており、モータ軸の回転角度はポジションメータからの出力としてSG-90内部の基板にフィードバックされるようです。


DCサーボモータ内部のモータ入力電圧波形を見た

前回のArduinoのスケッチでモータを動かします。

0°(左回転)→1秒→90°(左回転)→1秒→180°(右回転)

前回の記事→DCサーボモータをArduinoで動かす①とにかく動かす


モータ入力電圧波形

どうやって制御しているのか見るため、モータの端子の電圧波形をオシロスコープで見てみました。

モータの動きと波形とを眺めること数十分。動きとの関係を理解できたように思えます。


モータ入力電圧波形(スケッチ1週分)

CH1側のパルス入力が連続⇒モータ左回転(0°、90°)。

CH2側のパルス入力が連続⇒モータ右回転(180°)。


モータ入力電圧波形(スケッチ1週よりやや長く)

CH1側のパルス入力直後にCH2側にも短くパルス入力⇒モータ左回転の行き過ぎを右回転で修正。


DCサーボモータの制御まとめ

Arduinoから電源、GND、信号がDCサーボモータ内部の基板に入力されます。その基板はポテンショメータでモータ軸の回転をとらえつつ、モータが狙った角度に回転するようモータに入力している構造のようです。


モータ自体はDC整流子モータ(2入力)。入力はPWM(Pulse Width Modulation)。パルスをいずれ側に入力するか(電流をどちら向きに流すか)で回転方向は決まります。

回転を必要とする期間、回転方向に応じた側にPWM入力して逆側の入力はGND。指定した角度まで回転したらPWM入力を停止。もし角度が行き過ぎたら逆側からPWM入力。回転しない期間はモータ入力は両方GND。

そういう制御でDCサーボモータはモータを動かしているようです。


前回:DCサーボモータをArduinoで動かす①とにかく動かす

このブログを検索

ブログ アーカイブ

自己紹介

にほんブログ村

QooQ