首页 » 互联网 » AD采样值发送给上位机前的滤波去毛刺处理_准时器_函数

AD采样值发送给上位机前的滤波去毛刺处理_准时器_函数

admin 2024-12-27 08:08:06 0

扫一扫用手机浏览

文章目录 [+]

我们知道,读取到的AD值都是瞬时的,变革可能会比较大,那么我们就须要进行处理,也便是常用的滤波去毛刺——常日的做法都是去掉最大、最小,再取均匀。
我们利用定时器中断取值,每次中断取1个数据。
第一次取20个数据,利用冒泡法从小到大排序,去掉前5个、后5个,中间10个取均匀,这样打算得到1个值;第二次,我们取上一次排序前的后15个数据,再重新取5个,然后按照第一次的方法进行取值;以此类推,统共得到200个值,一次性发送给上位机。
采取这种方法,以下两点须要把稳:

1、采样的连续性。
利用定时器中断取采样值,那么这个中断就不应该停滞,也便是说,在发送给上位机的时候,定时器中断也是在进行取值的。
小秋之前写程序的时候,就忽略了这个问题,然后涌现的结果是:采样数据画出来的曲线有阶梯性,不是连续的。

AD采样值发送给上位机前的滤波去毛刺处理_准时器_函数 AD采样值发送给上位机前的滤波去毛刺处理_准时器_函数 互联网

2、在发送给上位机之前该当先缓存要发送的数据,由于在发送过程中定时器中断还是在进行取值的,为避免滋扰,这个缓存必须要有。

AD采样值发送给上位机前的滤波去毛刺处理_准时器_函数 AD采样值发送给上位机前的滤波去毛刺处理_准时器_函数 互联网
(图片来自网络侵删)

下面进入程序部分,平台是STM32F103,采样芯片是AD7928,这个芯片配置在小秋的上一篇文章《SPI通信实例——一款实际事情中用到的芯片AD7928》已经先容过了,有兴趣的朋友可以去看看。

主函数中,设定定时器3的中断韶光为200us,即每200us取一次采样值。
第一次我们共取25个数据,滤波去毛刺得到一个值,第二次重新取5个,加上第1次的后15个,再得到一个值......这样算下来的结果是,每5个定时器中断得到一个值,即1ms一个值,200个值刚好200ms。
取完200个值之后,在主函数中的while(1)循环中发送。

定时器3初始化设置

冒泡法从小到大排序,去掉首尾各5个,取均匀值

发送函数,在主函数的while(1)循环中发送

这篇文章的重点是:定时器3中断函数中的数据处理,发送函数中的数据缓存。

相关文章

数字化转型的舵手,IT总监的角色与挑战

在当今这个数字化时代,信息技术(IT)已经成为企业发展的核心驱动力。作为企业中不可或缺的一员,IT总监肩负着引领企业实现数字化转型...

互联网 2024-12-29 阅读0 评论0

FPGA进修-并行ADC与DAC_符号_补码

ADC和DAC是FPGA与外部旗子暗记的接口,从数据接口类型的角度划分,有低速的串行接口和高速的并行接口。FPGA常常用来采集中高...

互联网 2024-12-29 阅读0 评论0