舵机驱动程序.doc

舵机驱动程序.doc

ID:53242431

大小:22.50 KB

页数:2页

时间:2020-04-02

舵机驱动程序.doc_第1页
舵机驱动程序.doc_第2页
资源描述:

《舵机驱动程序.doc》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、舵机驱动程序所用的舵机型号为TowerProMicroServo99SG90,单片机型号为Atmega16.舵机有三根引出线:VCC,GND,CONTROL。VCC,GND为舵机的电源线,CONTROL为舵机控制信号的输入线。控制信号为50Hz的PWM波形(矩形波),不同的脉宽(占空比)对应舵机不同的方位角。改变脉宽即可改变舵机的方位角。在没有过载且控制信号持续稳定的条件下,舵机的方位角严格保持不变。此控制信号适合所有类型的舵机。需要注意的是尽管也可以用延时函数来实现PWM波,但舵机运行可能不平稳,而且若PWM波的频率

2、偏离50Hz过大,舵机会出现震颤甚至会无法启动舵机!下面给出了一特定脉宽的舵机控制信号,PB7为控制信号的输出端口。程序中采用T/C0定时器中断的方式来产生PWM波形,信号更准确。需要说明的是,因程序脉宽调整得原理,脉宽的可能取值是离散的,只能得到一些特定位置,但对于普通的执行机构,是能够满足要求的。//ICC-AVRapplicationbuilder:2010-9-2110:22:14//Target:M16//Crystal:8.0000Mhz#include#include

3、>//servo-driveunsignedintcount_T=0;unsignedintangle=3;//setangle//note:changethevalueofangle(0~5),thenyoucangetdifferentangle//positionoftheservo//TIMER0initialisation-prescale:64//WGM:Normal//desiredvalue:0.5mSec//actualvalue:0.499mSec(0.2%)voidtimer0_init(void

4、){TCCR0=0x00;//stopTCNT0=0xC2;//setcountOCR0=0x00;//setcompareTCCR0=0x03;//starttimer}#pragmainterrupt_handlertimer0_comp_isr:20voidtimer0_comp_isr(void){//compareoccuredTCNT0=OCR0if(count_T

5、=(1<

6、7);count_T++;count_T%=40;}//callthisroutinetoinitializeallperipheralsvoidinit_devices0(void){//stoperrantinterruptsuntilsetupCLI();//disableallinterruptstimer0_init();MCUCR=0x00;GICR=0x00;TIMSK=0x02;//timerinterruptsourcesSEI();//re-enableinterrupts//allperipher

7、alsarenowinitialized}//portinitialvoidport_init(){DDRA=0x00;DDRB=0x10;//PB7asoutputporttocontrolservoDDRC=0x00;DDRD=0x00;PORTA=0x00;PORTB=0x00;PORTC=0x00;PORTD=0x00;}voidmain(){port_init();init_devices0();while(1);}

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。