舵机驱动程序所用的舵机型号为TowerProMicroServo99SG90,:VCC,GND,CONTROL。VCC,GND为舵机的电源线,CONTROL为舵机控制信号的输入线。控制信号为50Hz的PWM波形(矩形波),不同的脉宽(占空比)对应舵机不同的方位角。改变脉宽即可改变舵机的方位角。在没有过载且控制信号持续稳定的条件下,舵机的方位角严格保持不变。此控制信号适合所有类型的舵机。需要注意的是尽管也可以用延时函数来实现PWM波,但舵机运行可能不平稳,而且若PWM波的频率偏离50Hz过大,舵机会出现震颤甚至会无法启动舵机!下面给出了一特定脉宽的舵机控制信号,PB7为控制信号的输出端口。程序中采用T/C0定时器中断的方式来产生PWM波形,信号更准确。需要说明的是,因程序脉宽调整得原理,脉宽的可能取值是离散的,只能得到一些特定位置,但对于普通的执行机构,是能够满足要求的。//ICC-AVRapplicationbuilder:2010-9-2110:22:14//Target:M16//Crystal:#include<>#include<>//servo-driveunsignedintcount_T=0;unsignedintangle=3;//setangle//note:changethevalueofangle(0~5),thenyoucangetdifferentangle//positionoftheservo//TIMER0initialisation-prescale:64//WGM:Normal//desiredvalue://actualvalue:(%)voidtimer0_init(void){TCCR0=0x00;//T0=0xC2;//setcountOCR0=0x00;//R0=0x03;//starttimer}#p_isr:p_isr(void){//T0=OCR0if(count_T<angle)PORTB|=(1<<PB7);//PB7asoutputporttocontrolservoelsePORTB&=~(1<<PB7);count_T++;count_T%=40;}//oiniti
舵机驱动程序 来自淘豆网m.daumloan.com转载请标明出处.