Arduino工作講座 デジタル・マイクロサーボを動かそう

Arduino工作講座

Arduino Unoを利用した電子工作を学習する講座シリーズ。Arduino工作講座の第6弾。この講座では、デジタル・マイクロサーボ SG90 を動かす方法について学ぶことができます。

Arduino工作講座 デジタル・マイクロサーボを動かそう

デジタル・マイクロサーボ SG90 を動かす方法について学ぶことができます。このレッスン前半はELEGOO社のArduino基本セットのチュートリアルのレッスン9を参考にさせていただいています。

この講座をクリアするとサーボモータが使えるようになります。モーターはいろいろな種類があるので、今回は、その中でも、サーボモータということも併せて覚えてください。

必要となる部品

  • Arduino Uno
  • SG90 デジタル・マイクロサーボ〈サーボは約180度(各方向に90度)回転できる〉
  • ジャンパー線 赤色と黒色と黄色

回路と回路図

配線はとっても簡単、3本の線をマイクロサーボにつなぐだけですね。もちろん、Arduinoには、USBのケーブルをつなげます。赤色は電源に利用されることが多い色になります。黒色はグランド(GND)の色だと覚えてください。

プログラムコード

サーボモータが0度から180度まで動きます。その後、180度まで来たら、0度まで動き、それを繰り返します。(SG90は約180度動くサーボモータです。モータにより、回転角度が異なります。360度回転するモータもあります。)

//www.elegoo.com
//2016.12.08
#include <Servo.h>

Servo myservo;  // create servo object to control a servo
// twelve servo objects can be created on most boards

int pos = 0;    // variable to store the servo position

void setup() {

  myservo.attach(9);  // attaches the servo on pin 9 to the servo object
}

void loop() {
  for (pos = 0; pos <= 180; pos += 1) { // goes from 0 degrees to 180 degrees
    // in steps of 1 degree
    myservo.write(pos);              // tell servo to go to position in variable 'pos'
    delay(15);                       // waits 15ms for the servo to reach the position
  }
  for (pos = 180; pos >= 0; pos -= 1) { // goes from 180 degrees to 0 degrees
    myservo.write(pos);              // tell servo to go to position in variable 'pos'
    delay(15);                       // waits 15ms for the servo to reach the position
  }
 
}
SG90 デジタル・マイクロサーボ

電子工作では、小さいサーボの代表的な存在です。互換機や海賊品も多く存在しますが、電子工作では、よっぽどのことがなければ、問題なく動作します。トルクや、回転速度などが異なることがあります。どの部品でもそうですが、基本的に、正規品、ライセンスを得ての互換品を求めるようにしてください。

#include <Servo.h>

サーボモータを使うのに必要なものを定義しているファイルを読み込んでいます。
このライブラリはRCサーボモータのコントロールに用います。標準的なサーボでは0から180度の範囲でシャフトの位置(角度)を指定します。連続回転(continuous rotation)タイプの場合は、回転スピードを設定します。Arduino 日本語リファレンスより

Servo Servo型の変数;

Servo Servo型の変数 インスタンスを生成します。Servo.hを使うときはインスタンス生成が必要。

servo: Servo型の変数.attach()

pin: サーボを割り当てるピンの番号
min (オプション): サーボの角度が0度のときのパルス幅(マイクロ秒)。デフォルトは544
max (オプション): サーボの角度が180度のときのパルス幅(マイクロ秒)。デフォルトは2400

servo: Servo型の変数.write() 

サーボの角度をセットし、シャフトをその方向に向けます。
連続回転(continuous rotation)タイプのサーボでは、回転のスピードが設定されます。0でフルスピードで回転し、180で、反対方向にフルスピードで回転します。90のときは停止します。
今回のサーボモータは、連続回転タイプではありません。
angle: サーボに与える値(0から180)

スイッチでサーボモータを止めたり、動かしたりしよう

上の回路に、前回利用したスイッチをつけて、制御してみます。オンすると一連の動作、0度から180度、180度から0度を繰り返します。オフにすると、今している一連の動作を終えた後、停止します。今回のスイッチは、普通のオンオフをするスイッチです。

必要となる部品

  • Arduino Uno
  • SG90 デジタル・マイクロサーボ〈サーボは約180度(各方向に90度)回転できる〉
  • スライドスイッチ、または、トグルスイッチ
  • ジャンパー線 赤色と黒色と黄色と青色

回路と回路図

スイッチが付きました。スイッチには、電源が付いていません。いらないという事かな?スイッチの状態で8番ピンが変化します。オンオフの状態を8番ピンが見ているということになります。

//www.elegoo.com
//2016.12.08
#include <Servo.h>

Servo myservo;  // create servo object to control a servo
// twelve servo objects can be created on most boards

int pos = 0;    // variable to store the servo position
int switchpin = 8;


void setup() {
  pinMode(switchpin, INPUT_PULLUP);  
  myservo.attach(9);  // attaches the servo on pin 9 to the servo object
}

void loop() {
  if (digitalRead(switchpin) == LOW)
    {
      for (pos = 0; pos <= 180; pos += 1) { // goes from 0 degrees to 180 degrees
        // in steps of 1 degree
        myservo.write(pos);              // tell servo to go to position in variable 'pos'
        delay(15);                       // waits 15ms for the servo to reach the position
      }
      for (pos = 180; pos >= 0; pos -= 1) { // goes from 180 degrees to 0 degrees
        myservo.write(pos);              // tell servo to go to position in variable 'pos'
        delay(15);                       // waits 15ms for the servo to reach the position
      }
    }
}
pinMode(pin番号, INPUT_PULLUP);

Arduino内にあるプルアップ抵抗を有効にしています。なので、オンでプルアップ抵抗が繋がり、簡単に言うと電流が流られないので、信号がLOWになります。

今回、わざわざ小さいモーターを動かすといっているのには、理由があります。あまり大きなモーターをそのまま動かすことができないからです。大きいモーターも動かすことはできますが、その時には、モーター用に電源を別に用意してあげます。Arduino用とモーター用の二つの電源を用意します。モーターなどは動かすときに大きな電気を必要にするので、Arduinoが動かなくなってしまいます。一つで運用するには、もっと、もっと、電子工作ができるようになってからになります。

どうでしたか?簡単にモーターが動きましたか?マイコンが使われていても、少し勉強すれば、普通のおもちゃみたいに動かすことができるようになりましたね。

では、また、次の電子工作講座で。

コメント

タイトルとURLをコピーしました