Arduinoとポテンショメーター(可変抵抗)で動かす連続回転サーボ
こんな記事を書きました
今日の記事は
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^)
では、また次回!