电脑桌面
添加小米粒文库到电脑桌面
安装后可以在桌面快捷访问

pwm输出控制伺服电机转向VIP免费

pwm输出控制伺服电机转向_第1页
1/6
pwm输出控制伺服电机转向_第2页
2/6
pwm输出控制伺服电机转向_第3页
3/6
pwm输出控制伺服电机转向资源:1、伺服电机。PWM输出周期在一定范围内,舵机的转向会和PWM的占空比成正比例关系。2、HCS12的PWM输出。方案:1、HCS12中的PWM模块,通过硬件进行PWM输出。2、HCS12中的ECT的比较输出模块,通过比较输出进行PWM的输出。鉴于PWM模块为输出PWM专用模块,通过设置相应寄存器即可实现PWM输出,简单方便,而且精确。故选用PWM模块进行PWM输出。说明:1、通过PWM控制舵机的转角,舵机接口一般为3根线,黑色地线,红色为电源线,一般采用4.8V和6V两种标准。另外一根线为控制信号线。2、通过级联方式实现16位PWM输出。3、周期为18MS~20MS即输出周期为56Hz~50Hz。4、对齐方式为PWM左对齐方式。5、输出极性为起始高电平。6、脉宽为1100us~1900us不等,实现-45°到45°的转向角。7、通过级联方式实现16位PWM输出。通道PWM45组成通道A。8、时钟源选择。BusBlock:24MHz。voidpllclk(void)//24MHz{SYNR=0x02;//PLLCLK=2*OSCCLK*(SYNR+1)/(REFDV+1)REFDV=0x01;CLKSEL=0x80;//选定PLL时钟}9、PWM时钟。通道时钟周期2us输出周期20MSPWM输出频率:50Hz。预分频:8分频3MHzPWMPRCLK=0x66分频:6分频500kHzClockSX=ClockX/(2*PWMSCLX)PWMSCLx=ClockX/ClockSX*2=3M/(500k*2)=3=0x03通过两次分频可得通道时钟周期为:100US即10KHZ通道A时钟频率选择PWMPRCLK和PWMSCLA;通道B时钟频率选择PWMPRCLK和PWMSCLB;周期计算公式:左对齐方式:输出周期=通道时钟周期*(PWMPERx+1)PWMPERx=输出周期/通道时钟周期-1=20MS/2us-1=9999=0x270f10、占空比设置:左对齐起始输出高电平:占空比=[(PWMDTYx+1)/(PWMPERx+1)]*100%PWMDTYx=占空比*(PWMPERx+1)/100%根据公式:[(PWMDTYx+1)/(PWMPERx+1)]*100%=脉宽宽度/输出周期*100%PWMDTYx=(脉宽宽度*PWMPERx)/输出周期-1=(脉宽宽度*9999)20000-1脉宽宽度=旋转角度*(400)/45+1500(us)通过循环即可以求出伺服电机转动角度对应的PWMDTx的值。PWMDTYx[28]={859,855,850,846,841,837,832,828,824,819,815,810,806,801,797,792,788,784,779,775,770,766,761,757,752,748,744,740,735,731,726,722,717,713,708,704,700,695,691,686,682,677,673,668,664,660,655,651,646,642,637}求PWMDTYx值的程序如下:#includevoidmain(){longinti,X,y;X=25;for(i=-25;i<=25;i++){y=X*(400)/45+1500;printf("angle:%3d°pulse:%duscycle:20MSPWMDTYx:%dPWMPERx:9999\n",X,y,(int)((9999.0/20000.0)*y)-1);X--;}}CODE:#include#include#pragmaLINK_INFODERIVATIVE"mc9s12xs128"//===========================================================////16位PWM输出控制伺服电机转动//author:yangtze//time:2009/4/21///===========================================================//#definePWMPERx0x270F;unsignedintPWMDTYxtable[]={0x035b,0x0357,0x0352,0x034e,0x0349,0x0345,0x0340,0x033c,0x0338,0x0333,0x032f,0x032a,0x0326,0x0321,0x031d,0x0318,0x0314,0x0310,0x030b,0x0307,0x0302,0x02fe,0x02f9,0x02f5,0x02f0,0x02ec,0x02e8,0x02e4,0x02df,0x02db,0x02d6,0x02d2,0x02cd,0x02c9,0x02c4,0x02c0,0x02bc,0x02b7,0x02b3,0x02ae,0x02aa,0x02a5,0x02a1,0x029c,0x0298,0x0294,0x028f,0x028b,0x0286,0x0282,0x027d};voidpllclk(void)//24MHz{SYNR=0x02;//PLLCLK=2*OSCCLK*(SYNR+1)/(REFDV+1)REFDV=0x01;CLKSEL=0x80;//选定PLL时钟}voidPWMServoMotor_init(void)//PWM初始化设置{PWMPRCLK=0X66;//设置通道周期PWMSCLA=0X03;PWMSCLB=0X03;PWMCLK=0XFF;PWMPOL=0X00;//起始输出为高电平PWMCAE=0X00;//波形左对齐PWMCTL=0XFC;//选择级联方式输出}voidPWM_Pulse(unsignedintPWMPERx,unsignedintPWMDTYx)//PWM输出周期和占空比设置{PWMPERH=(PWMPERx>>8)&0X00FF;PWMPERL=PWMPERx&0X00FF;PWMPER4=PWMPERH;//设置输出周期PWMPER5=PWMPERL;PWMDTYH=(PWMDTYx>>8)&0X00FF;PWMDTYL=PWMDYx&0X00FF;PWMDTY4=PWMDTYH;//设置脉宽PWMDTY5=PWMDTYL;PWME=0X18;//通道45使能开}voidmain(void){unsignedintPWMDTYx;PWMDTYx=PWMDTYxtable[5];pllclk();PWMS...

1、当您付费下载文档后,您只拥有了使用权限,并不意味着购买了版权,文档只能用于自身使用,不得用于其他商业用途(如 [转卖]进行直接盈利或[编辑后售卖]进行间接盈利)。
2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。
3、如文档内容存在违规,或者侵犯商业秘密、侵犯著作权等,请点击“违规举报”。

碎片内容

pwm输出控制伺服电机转向

确认删除?
VIP
微信客服
  • 扫码咨询
会员Q群
  • 会员专属群点击这里加入QQ群
客服邮箱
回到顶部