# 一个舵机的自我修养

如何把一个舵机改装成 360° 连转舵机,以及用代码解决杂音?

# 背景

一般来说,舵机只能转 180°(网上也有卖也有连转舵机,只是价格贵了一截)。如果想用舵机来作为小车的驱动,可以把它改为连转舵机。

# 改装 360° 舵机

# 1. 准备工作

工具:

  • 螺丝刀
  • 热熔胶枪
  • 斜口钳

# 2. 拆开舵机

注意记住每个齿轮的位置。

# 3. 修改齿轮

把最大的齿轮拣出来,用斜口钳把后面凸起的地方剪掉。

找一只比轴的直径大一点的螺丝刀,给这个齿轮扩大一下内径,使它能在轴上自由转动。

# 4. 封电位器

在做这一步之前,我们必须先把舵机回到中位

找一块 Arduino 板子,给它烧进一段让舵机回到中位的程序:

//by Lin
#include <Servo.h>
Servo myservo;
void setup() {
  myservo.attach(9);//舵机连接 Arduino 的 D9
}

void loop() {
  myservo.write(90); //让舵机回到中位
}

如图,接上舵机,你会发现它一直在转。

把右边的轴来回转几圈,找到一个让电机停下来的位置(把这里的电位器调到中间的值。

给电位器上胶,封死它。注意,这时候不要不小心把轴给转动了,如果这样,就得重新返回第三步了。

# 5. 组装

把齿轮组装回去,注意不要弄错齿轮位置。 把螺丝锁上,你就得到了一个 360° 连转舵机。

# 6. 调试

烧入以下代码:

#include <Servo.h>
Servo myservo;
int pos = 0;
void setup() {
  myservo.attach(9);
  }
void loop() {
  for (pos = 0; pos <= 180; pos += 1) {
    // in steps of 1 degree
    myservo.write(pos);
    delay(15);
  }
  for (pos = 180; pos >= 0; pos -= 1) {
    myservo.write(pos);
    delay(15);
  }
}

舵机状态:舵机加速—减速—反方向加速—减速。.....

# 消除杂音

# 背景

在使用舵机完成相关物联设备制作的时候,经常会遇到,舵机已经到达指定位置,但是仍然会有响声。不胜其烦,@张世博想出了一个方法,就是在舵机供电线路上串一个继电器,在不需要转动的情况下, Arduino 控制继电器断电。但是这个方法会增加硬件成本,而且增加代码复杂度。

# 解决方案

在需要舵机工作时,使用 attach() 函数,在舵机工作完毕后,使用 detach() 函数。

{
    servo.attach(9);
    servo.write(pos);
    delay(250);

    //断开舵机连接,防止发出声音
    servo.detach();
}

# FAQ

Q:这只是一种类型的舵机,对结构不太相同的金属舵机,该如何改装?
A:可以参考一下 改装成连续旋转的伺服舵机 这篇文章。

# 参考与致谢

文章作者:Power Lin
原文地址:https://wiki-power.com
版权声明:文章采用 CC BY-NC-SA 4.0 协议,转载请注明出处。