[学习笔记] ADC多路定时周期采样+中值滤波(附源码)

[复制链接]
221|11
 楼主 | 2019-7-19 11:17 | 显示全部楼层 |阅读模式
本帖最后由 JasonLee27 于 2019-7-19 11:17 编辑

硬件环境: 通用开发板软件:keil 5.2.3

涉及模块:GPIO,ADC,CTU,TIMER,DMA

先讲下原理:通过CTU模块,配置TIMER0定时触发ADC进行采样,ADC配置成规则组多通道单次采样,并采用DMA接收采样数据,因为要进行滤波处理,所以DMA传输的数据为规则组通道数的n倍(假设规则组有10个通道,则一次采样总共产生20字节数据,每次采样10组数据,那DMA传输长度就设置为20*10=100)。配置完成后,基本的流程就是:Timer0计时溢出触发ADC采样,ADC按规则组通道依次进行转换,并将转换的结果通过DMA传输到指定的存储区域,在Timer0 n次溢出后,DMA传输数据长度完成,产生DMA中断,此时就可以对数据进行处理了;当然,我们也可以不在中断里面处理,而采用定时处理的方式。

源码里都有详细的注释,就不在多讲了:
adc_sample.rar (1.07 MB, 下载次数: 25)

使用特权

评论回复
| 2019-7-25 10:20 | 显示全部楼层
这里所说的滤波处理是指IC本身可以设置滤波属性吗?

使用特权

评论回复
 楼主 | 2019-7-25 10:34 | 显示全部楼层
topstar123 发表于 2019-7-25 10:20
这里所说的滤波处理是指IC本身可以设置滤波属性吗?

IC本身不可以设置滤波属性,是通过多次周期采样,然后进行软件滤波

使用特权

评论回复
 楼主 | 2019-7-25 10:35 | 显示全部楼层
topstar123 发表于 2019-7-25 10:20
这里所说的滤波处理是指IC本身可以设置滤波属性吗?

你有接触过什么MCU是可以设置滤波的吗?

使用特权

评论回复

评论

topstar123 2019-7-25 11:55 回复TA
当然没有,干扰这东西不同场景不一样。不可能在IC里面吧。 只是你发表的感觉能滤波。我误解了 
| 2019-8-29 13:20 | 显示全部楼层
中值滤波在电机控制上,有什么优势,能滤除什么 干扰?

使用特权

评论回复
 楼主 | 2019-8-29 13:51 | 显示全部楼层
a20084666 发表于 2019-8-29 13:20
中值滤波在电机控制上,有什么优势,能滤除什么 干扰?

一般硬件搭的好的应该都不需要,只是考虑一些硬件设计简单,波形上干扰较多的情况。

使用特权

评论回复
| 2019-8-29 13:59 | 显示全部楼层
这个算法能够滤除什么样的干扰呢,举个例子呗

使用特权

评论回复
 楼主 | 2019-8-29 14:04 | 显示全部楼层
a20084666 发表于 2019-8-29 13:59
这个算法能够滤除什么样的干扰呢,举个例子呗

就是一个一般的滤波算法吖,假设你一个平整的波形上有一个尖刺,你刚好又采在这个尖刺上,那么此次采样就不准了,即使多次采样求平均,这个尖刺依然会拉高你的采样值,这个时候选择多次采样的中值数据,它的准确性就会高很多。

使用特权

评论回复
| 2019-8-29 14:14 | 显示全部楼层
JasonLee27 发表于 2019-8-29 14:04
就是一个一般的滤波算法吖,假设你一个平整的波形上有一个尖刺,你刚好又采在这个尖刺上,那么此次采样就 ...

说的很有道理,中值滤波就是去除单次波动较大的点对吧

使用特权

评论回复
 楼主 | 2019-8-29 14:35 | 显示全部楼层
a20084666 发表于 2019-8-29 14:14
说的很有道理,中值滤波就是去除单次波动较大的点对吧

对,整体波动不大的情况下,平均数肯定会比较准确点,但如果有几个波动太大的点,用中值滤波就比较好。

使用特权

评论回复
| 2019-8-29 14:40 | 显示全部楼层
JasonLee27 发表于 2019-8-29 14:35
对,整体波动不大的情况下,平均数肯定会比较准确点,但如果有几个波动太大的点,用中值滤波就比较好。 ...

好的,明白了,方波电流你一般怎么做呢

使用特权

评论回复
扫描二维码,随时随地手机跟帖
您需要登录后才可以回帖 登录 | 注册

本版积分规则

我要发帖 投诉建议 创建版块 申请版主

快速回复

您需要登录后才可以回帖
登录 | 注册
高级模式

论坛热帖

在线客服 快速回复 返回顶部 返回列表