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

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

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

基于CW32的儀表精度測量實(shí)現(xiàn)(三):標(biāo)定與校準(zhǔn)

CW32生態(tài)社區(qū) ? 來源:CW32生態(tài)社區(qū) ? 作者:CW32生態(tài)社區(qū) ? 2024-09-02 10:07 ? 次閱讀

標(biāo)定的概念

標(biāo)定是一種校準(zhǔn)過程,它通過與已知的標(biāo)準(zhǔn)或參考值進(jìn)行比較來確保測量設(shè)備、儀器或系統(tǒng)的準(zhǔn)確性和可靠性。這個(gè)過程涉及調(diào)整設(shè)備,以消除系統(tǒng)誤差和提高測量結(jié)果與真實(shí)值的一致性,從而確保數(shù)據(jù)的精確度和可重復(fù)性。

1.為什么去標(biāo)定

我們使用單片機(jī)ADC讀取的電壓電流值由于制造公差、溫度變化、時(shí)間老化、電源波動等因素引起的初始誤差和漂移,我們需要對電壓電流進(jìn)行標(biāo)定校準(zhǔn),使得我們得到的電壓電流值是正確的。

2.標(biāo)定的方法

標(biāo)定的方法多種多樣,我們需要根據(jù)自己的需求來選擇相應(yīng)的方法,常見的標(biāo)定方法如下所示:

(1)直接比較法:

將待標(biāo)定的測量設(shè)備與一個(gè)已知準(zhǔn)確度的標(biāo)準(zhǔn)設(shè)備進(jìn)行比較,直接讀取并記錄差異。

(2)多點(diǎn)標(biāo)定法:在多個(gè)已知的標(biāo)準(zhǔn)點(diǎn)上進(jìn)行測量,收集數(shù)據(jù)點(diǎn),然后通過數(shù)學(xué)模型(如多項(xiàng)式擬合)來確定設(shè)備輸出與標(biāo)準(zhǔn)值之間的關(guān)系。(3)線性回歸法:使用最小二乘法等統(tǒng)計(jì)技術(shù),通過擬合最佳擬合線來確定設(shè)備輸出與標(biāo)準(zhǔn)輸入值之間的線性關(guān)系。(4)分段線性標(biāo)定:當(dāng)測量設(shè)備的響應(yīng)在不同輸入范圍內(nèi)呈現(xiàn)不同的線性度時(shí),可以采用分段線性標(biāo)定,即在不同的輸入范圍內(nèi)使用不同的線性模型。

(5)非線性標(biāo)定:

對于非線性設(shè)備,使用非線性函數(shù)(如指數(shù)、對數(shù)或S形曲線)來描述輸入與輸出之間的關(guān)系。

標(biāo)定的實(shí)現(xiàn)

1.CW32開發(fā)板的實(shí)物圖和原理圖

wKgZombRpWeAaSMEAABpnBq-Jys92.webp

wKgaombRpWiAUdKPAACQegNOZ1A90.webp

2.軟件代碼講解

