PWMを使ったサーボモーターの制御:Arduinoで学ぶ基礎からのモーター制御(6)(3/3 ページ)
ラジコンカーのステアリングやロボットの関節などに用いられ、角度を指定して動かす機能を持つのが「サーボモーター」です。今回はArduinoからこのサーボモーターの制御をPWMを用いて行う手法を紹介します。
Arduinoへのプログラミング
次のリストはスケッチの例から「Servo」を選択し、そのなかの「Knob」からロードできます。掲載したリストは一部コメントを削除しています。
#include <Servo.h> Servo myservo; // create servo object to control a servo int potpin = 0; // analog pin used to connect the potentiometer int val; // variable to read the value from the analog pin void setup() { myservo.attach(9); // attaches the servo on pin 9 to the servo object } void loop() { val = analogRead(potpin); val = map(val, 0, 1023, 0, 180); myservo.write(val); delay(15); }
まず1行目ですが今回はServoクラスを用いますのでServo.hのインクルードが必要です。3行目でServoクラスのオブジェクトmyservoを生成します。この後サーボーモーターの制御はこのオブジェクト名を用いて行います。5行目はアナログ入力ピンのピン番号を変数podpinに代入しています。今回はアナログ入力の0番を用いますから0を代入しています。
- setup関数内の処理
10行目でサーボモーターの制御信号を出力するピン番号を指定します。今回はD9ですので引数には9を指定します。
- loop関数内での処理
15行目でアナログポートの値を読みます。ボリュームのノブを回すことで0Vから5Vまで変化しますが、それが10Bitの分解能で読みだされますので、0から1023の値として取得されます。16行目でこの0から1023までの値を、0から180までの変化に対応させます。サーボモーターに対する制御は0度から180度までの角度で指定しますので、このスケールに変換します。
17行目では、アナログ値を角度に変換された値でサーボモーターに対して制御信号を出力します。次に18行目で15ミリ秒の間隔を空けます。これはサーボモーターに対して制御信号を出して軸が指定した角度に到達するまでの時間です。サーボモーターに対して物理的な負荷をかける場合はこの値をもう少し長くする必要があるかもしれません。このDelayの値は仕様で説明したバンドウィデゥス(Dead band width)に関わる値ですのでそれらの値を検討して決定してください。SG-90の場合、0度から180度まで移動する場合は0.3秒、300ミリ秒必要ですので動きがぎこちない場合はこの値を調整してください。
おわりに
今回はArduinoによるサーボモーターの基本的な制御の方法についてお話しました。次回は3DプリンタやCNCなど精密制御に欠かせないステッピングモーターの制御に付いてお話したいと思います。お楽しみに。(次回へ続く)
Copyright © ITmedia, Inc. All Rights Reserved.
関連記事
- PWMでマブチモーターを制御する
「マブチモーター」でもおなじみ「直流ブラシ付きモーター」は安価で入手性もよいモーターですが、マイコンからの制御を考えると一工夫必要になります。今回は「PWM」を使った回転制御を紹介します。 - 困ったら読みたいマブチモーター制御のTips
この連載ではここ数回、「マブチモーター」に代表される直流ブラシ付きモーターをマイコンから制御する話をしていますが、今回は困ったときに読みたい、知っておくと便利なTipsを幾つか紹介したいと思います。 - マブチモーターのノイズ対策
「マブチモーター」に代表される直流ブラシ付きモーターは安価で入手性も良好ですが、Arduinoなどと組み合わせる際には発生するノイズが問題となることがあります。そこで今回は、「直流ブラシ付きモーターのノイズ対策」について解説します。 - マブチモーターをArduinoで制御する
「マブチモーター」でもおなじみ「直流ブラシ付きモーター」は安価で入手性もよいモーターです。これをArduinoで制御するとしたら、何を理解して何を用意して、どんなプログラミンが必要でしょうか。実験します。 - 「マイコンによるモーター制御」を学ぶ前に知っておくべきこと
「動くモノ」の制御ができると手を動かした実感がわくものです。この連載では、マイコンを用いたモーター制御の基礎を学んでいきます。