




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、AVR学习笔记十六、舵机控制实验 -基于LT_Mini_M1616.1 舵机控制实验 舵机的英文名称是Servo,舵机是一种位置伺服的驱动器,适用于那些需要角度不断变化并可以保持的控制系统。在机器人机电控制系统中,舵机控制效果是性能的重要影响因素。舵机可以在微机电系统和航模中作为基本的输出执行机构,其简单的控制和输出使得单片机系统非常容易与之接口。 舵机是一种位置(角度)伺服的驱动器,适用于那些需要角度不断变化并可以保持的控制系统。目前在高档遥控玩具,如航模,包括飞机模型,潜艇模型;遥控机器人中已经使用得比较普遍。舵机是一种俗称,其实是一种伺服马达。 下面是一种舵机的实物图:图1 舵机实物图本
2、实例利用AVR单片机ATmega16来实现单片机对舵机的简单控制。本实例有3个功能模块,分别是: 单片机系统:使用ATmega16单片机输出脉冲信号到舵机的信号接收端,通过脉冲信号实现对舵机的转动控制。 外围电路:舵机控制电路。 程序设计:编写程序实现对舵机的控制。 通过本实例,掌握以下知识点: 单片机如何实现对舵机的控制。 舵机的工作原理和控制方法。 编写软件,实现对舵机的控制。16.2 器件和原理 舵机的结构和工作原理舵机是伺服控制系统里最常用的执行机构,其内实际上也是下个闭环的控制系统.舵机只在一根信号线就可以实现机械角度的控制. 1、舵机的结构和连线图2示出舵机的结构和连线图, 标准的
3、舵机有三条控制线,分别为:电源、地及控制。电源线与地线用于提供内部的直流马达及控制线路所需的能源,电压通常介于4V-6V之间,该电源应尽可能与处理系统的电源隔离(因为伺服马达会产生噪音)。甚至小伺服马达在重负载时也会拉低放大器的电压,所以整个系统的电源供应的比例必须合理。 图2 舵机的结构和连线图控制线输入一个周期性的正向脉冲信号,这个周期性脉冲信号的高电平时间通常在1ms-2ms之间。而低电平时间应在5ms到20ms间,并不很严格。图3表示出一个典型的20ms周期性脉冲的正脉冲宽度与舵机的输出臂位置的关系: 图3 舵机输出转角与输入信号脉冲宽度的关系注:如果一直以固定占空比的脉冲控制舵机,则
4、舵机的角度一直保持不变(即角度保持)。16.2.2、舵机的控制原理舵机的工作原理是:控制信号由接收机的通道进入信号调制芯片,获得直流偏置电压。它内部有一个基准电路,产生周期为20ms,宽度为1.5ms的基准信号,将获得的直流偏置电压与电位器的电压比较,获得电压差输出。最后,电压差的正负输出到电机驱动芯片决定电机的正反转。当电机转速一定时,通过级联减速齿轮带动电位器旋转,使得电压差为0,电机停止转动。当然我们可以不用去了解它的具体工作原理,知道它的控制原理就够了。就象我们使用晶体管一样,知道可以拿它来做开关管或放大管就行了,至于管内的电子具体怎么流动是可以完全不用去考虑的。舵机的控制信号是PWM
5、信号,利用占空比的变化改变舵机的位置。舵机的控制一般需要一个20ms左右的时基脉冲,该脉冲的高电平部分的脉宽一般在0.5ms2.5ms范围内,其实是利用调节固定周期内的占空比(高电平占整个周期的百分比)来控制角度的变化。以180度角度伺服为例,那么对应的控制关系是这样的: 0.5ms-0度; 1.0ms-45度; 1.5ms-90度; 2.0ms-135度; 2.5ms-180度;注:这只是一种参考数值,具体的参数,请参见舵机的技术参数。小型舵机的工作电压一般为4.8V或6V,转速也不是很快,一般为0.22/s度或0.18/s度,所以假如你更改角度控制脉冲的宽度太快时,舵机可能反应不过来。如果
6、需要更快速的反应,就需要更高的转速了。要精确的控制舵机,其实没有那么容易,很多舵机的位置等级有1024个,那么,如果舵机的有效角度范围为180度的话,其控制的角度精度是可以达到180/1024度约0.18度了,从时间上看其实要求的脉宽控制精度为2000/1024us约2us。如果你拿了个舵机,连控制精度为1度都达不到的话,而且还看到舵机在发抖。在这种情况下,只要舵机的电压没有抖动,那抖动的就是你的控制脉冲了。而这个脉冲为什么会抖动呢?当然和你选用的脉冲发生器有关了。可以使用FPGA、模拟电路、单片机来产生舵机的控制信号,但FPGA成本高且电路复杂。对于脉宽调制信号的脉宽变换,常用的一种方法是采
7、用调制信号获取有源滤波后的直流电压,但是需要50Hz(周期是20ms)的信号,这对运放器件的选择有较高要求,从电路体积和功耗考虑也不易采用。5mV以上的控制电压的变化就会引起舵机的抖动,对于机载的测控系统而言,电源和其他器件的信号噪声都远大于5mV,所以滤波电路的精度难以达到舵机的控制精度要求。 也可以用单片机作为舵机的控制单元,使PWM信号的脉冲宽度实现微秒级的变化,从而提高舵机的转角精度。单片机完成控制算法,再将计算结果转化为PWM信号输出到舵机,由于单片机系统是一个数字系统,其控制信号的变化完全依靠硬件计数,所以受外界干扰较小,整个系统工作可靠。16.2.3、用单片机实现对舵机的控制单片
8、机系统实现对舵机输出转角的控制,必须首先完成两个任务:首先是产生基本的PWM周期信号,本设计是产生20ms的周期信号;其次是脉宽的调整,即单片机模拟PWM信号的输出,并且调整占空比。 当系统中只需要实现一个舵机的控制,采用的控制方式是改变单片机的一个定时器中断的初值,将20ms分为两次中断执行,一次短定时中断和一次长定时中断。这样既节省了硬件电路,也减少了软件开销,控制系统工作效率和控制精度都很高。 具体的设计过程:例如想让舵机转向左极限的角度,它的正脉冲为2ms,则负脉冲为20ms-2ms=18ms,所以开始时在控制口发送高电平,然后设置定时器在2ms后发生中断,中断发生后,在中断程序里将控
9、制口改为低电平,并将中断时间改为18ms,再过18ms进入下一次定时中断,再将控制口改为高电平,并将定时器初值改为2ms,等待下次中断到来,如此往复实现PWM信号输出到舵机。用修改定时器中断初值的方法巧妙形成了脉冲信号,调整时间段的宽度便可使伺服机灵活运动。 为保证软件在定时中断里采集其他信号,并且使发生PWM信号的程序不影响中断程序的运行(如果这些程序所占用时间过长,有可能会发生中断程序还未结束,下次中断又到来的后果),所以需要将采集信号的函数放在长定时中断过程中执行,也就是说每经过两次中断执行一次这些程序,执行的周期还是20ms。16.3 电路和连接本实例主要包含2部分电路:按键检测电路和
10、舵机控制电路。按键检测用到了实验板上的4各独立按键,分别按下不同的按键,舵机转动不同的角度。按键检测电路前面实例中已经介绍过,在此不再重复。从前面的叙述我们已经知道:舵机控制需要3条线:电源,地,控制线。图4画出了单片机与舵机的连接图 图4 单片机与舵机的连接图1、舵机与单片机的连接实际上,单片机只是通过一根线与舵机相连,单片机通过控制该端口输出不同占空比的方波信号就可以控制舵机转动不同的角度。2、舵机的电源控制舵机转动时需要消耗比较大的电流,所以舵机的电源最好单独提供,不要和单片机使用同一路电源。当然,本实例只是演示单片机如何控制舵机转动的,并没有大功率负载,所以可以直接连接单片机实验板的电
11、源。8.4 程序设计 1、程序功能程序的功能是使用输出不同占空比的PWM信号控制舵机转动不同的角度。2函数说明本程序调用了按键模块程序。关于按键的判断前面已经做过介绍。按键处理程序在此不再详述 。主程序主要有两个任务:1、设置定时/计数器0的0.5ms中断;2、在定时中断中根据中断的发生次数来判断什么时候向舵机发送高低电平信号。由于WINAVR自带函数库中的延时函数使用起来很不方便,并且晶振频率不同,延时时间也有区别,所以本实例中自己写了两个延时函数。 3、使用WINAVR开发环境,使用的是外部12M的晶振,所以需要将makefile文件中的时钟频率修改为12M。另外在程序烧录到单片机的时候,
12、熔丝位也要选择为外部12M晶振(注意是晶振,不是外部振荡器,一定不要选择错了,否则会导致单片机不能再烧写程序)。4、程序说明略 5、程序代码/* AVR 利用T/C0定时中断控制舵机转动角度范例 * MCU: ATmega16 * 作者: maweili * 编译器:WINAVR * * 2009.3.2 */主程序:#include <avr/io.h> #include <util/delay.h>#include <avr/interrupt.h> /中断函数头文件#include "key.h" /包含按键定义头文件volatil
13、e unsigned char Counter500us; /计时变量,如果在中断中调用全局变量,必须加volatile来定义,否则变量不会变化unsigned char jiaodu;int main(void) /没有用到的管脚全部设置为输入脚,使能内部上拉电阻DDRB = 0x01;PORTB = 0xfe;DDRC = 0x00;PORTC = 0xff;DDRA = 0x00;PORTA = 0xff;/T/C0定时中断设置TIMSK |= (1 << TOIE0); /T/C0溢出中断允许TCCR0 |= (1 << CS02) | (1 <<
14、CS00); / T/C0工作于普通模式,1024分频 TCNT0 = 0xfa; /定时初值设置,定时时间 = (256-250)/12M*1024=500usCounter500us = 0; / 500us计时变量清零jiaodu = 1; sei(); /使能全局中断 while(1)/根据键值设置角度值switch(KeyValue()case 1:jiaodu = 2; break;case 2:jiaodu = 3;break;case 3:jiaodu = 4;break;case 4:jiaodu = 5;break;case 0:/PORTB = 0x00;break;de
15、fault:break;/T/C0定时中断服务程序ISR(TIMER0_OVF_vect )TCNT0 = 0xfa; /重装计数初值if(Counter500us < jiaodu) /判断0.5ms的次数是否小于角度标识PORTB = 0x01; /小于,则继续发送高电平elsePORTB = 0x00; /大于,则输出低电平Counter500us+; /0.5ms次数加1Counter500us = Counter500us % 40; /0.5ms次数始终为40,既保持脉冲周期为20ms按键模块程序:/*key.h 按键声明头文件管脚定义函数声明*/#ifndef _KEY_H
16、_ /条件编译指令#define _KEY_H_/头文件调用#include <avr/io.h> #include <util/delay.h>/按键定义#define key1 (1 << PORTD2)#define key2 (1 << PORTD3)#define key3 (1 << PORTD6)#define key4 (1 << PORTD7)/函数声明extern void keyPort_init(void); /按键端口初始化unsigned char keyScan(void); /按键检测ext
17、ern unsigned char KeyValue(void); /获取按键值extern void Delayus(unsigned int lus); /us延时函数extern void Delayms(unsigned int lms); /ms延时函数#endif/*key.c*/#include "key.h" /按键端口初始化void keyPort_init(void) /DDRD = 0x33; /PD2367定义为输入口/PORTD |= key2 | key3 | key4; /按键key123内部上拉电阻使能DDRD = 0x00; /PD口全部为
18、输入脚PORTD = 0xfb; /按键key1内部上拉电阻不使能,其余使能 /按键检测unsigned char keyScan(void) if(!(PIND & key4) | (!(PIND & key3) | (!(PIND & key2) | (PIND & key1) /是否有按键按下Delayms(20);if(!(PIND & key4) | (!(PIND & key3) | (!(PIND & key2) | (PIND & key1) /按键消除抖动后,是否有按键按下return 1; /有按键按下,返回1return 0; /干扰信号,返回0return 0; /没有按键按下,返回0 /获取按键值unsigned char KeyValue(void)if(keyScan() /判断那个按键被按下if(!(PIND & key4) /按键4被按下,则返回键值4return 4;if(!(PIND & key3) /按键3被按下,则返回键值3return 3;if(!(PIND & key2) /按键2被按下
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 中式烹调模拟题含答案(附解析)
- 9月系解题库(含参考答案解析)
- 灯饰照明安装考核试卷
- 节能环保关键技术研究与应用考核试卷
- 游艺用品销售渠道拓展考核试卷
- 生物质能发电的效率提升考核试卷
- 蔬菜罐头加工中的食品安全数据统计分析考核试卷
- 小老鼠和泡泡糖说课课件
- 蔬菜种植营养需求解析考核试卷
- 新能源汽车产业政策环境分析考核试卷
- 农业水利工程毕业实习设计-大田玉米滴灌系统
- 大学体育与健康知到智慧树章节测试课后答案2024年秋齐鲁师范学院
- 中考复习课件中考数学答题策略与技巧课件
- 便利店卫生清洁管理规范
- 《招标投标法》考试题库200题(含答案)
- 教科版三年级下册科学全册同步练习(一课一练)
- 浙江省“温州八校”2025届高考语文三模试卷含解析
- 医院食堂营养餐实施方案
- 2024中国房企数字化产品力白皮书
- 《地方文化资源在幼儿园中开发利用的比较研究》
- 水泥基材料改性研究-洞察分析
评论
0/150
提交评论