车轮编码盘计数
时间:10-02
整理:3721RD
点击:
嘿呀,不是很会Linux,想用编码器测轮子的转速,一开始直接开了一个线程直接读取IO口进行判断,但是读取的总是有问题,我用示波器测量了一下编码盘输出的波形,也没什么问题,如下图:
但是测量得出的脉冲数量远远比实际的多,很是纳闷,后来我放大了一下波形,反向原来这个编码盘也有抖动,而且很严重,转速月底抖动越大,如下如所示:
这样的话就需要进行去抖工作,在应用层去抖动貌似不太方便,所以编写了一个读取编码器的输出计算转速的驱动程序,程序原理就是使用一个内核定时器,对输入的编码盘脉冲进行采集和滤波,由于系统的定时器最高支持的是100hz的定时频率,所以不能测量较高的转速,好在可测量转速范围的还够用,测量的结果如下图,左边是左轮转速,右边是右轮转速,单位并不是圈每秒,而是格每半秒,可以作为车速的衡量指标。
所有程序代码会在结项贴中发出。
但是测量得出的脉冲数量远远比实际的多,很是纳闷,后来我放大了一下波形,反向原来这个编码盘也有抖动,而且很严重,转速月底抖动越大,如下如所示:
这样的话就需要进行去抖工作,在应用层去抖动貌似不太方便,所以编写了一个读取编码器的输出计算转速的驱动程序,程序原理就是使用一个内核定时器,对输入的编码盘脉冲进行采集和滤波,由于系统的定时器最高支持的是100hz的定时频率,所以不能测量较高的转速,好在可测量转速范围的还够用,测量的结果如下图,左边是左轮转速,右边是右轮转速,单位并不是圈每秒,而是格每半秒,可以作为车速的衡量指标。
所有程序代码会在结项贴中发出。