このチュートリアルはの一部です: サーボモーター
サーボモーターに関連するすべてのビデオをここに掲載しています。他のビデオへのリンクはこの記事の下にあります。
Arduinoを使ってポテンショメータでサーボを制御する
このチュートリアルでは、Arduinoとポテンショメータを使ってサーボモーターを制御する方法を学びます。ポテンショメータによりサーボの角度を滑らかに調整でき、位置をリアルタイムで制御できます。このプロジェクトの最後までに、ポテンショメータの値とそれに対応するサーボ角度を表示する機能的なセットアップが完成します。

ポテンショメータを回すと、サーボモーターの角度は0度から180度まで変化します。Arduinoのアナログ入力でポテンショメータの値を読み取り、その値を簡単な式でサーボの範囲にマッピングします。このプロジェクトは、アナログ入力の動作やそれを使ったモーター制御の仕組みを理解するのに最適です(ビデオの01:45で)。
ハードウェア解説
このプロジェクトでは、Arduinoボード、サーボモーター、そしてポテンショメータが必要です。ポテンショメータは可変抵抗として機能し、その位置に対応する電圧を出力します。この出力はArduinoのアナログ入力で読み取られ、サーボをどれだけ回転させるかを決定できます。
サーボモーターは特定の角度に位置決めできるモーターの一種です。制御信号を受け取り、それによって目的の角度が指示されます。サーボはArduinoから受け取る入力に基づいてその角度まで回転するため、ロボットや遠隔操作機器などのさまざまな用途で役立ちます。
データシートの詳細
| 製造元 | 様々な |
|---|---|
| 部品番号 | 標準サーボ |
| ロジック/IO電圧 | 5 V |
| 供給電圧 | 4.8〜6V |
| 出力電流(チャンネルごと) | 最大1 A |
| ピーク電流(チャンネルあたり) | 最大2 A |
| PWM周波数に関するガイダンス | 50ヘルツ |
| 入力論理閾値 | 0.8 V(低)/ 2.0 V(高) |
| 電圧降下 / Rドレイン-ソース(オン) / 彩度 | 0.5 V |
| 熱制限 | 摂氏85度 |
| パッケージ | 標準サイズ |
| 備考 / バリエーション | さまざまなサイズとトルク定格で入手可能です |
- 電源が許容範囲(4.8〜6 V)内にあることを確認してください。
- ポテンショメータには適切な抵抗値を使用してください(10 kΩ推奨)。
- 逆接続による誤動作を避けるため、接続の極性を確認してください。
- 熱に注意してください。サーボが過負荷になっていないことを確認してください。
- 干渉を減らすために配線を短く保ってください。
- 必要に応じて電源入力にデカップリングコンデンサを使用してください。
- ポテンショメータがアナログピンA0に正しく接続されていることを確認してください。
配線手順

部品を配線するには、まずポテンショメータを接続してください。ポテンショメータの中央のピンはアナログピンに接続してください。A0Arduinoでは、左側のピンを5Vピンに、右側のピンをグラウンド(GND)に接続してください。
次に、サーボモーターを接続します。サーボの接地線(通常は黒または茶色)はArduinoのGNDに接続してください。電源線(通常は赤)はArduinoの5Vピンに接続してください。最後に、制御線(多くは黄色または白色)はデジタルピンに接続してください。9Arduino上で。このセットアップにより、Arduinoはポテンショメータの位置に応じてサーボを制御できるようになります。

コード例と解説
コードの主要な部分を見てみましょう。まず、Servoライブラリをインクルードしてサーボオブジェクトを作成します:
#include
Servo myservo; // create servo object to control a servo
このコードはサーボを初期化し、制御できるように準備します。次のステップではポテンショメータの値を読み取ります:
int val = analogRead(potpin); // reads the value of the potentiometer
ここで、ポテンショメータから読み取った値が変数に格納されますval値は0から1023の間で、ポテンショメータの位置に対応します。次にこの値をサーボの範囲にマッピングします:
val = map(val, 0, 1023, 0, 180); // scale it to use it with the servo
この行はポテンショメータの値をサーボモーターに適した範囲に変換します。最後に、計算された位置にサーボを設定します:
myservo.write(val); // sets the servo position according to the scaled value
このコマンドはポテンショメータの位置に基づいてサーボを指定された角度に移動させます。記事の下に完全なコードが掲載されています。
デモンストレーション/当日の見どころ
プログラムを実行すると、ポテンショメータを回すことでサーボモーターの角度がスムーズに調整されます。ノブを回すとシリアルモニタに角度の値が表示されるはずです。サーボが予期せぬ動作をする場合は配線を確認してください。特にポテンショメータとサーボへの接続を確認してください(ビデオの04:30参照)。
サーボはポテンショメータの位置の変化に即座に反応するはずです。遅れやガクつきに気付いた場合は、応答性を改善するためにコード中の遅延(待機時間)を短くすることを検討してください。
このチュートリアルはの一部です: サーボモーター
- Arduinoを使ってプッシュボタンでサーボを制御する
- Control a Servo Motor with a Push Button: Move Servo and Return SPB-1
- Control a Servo Motor with a Push Button: Move Servo in One Direction SPB-2
- Controlling a Servo Motor with a Push Button: Move Servo While Button Is Pressed (SPB-3)
- Arduinoを使ってポテンショメータとLCD1602でサーボを制御する
- Arduinoを使った赤外線リモコンによるサーボモーターの制御
- ポテンショメーターを使用したArduinoサーボモーター制御
- Arduino用の手のジェスチャーによるサーボ位置の制御
- Controlling Two or More Servos with Potentiometers Using an Arduino
- How to Control a 360° Servo with Three Push-Button Switches
- How to Use Continuous 360° Servo with Arduino
- PCA9685 16チャンネル 12ビット サーボコントローラ V1 用の Arduino コードとビデオ
- Build an Arduino Servo Toggle Switch with a Push Button
/*
Controlling a servo position using a potentiometer (variable resistor)
by Michal Rinott <http://people.interaction-ivrea.it/m.rinott>
modified on 8 November 2013
by Scott Fitzgerald
http://www.arduino.cc/en/Tutorial/Knob
Update by Ahmad Shamshiri for Robojax.com in Ajax, Ontario, Canada
Watch video for this code at https://youtu.be/X_drE5tLbz0
This code is taken from http://robojax.com/learn/arduino
*/
#include <Servo.h>
Servo myservo; // create servo object to control a servo
int potpin = A0; // analog pin used to connect the potentiometer
int val; // variable to read the value from the analog pin
void setup() {
// Servo knob demo by Robojax.com
Serial.begin(9600); // setup serial
myservo.attach(9); // attaches the servo on pin 9 to the servo object
}
void loop() {
// Servo knob demo by Robojax.com
val = analogRead(potpin); // reads the value of the potentiometer (value between 0 and 1023)
Serial.print(val);
Serial.print(" ");
val = map(val, 0, 1023, 0, 180); // scale it to use it with the servo (value between 0 and 180)
myservo.write(val); // sets the servo position according to the scaled value
// Servo knob demo by Robojax.com
Serial.print(val);
Serial.println();
delay(200); // waits for the servo to get there
}
必要かもしれないもの
-
アマゾンアマゾンのサーボモーターamzn.to
-
アリエクスプレスAliExpressからSG90サーボモーター180または360を購入してください。s.click.aliexpress.com
リソースと参考文献
-
外部SG90サーボamzn.to
ファイル📁
ファイルは利用できません。