这里我们将向您展示如何使用Arduino控制多个伺服电机。用Arduino连接多个伺服电机似乎很容易,但如果我们将所有伺服电机连接到Arduino电源引脚,那么它们将无法正常工作,因为没有足够的电流来驱动所有电机。因此,您必须为电机使用单独的电源,可以使用适配器(5v 2A),也可以使用优质的9v 电池。
所需材料
Arduino UNO
伺服电机
电源
面包板
电路原理图
什么是伺服电机?
在详细介绍之前,我们首先应该了解伺服电机。
伺服电机有不同的形状和尺寸。伺服电机主要有电线,一根用于正电压,一根用于接地,最后一根用于位置设置。红线接电源,黑线接地,黄线接信号。
伺服电机是直流电机、位置控制系统和齿轮的组合。直流电机轴的位置由伺服系统中的控制电子设备根据PWM 信号(信号引脚)的占空比进行调整。
简而言之,控制电子设备通过控制直流电机来调整轴位置。有关轴位置的数据通过信号引脚发送。控制器的位置数据应作为PWM 信号通过伺服电机的信号引脚发送。
PWM(脉冲宽度调制)信号的频率可能因伺服电机的类型而异。这里重要的是PWM 信号的占空比。根据负载分布,控制电子设备调整轴。
如下所示,要使轴移动到9 点钟位置,开度必须为1/18。即。在18ms 信号中,有1ms 的开启时间和17ms 的关闭时间。
对于要移动到12 点钟方向的轴,信号必须具有1.5ms 的开启时间和16.5ms 的关闭时间。该比率由控制系统在伺服系统中解码,并相应地调整位置。这里的PWM是使用ARDUINO UNO生成的。
Arduino代码解释
最后给出了多舵机控制的完整Arduino代码。
Arduino有伺服电机库,它处理所有与PWM相关的东西来旋转伺服器,你只需要输入你想要旋转的角度,有函数servo1.write(angle);这会将舵机旋转到所需的角度。
所以在这里我们从定义伺服电机的库开始。
包括
在下面的代码中,我们将所有四个服务器初始化为Servo1、Servo2、Servo3 和Servo4。
伺服伺服1;
伺服伺服2;
舵机伺服3;
伺服伺服4;
然后我们使用Arduino 设置所有伺服器的输入引脚。如下代码所示,Servo1 连接到Arduino 的引脚3。您可以根据自己的需要更改引脚,但请记住,它应该是PWM 引脚。使用带有Arduino 数字引脚的伺服系统是不可靠的。
无效设置(){
伺服1.attach(3);
伺服2.attach(5);
伺服3.attach(6);
伺服4.附加(9);
}
现在,在void Loop() 函数中,我们只需将所有舵机从0 度旋转到180 度,然后从180 度旋转到0 度。以下代码中使用的延迟用于增加或减少伺服器的速度,因为它会影响变量“i”增加或减少的速度。
无效循环(){
for (int i=0; i 180; i++) {
伺服1.write(i);
伺服2.write(i);
伺服3.write(i);
伺服4.write(i);
延迟(10);
}
对于(i=180;i 0;i--){
伺服1.write(i);
伺服2.write(i);
伺服3.write(i);
伺服4.write(i);
延迟(10);
}
}
使用Arduino控制多个舵机:
当在一个Arduino 上使用两个以上伺服系统时,我们都面临着当前的问题。唯一的解决方案是连接具有适当额定电流的外部电源(在这个项目中我使用了2A 和9v 电源)。对于外部电源,您可以使用适配器、RPS(稳压电源表)或优质9 伏电池,您可以使用笔记本电脑USB 端口为小型伺服电机供电。要使用外部电源,只需将Arduino 地线短接到外部电源地线即可。
使用下面给出的Arduino 代码对Arduino 进行编程,并将电路图中所示的所有伺服电机连接到电机,并为电机提供适当的电源。因此,所有服务器将不间断地协同工作。
包括
伺服伺服1;
伺服伺服2;
舵机伺服3;
伺服伺服4;
整数i=0;
无效设置(){
伺服1.attach(3);
伺服2.attach(5);
伺服3.attach(6);
伺服4.附加(9);
}
无效循环(){
for (i=0; i 180; i++) {
伺服1.write(i);
伺服2.write(i);
伺服3.write(i);
伺服4.write(i);
延迟(10);
}
对于(i=180;i 0;i--){
伺服1.write(i);
伺服2.write(i);
伺服3.write(i);
伺服4.write(i);
延迟(10);
}
}