0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

CW32数字电压电流表软件教程(七):基本数据处理算法(均值滤波)

武汉芯源半导体 来源:CW32生态社区 2024-05-28 10:50 次阅读

均值滤波也称为线性滤波,其采用的主要方法为邻域平均法。线性滤波的基本原理是用均值代替原图像中的各个像素值,即对待处理的当前像素点(x,y),选择一个模板,该模板由其近邻的若干像素组成,求模板中所有像素的均值,再把该均值赋予当前像素点(x,y),作为处理后图像在该点上的灰度g(x,y),即g(x,y)=∑f(x,y)/m,m为该模板中包含当前像素在内的像素总个数。

这本是数字图像处理的一种方法,但也可以用在我们数字电压电流表的ADC采样数据上。我们选取二十次的ADC采样值存储在数组 Volt_Buffer 中,然后去除掉数组中的最大值和最小值后再取平均,得到的值作为结果显示在数码管上,这样可以较大程度获得准确的、不易波动的数据。

程序在实验五的基础上略作修改即可,首先是增加和修改变量:

#define ADC_SAMPLE_SIZE (20)       //规定采样20个数据用来滤波
uint16_t Volt_Buffer[ADC_SAMPLE_SIZE]; //存储ADC转换值
uint32_t Led_Dis_Time;             //计数,300ms改变一次数码管显示值

接下来是均值滤波的主体函数:

uint32_t Mean_Value_Filter(uint16_t *value, uint32_t size)     //均值滤波
{
    uint32_t sum = 0;         //ADC采样数据和
    uint16_t max = 0;
    uint16_t min = 0xffff;    //min初值取最大是为了将第一个数据记录
    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);
    return sum;
}

对之前的电压计算函数 Volt_Cal() 修改如下:

void Volt_Cal(void)
{
  Cal_Buffer = Mean_Value_Filter(Volt_Buffer,ADC_SAMPLE_SIZE);
  Cal_Buffer = (Cal_Buffer * ADC_REF_VALUE >> 12) * (R2 + R1)/R1;
        // 四舍五入
   if(Cal_Buffer % 10 >= 5)
  {
    Cal_Buffer = Cal_Buffer / 10 + 1;
  }
  else
  {
    Cal_Buffer = Cal_Buffer / 10;
  }
}

在主函数的 while 循环里每隔300ms刷新一次:

while(1)
  {
    if(GetTick() >= (Led_Dis_Time + 300))    
      {
        Led_Dis_Time = GetTick();
        Volt_Cal();
        Display(Cal_Buffer); 
      }
  }

在之前未加滤波函数时,数码管上显示的电压数据是不稳定、跳变的,而加了滤波函数之后,数码管显示的电压数据可以稳定下来,并且有一定的抗干扰能力。至于电压准确性的问题,在后续章节的数据标定和校准中说明。




审核编辑:刘清

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 数码管
    +关注

    关注

    32

    文章

    1874

    浏览量

    90931
  • 均值滤波
    +关注

    关注

    0

    文章

    10

    浏览量

    7097
  • ADC采样
    +关注

    关注

    0

    文章

    134

    浏览量

    12829
  • 电压电流表
    +关注

    关注

    0

    文章

    24

    浏览量

    2073

原文标题:CW32数字电压电流表软件教程-实验七:基本数据处理算法(均值滤波)

