Skip to main content

一个舵机的自我修养

如何把一个舵机改装成 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 协议,转载请注明出处。

Last updated on