|
使用Arduino开发板控制一台或两台伺服电机非常容易实现,但是如果我们想要控制多台伺服电机时,那该怎么做呢?
在本篇文章中,我们将向您介绍如何使用Arduino开发板控制多台伺服电机。将多台伺服电机连接到Arduino开发板看上去似乎很容易,但是如果我们将所有舵机连接到Arduino的电源引脚,那么就会因为缺乏足够的电流来驱动所有电机,从而导致它们无法正常工作。所以你必须采用独立的电源向电机供电,可以是电源适配器(5V/2A),也可以是优质的9V电池。
所需的材料 ● Arduino UNO开发板 ● 伺服电机 ● 电源 ● 面包板 ● 连接导线
电路原理图
使用Arduino控制多台伺服电机的电路图
什么是伺服电机? 在详细讨论之前,首先我们应该了解伺服电机。
伺服电机有不同的形状和尺寸。伺服电机主要有三根导线,一根是电源线,另一根是地线,最后一根是位置。 红线连接到电源,黑线连接到地,黄线连接到信号。
一个伺服电机包含直流电机、位置控制系统以及齿轮。根据信号引脚的PWM信号占空比,直流电机轴的位置由伺服电机的控制电路进行调整。
简单地说,控制电路通过控制直流电机来调整轴位置。轴位置相关的数据通过信号引脚发送。控制的位置数据应通过伺服电机的信号引脚以PWM信号的形式发送。 PWM(脉宽调制)信号的频率因伺服电机的类型而略有变化。这里重要的参数是PWM信号的占空比(DUTY RATIO)。根据占空比,控制电路调整轴的位置。 如下图所示,要想将轴移动到9点钟方向,开启的占空比必须是1 / 18,也就是18ms信号中1ms的ON时间和17ms的OFF时间。
要想将轴移动到12点钟方向,信号的ON时间必须为1.5ms,OFF时间应为16.5ms。伺服电机里面的控制系统解码该占空比,并根据此比例调整位置。这里的PWM是通过使用ARDUINO UNO生成的。
Arduino代码说明 在本文的末尾给出了用于控制多台伺服电机的完整Arduino代码。
Arduino IDE自带伺服电机库,它处理所有PWM相关的事情来旋转伺服电机,你只需要输入想旋转的角度,然后使用函数servo1.write(angle);将使伺服电机旋转到所需的角度。
因此,我们首先定义伺服电机库。
在下面的代码中,我们分别将四台伺服电机初始化为Servo1、Servo2、Servo3和Servo4。 - Servo servo1;
- Servo servo2;
- Servo servo3;
- Servo servo4;
复制代码
然后,我们设置Arduino中所有伺服电机的输入引脚。如下面的代码所示,Servo1连接到Arduino的第3个引脚。您可以根据实际情况更改引脚编号,但请记住它应该是一个PWM引脚。使用Arduino的数字引脚控制伺服电机是不可靠的。 - void setup() {
- servo1.attach(3);
- servo2.attach(5);
- servo3.attach(6);
- servo4.attach(9);
- }
复制代码
现在,在void loop()函数中,我们将所有伺服电机从0度旋转到180度,然后从180度旋转到0度。下面代码中使用的延迟用于增大或降低伺服电机的旋转速度,因为它会影响变量'i'的增加或减少的速度。 - void loop() {
- for (int i = 0; i < 180; i++) {
- servo1.write(i);
- servo2.write(i);
- servo3.write(i);
- servo4.write(i);
- delay(10);
- }
- for (i = 180; i > 0; i--) {
- servo1.write(i);
- servo2.write(i);
- servo3.write(i);
- servo4.write(i);
- delay(10);
- }
- }
复制代码
工作过程 在使用一个Arduino开发板控制两台以上的伺服电机时,我们都面临着电流不足的问题。唯一的解决办法是连接一个外部电源,可以提供适量的电流额定值(本文中,我采用的是9V/2A电源)。您可以使用适配器、RPS(稳压电源设备)或优质的9V电池作为外部电源,甚至在某些情况下,您可以使用笔记本电脑的USB端口为小型伺服电机供电。要使用外部电源,您只需将Arduino的地与外部电源的地连在一起。
使用下面给出的Arduino代码对Arduino开发板进行编程,并按照电路图所示连接所有的伺服电机,并为电机提供适当的电源。这样,所有舵机都可以同时工作,没有任何中断。
代码 本文所使用的完整代码如下:
main.txt
(610 Bytes, 下载次数: 102)
|