Arduino系列教程之舵机控制

  • LV2工程师
  • |      2014-09-17 22:00:24
  • 浏览量 5712
  • 回复:4

舵机是一种位置伺服的驱动器,它接收一定的控制信号,输出一定的角度,适用于那些需要角度不断变化并可以保持的控制系统。本实验用一块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);//引用脉冲函数

}

}

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


舵机控制


  • 0
  • 收藏
  • 举报
  • 分享
我来回复

登录后可评论,请 登录注册

所有回答 数量:1
马超飞燕 2015-03-16
谢谢分享顶一个
0   回复
举报
发布
x
收藏成功!点击 我的收藏 查看收藏的全部帖子