0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內(nèi)不再提示

CW32數(shù)字電壓電流表軟件教程(七):基本數(shù)據(jù)處理算法(均值濾波)

武漢芯源半導體 ? 來源:CW32生態(tài)社區(qū) ? 2024-05-28 10:50 ? 次閱讀

均值濾波也稱為線性濾波,其采用的主要方法為鄰域平均法。線性濾波的基本原理是用均值代替原圖像中的各個像素值,即對待處理的當前像素點(x,y),選擇一個模板,該模板由其近鄰的若干像素組成,求模板中所有像素的均值,再把該均值賦予當前像素點(x,y),作為處理后圖像在該點上的灰度g(x,y),即g(x,y)=∑f(x,y)/m,m為該模板中包含當前像素在內(nèi)的像素總個數(shù)。

這本是數(shù)字圖像處理的一種方法,但也可以用在我們數(shù)字電壓電流表的ADC采樣數(shù)據(jù)上。我們選取二十次的ADC采樣值存儲在數(shù)組 Volt_Buffer 中,然后去除掉數(shù)組中的最大值和最小值后再取平均,得到的值作為結(jié)果顯示在數(shù)碼管上,這樣可以較大程度獲得準確的、不易波動的數(shù)據(jù)。

程序在實驗五的基礎上略作修改即可,首先是增加和修改變量:

#define ADC_SAMPLE_SIZE (20)       //規(guī)定采樣20個數(shù)據(jù)用來濾波
uint16_t Volt_Buffer[ADC_SAMPLE_SIZE]; //存儲ADC轉(zhuǎn)換值
uint32_t Led_Dis_Time;             //計數(shù),300ms改變一次數(shù)碼管顯示值

接下來是均值濾波的主體函數(shù):

uint32_t Mean_Value_Filter(uint16_t *value, uint32_t size)     //均值濾波
{
    uint32_t sum = 0;         //ADC采樣數(shù)據(jù)和
    uint16_t max = 0;
    uint16_t min = 0xffff;    //min初值取最大是為了將第一個數(shù)據(jù)記錄
    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;
}

對之前的電壓計算函數(shù) 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;
  }
}

在主函數(shù)的 while 循環(huán)里每隔300ms刷新一次:

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

在之前未加濾波函數(shù)時,數(shù)碼管上顯示的電壓數(shù)據(jù)是不穩(wěn)定、跳變的,而加了濾波函數(shù)之后,數(shù)碼管顯示的電壓數(shù)據(jù)可以穩(wěn)定下來,并且有一定的抗干擾能力。至于電壓準確性的問題,在后續(xù)章節(jié)的數(shù)據(jù)標定和校準中說明。




審核編輯:劉清

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 數(shù)碼管
    +關注

    關注

    32

    文章

    1872

    瀏覽量

    90731
  • 均值濾波
    +關注

    關注

    0

    文章

    10

    瀏覽量

    7090
  • ADC采樣
    +關注

    關注

    0

    文章

    134

    瀏覽量

    12807
  • 電壓電流表
    +關注

    關注

    0

    文章

    24

    瀏覽量

    2053

原文標題:CW32數(shù)字電壓電流表軟件教程-實驗七:基本數(shù)據(jù)處理算法(均值濾波)

