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

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

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

關(guān)于ADC數(shù)值標(biāo)定轉(zhuǎn)換為物理量數(shù)值的方法

GReq_mcu168 ? 來源:今日頭條 ? 作者:今日頭條 ? 2022-05-26 15:58 ? 次閱讀

當(dāng)處理器經(jīng)過模數(shù)轉(zhuǎn)換得到數(shù)值之后,需要經(jīng)過進(jìn)一步的轉(zhuǎn)換得到表征真實(shí)物理量的數(shù)值。

得到了物理量數(shù)值,就可以進(jìn)行顯示,故障判斷等操作。

我們需要找到從模數(shù)轉(zhuǎn)換數(shù)值到物理量之間的轉(zhuǎn)換關(guān)系;

比如,用14位的ADC對市電電壓進(jìn)行采樣,得到了某個數(shù)據(jù),該數(shù)據(jù)并不是電壓值,而需要經(jīng)過轉(zhuǎn)換關(guān)系得到電壓值。

如果傳感器信號處理電路的線性度都比較好,可以在整個測量范圍內(nèi)采用線性關(guān)系進(jìn)行轉(zhuǎn)換,如下:

a033c832-dcbb-11ec-ba43-dac502259ad0.png

a0423bba-dcbb-11ec-ba43-dac502259ad0.jpg

ADC與物理量的線性關(guān)系

x為ADC讀到的數(shù)值,y為物理量的數(shù)值,比如電壓值、電流值、溫度值、壓力值等等。

有兩個問題需要注意:

1) k,b的數(shù)值從何而來

2) 單片機(jī)如何轉(zhuǎn)換

一、k, b數(shù)值的確認(rèn)

我通常采用三種方法來確認(rèn)k、b數(shù)值:

1)正向推導(dǎo),根據(jù)傳感器、信號處理電路的線性關(guān)系推導(dǎo)得到:

以下圖的三相線電壓測量電路為例:

a04f3450-dcbb-11ec-ba43-dac502259ad0.png

三相線電壓測量電路

電壓互感器的參數(shù)為:

初次級的變比:1mA:1mA

初級限流電流為:400kΩ;

次級線圈電阻為:17Ω;

次級采樣電阻為:100Ω;

運(yùn)放組成的處理電路的參數(shù)為:

放大倍數(shù):47/(4.7+0.1//0.017)=9.969。

根據(jù)這些參數(shù),假設(shè)相電壓的真有效值為U,按照下面步驟推導(dǎo):

  • 初級電流為a056d57a-dcbb-11ec-ba43-dac502259ad0.png

  • 次極輸出電壓=次極電流*100//4700=

a05e8f22-dcbb-11ec-ba43-dac502259ad0.png

  • 運(yùn)放輸出電壓=次極輸出電壓*放大倍數(shù)

a06f2832-dcbb-11ec-ba43-dac502259ad0.png

  • 單片機(jī)讀到的14位ADC的數(shù)值=

a080d708-dcbb-11ec-ba43-dac502259ad0.png

  • ADC與線電壓的關(guān)系為:

a08d6734-dcbb-11ec-ba43-dac502259ad0.png

  • 進(jìn)一步得到:

a09e5120-dcbb-11ec-ba43-dac502259ad0.png

  • 為了減少量化誤差,提供精度,我們對換算得到的電壓保留一位小數(shù),當(dāng)用整數(shù)來表示需,需要擴(kuò)大10倍,得到:

a0b0fc1c-dcbb-11ec-ba43-dac502259ad0.png

從而得到了ADC與擴(kuò)大10倍的線電壓之間的線性轉(zhuǎn)換關(guān)系,其k=3.302264,b=0;

2)分段線性化以及最小二乘法確認(rèn)轉(zhuǎn)換關(guān)系

在另一篇文章中詳述。

二、 單片機(jī)如何轉(zhuǎn)換

當(dāng)我們得到ADC數(shù)值與物理量之間的線性轉(zhuǎn)換關(guān)系:

a033c832-dcbb-11ec-ba43-dac502259ad0.png

我們需要在程序中將物理量計算出來。

低端的單片機(jī)都沒有硬件浮點(diǎn)數(shù)計算能力,即使是32位的cortex-M0/cortex-M3內(nèi)核的處理器(如STM32F0xx以及STM32F1xx系統(tǒng)處理器)也沒有硬件浮點(diǎn)數(shù)計算能力。

當(dāng)我們通過浮點(diǎn)數(shù)進(jìn)行轉(zhuǎn)換運(yùn)算時,會消耗大量的時間。

我的做法是,將k轉(zhuǎn)變?yōu)檎砸粋€整數(shù)后再除以另一個整數(shù),

而對物理量保留小數(shù)點(diǎn),利用擴(kuò)大整10倍的整數(shù)進(jìn)行存儲時,b可以直接四舍五入為整數(shù);

即:

a0c4d7c8-dcbb-11ec-ba43-dac502259ad0.png

,其中,M、N、b都是整數(shù)。

在STM32F103的處理器上,我做了一些測算:

采用64MHz的時間頻率,

計算65535次的浮點(diǎn)數(shù)轉(zhuǎn)換的耗時為:164ms。

單次運(yùn)算耗時為:2.5us。

轉(zhuǎn)化為整數(shù)乘除運(yùn)算,計算65535次耗時為:20ms。

單次運(yùn)算耗時為:0.31us。

當(dāng)轉(zhuǎn)為整數(shù)運(yùn)算時,可能會擴(kuò)大舍入誤差。

我的做法是,根據(jù)整數(shù)M、N的位數(shù)取大數(shù),比如16位的數(shù)。

如果k小于1,則將N固定為65535。

M=round(k*65535)。

如果k大于等于1,則將M固定為65535。

N=round(65535/k)。

在上例中,k=3.302264,則M=65535,N=round(65535/3.302264)=19845。

const STRConfigCalDef g_pt_calvoldefs[PT_VOLTAGE_NUM] =
{
{65535, 19845, 0},
{65535, 19845, 0},
{65535, 19845, 0}
};
U16  pt_calval(U16 val, U16 pm, U16 pn, signed int pk,){
U32 uwDataA;
signed int uwDataB;
U16 resval;
uwDataA = (U32)val * pm;
if(pn == 0){
pn = 1;
}
uwDataA = (U32)val * pm;
uwDataA = (U32)uwDataA / pn;
uwDataB = (signed int)uwDataA;
uwDataB = uwDataB + pk;
if(uwDataB < 0){
uwDataB = 0;
}
  if(uwDataB > 65535){
uwDataB = 65535;
}
resval = (U16)uwDataB;
return(resval)
}

a0d21f46-dcbb-11ec-ba43-dac502259ad0.jpg

轉(zhuǎn)為整數(shù)運(yùn)算的轉(zhuǎn)換算法

審核編輯 :李倩


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

    關(guān)注

    2546

    文章

    50481

    瀏覽量

    751178
  • adc
    adc
    +關(guān)注

    關(guān)注

    98

    文章

    6402

    瀏覽量

    543846
  • 數(shù)值
    +關(guān)注

    關(guān)注

    0

    文章

    80

    瀏覽量

    14340

原文標(biāo)題:ADC數(shù)值標(biāo)定轉(zhuǎn)換為物理量數(shù)值的方法及注意事項(xiàng)

