版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、AVR学习笔记十六、舵机控制实验基于 LT_Mini_M1616.1舵机控制实验舵机的英文名称是 Servo,舵机是一种位置伺服的驱动器,适用于那些需要角度不断变化并可以保持的控制系统。在机器人机电控制系统中, 舵机控制效果是性能的重要影响因素。舵机可以在微机电系统和航模中作为基本的输出执行机构,其简单的控制和输出 使得单片机系统非常容易与之接口。舵机是一种位置(角度)伺服的驱动器,适用于那些需要角度不断变化并可以保持 的控制系统。目前在高档遥控玩具,如航模,包括飞机模型,潜艇模型;遥控机器人中已经 使用得比较普遍。舵机是一种俗称,其实是一种伺服马达。下面是一种舵机的实物图:图1舵机实物图本实
2、例利用AVR单片机ATmega16来实现单片机对舵机的简单控制。本实例有3个功能模块,分别是:单片机系统:使用ATmega16单片机输岀脉冲信号到舵机的信号接收端,通过脉冲信号实现对舵机的转动控制。外围电路:舵机控制电路。程序设计:编写程序实现对舵机的控制。通过本实例,掌握以下知识点:单片机如何实现对舵机的控制。舵机的工作原理和控制方法。编写软件,实现对舵机的控制。16.2器件和原理16.2.1舵机的结构和工作原理舵机是伺服控制系统里最常用的执行机构,其内实际上也是下个闭环的控制系统.舵机只在一根信号线就可以实现机械角度的控制.1 、舵机的结构和连线图2示岀舵机的结构和连线图,标准的舵机有三条
3、控制线,分别为:电源、地及控制。电源线与地线用于提供内部的直流马达及控制线路所需的能源,电压通常介于4V-6V之间,该电源应尽可能与处理系统的电源隔离(因为伺服马达会产生噪音)。甚至小伺服马达在重负载时也会拉低放大器的电压,所以整个系统的电源供应的比例必须合理。C Mill 01 (控制线)SERVO Fower I SERVO 电源娃)GND地疑)图2舵机的结构和连线图控制线输入一个周期性的正向脉冲信号,这个周期性脉冲信号的高电平时间通常在1ms-2ms之间。而低电平时间应在 5ms到20ms间,并不很严格。图3表示出一个典型的 20ms 周期性脉冲的正脉冲宽度与舵机的输出臂位置的关系:f牡
4、90.-11 一 1 nau 、)*4卉 1斤*f 1 1 Mmtl;、4 w 45.rL 口 JT *艸图3舵机输出转角与输入信号脉冲宽度的关系注:如果一直以固定占空比的脉冲控制舵机, 则舵机的角度一直保持不变 (即角度保持) 。 16.2.2 、舵机的控制原理舵机的工作原理是:控制信号由接收机的通道进入信号调制芯片,获得直流偏置电压。它内部有一个基准电路,产生周期为20ms宽度为1.5ms的基准信号,将获得的直流偏置电压与电位器的电压比较, 获得电压差输出。 最后, 电压差的正负输出到电机驱动芯片决定 电机的正反转。当电机转速一定时,通过级联减速齿轮带动电位器旋转,使得电压差为0,电机停止
5、转动。 当然我们可以不用去了解它的具体工作原理, 知道它的控制原理就够了。 就 象我们使用晶体管一样, 知道可以拿它来做开关管或放大管就行了, 至于管内的电子具体怎 么流动是可以完全不用去考虑的。舵机的控制信号是 PWM信号,利用占空比的变化改变舵机的位置。舵机的控制一般需要一个 20ms左右的时基脉冲,该脉冲的高电平部分的脉宽一般在 0.5ms2.5ms范围内,其实是利用调节固定周期内的占空比(高电平占整个周期的百分 比)来控制角度的变化。以 180度角度伺服为例,那么对应的控制关系是这样的:0.5ms0度;1.0ms45度;1.5ms90度;2.0ms135度;2.5ms180度;注:这只
6、是一种参考数值,具体的参数,请参见舵机的技术参数。小型舵机的工作电压一般为 4.8V或6V,转速也不是很快,一般为 0.22/s度或0.18/s 度,所以假如你更改角度控制脉冲的宽度太快时, 舵机可能反应不过来。 如果需要更快速的 反应,就需要更高的转速了。要精确的控制舵机,其实没有那么容易,很多舵机的位置等级有1024个,那么,如果舵机的有效角度范围为 180度的话,其控制的角度精度是可以达到 180/1024度约 0.18度了, 从时间上看其实要求的脉宽控制精度为2000/1024US约2us。如果你拿了个舵机,连控制精度为 1 度都达不到的话, 而且还看到舵机在发抖。 在这种情况下, 只
7、要舵机的电压没有抖动, 那抖动的就是你的控制脉冲了。 而这个脉冲为什么会抖动呢?当然和你选用的脉冲发生器有 关了。可以使用FPGA、模拟电路、单片机来产生舵机的控制信号,但FPGA成本高且电路复杂。对于脉宽调制信号的脉宽变换, 常用的一种方法是采用调制信号获取有源滤波后的直 流电压,但是需要 50Hz(周期是20ms)的信号,这对运放器件的选择有较高要求,从电路体 积和功耗考虑也不易采用。 5mV 以上的控制电压的变化就会引起舵机的抖动,对于机载的 测控系统而言,电源和其他器件的信号噪声都远大于5mV,所以滤波电路的精度难以达到舵机的控制精度要求。也可以用单片机作为舵机的控制单元,使 PWM
8、信号的脉冲宽度实现微秒级的变化, 从而提高舵机的转角精度。 单片机完成控制算法, 再将计算结果转化为 PWM 信号输出到舵 机,由于单片机系统是一个数字系统, 其控制信号的变化完全依靠硬件计数, 所以受外界干 扰较小,整个系统工作可靠。16.2.3 、用单片机实现对舵机的控制单片机系统实现对舵机输出转角的控制,必须首先完成两个任务:首先是产生基本的PWM 周期信号, 本设计是产生 20ms 的周期信号; 其次是脉宽的调整, 即单片机模拟 PWM 信号的输出,并且调整占空比。当系统中只需要实现一个舵机的控制,采用的控制方式是改变单片机的一个定时器中断 的初值,将20ms分为两次中断执行,一次短定
9、时中断和一次长定时中断。这样既节省了硬 件电路,也减少了软件开销,控制系统工作效率和控制精度都很高。2ms,则负脉冲为2ms后发生中断,18ms,再过18ms进具体的设计过程:例如想让舵机转向左极限的角度,它的正脉冲为 20ms-2ms=18ms,所以开始时在控制口发送高电平,然后设置定时器在 中断发生后,在中断程序里将控制口改为低电平,并将中断时间改为 入下一次定时中断,再将控制口改为高电平, 并将定时器初值改为 2ms,等待下次中断到来, 如此往复实现PWM信号输出到舵机。用修改定时器中断初值的方法巧妙形成了脉冲信号, 调整时间段的宽度便可使伺服机灵活运动。为保证软件在定时中断里采集其他信
10、号,并且使发生PWM信号的程序不影响中断程序的运行(如果这些程序所占用时间过长,有可能会发生中断程序还未结束,下次中断又到来 的后果),所以需要将采集信号的函数放在长定时中断过程中执行,也就是说每经过两次中 断执行一次这些程序,执行的周期还是20ms。16.3电路和连接本实例主要包含 2部分电路:按键检测电路和舵机控制电路。按键检测用到了实验板上的4各独立按键,分别按下不同的按键,舵机转动不同的角度。按键检测电路前面实例中已经介绍过,在此不再重复。从前面的叙述我们已经知道:舵机控制需要3条线:电源,地,控制线。图 4画岀了单片机与舵机的连接图FBI (Tl)PAa(ADCO)PAI (ADC1
11、)P拓PT3(AlWlCCn)PA3(ADC3)PB4 0S)PA4 (ADC4)FE5(MOS1)PA5(aDC3)PAttAPCS)PA7(AIX:7)PDO (RXD)PCO(SCLPDl(TZD)PCJ (EDA)PE2(iNT0)PC2 (TCK)PKJQNTJFC3 (TMS)FU4(QCl6)PG (TDQ)PB5(OC1A)PC5(TDIJPD (TCP)PCC (TCSC1) |PP7 (OG2)PC?(C3)RESETvccA7CCXT AUGNDXTAL1GNDMCEJJ1213ATitwCilSL-PITi图4单片机与舵机的连接图1、舵机与单片机的连接实际上,单片机只是
12、通过一根线与舵机相连,单片机通过控制该端口输岀不同占空比的方 波信号就可以控制舵机转动不同的角度。2、舵机的电源控制舵机转动时需要消耗比较大的电流,所以舵机的电源最好单独提供,不要和单片机使用同一 路电源。当然,本实例只是演示单片机如何控制舵机转动的,并没有大功率负载,所以可以直接 连接单片机实验板的电源。8.4 程序设计1、程序功能程序的功能是使用输出不同占空比的 PWM 信号控制舵机转动不同的角度。2 函数说明 本程序调用了按键模块程序。关于按键的判断前面已经做过介绍。按键处理程序在此 不再详述 。主程序主要有两个任务: 1、设置定时 /计数器 0 的 0.5ms 中断; 2、在定时中断中
13、根据 中断的发生次数来判断什么时候向舵机发送高低电平信号。由于 WINA VR 自带函数库中的延时函数使用起来很不方便,并且晶振频率不同,延时 时间也有区别,所以本实例中自己写了两个延时函数。3、使用WINAVR开发环境,使用的是外部 12M的晶振,所以需要将 makefile文件中 的时钟频率修改为12M。另外在程序烧录到单片机的时候,熔丝位也要选择为外部12M晶振(注意是晶振, 不是外部振荡器 ,一定不要选择错了, 否则会导致单片机不能再烧写程序) 。4、程序说明略5、程序代码/*AVR 利用 T/C0 定时中断控制舵机转动角度范例* MCU: ATmega16kkkkkk* 作者: ma
14、weili* 编译器: WINAVR2009.3.2*主程序:#include #include #include /中断函数头文件 volatile unsigned char Counter500us;#include key.h/包含按键定义头文件/计时变量,如果在中断中调用全局变量,必须加volatile 来定义,否则变量不会变化unsigned char jiaodu;int main(void)/没有用到的管脚全部设置为输入脚,使能内部上拉电阻DDRB = 0x01;PORTB = 0xfe;DDRC = 0x00;PORTC = 0xff;DDRA = 0x00;PORTA =
15、0xff;/T/C0 定时中断设置TIMSK |= (1 TOIE0); /T/C0 溢出中断允许1024 分频TCCR0 |= (1 CS02) | (1 CS00); / T/C0 工作于普通模式,TCNT0 = 0xfa;(256-250)/12M*1024=500us/定时初值设置,定时时间/ 500us 计时变量清零Counter500us = 0; jiaodu = 1;sei();/使能全局中断while(1)/根据键值设置角度值 switch(KeyValue()case 1: jiaodu = 2; break;case 2: jiaodu = 3; break;case 3
16、: jiaodu = 4; break;case 4: jiaodu = 5; break;case 0:/PORTB = 0x00;break; default:break;/T/C0 定时中断服务程序 ISR(TIMER0_OVF_vect ) /重装计数初值TCNT0 = 0xfa;if(Counter500us jiaodu) PORTB = 0x01;elsePORTB = 0x00;/判断 0.5ms 的次数是否小于角度标识/小于,则继续发送高电平/大于,则输出低电平Counter500us+; /0.5ms 次数加 1Counter500us = Counter500us % 4
17、0;/0.5ms 次数始终为 40,既保持脉冲周期为20ms按键模块程序: /* key.h 按键声明头文件 管脚定义 函数声明 * #ifndef _KEY_H_ #define _KEY_H_/条件编译指令/头文件调用#include #include /按键定义#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);/
18、按键检测extern 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 口全部为输入脚PORTD = 0xfb;/按键 key1 内部上拉电阻不使能,其余使能/按键检测unsigned char keyScan(void)if(!(PIND & key4) | (!(PIND & key3) |(!(PIND & key2) | (PIND & key1)/是否有按键按下Delay
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年闽侯县昙石山中学第一期临聘教师招聘备考题库及参考答案详解1套
- 2025年中职历史学(中国古代史纲要)试题及答案
- 2025年中职智慧健康养老服务(养老常识基础)试题及答案
- 2026年仓储管理(货物防护)试题及答案
- 2025年大学第二学年(精密仪器制造)技术应用阶段测试题及答案
- 2025年高职(电子信息工程技术)单片机原理及应用专项测试试题及答案
- 2025年大学生态工程(生态工程)试题及答案
- 2025年中职(会计电算化)电子报税综合技能测试试题及答案
- 2025年中职(会计信息化)财务软件操作试题及答案
- 2025年大学农业机械化及其自动化(农机智能化技术)试题及答案
- 1500V储能系统全场景解决方案与典型案例分享
- GB/T 44253-2024巡检机器人安全要求
- 电力电子技术(广东工业大学)智慧树知到期末考试答案章节答案2024年广东工业大学
- 汽车网络与新媒体营销课件
- DB32T3834-2020水利工程螺杆式启闭机检修技术规程
- 提高卧床患者踝泵运动的执行率
- 伤寒论条文(全398条)
- 2023年上海铁路局人员招聘笔试题库含答案解析
- 资料3b SIG康美包无菌灌装流程及特征分段介绍
- 钳工技能训练(第4版)PPT完整全套教学课件
- 电力工程课程设计-某机床厂变电所设计
评论
0/150
提交评论