飞思卡尔那些事之ECT方式检测速度
资源:
1、增量式旋转编码器。旋转编码器是测量速度的一种装置,旋转编码器每旋转一周,就会输出特定数目的脉冲。在单位时间内记录读取到旋转编码器输出的脉冲数,即可知道旋转编码器转动的圈数,即轮胎的转动速度。因为轮胎周长一定,所有可以求得在单位时间内小车行驶的路程,再通过计算即可得到小车的速度,如果单位时间足够小,则可以近似认为该速度位瞬时速度。
2、HCS12的ECT模块。在ECT模块中的输入捕捉定时器和脉冲累加器可以实现旋转编码器的脉冲计数。
方案:
1、输入捕捉(Intput Capture)计数方式。通过输入捕捉模块,进行脉冲输入捕捉,在中断程序中通过全局变量进行计数,每捕捉到一个脉冲进行一次计数,在单位时间内读取输入捕捉中断程序计数变量的计数值。
2、脉冲计数器(Modulus Counter)方式。通过脉冲累加器进行脉冲输入捕捉,模数计数器设定为单位时间中断,在模数计数器中断程序中读取脉冲累加器的计数数值。脉冲累加器可以选用16位脉冲累加器。也可以用8位的脉冲累加器。
3、模数计数器进行定时,每500MS读取一次脉冲数。读取这500MS中的脉冲数即可算出输出速度。
说明:
1、旋转编码器选用的是YZ30D-4S-2NA-200;该旋转编码器旋转一周,输出200个脉冲。
2、使用输入捕捉通道0进行脉冲的捕捉。设定位下降沿捕捉方式。开启输入捕捉中断,在中断程序中对全局变量iPulesNumAll进行计数,每进入一次中断程序,变量iPulesNumAll加1。
3、使用模数计数器进行定时,定时时间为500ms,当达到500MS后,读取iPulesNumAll中的数值,即可通过公式计算出速度。
定时过程中,既可以直接定时500MS,也可以定时1MS。在定时1MS的方案中,通过设定一个全局变量或静态变量iSpeedNum进行计数,当计数到500后再读取iPulesNumAll中的数值。
速度公式:
4、BusClock:16Mhz
CODE:
#include
#include
#pragma LINK_INFO DERIVATIVE "mc9s12xs128"
//===========================================================//
//通道0输入捕捉测速程序,PT0输入旋转编码器输出脉冲
//16位模数递减计数器进行计数
//author: Yangtze
//time:2009/4/18/3:15:45
//===========================================================//
#define iPulesNum
#define iSpeedNum
#define iWheelGirth 0.1//车轮周长
#define iSpeedTime
int
int V=0;//速度变量
void pllclk(void) //16MHz
{
}
void Init_PT0_ICapture(void)
{
}
void Init_MDC(void)
{
}
void main(void)
{
}
#pragma CODE_SEG __NEAR_SEG NON_BANKED
void interrupt 26 MDC_ISR(void)
{
}
#pragma CODE_SEG __NEAR_SEG NON_BANKED
void interrupt 9 PT4_Capture(void)
{
}
飞思卡尔ECT方式检测速 相关文章:
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)
- Windows CE 进程、线程和内存管理(二)(11-09)