通过调整电位器来改变舵机旋转的角度
有些电脑的USB的驱动能力不足,不能驱动起来舵机,请使用DC9V的电源适配器给arduino供电
舵机是一种位置「角度」伺服的驱动器,适用于那些需要角度不断变化并可以保持的控制系统。目前在高档遥控玩具、航模、机器人中已经得到普遍使用。舵机是一种俗称,其实是一种伺服马达。本篇通过官方驱动库来实现舵机控制。
舵机实际上是一种位置伺服的驱动器,主要是由外壳、电路板、无核心马达、齿轮与位置检测器所构成。
舵机内部有一个基准电路,产生周期为20ms、宽度为1.5ms的基准信号,将获得的直流偏置电压与电位器的电压比较,获得电压差输出。经过电路板IC方向判断,再驱动无核心马达开始转动,透过减速齿轮将动力传至摆臂,同时由位置检测器送回信号,判断是否已经到位。
舵机转动的角度是通过调节PWM「脉冲宽度调制」信号的占空比来实现的。标准的PWM信号的周期固定为20ms,理论上脉宽分布应该在1ms到2ms之间,实际上可由0.5ms到2.5ms之间,脉宽与转角0°—180°相对应。不同厂家不同型号的舵机也会有所差异。
舵机一般都外接三根线,分别用棕、红、橙三种颜色进行区分,由于品牌不同,颜色也会有所差异,棕色为接地线,红色为电源正极线,橙色为信号线。
由于Arduino的驱动能力有限,当需要控制多个舵机时,需要外接电源以及使用专用的舵机控制板。



旋转电位器,舵机跟着旋转
/*
#include
#define PWM_pin 9
int pulsewidth = 0;\
void setup()
{
pinMode(PWM_pin,OUTPUT);
}
void loop()
{
// 旋转到90°
pulse(90);
}
void pulse(int angle)
{
pulsewidth=int ((angle*11)+500);
digitalWrite(PWM_pin,HIGH);
delayMicroseconds(pulsewidth);
digitalWrite(PWM_pin,LOW);
delay(20-pulsewidth/1000);
}
*/
#include //引入lib
Servo myservo; //创建一个伺服电机对象
#define potpin A5 //设定连接可变电阻的模拟引脚
int val; //创建变,储存从模拟端口读取的(0到102)
void setup()
{
myservo.attach(9); //9号引脚输出电机控制信号 注:仅能使用9、10号引脚
}
void loop()
{
val = analogRead(potpin);
//读取来自可变电阻的模拟值(0到1023之间)
val = map(val,0,1023,0,179); //利用"map"函数缩放该,得到伺服电机需要的角度(0到180之间)
myservo.write(val); //设置伺服电机的位置
delay(15); //等待电机旋转到目标角度
}
