当前位置:首页 > 新型工业化 >如何使用arduino控制多个伺服电机转速(如何使用arduino控制多个伺服电机运行)

如何使用arduino控制多个伺服电机转速(如何使用arduino控制多个伺服电机运行)

通过Arduino 使用一两个伺服电机很容易,但是如果我们想使用多个伺服电机怎么办?

这里我们将向您展示如何使用Arduino控制多个伺服电机。用Arduino连接多个伺服电机似乎很容易,但如果我们将所有伺服电机连接到Arduino电源引脚,那么它们将无法正常工作,因为没有足够的电流来驱动所有电机。因此,您必须为电机使用单独的电源,可以使用适配器(5v 2A),也可以使用优质的9v 电池。

如何使用arduino控制多个伺服电机转速(如何使用arduino控制多个伺服电机运行)

所需材料

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);

}

}

最新资讯

推荐资讯