在Arduino上使用一两个伺服很容易,但是如果我们要使用多个伺服电机呢?
在这里,我们将向您展示如何使用Arduino控制多台伺服电机。将多个伺服电机与Arduino连接起来似乎很容易,但是如果我们将所有Servos连接到Arduino电源引脚,则由于缺少足够的电流来驱动所有电机,它们将无法正常工作。因此,您必须为电动机使用单独的电源,要么来自某些适配器(5v 2A),要么来自优质9v电池。
所需材料
- Arduino UNO
- 伺服马达
- 电源供应
- 面包板
- 连接线
电路原理图
什么是伺服电机?
在详细介绍之前,首先我们应该了解伺服电机。
伺服电机有不同的形状和尺寸。伺服电机主要有电线,一个用于正电压,另一个用于接地,最后一个用于位置设置。红线连接到电源,黑线连接到地,黄线连接到信号。
伺服电机是直流电机,位置控制系统和齿轮的组合。直流电机轴的位置由伺服中的控制电子设备根据SIGNAL引脚的PWM信号的占空比进行调整。
简单地说,控制电子设备通过控制直流电动机来调节轴的位置。有关轴位置的数据通过SIGNAL引脚发送。通过伺服电机的信号引脚以PWM信号的形式发送到控制器的位置数据。
PWM(脉冲宽度调制)信号的频率可以根据伺服电机的类型而变化。这里重要的是PWM信号的占空比。根据该占空比,控制电子装置可调节轴。
如下图所示,要使轴移动到9o钟,“打开比例”必须为1 / 18.ie。18ms信号中1ms的开启时间和17ms的关闭时间。
要将轴移动到12o时钟,信号的接通时间必须为1.5ms,断开时间应为16.5ms。该比率由伺服系统中的控制系统解码,并根据该比率调整位置。这里的PWM是使用ARDUINO UNO生成的。
在将Servos连接到Arduino之前 ,您可以借助此Servo Motor Tester Circuit测试伺服。另请检查我们的以下Servo项目:
- 柔性传感器控制伺服电机
Arduino代码说明
最后给出了用于多伺服控制的完整Arduino代码。
Arduino有一个用于伺服电动机的库,它处理所有与PWM相关的事情来旋转伺服器,您只需要输入要旋转的角度,然后就可以使用函数 Serve1.write(angle);。 它将伺服旋转到所需角度。
因此,这里我们首先定义伺服电动机的库。
#包括
在下面的代码中,我们将所有四个伺服器初始化为Servo1,Servo2,Servo3和Servo4。
伺服伺服1; 伺服伺服2; 伺服伺服3; 伺服伺服4;
然后,我们使用Arduino设置所有伺服输入引脚。如下面的代码所示,Servo1连接到Arduino的第3针。您可以根据自己的需要更改引脚,但请记住,它应该是PWM引脚。将伺服与Arduino的数字引脚一起使用不可靠。
无效setup(){ Servo1.attach(3); 伺服2.attach(5); 伺服3.attach(6); 伺服4.attach(9); }
现在,在 void loop() 函数中,我们只是将所有伺服器从0旋转到180度,然后再旋转180到0度。以下代码中使用的延迟用于增加或减少伺服器的速度,因为它影响变量'i'的增加或减少速度。
void loop(){ for(int i = 0; i <180; i ++){ Serve1.write(i); 伺服2.write(i); 伺服3.write(i); 伺服4.write(i); 延迟(10); } 对于(i = 180; i> 0; i--){ Serve1.write(i); 伺服2.write(i); 伺服3.write(i); 伺服4.write(i); 延迟(10); } }
使用Arduino控制多个Servos-工作:
在一个Arduino上使用两个以上的伺服器时,我们所有人都面临当前的问题。唯一的解决方案是连接具有适当额定电流量的外部电源(在此项目中,我使用2A的9v电源)。对于外部电源,您可以使用适配器,RPS(稳压电源设备)或优质的9v伏电池,也可以使用笔记本电脑的USB端口为小型Servo供电。要使用外部电源,您只需要将Arduino接地与外部电源接地短路即可。
使用下面给出的Arduino代码对Arduino进行编程,并按照电路图所示连接所有Servo Motors,并为Motors提供适当的电源。因此,所有伺服器将一起工作而不会中断。