您的位置:首页 > 产品设计 > UI/UE

Arduino系列教程-017 舵机控制

2014-02-10 11:20 393 查看
本教程来至yingcloud.com网站

舵机是一种位置伺服的驱动器,它接收一定的控制信号,输出一定的角度,适用于那些需要角度不断变化并可以保持的控制系统。本实验用一块Arduino来驱动舵机。

元器件

舵机、面包线、Arduino板









实验接线图



舵机由电路板上的IC 判断转动方向,再驱动无核心马达开始转动,透过减速齿轮将动力传至摆臂,同时由位置检测器送回信号,判断是否已经到达定位。适用于那些需要角度不断变化并可以保持的控制系统。当电机转速一定时,通过级联减速齿轮带动电位器旋转,使得电压差为0,电机停止转动。一般舵机旋转的角度范围是0 度到180 度。从图上可以看出舵机有三根接线 ,棕色为接地线,红色为电源正极线,橙色为信号线,接线就这样了。

程序代码

int servopin=9;//定义数字接口9 连接伺服舵机信号线

int myangle;//定义角度变量

int pulsewidth;//定义脉宽变量

int val;

void servopulse(int servopin,int myangle)//定义一个脉冲函数

{

pulsewidth=(myangle*11)+500;//将角度转化为500-2480 的脉宽值

digitalWrite(servopin,HIGH);//将舵机接口电平至高

delayMicroseconds(pulsewidth);//延时脉宽值的微秒数

digitalWrite(servopin,LOW);//将舵机接口电平至低

delay(20-pulsewidth/1000);

}

void setup()

{

pinMode(servopin,OUTPUT);//设定舵机接口为输出接口

Serial.begin(9600);//连接到串行端口,波特率为9600

Serial.println("servo=o_seral_simple ready" ) ;

}

void loop()//将0 到9 的数转化为0 到180 角度,并让LED 闪烁相应数的次数

{

val=Serial.read();//读取串行端口的值

if(val>'0'&&val<='9')

{

val=val-'0';//将特征量转化为数值变量

val=val*(180/9);//将数字转化为角度

Serial.print("moving servo to ");

Serial.print(val,DEC);

Serial.println();

for(int i=0;i<=50;i++) //给予舵机足够的时间让它转到指定角度

{

servopulse(servopin,val);//引用脉冲函数

}

}

}

让舵机转动到用户输入数字所对应的角度数的位置,并将角度打印显示到屏幕上。如图:



总结与思考

实验比较简单,从效果来看舵机需要人为的输入一个角度才会转动,将变化的脉冲值转化为角度值并随着转动,这就是本次实验。在连线时要注意接线错误,不要将线接反。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: