サイトアイコン KOKENSHAの技術ブログ

Arduinoとポテンショメーター(可変抵抗)で動かす連続回転サーボ

こんな記事を書きました

ESP32でウェブからサーボを制御する!

obniz サーボを動かしての第一印象、これは未来だ!

今日の記事は

Arduinoからサーボを動かす方法をご紹介します。しかも!連続回転サーボも投入してみました!

目次

Arduinoとポテンショメーターで動かす連続回転サーボ

連続回転サーボはこちらです。

文字通り、回転は180度とか、270度が限界ではなく

モーターのように連続的に回転できます。

今、動きが確認しやすいように

車輪をつけています。

将来は、これの発展形で倒立振子でも作ろうかなと思います。

部品もそのまま使えますし、今回のために二つを購入しましたので。

接続

サーボGND  –>  Arduino GND

サーボV           –>  Arduino 5V

サーボS           –>  Arduino  pin3

ポテンショメーターGND  –> Arduino GND

ポテンショメーターV         –> Arduino 3.3V

ポテンショメーターS         –> Arduino A0

私は少し空中の部分があるから、延長だと考えてください。笑

ポテンショメーター、可変抵抗ってもう言わないのかな。

Arduinoの本体です。

純正のものです、もちろん、互換ボードでも全然問題なく動くと思います。

全体像はこんな感じです。

今回使っているポテンショメーターは

他の何かを購入した時に付いてきたものです。

もう覚えていないです!笑

この実験をしたくて、探していたら、出てきたので、これを使おうと言うことで!笑

写真では伝わないですが、ポテンショメーターを左右に回して、中間をすぎると、回転が逆になります。

中間に位置すると、回転が止まります。

なかなか楽しいです!笑。

 

プログラム

プログラムもとても簡単です。

#include <Servo.h>

Servo servo;//サーボのインスタンス

void setup(){
  //サーボの信号線を3番ピンに接続
  //(PWMピン以外のピンにも接続可)
  servo.attach(3);
  Serial.begin(9600); 
}

void loop(){
  //センサの読み取り値
  int val=analogRead(0);
  Serial.println(val);
  //map()を使って0~678のセンサ読取り値を0~180の角度に変換
  int angle=map(val,0,678,0,180);
  //サーボ出力
  Serial.println(angle);
  servo.write(angle);//0~180まで
}

「map()を使って0~678のセンサ読取り値を0~180の角度に変換」というところですが

最初は、センサーの値の範囲が分からなくて、中間にポテンショメーターを回しても、回転が止まらなくて

その後、シリアルモニターに値を出して確認しましたら、アナログの値が678でMAXで

他のセンサーも大量に実験して

0-678のレンジがほとんどですね。(原因がv3.3を使っているからです。)

従いまして、ここで、678に設定することによってサーボ回転の0-180度(サーボの場合、ここでは、-90度〜90度ですね)にマッピングがうまく行きました。

動作の動画はこちらどうぞ!

まとめ

もちろん、連続回転サーボを普通の180度のサーボに置き換えても動作します。

今回使った連続回転サーボと車輪はこちらです。

[amazonjs asin=”B077JFCPCX” locale=”JP” title=”Feetech FS90R マイクロサーボ 360度連続回転 6V 9G 車輪付き 2点入り 900us-2100us 並行輸入品”]

[amazonjs asin=”B0044X2E5S” locale=”JP” title=”【永久保証付き】Arduino Uno”]

ポテンショメーターの回す角度と連動して、サーボも回転します。

これいろんな応用ができそうです!

ESP32を使えば、ポテンショメーターの値を飛ばして、受信側は受信したら、サーボで回転方向とスピードが制御できてしまいますね!

「制御」している感があって、楽しいですね!(^O^)

では、また次回!

モバイルバージョンを終了