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で強めのサーボモータを使う

Last updated at Posted at 2025-05-08

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

この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(0)とwrite(180)で目測250度しか回らない。

270度回すには、

myservo.attach(9,450,2450);

のように、設定する。デフォルトでは、

myservo.attach(9,544,2400);

らしい。これで、270度+α動かせる。

write(x) サーボ角度
0 -135
30 -90
90 0
150 90
180 135
  myservo.write(25);//-90度に設定
  myservo.write(155);//+90度に設定

可変抵抗で制御する

下記リンクのサーボコントローラでやるような、可変抵抗を操作してサーボを回すプログラム。

#include <Servo.h>

Servo myservo;

void setup() {
  myservo.attach(9,450,2450);//9番使う
}

void loop() {
  int analog = analogRead(A0);
  int val = (int)((analog-512)/512.0*60+90);
  myservo.write(val);
}

0~1023でアナログ値を取得して、
30~150の範囲に変換する。

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?