(1)濾波算法在做電壓值的校準(zhǔn)之前,我們根據(jù)傳感器采集到的是連續(xù)性的時(shí)間序列信號,所以我們可以采用了均值濾波對單片機(jī)采集到的AD值進(jìn)行濾波處理。在程序中我首先初始化總和、最大值和最小值變量,然后在一個(gè)循環(huán)中累加數(shù)組 value 中所有元素的值,并同時(shí)更新最大值和最小值。循環(huán)結(jié)束后,從總和中減去最大值和最小值,以排除可能的異常數(shù)據(jù)點(diǎn),最后將調(diào)整后的總和除以數(shù)組元素?cái)?shù)減去2,得到并返回一個(gè)濾除極端值后的均值。這種方法有助于減少數(shù)據(jù)中的噪聲,特別是當(dāng)數(shù)據(jù)集中包含異常高值或低值時(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初值取最大是為了將第一個(gè)數(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; }

(2)分段線性標(biāo)定

在代碼中定義了電壓校準(zhǔn)的相關(guān)變量X06和X12,分別代表著6V對應(yīng)的AD代碼值和12V對應(yīng)的AD代碼值。其中還定義了縱坐標(biāo)的變量Y06和Y12,這個(gè)對應(yīng)著電壓值6V和12V。最后定義了坐標(biāo)軸的斜率K,如下所示:

//5V與15V 校準(zhǔn) unsigned int X06=0; unsigned int X12=0; unsigned int Y06=6; unsigned int Y12=12; float K; //斜率

在標(biāo)定校準(zhǔn)之前,我們需要計(jì)算斜率,根據(jù)兩點(diǎn)確定一條直線算出該區(qū)間內(nèi)的斜率K,如下圖所示:

void Count_K(void) { K = (Y12 - Y06); K = K/(X12 - X06); }

我們還需要存儲校準(zhǔn)值,我們在一個(gè)數(shù)組中存了三個(gè)數(shù)據(jù),第一個(gè)數(shù)據(jù)是判斷位(0xaa),判斷當(dāng)前是否存儲過校準(zhǔn)值。其中兩個(gè)是6V對應(yīng)的AD代碼值和12V對應(yīng)的AD代碼值。存儲之前需要擦除然后才能寫入數(shù)據(jù)。代碼如下所示:

void flash_calibration(void) { uint16_t dat[5]; dat[0]=0xaa; dat[1]=X06; dat[2]=X12; flash_erase(); flash_write(0,dat,5); }

我們除了寫入校準(zhǔn)值還要讀取校準(zhǔn)值,先讀取校準(zhǔn)值,判斷第一個(gè)數(shù)據(jù)是否為0xaa,如果不是0xaa,代表沒校準(zhǔn)過,需要賦一個(gè)初始化進(jìn)行存儲。例如

X06 = 6.0/23/1.5*4096;如果第一個(gè)值是0xaa,那就可以把存儲過的值賦給我們的變量就可以了,代碼如下所示。

void judge_calibration(void) { uint16_t dat[5]; flash_read(0,dat, 5); if(dat[0]!=0xaa) { X06 = 6.0/23/1.5*4096; X12 = 12.0/23/1.5*4096; flash_calibration(); } else { X06=dat[1]; X12=dat[2]; } }

我們可以通過按鍵對每一個(gè)區(qū)間的信號進(jìn)行校準(zhǔn),比如說我們這次校準(zhǔn)的是6~12V區(qū)間內(nèi)的信號,初始化時(shí)可以通過按下一次按鍵對6V時(shí)候的數(shù)據(jù)校準(zhǔn),再按一次按鍵就可以對12V時(shí)候的數(shù)據(jù)校準(zhǔn),代碼如下所示:

void button_select_calibration(void) { if(GPIO_ReadPin(CW_GPIOB,GPIO_PIN_12) == GPIO_Pin_RESET)//按鍵按下 { mode++; if(mode >2) mode =0; while(GPIO_ReadPin(CW_GPIOB,GPIO_PIN_12) == GPIO_Pin_RESET); } if(mode == 0) { DisPlay_dianya(V_Buffer); } else if(mode == 1) { X06=Mean_Value_Filter(Volt_Buffer,ADC_SAMPLE_SIZE); flash_calibration(); Count_K(); Volt_Cal(); DisPlay_dianya(V_Buffer); } else if(mode == 2) { X12=Mean_Value_Filter(Volt_Buffer,ADC_SAMPLE_SIZE); flash_calibration(); Count_K(); Volt_Cal(); DisPlay_dianya(V_Buffer); } }

3.分段線性標(biāo)定分析和處理

在這個(gè)程序中,我們的思想是同時(shí)兩路AD采集,一個(gè)是測量電壓的,一個(gè)是測量電流的,同時(shí)讀取AD數(shù)據(jù),進(jìn)而能對二者一起校準(zhǔn)。代碼如下所示:

void Get_ADC_Value(void) { static uint8_t cnt; ADC_GetSqr0Result(&Volt_Buffer[cnt]); ADC_GetSqr3Result(&Curr_Buffer[cnt]); cnt++; if(cnt >= ADC_SAMPLE_SIZE) { cnt = 0; } }

我們在電壓電流表上測量了大量的數(shù)據(jù),如下圖所示:

wKgZombRpWiAWf-8AABvboEyiB421.webp

在上面圖中可以看出實(shí)際的電壓值和測量的電壓值存在一定的偏差,我們將它們的偏差值做成一個(gè)折線圖給大家看看,如下圖所示。

wKgaombRpWiAfqYBAAAf1kr476M66.webp

常見標(biāo)定的原理是:使用AD值作為X軸,電壓(電流)值作為Y軸;在電壓(電流)為0的時(shí)候標(biāo)定為Xmin,在電壓(電流)為最大量程的時(shí)候標(biāo)定為Xmax,根據(jù)數(shù)學(xué)公式兩點(diǎn)確定一條直線,可以得到這條直線的斜率K。根據(jù)Y=kx公式我們可以通過輸出每一個(gè)AD值得到對應(yīng)的電壓(電流)值。

wKgZombRpWmALqB1AAAUUga_egI43.webp

常見的標(biāo)定是在只有最小值和最大值之間做了標(biāo)定,如果這兩個(gè)值的范圍很大,使用中間的AD值也會出現(xiàn)誤差,所以我們就需要多做幾組標(biāo)定,使得數(shù)據(jù)更加準(zhǔn)確,這樣就形成了分段線性標(biāo)定。效果圖如下所示。

wKgaombRpWmAWHArAAASTNoL9KU43.webp

如果我們求X3到X2之間的電壓值,可以根據(jù)公式:Y=k×(Xad-X2)+5得到準(zhǔn)確的電壓值,在這條折線上標(biāo)的點(diǎn)越多,測量得到的電壓值就越準(zhǔn)確。

4.標(biāo)定的結(jié)果

標(biāo)定之前的實(shí)驗(yàn)數(shù)據(jù)顯示,誤差在0.08V左右,數(shù)據(jù)如下所示:

wKgZombRpWiAWf-8AABvboEyiB421.webp

誤差的折線圖如下所示:

wKgZombRpWqABpTmAAAlwsAN6x428.webp

實(shí)物的測量圖顯示誤差在0.08左右,結(jié)果如下所示:

wKgaombRpWqAGX3zAABpQrAkGv819.webp

在6V標(biāo)定之后實(shí)驗(yàn)數(shù)據(jù)顯示誤差在0.01V左右,數(shù)據(jù)如下所示:

wKgZombRpWqAQ8LMAABY5pnoZwo77.webp

標(biāo)定校準(zhǔn)后的誤差的折線圖如下所示,可以看出6V標(biāo)定后的誤差范圍在0V到0.03V之間的,所以證明了多處標(biāo)定,得到的測量值就越精確。

wKgaombRpWuAQBLZAAA4zBrY1Y483.webp

經(jīng)過標(biāo)定校準(zhǔn)后的電壓顯示沒有誤差,結(jié)果如下所示:

wKgZombRpWuABqhBAABkziS0Y7094.webp



審核編輯 黃宇

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

    關(guān)注

    0

    文章

    8

    瀏覽量

    8257
  • CW32
    +關(guān)注

    關(guān)注

    1

    文章

    174

    瀏覽量

    551
收藏 人收藏

    評論

    相關(guān)推薦

    武漢芯源半導(dǎo)體CW32芯片重慶地區(qū)線下技術(shù)交流會成功舉辦

    2024年10月19日,武漢芯源半導(dǎo)體授權(quán)CW32生態(tài)社區(qū)主辦的“CW32芯片-重慶地區(qū)技術(shù)交流會”在重慶市科技工作者眾創(chuàng)之家成功舉辦。此次交流會匯聚重慶地區(qū)的嵌入式開發(fā)工程師和電子信息類企業(yè)代表,共同探討CW32芯片在儀器
    的頭像 發(fā)表于 10-24 10:55 ?331次閱讀

    基于CW32儀表精度測量實(shí)現(xiàn)(一):相關(guān)濾波原理

    一、濾波的概念 濾波是指通過某種方法將信號中的某些頻率成分增強(qiáng)或抑制,達(dá)到去除噪聲、改善信號質(zhì)量、分離信號等目的的過程。濾波器是實(shí)現(xiàn)濾波功能的關(guān)鍵組件,它可以改變信號的頻譜特性,對不同頻率區(qū)域的信號
    的頭像 發(fā)表于 08-30 18:53 ?188次閱讀
    基于<b class='flag-5'>CW32</b>的<b class='flag-5'>儀表</b><b class='flag-5'>精度</b><b class='flag-5'>測量</b><b class='flag-5'>實(shí)現(xiàn)</b>(一):相關(guān)濾波原理

    【項(xiàng)目展示】基于CW32的遙控循跡小車

    CW32循跡小車.zip_免費(fèi)高速下載|百度網(wǎng)盤-分享無限制? 一、概述 CW32循跡、遙控小車具有循跡和遙控兩種功能,小車的硬件模塊由CW32F030C8T6小藍(lán)板、智能小車控制底板、BT04-E
    的頭像 發(fā)表于 05-31 17:33 ?1193次閱讀
    【項(xiàng)目展示】基于<b class='flag-5'>CW32</b>的遙控循跡小車

    基于CW32的有刷直流電機(jī)控制實(shí)驗(yàn):直流電機(jī)閉環(huán)位置和速度控制實(shí)驗(yàn)

    DAP-Link插入電腦后未識別到芯片,則將中間兩根線的接線對換。 程序下載 將 DAP-Link 與電腦相連后檢查是否識別到CW32: 如圖就是已經(jīng)識別到CW32,可以開始下載程序。 閉環(huán)速度位置說明 程序
    的頭像 發(fā)表于 05-31 17:01 ?537次閱讀
    基于<b class='flag-5'>CW32</b>的有刷直流電機(jī)控制實(shí)驗(yàn)<b class='flag-5'>三</b>:直流電機(jī)閉環(huán)位置和速度控制實(shí)驗(yàn)

    CW32數(shù)字電壓電流表軟件進(jìn)階教程-3.電壓電流標(biāo)定

    標(biāo)定是通過測量標(biāo)準(zhǔn)器的偏差來補(bǔ)償儀器系統(tǒng)誤差,從而改善儀器或系統(tǒng)準(zhǔn)確度、精度的操作。為了提高電壓電流表在測量時(shí)的測量
    的頭像 發(fā)表于 05-31 16:20 ?610次閱讀
    <b class='flag-5'>CW32</b>數(shù)字電壓電流表軟件進(jìn)階教程-3.電壓電流<b class='flag-5'>標(biāo)定</b>

    坐標(biāo)測量機(jī)的精度如何保證?

    坐標(biāo)測量機(jī)(CoordinateMeasuringMachine,CMM)的精度保證涉及多個(gè)方面,包括機(jī)械設(shè)計(jì)、環(huán)境控制、校準(zhǔn)、操作技巧、維護(hù)保養(yǎng)等:1、機(jī)械系統(tǒng)設(shè)計(jì):
    的頭像 發(fā)表于 05-22 10:21 ?867次閱讀
    <b class='flag-5'>三</b>坐標(biāo)<b class='flag-5'>測量</b>機(jī)的<b class='flag-5'>精度</b>如何保證?

    CW32量產(chǎn)燒錄工具

    本節(jié)主要介紹CW32微控制器的燒錄器CW-Writer,以及與之配合的軟件CW-Programmer的使用方法。燒錄器CW-Writer通過ISP協(xié)議,可
    的頭像 發(fā)表于 04-25 15:22 ?1279次閱讀
    <b class='flag-5'>CW32</b>量產(chǎn)燒錄工具

    CW32快速開發(fā)入門

    CW32快速開發(fā)入門
    的頭像 發(fā)表于 04-24 18:56 ?1841次閱讀
    <b class='flag-5'>CW32</b>快速開發(fā)入門

    如何實(shí)現(xiàn)更高精度的同步測量?如何做好同步數(shù)據(jù)采集的時(shí)間校準(zhǔn)?

    如何實(shí)現(xiàn)更高精度的同步測量?如何做好同步數(shù)據(jù)采集的時(shí)間校準(zhǔn)? 實(shí)現(xiàn)更高精度的同步
    的頭像 發(fā)表于 01-16 15:10 ?1253次閱讀

    基于CW32的門禁綜合系統(tǒng)

    基于CW32單片機(jī)的門禁綜合系統(tǒng)是一款功能強(qiáng)大的智能門禁解決方案,它提供了種開鎖方式:密碼開鎖、指紋開鎖和刷卡開鎖,為用戶提供方便、安全的門禁控制。該系統(tǒng)的核心控制器采用了CW32單片機(jī),具備
    的頭像 發(fā)表于 12-28 11:43 ?1646次閱讀
    基于<b class='flag-5'>CW32</b>的門禁綜合系統(tǒng)

    CW32單片機(jī)在智能馬桶的應(yīng)用介紹

    和調(diào)節(jié)。本文將介紹CW32單片機(jī)在智能馬桶的詳細(xì)應(yīng)用。圖:CW32的智能馬桶控制板CW32單片機(jī)在智能馬桶的應(yīng)用介紹1.溫度感應(yīng)與控制智能馬桶內(nèi)設(shè)有溫度傳感器,通
    的頭像 發(fā)表于 12-20 10:09 ?565次閱讀
    <b class='flag-5'>CW32</b>單片機(jī)在智能馬桶的應(yīng)用介紹

    CW32單片機(jī)在智能馬桶的應(yīng)用介紹

    ,CW32單片機(jī)可以實(shí)時(shí)監(jiān)測電池的電量,并根據(jù)電量情況進(jìn)行智能的調(diào)節(jié)。當(dāng)電量不足時(shí),單片機(jī)會通過控制模塊對電源進(jìn)行調(diào)節(jié),以延長電池的使用壽命。例如,降低加熱功率或減少沖洗時(shí)間等,通過智能的電量管理,實(shí)現(xiàn)
    發(fā)表于 12-20 10:06

    CW32單片機(jī)在智能馬桶的應(yīng)用介紹

    智能科技的迅速發(fā)展使得我們的日常生活變得更加便捷和舒適。智能馬桶作為其中一種智能家居產(chǎn)品,通過單片機(jī)接受和處理來自傳感器的數(shù)據(jù),然后通過控制模塊對智能馬桶的各項(xiàng)功能進(jìn)行控制,實(shí)現(xiàn)對智能馬桶的全面控制和調(diào)節(jié)。本文將介紹CW32單片機(jī)在智能馬桶的詳細(xì)應(yīng)用。
    的頭像 發(fā)表于 12-20 10:02 ?706次閱讀
    <b class='flag-5'>CW32</b>單片機(jī)在智能馬桶的應(yīng)用介紹

    基于CW32的遙控循跡小車

    本實(shí)驗(yàn)是使用CW32單片機(jī)制作一個(gè)入門的遙控循跡小車。遙控采用藍(lán)牙配合手機(jī)APP進(jìn)行遙控。循跡使用一個(gè)5路的循跡模塊。使用OLED模塊進(jìn)行顯示當(dāng)前小車狀態(tài)。
    的頭像 發(fā)表于 11-17 17:46 ?970次閱讀
    基于<b class='flag-5'>CW32</b>的遙控循跡小車

    基于CW32的公交站人流檢測系統(tǒng)

    CW32單片機(jī)為核心,采用公交站人流檢測中常見的紅外線檢測技術(shù),設(shè)計(jì)了一個(gè)公交站人流檢測系統(tǒng),該系統(tǒng)可以連接到網(wǎng)絡(luò)獲取當(dāng)前時(shí)間,并將人流數(shù)據(jù)實(shí)時(shí)上傳到OneNET云平臺進(jìn)行遠(yuǎn)程監(jiān)控。
    的頭像 發(fā)表于 11-17 17:24 ?884次閱讀
    基于<b class='flag-5'>CW32</b>的公交站人流檢測系統(tǒng)