Arduinoを使ってポテンショメータでサーボを制御する

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に正しく接続されていることを確認してください。

配線手順

Arduino wiring or servo motor with pot
Arduino wiring or servo motor with pot

部品を配線するには、まずポテンショメータを接続してください。ポテンショメータの中央のピンはアナログピンに接続してください。A0Arduinoでは、左側のピンを5Vピンに、右側のピンをグラウンド(GND)に接続してください。

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

Arduino Schemtic of wiring servo motor with pot

コード例と解説

コードの主要な部分を見てみましょう。まず、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 wiring or servo motor with pot
Arduino wiring or servo motor with pot
Arduino Schemtic of wiring servo motor with pot
Arduino Schemtic of wiring servo motor with pot
SG90_servo_motor-1
SG90_servo_motor-1
SG90_servo_motor-0
SG90_servo_motor-0
96-Controlling a servo position using a potentiometer
言語: C++
コピーしました!

必要かもしれないもの

リソースと参考文献

ファイル📁

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