在实验运行7.1章节例程时 [CW32数字电压电流表软件进阶教程-1.电压电流同时显示] ,会发现实时显示更新的数据是当前采集值,并未做数据滤波处理。由于采集到的原始数据有一定的波动,因此在显示更新速度较快时,数字有跳动现象。
因此,在数据处理前,可以增加常见的均值滤波算法。均值滤波原理在实验七中已有讲述。
在7.1实验例程基础上,增加均值滤波的核心代码如下:
void Volt_Cal(void)
{
V_Buffer = Mean_Value_Filter(Volt_Buffer,ADC_SAMPLE_SIZE);; //使用均值滤波
I_Buffer = Mean_Value_Filter(Curr_Buffer,ADC_SAMPLE_SIZE);; //使用均值滤波
V_Buffer = (V_Buffer * ADC_REF_VALUE > > 12) * (R2 + R1)/R1;
// 四舍五入
if(V_Buffer % 10 >= 5)
{
V_Buffer = V_Buffer / 10 + 1;
}
else
{
V_Buffer = V_Buffer / 10;
}
I_Buffer=I_Buffer * ADC_REF_VALUE > > 12;
/**
mv =I_Buffer * ADC_REF_VALUE > > 12,
R = 100mr,
10ma = mv/R/10=mv/0.1/10 = mv
*/
}
在上述例程中,可以看到使用了均值滤波函数:
Mean_Value_Filter(Volt_Buffer,ADC_SAMPLE_SIZE);; //使用均值滤波
Mean_Value_Filter(Curr_Buffer,ADC_SAMPLE_SIZE);; //使用均值滤波
其中,原始数据为每1MS采集一个数据点,共采集100次,即100MS内的定时数据值。单点数据采集在定时器BTIM1中断函数中完成。
均值滤波函数定义如下:
uint32_t Mean_Value_Filter(uint16_t *value, uint32_t size) //均值滤波
{
uint32_t sum = 0;
uint16_t max = 0;
uint16_t min = 0xffff;
int i;
for(i = 0; i < size; i++)
{
sum += value[i];
if(value[i] > max)
{
max = value[i];
}
if(value[i] < min)
{
min = value[i];
}
}
sum -= max + min;
sum = sum / (size - 2);
//if(sum >1)sum+=4; 后期校准
return sum;
}
审核编辑 黄宇
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。
举报投诉
-
数据采集
+关注
关注
38文章
5774浏览量
113371 -
定时器
+关注
关注
23文章
3228浏览量
114253 -
均值滤波
+关注
关注
0文章
10浏览量
7093 -
CW32
+关注
关注
1文章
174浏览量
540
发布评论请先 登录
相关推荐
模电怎么判断电压电流反馈器的好坏
在模拟电子学中,电压电流反馈器(Voltage Current Feedback Amplifier, VCFA)是一种重要的电子元件,广泛应用于信号放大、滤波、稳压等领域。判断电压电流反馈器的好坏
电流表电压表无示数的原因
引言 电流表和电压表是电气工程中不可或缺的测量工具。它们能够测量电路中的电流和电压,为电路设计、调试和维护提供重要数据。然而,在实际使用过程中,有时会出现
CW32数字电压电流表软件进阶教程-3.电压电流标定
标定是通过测量标准器的偏差来补偿仪器系统误差,从而改善仪器或系统准确度、精度的操作。为了提高电压电流表在测量时的测量精度和准确度,需要对电压电流进行标定校准。 常见的标定原理如下:假设一个采样系统
CW32数字电压电流表软件教程-实验七:基本数据处理算法(均值滤波)
有像素的均值,再把该均值赋予当前像素点(x,y),作为处理后图像在该点上的灰度g(x,y),即g(x,y)=∑f(x,y)/m,m为该模板中包含当前像素在内的像素总个数。这本是数字图像处理的一种方法,但也可以用在我们
CW32数字电压电流表软件教程-实验五:ADC采样及显示
的数字信号。由于数字信号本身不具有实际意义,仅仅表示一个相对大小。故任何一个模数转换器都需要一个参考模拟量作为转换的标准,比较常见的参考标准为最大的可转换信号大小。而输出的数字量则表示输入信号相对于参考信号的大小。 6.1.2.
CW32数字电压电流表软件教程-实验四:数码管动态显示
5.1.数码管动态显示原理 所谓动态扫描显示即轮流向各位数码管送出段码和位码,利用发光管的余辉和人眼视觉暂留作用,使人眼的感觉好像各位数码管同时都在显示。明确了原理,我们要使电压电流表的三个位同时
CW32数字电压电流表软件教程(七):基本数据处理算法(均值滤波)
均值滤波也称为线性滤波,其采用的主要方法为邻域平均法。线性滤波的基本原理是用均值代替原图像中的各个像素值
CW32数字电压电流表-产品制作注意事项
焊接排针再焊接数码管,且需要像上图一样确保排针底部不要凸出PCB,否则会与数码管发生干涉 2、外壳安装 如果您计划使用淘宝或其他渠道购买的公版外壳,在焊接数码管前请先仔细阅读下方内容 注:建议先焊接数码管,再焊接连接器 上图为两种型号的电压电流
评论