©版权归imtcn.com和Ledong所有,转载请保持本文完整性,并注明出处
这是《Ledong手把手入门系列教程》的第八课,这一课我们将在Ledong板上学习伺服电机的使用。
1、简介
伺服电机是用于控制机械元件运转的发动机,可使控制速度、位置精度非常准确,它将电压信号转化为转矩和转速以驱动控制对象。
本实验中,我们在Ledong板上使用伺服电机,实现一些简单的机械运动。尽管伺服电机不能达到360°的转动,但可以用它产生周期和往复性的运动。通过模拟输入针脚读取电位计的值,再利用这个数值来控制伺服电机的位置。
实验所需器材:
| 名 称 | 数量 |
| Ledong板 | 1套 |
| 1KΩ电位计 | 1个 |
| 伺服电机 | 1个 |
| 面包板 | 1块 |
| 导线 | 若干 |
首先连接1KΩ电位计。第一条从地到电位计的一个外侧针脚,第二条从【5V】到电位计的另一个外侧针脚。第三条从模拟输入【A2】到电位计中间的针脚。
其次连接伺服电机。伺服电机有三条线:电源,地和信号。电源线通常都是红的,应当连接到Ledong板的【5V】针脚。地线通常是黑色或者棕色,应当连接到Ledong板的地线【GND】针脚。信号线通常是黄色或者橘色的,应当连接到Ledong板的PWM【D9】针脚。连线方式如下图8-1所示:
图8-1 连接示意图
2、示例代码
将Ledong用线缆连接到PC上,打开软件程序,并设置好后,将下列代码输入到软件中,通过编译下载命令,将程序下载到Ledong中。

/*
利用电位计控制伺服电机
*/
#include <Servo.h>
Servo myservo; // 创建对象控制伺服电机
int potpin = 0; // 电位计一端与模拟输入针脚连接
int val; // 用于读取模拟输入端数值的变量
void setup()
{
myservo.attach(9); // 伺服电机一端与针脚9连接
}
void loop()
{
val = analogRead(potpin); // 读取电位计的数值 (范围在0-1023间)
val = map(val, 0, 1023, 0, 179); // 对数值进行变换,使其适用于伺服电机(范围在0-180间)
myservo.write(val); // 按照变换后的数值,设置伺服电机的位置
delay(15); // 延时等待伺服电机到达该位置
}
程序下载后,按运行键。可以观察到,伺服电机作来回往复性地转动;当电位计的阻值增大时,伺服电机的转动幅度变小;当电位计的阻值增大时,伺服电机的转动幅度变大。
3、运行效果
Ledong手把手入门系列教程之八.伺服电机的运行效果图8-2如下:

图8-2 运行效果图
4、购买及培训
本例套件可以通过下面的方式购买:
5、电路图
Ledong手把手入门系列教程之八.伺服电机的原理图8-3如下:

图8-3 原理图
Ledong手把手入门系列教程之八.伺服电机的PCB布线图8-4如下:

图8-4 pcb布线图
6、错误处理
注意电位计的阻值不能调得过大,否则伺服电机就会由于分压过小,导致电机无法运动。
7、补充说明
注意电位计的阻值不能调得过大,否则伺服电机就会由于分压过小,导致电机无法运动。
8、参考文献
http://www.imtcn.com
http://fritzing.org/projects/analog-input-to-servo/
