©版权归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、购买及培训

本例套件可以通过下面的方式购买:

www.imtcn.com

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/