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)
{
}