飞思卡尔那些事之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、时钟源选择。
9、PWM时钟。
10、占空比设置:
根据公式:
[(PWMDTYx+1)/(PWMPERx+1)]*100%=脉宽宽度/输出周期*100%
脉宽宽度=旋转角度*(400)/45+1500
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值的程序如下:
#include
void main()
{
long int i,X,y;
X=25;
for(i=-25;i<=25;i++)
{
}
}
CODE:
#include
#include
#pragma LINK_INFO DERIVATIVE "mc9s12xs128"
//===========================================================//
//16位PWM输出控制伺服电机转动
//author: yangtze
//time:2009/4/21/
//===========================================================//
#define PWMPERx
unsigned int PWMDTYxtable[]={
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};
void pllclk(void)//24MHz
{
}
void PWMServoMotor_init(void)//PWM初始化设置
{
}
void PWM_Pulse(unsigned int PWMPERx,unsigned int PWMDTYx)//PWM输出周期和占空比设置
{
}
void main(void)
{
}
飞思卡尔pwm输出伺服电 相关文章:
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)
- Windows CE 进程、线程和内存管理(二)(11-09)