文章出处:【微信号:武汉芯源半导体,微信公众号:武汉芯源半导体】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    CW32数字电压电流表-产品硬件设计要点

    电压跟随器的功能简化外围电路 2、使用了和市面电压电流表的同款接口(XH2.54+CH3.96),方便通用 3、最大40V的表头供电电压,覆盖大部分常用电压范围 4、板载低成本蓝牙通
    的头像 发表于 04-25 15:20 1842次阅读
    <b class='flag-5'>CW32</b><b class='flag-5'>数字</b><b class='flag-5'>电压电流表</b>-产品硬件设计要点

    CW32数字电压电流表软件教程(一):LED原理与驱动基础知识详解

    LED 驱动指的是通过稳定的电源为 LED 提供合适的电流电压,使其正常工作点亮。LED 驱动方式主要有恒流和恒压两种。
    的头像 发表于 05-06 15:33 1687次阅读
    <b class='flag-5'>CW32</b><b class='flag-5'>数字</b><b class='flag-5'>电压电流表</b><b class='flag-5'>软件教程</b>(一):LED原理与驱动基础知识详解

    触摸屏数据处理算法研究及实现

    触摸屏数据处理算法研究及实现
    发表于 08-15 16:32

    如何去使用数字信号处理算法

    文章背景一直想学习一下数字信号处理算法,而不是每次遇到数据处理就求平均,求最值,看容差,做滑动窗。。。数字信号处理算法已经很成熟了,但网上大
    发表于 08-09 08:23

    触摸屏数据处理算法

    触摸屏数据处理算法
    发表于 02-11 10:35 57次下载
    触摸屏<b class='flag-5'>数据处理算法</b>

    智能电压电流表的工作原理及功能

    电压电流表,主要用于测量直流电压电流信号、传感器输出的电压电流信号等等。近年来,随着智能电子技术的发展,
    的头像 发表于 05-06 09:38 3241次阅读

    精密DIY电压电流表

    电子发烧友网站提供《精密DIY电压电流表.zip》资料免费下载
    发表于 10-27 14:19 21次下载
    精密DIY<b class='flag-5'>电压电流表</b>

    CW32单片机UART基本数据收发功能介绍

    CW32单片机UART基本数据收发功能介绍
    的头像 发表于 10-24 16:50 719次阅读
    <b class='flag-5'>CW32</b>单片机UART基<b class='flag-5'>本数据</b>收发功能介绍

    CW32数字电压电流表软件教程-实验四:数码管动态显示

    5.1.数码管动态显示原理 所谓动态扫描显示即轮流向各位数码管送出段码和位码,利用发光管的余辉和人眼视觉暂留作用,使人眼的感觉好像各位数码管同时都在显示。明确了原理,我们要使电压电流表的三个位同时
    的头像 发表于 05-31 15:23 456次阅读
    <b class='flag-5'>CW32</b><b class='flag-5'>数字</b><b class='flag-5'>电压电流表</b><b class='flag-5'>软件教程</b>-实验四:数码管动态显示

    CW32数字电压电流表软件教程-实验五:ADC采样及显示

    数字信号。由于数字信号本身不具有实际意义,仅仅表示一个相对大小。故任何一个模数转换器都需要一个参考模拟量作为转换的标准,比较常见的参考标准为最大的可转换信号大小。而输出的数字量则表示输入信号相对于参考信号的大小。 6.1.2.
    的头像 发表于 05-31 15:28 504次阅读
    <b class='flag-5'>CW32</b><b class='flag-5'>数字</b><b class='flag-5'>电压电流表</b><b class='flag-5'>软件教程</b>-实验五:ADC采样及显示

    CW32数字电压电流表软件教程-实验:基本数据处理算法均值滤波

    有像素的均值,再把该均值赋予当前像素点(x,y),作为处理后图像在该点上的灰度g(x,y),即g(x,y)=∑f(x,y)/m,m为该模板中包含当前像素在内的像素总个数。这本是数字图像
    的头像 发表于 05-31 15:47 339次阅读

    CW32数字电压电流表软件进阶教程-1.电压电流同时显示

    基于[CW32数字电压电流表软件教程-实验:基本数据处理算法
    的头像 发表于 05-31 15:50 627次阅读
    <b class='flag-5'>CW32</b><b class='flag-5'>数字</b><b class='flag-5'>电压电流表</b><b class='flag-5'>软件</b>进阶教程-1.<b class='flag-5'>电压电流</b>同时显示

    CW32数字电压电流表软件进阶教程-2.电压电流值做均值滤波

    在实验运行7.1章节例程时 [CW32数字电压电流表软件进阶教程-1.电压电流同时显示] ,会发现实时显示更新的
    的头像 发表于 05-31 15:57 443次阅读

    CW32数字电压电流表软件进阶教程-3.电压电流标定

    标定是通过测量标准器的偏差来补偿仪器系统误差,从而改善仪器或系统准确度、精度的操作。为了提高电压电流表在测量时的测量精度和准确度,需要对电压电流进行标定校准。 常见的标定原理如下:假设一个采样系统
    的头像 发表于 05-31 16:20 646次阅读
    <b class='flag-5'>CW32</b><b class='flag-5'>数字</b><b class='flag-5'>电压电流表</b><b class='flag-5'>软件</b>进阶教程-3.<b class='flag-5'>电压电流</b>标定

    基于CW32F003E4P7的数字电压电流表产品方案

    产品实物: 一、产品概述 数字电压电流表,又称为数显电流电压表,是以数字形式显示,能够同时检测电流电压
    的头像 发表于 06-25 11:55 852次阅读
    基于<b class='flag-5'>CW</b>32F003E4P7的<b class='flag-5'>数字</b><b class='flag-5'>电压电流表</b>产品方案