文章出處:【微信號:武漢芯源半導體,微信公眾號:武漢芯源半導體】歡迎添加關注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關推薦

    CW32數(shù)字電壓電流表-產(chǎn)品硬件設計要點

    電壓跟隨器的功能簡化外圍電路 2、使用了和市面電壓電流表的同款接口(XH2.54+CH3.96),方便通用 3、最大40V的表頭供電電壓,覆蓋大部分常用電壓范圍 4、板載低成本藍牙通
    的頭像 發(fā)表于 04-25 15:20 ?1747次閱讀
    <b class='flag-5'>CW32</b><b class='flag-5'>數(shù)字</b><b class='flag-5'>電壓電流表</b>-產(chǎn)品硬件設計要點

    CW32數(shù)字電壓電流表軟件教程(一):LED原理與驅(qū)動基礎知識詳解

    LED 驅(qū)動指的是通過穩(wěn)定的電源為 LED 提供合適的電流電壓,使其正常工作點亮。LED 驅(qū)動方式主要有恒流和恒壓兩種。
    的頭像 發(fā)表于 05-06 15:33 ?1609次閱讀
    <b class='flag-5'>CW32</b><b class='flag-5'>數(shù)字</b><b class='flag-5'>電壓電流表</b><b class='flag-5'>軟件教程</b>(一):LED原理與驅(qū)動基礎知識詳解

    觸摸屏數(shù)據(jù)處理算法研究及實現(xiàn)

    觸摸屏數(shù)據(jù)處理算法研究及實現(xiàn)
    發(fā)表于 08-15 16:32

    如何去使用數(shù)字信號處理算法

    文章背景一直想學習一下數(shù)字信號處理算法,而不是每次遇到數(shù)據(jù)處理就求平均,求最值,看容差,做滑動窗。。。數(shù)字信號處理算法已經(jīng)很成熟了,但網(wǎng)上大
    發(fā)表于 08-09 08:23

    觸摸屏數(shù)據(jù)處理算法

    觸摸屏數(shù)據(jù)處理算法
    發(fā)表于 02-11 10:35 ?57次下載
    觸摸屏<b class='flag-5'>數(shù)據(jù)處理算法</b>

    智能電壓電流表的工作原理及功能

    電壓電流表,主要用于測量直流電壓、電流信號、傳感器輸出的電壓、電流信號等等。近年來,隨著智能電子技術(shù)的發(fā)展,
    的頭像 發(fā)表于 05-06 09:38 ?3164次閱讀

    精密DIY電壓電流表

    電子發(fā)燒友網(wǎng)站提供《精密DIY電壓電流表.zip》資料免費下載
    發(fā)表于 10-27 14:19 ?21次下載
    精密DIY<b class='flag-5'>電壓電流表</b>

    CW32單片機UART基本數(shù)據(jù)收發(fā)功能介紹

    CW32單片機UART基本數(shù)據(jù)收發(fā)功能介紹
    的頭像 發(fā)表于 10-24 16:50 ?674次閱讀
    <b class='flag-5'>CW32</b>單片機UART基<b class='flag-5'>本數(shù)據(jù)</b>收發(fā)功能介紹

    CW32數(shù)字電壓電流表軟件教程-實驗四:數(shù)碼管動態(tài)顯示

    5.1.數(shù)碼管動態(tài)顯示原理 所謂動態(tài)掃描顯示即輪流向各位數(shù)碼管送出段碼和位碼,利用發(fā)光管的余輝和人眼視覺暫留作用,使人眼的感覺好像各位數(shù)碼管同時都在顯示。明確了原理,我們要使電壓電流表的三個位同時
    的頭像 發(fā)表于 05-31 15:23 ?410次閱讀
    <b class='flag-5'>CW32</b><b class='flag-5'>數(shù)字</b><b class='flag-5'>電壓電流表</b><b class='flag-5'>軟件教程</b>-實驗四:數(shù)碼管動態(tài)顯示

    CW32數(shù)字電壓電流表軟件教程-實驗五:ADC采樣及顯示

    數(shù)字信號。由于數(shù)字信號本身不具有實際意義,僅僅表示一個相對大小。故任何一個模數(shù)轉(zhuǎn)換器都需要一個參考模擬量作為轉(zhuǎn)換的標準,比較常見的參考標準為最大的可轉(zhuǎn)換信號大小。而輸出的數(shù)字量則表示輸入信號相對于參考信號的大小。 6.1.2.
    的頭像 發(fā)表于 05-31 15:28 ?452次閱讀
    <b class='flag-5'>CW32</b><b class='flag-5'>數(shù)字</b><b class='flag-5'>電壓電流表</b><b class='flag-5'>軟件教程</b>-實驗五:ADC采樣及顯示

    CW32數(shù)字電壓電流表軟件教程-實驗:基本數(shù)據(jù)處理算法均值濾波

    有像素的均值,再把該均值賦予當前像素點(x,y),作為處理后圖像在該點上的灰度g(x,y),即g(x,y)=∑f(x,y)/m,m為該模板中包含當前像素在內(nèi)的像素總個數(shù)。這本是數(shù)字圖像
    的頭像 發(fā)表于 05-31 15:47 ?293次閱讀

    CW32數(shù)字電壓電流表軟件進階教程-1.電壓電流同時顯示

    基于[CW32數(shù)字電壓電流表軟件教程-實驗:基本數(shù)據(jù)處理算法
    的頭像 發(fā)表于 05-31 15:50 ?476次閱讀
    <b class='flag-5'>CW32</b><b class='flag-5'>數(shù)字</b><b class='flag-5'>電壓電流表</b><b class='flag-5'>軟件</b>進階教程-1.<b class='flag-5'>電壓電流</b>同時顯示

    CW32數(shù)字電壓電流表軟件進階教程-2.電壓電流值做均值濾波

    在實驗運行7.1章節(jié)例程時 [CW32數(shù)字電壓電流表軟件進階教程-1.電壓電流同時顯示] ,會發(fā)現(xiàn)實時顯示更新的
    的頭像 發(fā)表于 05-31 15:57 ?381次閱讀

    CW32數(shù)字電壓電流表軟件進階教程-3.電壓電流標定

    標定是通過測量標準器的偏差來補償儀器系統(tǒng)誤差,從而改善儀器或系統(tǒng)準確度、精度的操作。為了提高電壓電流表在測量時的測量精度和準確度,需要對電壓電流進行標定校準。 常見的標定原理如下:假設一個采樣系統(tǒng)
    的頭像 發(fā)表于 05-31 16:20 ?516次閱讀
    <b class='flag-5'>CW32</b><b class='flag-5'>數(shù)字</b><b class='flag-5'>電壓電流表</b><b class='flag-5'>軟件</b>進階教程-3.<b class='flag-5'>電壓電流</b>標定

    基于CW32F003E4P7的數(shù)字電壓電流表產(chǎn)品方案

    產(chǎn)品實物: 一、產(chǎn)品概述 數(shù)字電壓電流表,又稱為數(shù)顯電流電壓表,是以數(shù)字形式顯示,能夠同時檢測電流電壓
    的頭像 發(fā)表于 06-25 11:55 ?766次閱讀
    基于<b class='flag-5'>CW</b>32F003E4P7的<b class='flag-5'>數(shù)字</b><b class='flag-5'>電壓電流表</b>產(chǎn)品方案