单片机主要作用是控制外围的器件,并实现一定的通信和数据处理。
但在某些特定场合,不可避免地要用到数学运算,尽管单片机并不擅长实现算法和进行复杂的运算。
这不最近就遇到这样一个情况,硬件工程师做了一个项目中的传感器,正常去捕捉一个上升沿的时间,但是因为硬件做到去掉一些抖动,所以需要软件进行一次滤波。我大致会进行一个捕获时间判断,如果前后两次捕获时间过于短暂,我们进行一次滤波,把一些时间数据进行合并。
我们大多时候会使用一些别的厂家做的传感器,他们会按照我们要求去做,出现滤波使用的场景很少。但是当你碰到公司自己做的传感器的时候,你会和硬件工程师很多的配合。他会给你优化一些的硬件,但是有些时候不是完整按照你常规使用的传感器那样顺滑。你需要自己去看到硬件示波器的波形,脑海中自己去对应到一个单片机优化后的数据。
例如下面,理论上是一个笔直的上升沿,你知道你需要的,但是这样给到你的一个波形,你需要做一些软件的优化,做一些滤波处理。嵌入式工程师要做到脑中自动PS技能,然后再去让做一些应用逻辑。下面分享一些比较多使用的滤波操作,大家一起进步学习。
作者-------良知犹存
下面部分为网络整理所得,单片机实现数字滤波的几种方式。
在单片机进行数据采集时,会遇到数据的随机误差,随机误差是由随机干扰引起的,其特点是在相同条件下测量同一量时,其大小和符号会现无规则的变化而无法预测,但多次测量的结果符合统计规律。
为克服随机干扰引起的误差,硬件上可采用滤波技术,软件上可采用软件算法实现数字滤波。滤波算法往往是系统测控算法的一个重要组成部分,实时性很强。
文章主体内容链接:单片机数字滤波算法一些分享(附实践思考)