検索コード

ポテンショメーターを使用したArduinoサーボモーター制御

ポテンショメーターを使用したArduinoサーボモーター制御

このチュートリアルでは、Arduinoを使用してポテンショメーターでサーボモーターを制御する方法を探ります。目標は、ポテンショメーターの回転に基づいてサーボの位置を調整するシンプルな回路を作成することです。このプロジェクトの終わりまでには、ポテンショメーターを回すことでサーボの角度を0度から180度までスムーズに変化させる動作モデルが完成します。これは、Arduinoにおけるアナログ入力とサーボ制御の基本を理解するための素晴らしい方法です。

これを達成するために、Arduinoボード、サーボモーター、ポテンショメーターを使用します。ポテンショメーターは可変抵抗器として機能し、Arduinoにアナログ入力を提供し、それに応じてサーボモーターの位置を決定します。このプロジェクトは楽しいだけでなく、電子工学やプログラミングの重要な概念を示す教育的なものでもあります。より詳細な説明については、ビデオ(ビデオの00:00に)をぜひご覧ください。

ハードウェアの解説

このプロジェクトでは、主なコンポーネントはArduinoボード、サーボモーター、ポテンショメーターです。Arduinoは操作の頭脳であり、入力を処理し出力を制御します。サーボモーターは、Arduinoから受け取ったコマンドに基づいて物理的に動くものです。ポテンショメーターは1kオームから1Mオームまであり、ユーザーがサーボの動きに変換される可変入力を提供できるようにします。

サーボモーターは、希望する位置を示すPWM(パルス幅変調)信号を受信することによって動作します。ポテンショメーターは回転すると抵抗が変化し、Arduinoによってアナログ電圧として読み取られます。サーボモーターは5Vで動作します。3.3Vでは動作しません。この電圧はサーボモーターの可動範囲にマッピングされ、0度から180度までの滑らかな動きを可能にします。

SG90サーボモーターのデータシート詳細

製造業者パララックス
部品番号SG90
ロジック/IO電圧5 V
供給電圧4.8-6 V
出力電流(チャネルごと)約500 mA
ピーク電流(チャネルごと)1 A
PWM周波数ガイダンス50ヘルツ
入力ロジック閾値0.5 V(低)、2.5 V(高)
電圧降下 / RDS(on)/ 飽和度0.5 Vで500 mA
熱的限界0°Cから60°C
パッケージスタンダード9gサーボ
ノート / バリアントRCアプリケーションで一般的に使用される

  • サーボが最大電流定格を超えないようにしてください。
  • サーボが高負荷で連続して動作する場合は、ヒートシンクを使用してください。
  • ポテンショメーターをアナログピンに接続して、正確な読み取りを行います。
  • サーボ制御のためのPWM信号のタイミングに注意してください。
  • サーボの可動範囲を確認して、物理的な障害物を避けてください。

配線指示

Arduino wiring for controlling Servo motor with Potentiometer
Arduino wiring for controlling Servo motor with Potentiometer
Arduino wiring for servo motor
Arduino wiring for servo motor

このセットアップでは、コンポーネントを次のように接続する必要があります:

ポテンショメーターの中央ピン(ワイパー)をArduinoのアナログピンに接続します。A0ポテンショメーターの他の2つのピンは接続されるべきです。5VGNDArduinoに。サーボモーターの場合、赤いワイヤーを接続します。5V、黒いワイヤーをGND、黄色または白のワイヤーをデジタルピンに接続します。9Arduino上のこの配置により、ポテンショメーターがArduinoにアナログ入力を提供し、その入力に基づいてサーボモーターの位置を制御します。

すべての接続を確認し、サーボが動作範囲内で妨げられていないことを確認してください。異なるArduinoモデルを使用する場合は、アナログ入力とサーボ出力のピン割り当てが互換性があることを確認してください。

コード例とウォークスルー

以下は、サーボを初期化し、ポテンショメータの値を読み取るコードの抜粋です:


#include 

Servo myservo;  // create servo object to control a servo
int pos = 0;    // variable to store the servo position

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

このコードでは、Servoライブラリを含め、サーボオブジェクトを作成します。myservoサーボはピンに取り付けられています。9このピンを使って制御できるようにします。


void loop() {
  int sensorValue = analogRead(A0);  // read the potentiometer
  pos = map(sensorValue, 0, 1023, 0, 180);  // map to servo position
  myservo.write(pos);  // move servo to position
  delay(15);  // waits 15ms for the servo to reach the position
}

ループ関数では、ピンからポテンショメーターの値を読み取ります。A0その範囲(0-1023)からサーボの範囲(0-180度)にマッピングします。myservo.write(pos)コマンドは、ポテンショメーターの回転に基づいてサーボを所望の位置に移動させます。

デモンストレーション / 期待すること

このプログラムを実行すると、ポテンショメーターを回すとサーボモーターが0度から180度までスムーズに動くのが見えるはずです。サーボが期待通りに動かない場合は、配線を確認し、ポテンショメーターが正しく機能していることを確認してください。さらに、Arduinoが適切に電源供給されていることと、コードがエラーなしでアップロードされていることを確認してください。サーボがポテンショメーターの位置をリアルタイムで反映するのを見ることができるでしょう(動画の02:00で)。

ビデオのタイムスタンプ

  • 00:00- プロジェクトの紹介
  • 01:30- ハードウェアセットアップの説明
  • 03:45- 配線指示
  • 05:00- コードウォークスルー
  • 07:30- 完成したプロジェクトのデモンストレーション

画像

Arduino wiring for controlling Servo motor with Potentiometer
Arduino wiring for controlling Servo motor with Potentiometer
Arduino wiring for servo motor
Arduino wiring for servo motor
11-Controlling a servo position using a potentiometer using Arduino
言語: C++
/*
 * オリジナルソース: Arduino IDE  
 * Arduinoプロジェクト: サーボ位置の制御  
 * このコードはRobojax.comのビデオチュートリアルと共に使用されます  
 * 2017年4月24日、カナダのオントリオ州アジャックスで公開。  
 * 著者/編集者: アハマド・シャムシリ  
 * YouTubeでビデオを見る: https://youtu.be/kZ9b31gVemc  
 * このコードのチュートリアルページビュー https://robojax.com/RJT8  
 * ポテンショメーター(可変抵抗器)を使用したサーボ位置の制御
 */
#include <Servo.h>

Servo myservo; // サーボを制御するためのサーボオブジェクトを作成する
 // ほとんどのボードで12個のサーボオブジェクトを作成できます。

int pos = 0; // サーボ位置を格納する変数

void setup() {
  myservo.attach(9); // ピン9にサーボをサーボオブジェクトに接続します。
}

void loop() {
  for (pos = 0; pos <= 180; pos += 1) { // 0度から180度へ移動します。
 // 1度刻みで
    myservo.write(pos); // サーボに変数 'pos' の位置に移動するように指示する。
    delay(15); // サーボが位置に到達するまで15ms待ちます。
  }
  for (pos = 180; pos >= 0; pos -= 1) { // 180度から0度に移行します。
    myservo.write(pos); // サーボに変数 'pos' の位置に移動するように指示する。
    delay(15); // サーボが位置に到達するまで15ms待ちます。
  }
}

リソースと参考文献

まだリソースはありません。

ファイル📁

ファイルは利用できません。