PWMを使ったサーボモーターの制御:Arduinoで学ぶ基礎からのモーター制御(6)(2/3 ページ)
ラジコンカーのステアリングやロボットの関節などに用いられ、角度を指定して動かす機能を持つのが「サーボモーター」です。今回はArduinoからこのサーボモーターの制御をPWMを用いて行う手法を紹介します。
PWMによる制御
下の図1がPWM信号とサーボモーター軸の角度の関係を説明するための図です。
先に示した仕様はSG-90固有の値ですが、これから説明するPWM信号制御の部分は他のサーボモーターでも共通です。ですから、この後に示す回路図やプログラムはそのまま流用することが可能です。
サーボモーターからは3本の端子が出ています。赤は電源のプラス、黒あるいは茶色はグランド(電源のマイナス)に接続します。オレンジあるいは黄色には制御信号に接続します。電源電圧と制御信号は4.8Vを供給します。
下のグラフが制御信号のタイミングチャートです。横軸が時間を示しています。単位はミリ秒です。縦軸が電圧を示しています。下の平たい部分が0Vです。パルスの山の部分は4.8Vになっています。
サーボモーターの制御にはPWM信号を用います。PWM信号については第5回の記事を参考にしてください(基礎からのマイコンモーター制御(5):PWMでマブチモーターを制御する)。
サーボモータを制御するためには周期を20ミリ秒、周波数でいえば50Hzにします。またパルス幅は1ミリ秒から2ミリ秒の間で変化させます。パルス幅が1ミリ秒の時、サーボモーターの軸の角度が0度となります。また2ミリ秒の時にサーボモーターの軸の角度は180度となります。1.5ミリ秒の時は、ちょうど真ん中の90度となります。この様にパルス幅を微妙に変えることによって、サーボモーターの軸の角度を0度から180度の間で制御することができるのです。
回路とプログラミング
Arduinoからサーボーモーターを制御する最も基本的な例を実装してみましょう。下の図2が回路図です。
サーボモーターには3つの端子がありますが、そのうちの黄色が制御信号の端子となり、ArduinoのD9に接続します。10KΩのボリュームではノブを回すことによる0Vから5Vの電圧を生成します。その電圧はA0すなわちアナログ入力の0番ピンに接続します。
サーボモーターの電源間に47μFの電解コンデンサーを入れています。これはサーボモーターの動作時(特に始動時)に大量に電流が流れることがあるのですが、その時の電圧降下による不具合を防止するためのものです。
例えばPCからUSB経由で電源を供給している場合など電流容量に制限があるため、サーボモーター側で大電流を消費すると電圧降下が起こりマイコンとPCとの通信が途絶える場合があります。そこでサーボモーターの電源間にコンデンサーを入れておくことによりこの電圧降下を防止することができます。サーボモーターに大電流が流れる可能性があるのは始動時の一瞬ですので、この程度の静電容量コンデンサーでも防止効果があります。
下の図3が上記回路をブレッドボードに実装した図です。
前述したように黄色は制御信号で、赤は+5Vまた黒はGNDに接続します。電圧降下防止用のコンデンサーはサーボモーターの電源供給位置になるべく近い位置に接続してください。
Copyright © ITmedia, Inc. All Rights Reserved.
関連記事
- PWMでマブチモーターを制御する
「マブチモーター」でもおなじみ「直流ブラシ付きモーター」は安価で入手性もよいモーターですが、マイコンからの制御を考えると一工夫必要になります。今回は「PWM」を使った回転制御を紹介します。 - 困ったら読みたいマブチモーター制御のTips
この連載ではここ数回、「マブチモーター」に代表される直流ブラシ付きモーターをマイコンから制御する話をしていますが、今回は困ったときに読みたい、知っておくと便利なTipsを幾つか紹介したいと思います。 - マブチモーターのノイズ対策
「マブチモーター」に代表される直流ブラシ付きモーターは安価で入手性も良好ですが、Arduinoなどと組み合わせる際には発生するノイズが問題となることがあります。そこで今回は、「直流ブラシ付きモーターのノイズ対策」について解説します。 - マブチモーターをArduinoで制御する
「マブチモーター」でもおなじみ「直流ブラシ付きモーター」は安価で入手性もよいモーターです。これをArduinoで制御するとしたら、何を理解して何を用意して、どんなプログラミンが必要でしょうか。実験します。 - 「マイコンによるモーター制御」を学ぶ前に知っておくべきこと
「動くモノ」の制御ができると手を動かした実感がわくものです。この連載では、マイコンを用いたモーター制御の基礎を学んでいきます。