0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Arduinoで強めのサーボモータを使う

Posted at

こちらの記事の続編です。

この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の範囲に変換する。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?