こちらの記事の続編です。
このRDS3218を使います。
アーム付き。
トルクは約10倍。
価格は約8倍(アーム込み)。
4.8 ~ 6.8Vで動作。
2Aとあるので、USB電源だけでは、足りなそう。
※実際、サーボが動くと、Arduinoの書き込みができないので、書き込み時は、サーボを抜く必要がある。
型式 | トルク(KG) | 角度 |
---|---|---|
SG90 | 約2 | 180 |
RDS3218 | 20 | 270 |
組み立て
付属するアームがサーボと干渉しないように、ギアが中央にあるとき、垂直にアームを付けます。力でやると、かなり硬く、ギアが壊れそうなので、プログラムで中央にします。
Arduino.ino
#include <Servo.h>
Servo myservo;
void setup() {
myservo.attach(9);//9番使う
}
void loop() {
myservo.write(90);//90度に設定
delay(4000);
}
この状態で、アームを固定していきます。
ですが、アームの先をさらに固定するので、先に、固定先と接続したほうが良いです。
このサーボは270度回転するので、write命令の変数の意味が少し変わります。
write(90)で中央。
write(25)で、ほぼ-90度。
目分量で、関係式を導きます。
実際のサーボの角度 = x*18/13-1620/13
write関数を使う限りでは、250度しか回らないので、270度回すには、
writeMicroseconds関数を使うことになりそうです。
write(x) | サーボ角度 |
---|---|
0 | -125 |
25 | -90 |
90 | 0 |
155 | 90 |
180 | 125 |
myservo.write(25);//-90度に設定
myservo.write(155);//+90度に設定
可変抵抗で制御する
下記リンクのサーボコントローラでやるような、可変抵抗を操作してサーボを回すプログラム。
#include <Servo.h>
Servo myservo;
void setup() {
myservo.attach(9);//9番使う
}
void loop() {
int analog = analogRead(A0);
int val = (int)((analog-512)/512.0*65+90);
myservo.write(val);
}
0~1023でアナログ値を取得して、
25~155の範囲に変換する。