文章出處:【微信號:mcu168,微信公眾號:硬件攻城獅】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    labview字符串?dāng)?shù)組轉(zhuǎn)化為數(shù)值數(shù)組

    在LabVIEW中,將字符串?dāng)?shù)組轉(zhuǎn)換為數(shù)值數(shù)組是一項(xiàng)常見的任務(wù),尤其是在處理數(shù)據(jù)采集、信號處理或用戶輸入時。 1. 理解LabVIEW的數(shù)據(jù)類型 在開始之前,了解LabVIEW中的數(shù)據(jù)類型是非
    的頭像 發(fā)表于 09-04 17:47 ?1554次閱讀

    plc模擬和數(shù)字量之間的轉(zhuǎn)換方法

    物理量,如溫度、壓力、流量等;數(shù)字量是指離散的物理量,如開關(guān)狀態(tài)、計數(shù)器等。在實(shí)際應(yīng)用中,PLC需要對這兩種數(shù)據(jù)類型進(jìn)行轉(zhuǎn)換,以實(shí)現(xiàn)對各種設(shè)備的控制和監(jiān)控。本文將介紹PLC中模擬
    的頭像 發(fā)表于 08-30 10:51 ?1594次閱讀

    將模擬轉(zhuǎn)換為數(shù)字量,采用什么轉(zhuǎn)換

    (如溫度、壓力、聲音或圖像等隨時間連續(xù)變化的物理量)轉(zhuǎn)變?yōu)閿?shù)字信號(以二進(jìn)制數(shù)值表示的離散信號)。 模數(shù)轉(zhuǎn)換器的轉(zhuǎn)換過程一般包括四個主要步驟:采樣、保持、量化、編碼。前兩個步驟在采樣-
    的頭像 發(fā)表于 08-30 09:24 ?554次閱讀

    數(shù)字量與模擬的關(guān)系如何算

    物理量,如電壓、電流、溫度等。它們可以取任意值,并在整個范圍內(nèi)連續(xù)變化。 數(shù)字量 :數(shù)字量是離散的、不連續(xù)變化的,通常表示為二進(jìn)制代碼(0和1的組合)。數(shù)字量在時間上和數(shù)值上都是斷續(xù)變化的,反映了信息的量化表示。 二、轉(zhuǎn)
    的頭像 發(fā)表于 08-30 09:16 ?459次閱讀

    電感傳感器能夠測量哪些物理量?

    電感傳感器是一種利用電感效應(yīng)來檢測物理量的裝置,它將被測量轉(zhuǎn)換為線圈的自感或互感的變化來測量。電感傳感器能夠測量的物理量相當(dāng)廣泛,主要包括但不限于以下幾個方面: 位移 :電感傳感器可以直接測量線位移
    的頭像 發(fā)表于 08-29 11:08 ?611次閱讀

    PLC對模擬信號的處理過程及方法 詳解版

    )。 PLC通過計算轉(zhuǎn)換,將這些模擬信號轉(zhuǎn)換為內(nèi)部的數(shù)值信號。從而實(shí)現(xiàn)系統(tǒng)的監(jiān)控及控制。從現(xiàn)場的物理信號到PLC內(nèi)部處理的
    的頭像 發(fā)表于 07-30 16:31 ?322次閱讀
    PLC對模擬<b class='flag-5'>量</b>信號的處理過程及<b class='flag-5'>方法</b> 詳解版

    傳感器可測量的不包括什么

    傳感器是一種能夠?qū)?b class='flag-5'>物理量、化學(xué)或生物轉(zhuǎn)換為可測量的電信號的裝置。它們廣泛應(yīng)用于工業(yè)、醫(yī)療、環(huán)境監(jiān)測、交通、農(nóng)業(yè)等領(lǐng)域。然而,并非所有的
    的頭像 發(fā)表于 07-25 09:46 ?462次閱讀

    數(shù)值比較器的級聯(lián)端有什么作用

    數(shù)值比較器是一種數(shù)字電路,用于比較兩個數(shù)字信號的大小。在數(shù)字電路設(shè)計中,數(shù)值比較器被廣泛應(yīng)用于各種場景,如算術(shù)運(yùn)算、數(shù)據(jù)排序、信號處理等。級聯(lián)端是數(shù)值比較器的一個重要組成部分,它允許多個數(shù)值
    的頭像 發(fā)表于 07-10 10:37 ?785次閱讀

    請問如何通過UART從ADC傳輸數(shù)值?

    你好! 我有一個從 7 個通道讀取數(shù)值ADC_MEASUREMENT 應(yīng)用程序。 我只想通過 UART 將數(shù)值傳送到 Arduino。 模數(shù)轉(zhuǎn)換器的
    發(fā)表于 06-04 12:31

    STM8 ADC1讀出了16192數(shù)值是哪里的問題?

    剛接觸學(xué)習(xí)STM8 ADC 使用ADC1,AIN4通道 stm8s的VCC 為5V,ADC測量NTC電阻電壓時讀數(shù)15600左右,直接將AIN4接入VCC,讀出來16192左右的數(shù)值。
    發(fā)表于 04-17 07:59

    單模光纖數(shù)值孔徑一般是多少

    單模光纖是一種用于光通信和光傳感的關(guān)鍵元件,具有優(yōu)異的傳輸性能和高帶寬。其中,數(shù)值孔徑是單模光纖重要的參數(shù)之一。本文將詳細(xì)介紹單模光纖的數(shù)值孔徑,包括定義、計算方法、影響因素等內(nèi)容,以及單模光纖
    的頭像 發(fā)表于 04-09 17:13 ?2041次閱讀

    什么是光纖的數(shù)值孔徑,其物理意義是什么

    光纖的數(shù)值孔徑是指光纖傳輸中心芯的直徑與光纖外層材料的折射指數(shù)之間的參數(shù)差異。它是光纖傳輸?shù)囊粋€重要指標(biāo),對于確定光纖傳輸性能、光信號傳輸質(zhì)量等具有重要作用。 為了更好地理解光纖的數(shù)值孔徑,我們需要
    的頭像 發(fā)表于 01-22 10:55 ?3739次閱讀

    怎么將vlookup的結(jié)果變成數(shù)值

    將VLOOKUP的結(jié)果轉(zhuǎn)換為數(shù)值可以通過以下幾種方式實(shí)現(xiàn)。 方法一:使用VALUE函數(shù) VALUE函數(shù)可以將文本字符串轉(zhuǎn)換為數(shù)值。VLOOK
    的頭像 發(fā)表于 12-01 10:08 ?2.4w次閱讀

    為什么測量的動態(tài)電阻數(shù)值偏大了?

    為什么測量的動態(tài)電阻數(shù)值偏大了?
    的頭像 發(fā)表于 11-30 17:15 ?626次閱讀
    為什么測量的動態(tài)電阻<b class='flag-5'>數(shù)值</b>偏大了?

    為什么電容值的數(shù)值是有規(guī)律的

    為什么電容值的數(shù)值是有規(guī)律的
    的頭像 發(fā)表于 11-30 16:08 ?536次閱讀
    為什么電容值的<b class='flag-5'>數(shù)值</b>是有規(guī)律的