Arduino 入门到精通 例程18

上传人:汽*** 文档编号:562099186 上传时间:2023-09-26 格式:DOCX 页数:6 大小:139.08KB
返回 下载 相关 举报
Arduino 入门到精通 例程18_第1页
第1页 / 共6页
Arduino 入门到精通 例程18_第2页
第2页 / 共6页
Arduino 入门到精通 例程18_第3页
第3页 / 共6页
Arduino 入门到精通 例程18_第4页
第4页 / 共6页
Arduino 入门到精通 例程18_第5页
第5页 / 共6页
点击查看更多>>
资源描述

《Arduino 入门到精通 例程18》由会员分享,可在线阅读,更多相关《Arduino 入门到精通 例程18(6页珍藏版)》请在金锄头文库上搜索。

1、Arduino入门到精通例程18舵机控制实验舵机是一种位置伺服的驱动器,主要是由外壳、电路板、无核心马达、 齿轮与位置检测器所构成。其工作原理是由接收机或者单片机发出信 号给舵机,其内部有一个基准电路,产生周期为20ms,宽度为1.5ms的 基准信号,将获得的直流偏置电压与电位器的电压比较,获得电压差 输出。经由电路板上的IC判断转动方向,再驱动无核心马达开始转 动,透过减速齿轮将动力传至摆臂,同时由位置检测器送回信号,判 断是否已经到达定位。适用于那些需要角度不断变化并可以保持的控 制系统。当电机转速一定时,通过级联减速齿轮带动电位器旋转,使 得电压差为0,电机停止转动。一般舵机旋转的角度范

2、围是0度到180 度。舵机有很多规格,但所有的舵机都有外接三根线,分别用棕、红、橙 三种颜色进行区分,由于舵机品牌不同,颜色也会有所差异,宗色为 接地线,红色为电源正极线,橙色为信号线。o oo o oo(OV) GND(+5V 丿(PWM)信号线舵机的转动的角度是通过调节PWM (脉冲宽度调制)信号的占空比 来实现的,标准PWM (脉冲宽度调制)信号的周期固定为20ms(50Hz),理论上脉宽分布应在1ms到2ms之间,但是,事实上脉宽 可由0.5ms到2.5ms之间,脉宽和舵机的转角0180相对应。有 一点值得注意的地方,由于舵机牌子不同,对于同一信号,不同牌子的舵机旋转的角度也会有所不同

3、。了解了基础知识以后我们就可以来学习控制一个舵机了,本实验所需要的元器件很少只需要舵机一个、跳线一扎就可以了。RB412 舵机*1 面包板跳线*1 扎用Arduino控制舵机的方法有两种,一种是通过Arduino的普通数字 传感器接口产生占空比不同的方波,模拟产生PWM信号进行舵机定 位,第二种是直接利用Arduino自带的Servo函数进行舵机的控制, 这种控制方法的优点在于程序编写,缺点是只能控制2 路舵机,因为Arduino自带函数只能利用数字9、10接口。Arduino的驱动能力有 限,所以当需要控制1 个以上的舵机时需要外接电源。方法一Arduino虬 e PUER ANALCiC

4、IN u rl r nd D L 2 3 S jicspL 口e L 1 47 L 5 M 3 ?ILL tlITALE SZH匸匚a 3jaa a-fi.L3- 1L将舵机接数字 9 接口上。编写一个程序让舵机转动到用户输入数字所对应的角度数的位置,并 将角度打印显示到屏幕上。参考源程序A:int servopin=9;定义数字接口9连接伺服舵机信号线int myangle;/定义角度变量int pulsewidth;/定义脉宽变量int val;void servopulse(int servopin,int myangle)/定义一个脉冲函数pulsewidth=(myangle*ll)

5、+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 ) ;v

6、oid loop()将0至U9的数转化为0到180角度,并让LED闪烁相应 数的次数val=Serial.read();读取串行端口的值 if(val0&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); 引用脉冲函数方法二先具体分析一下Arduino自带的Servo函数及其

7、语句,来介绍一下 舵机函数的几个常用语句吧。1、attach (接口)设定舵机的接口,只有数字9或10接口可利 用。2、 write (角度)用于设定舵机旋转角度的语句,可设定的角度 范围是0到180。3、 read ()用于读取舵机角度的语句,可理解为读取最后一条 write ()命令中的值。4、attached()判断舵机参数是否已发送到舵机所在接口。5、detach () 使舵机与其接口分离,该接口(数字9或10接口) 可继续被用作PWM接口。注:以上语句的书写格式均为“舵机变量名.具体语句()”例如: myservo.attach(9)。仍然将舵机接在数字9 接口上即可。参考源程序B:#include 定义头文件,这里有一点要注意,可以直接在 Arduino 软件菜单栏单击SketchImportlibraryServo,调用 Servo 函 数,也可以直接输入#include ,但是在输入时要注意在 #include与之间要有空格,否则编译时会报错。Servo myservo;/定义舵机变量名void setup()myservo.attach(9);/定义舵机接口(9、10都可以,缺点只能控制2个)void loop()myservo.write(90);设置舵机旋转的角度 以上就是控制舵机的两种方法,各有优缺点大家根据自己的喜好和需 要进行选择。

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 学术论文 > 其它学术论文

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号