我們?cè)谑褂肁DC采集外部電壓時(shí),一般默認(rèn)參考電壓為MCU的供電電壓,例如單片機(jī)供電電壓為3.3V時(shí),我們計(jì)算采集電壓的公式為:
假設(shè)12位ADC
采集電壓=(AD值/4096)*3.3;
但是如果因?yàn)槟承┰驅(qū)е碌墓╇姴环€(wěn)定,而我們?nèi)稳话凑?.3V計(jì)算,ADC采集計(jì)算出來的電壓就會(huì)出現(xiàn)誤差。
在STM32手冊(cè)中關(guān)于ADC的介紹中提到使用內(nèi)部參考電壓計(jì)算實(shí)際的VDDA電壓。
使用內(nèi)部參考電壓計(jì)算實(shí)際的 VDDA 電壓:
施加給微控制器的 VDDA 電源電壓可能會(huì)有變化,或無法獲得準(zhǔn)確值。在制造過程中由 ADC
在 VDDA = 3.3 V 的條件下獲得的內(nèi)置內(nèi)部參考電壓 (VREFINT) 及其校準(zhǔn)數(shù)據(jù)可用于評(píng)估實(shí)際
的 VDDA 電壓。
以下公式可求得為器件供電的實(shí)際 VDDA 電壓:
VDDA = 3 V x VREFINT_CAL / VREFINT_DATA
其中:
? VREFINT_CAL 是 VREFINT 校準(zhǔn)值
? VREFINT_DATA 是由 ADC 轉(zhuǎn)換得到的實(shí)際 VREFINT 輸出值
將電源相關(guān)的 ADC 測(cè)量值轉(zhuǎn)換為絕對(duì)電壓值:
如何使用內(nèi)部參考電壓
使用STM32CubeMX配置ADC是除了選取自己的需要的ADC通道,還要勾選Vrefint channel,這個(gè)通道也可以看做是一路ADC采集,用于后邊的計(jì)算。
RANK分配,采用DMA模式時(shí),定義數(shù)組時(shí)直接對(duì)應(yīng)到數(shù)組。
使能DMA。
STM32手冊(cè)中提到:VREFINT 的精確電壓由 ST 在生產(chǎn)測(cè)試期間對(duì)每部件單獨(dú)測(cè)量,儲(chǔ)存于系統(tǒng)存儲(chǔ)區(qū)。這個(gè)值是固定的,計(jì)算前我們需要將它讀出來。文章來源:http://www.zghlxwxcb.cn/news/detail-610534.html
u16 ADC_Buffer[3];//定義u16數(shù)組 0.通道4 1.通道7 2.參考電壓Vref
u16 VREFT_CAL = 0;//內(nèi)部基準(zhǔn)
VREFT_CAL = *(uint16_t*)(VREFINT_CAL_ADDR);//讀取內(nèi)部基準(zhǔn)
HAL_ADC_Start_DMA(&hadc1,(uint32_t*)ADC_Buffer,3);//開啟 ADC---DMA
V= (3*VREFT_CAL*ADC_Buffer[0])/(ADC_Buffer[2]*4096); //校準(zhǔn)后的通道4采集電壓
以上就是STM32使用內(nèi)部參考電壓提高ADC采集準(zhǔn)確度的方法,不過計(jì)算電壓值,我還是喜歡自己再去實(shí)際校準(zhǔn)得到一個(gè)系數(shù)。文章來源地址http://www.zghlxwxcb.cn/news/detail-610534.html
到了這里,關(guān)于STM32使用內(nèi)部參考電壓提高ADC采集準(zhǔn)確度的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!