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

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

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

實例講解單片機模擬量采集: 從硬件到程序, 從濾波到實際值轉(zhuǎn)換

廣東微電科技有限公司 ? 2021-11-25 14:54 ? 次閱讀

?

單片機系統(tǒng)里對模擬量的處理要比數(shù)字量稍顯復(fù)雜,但是只要掌握了使用技巧,使用起來也很簡單,很多朋友一開始比較糾結(jié)于單片機的底層語言,非要先弄個明白才罷休,其實大可不必,重要的是我們要先學(xué)會怎么應(yīng)用。

現(xiàn)以鉛酸電池電壓檢測及充電電流檢測為例講解模擬量的硬件和程序的設(shè)計。

如圖1為28節(jié)鉛酸電池的電壓檢測電路,1--14節(jié)組成電池組1,15--28節(jié)組成電池組2;第1節(jié)正極為BAT+,14與15節(jié)之間為BATM,第28節(jié)負(fù)極為BAT-。輸入端的8個二極管的作用是鉗位作用;電路計算如圖所示。

?

poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

如圖2為鉛酸電池的充電電流檢測電路,TA1為工頻電流互感器,輸入的4個二極管為整流二極管,電流流過R37(510Ω)形成壓差△V。電路計算如圖所示。

?

poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

如圖3為單片機STM32F103CBT6,圖1和圖2的模擬信號輸入至單片機的PA5、PA6、PA7。

?

poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

由于代碼較多,為便于瀏覽,我就把其中一部分以截圖的形式展示,敬請諒解。

如圖4為單片機adc.c文件的底層配置,把PA5、PA6、PA7端口配置成模擬輸入模式。

poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

?

如圖5對以上三個模擬量進(jìn)行模數(shù)轉(zhuǎn)換并緩存入數(shù)組ADC_ConvertedValue[3],得到的AD值的范圍是0~4096。

?

poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

如圖6把以上兩個配置函數(shù)整合在一起,定義成模擬量的初始化函數(shù)void ADC1_Init(void)。

poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

?

如圖7在adc.h文件里聲明函數(shù)void ADC1_Init(void),另外幾個函數(shù)也在adc的c文件里定義的,后面附上源程序(非截圖)。

poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

?

如圖8在main()主函數(shù)里調(diào)用ADC1_Init()初始化函數(shù)(要去掉void),初始化函數(shù)一定要放在while(1)的前面,表示在進(jìn)入while(1)無限循環(huán)前只執(zhí)行一次。Analog_Processing()為模擬量處理函數(shù),要放在while(1)無限循環(huán)里面(該函數(shù)在下面講)。

poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

?

以下為模擬量在main.c文件里的定義。

poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

?

下面三個函數(shù)的定義都在adc.c文件里面定義的。

以下代碼為模擬量處理函數(shù):①對數(shù)組ADC_ConvertedValue[3]緩存值進(jìn)行濾波處理;②對濾波后的AD值轉(zhuǎn)換為實際值。

poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

?

以下代碼為濾波函數(shù),濾波函數(shù)有很多,采用合適的才是最實用的(該函數(shù)濾波后的值是連續(xù)變化的,有些濾波函數(shù)濾波后的值是跳變的)。

poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

?

使用方法如下:NewData表示最新采用的模擬量;OldData表示濾波后的模擬量。

poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

?

為便于邏輯計算、控制及顯示,以下代碼是把AD值轉(zhuǎn)換為實際值,

poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

?

使用方法如下:Adc_Value表示要轉(zhuǎn)換的模擬量;Pre_Adc_Min表示模擬量AD值的最小值;Pre_Adc_Max表示模擬量AD值的最大值;Pre_Act_Min表示轉(zhuǎn)換后實際值的最小值;Pre_Act_Max表示轉(zhuǎn)換后實際值的最大值;(以下最大實際值220表示22.0A,是因為數(shù)碼管顯示需要小數(shù)表示)。

poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

?

要點總結(jié):

1)模擬量的采樣電路,我多采用運放的差分放大電路,原因是被測電壓可以和運放不用共地,且可有效抑制共模噪聲,可達(dá)到較高的精確線性測量,比如以上電池組的被測電壓的誤差與實際相差在0.3V左右;

2)電池組輸入至運放的8個1M的電阻是兩個為一組的,且功率至少1/4W以上,因為在高壓下的電阻容易老化,為保險起見,通常一個電阻的最大壓差在100V以下為宜;

3)電池組分為兩組檢測,一是為了降低元件所承受的電壓,二是為了監(jiān)視兩組電池電壓之間是否平衡,達(dá)到保護(hù)電池目的。

4)函數(shù)應(yīng)功能模塊化,且具備通用性質(zhì),便于移植和調(diào)用,對于很多朋友應(yīng)先學(xué)會如何使用,底層代碼只要會配置就完全足夠了。

當(dāng)然,以上提供的設(shè)計是通常的做法,能滿足大多數(shù)的常規(guī)應(yīng)用。

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

    關(guān)注

    1

    文章

    123

    瀏覽量

    23280
  • 傾角傳感器
    +關(guān)注

    關(guān)注

    3

    文章

    275

    瀏覽量

    25143
  • 姿態(tài)解算
    +關(guān)注

    關(guān)注

    0

    文章

    49

    瀏覽量

    8235
收藏 人收藏

    評論

    相關(guān)推薦

    plc模擬量的計算與優(yōu)勢

    模擬量是指那些連續(xù)變化的物理,它們可以在一定范圍內(nèi)取任意。這些物理包括但不限于電壓、電流、壓力、溫度、速度和流量等。在PLC系統(tǒng)中,模擬量
    的頭像 發(fā)表于 09-16 10:16 ?326次閱讀

    開關(guān)轉(zhuǎn)模擬量如何編程

    將開關(guān)(也稱為數(shù)字量或離散,通常是0或1的狀態(tài))轉(zhuǎn)換模擬量(連續(xù)變化的電壓、電流或其他物理)的過程,在編程中通常不直接進(jìn)行
    的頭像 發(fā)表于 08-30 14:13 ?330次閱讀

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

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

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

    數(shù)字量與模擬量之間的關(guān)系主要體現(xiàn)在它們之間的轉(zhuǎn)換上,這種轉(zhuǎn)換通常通過模數(shù)轉(zhuǎn)換器(ADC)和數(shù)模轉(zhuǎn)換器(DAC)來實現(xiàn)。以下是對兩者關(guān)系的介紹
    的頭像 發(fā)表于 08-30 09:16 ?451次閱讀

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

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

    420ma模擬量信號怎么測?及原理介紹

    模擬量信號的測量方法、原理、特點以及注意事項。 ? ? ??一、420mA模擬量信號的基本概念 ? ? ??1.1 420mA信號的定義 ? ? ??4
    的頭像 發(fā)表于 06-23 08:38 ?4228次閱讀
    4<b class='flag-5'>到</b>20ma<b class='flag-5'>模擬量</b>信號怎么測?及原理介紹

    420ma模擬量信號怎么測

    的測量方法、原理、特點以及注意事項。 一、420mA模擬量信號的基本概念 1.1 420mA信號的定義 420mA模擬量信號是一種電流
    的頭像 發(fā)表于 06-20 11:37 ?1501次閱讀

    模擬量光端機/模擬量光纖轉(zhuǎn)換器的功能特性、選擇時需要考慮哪些因素?

    模擬量光端機是一種通過光纖遠(yuǎn)距離傳輸4~20mA電流模擬量信號的設(shè)備,它通過光纖將4~20mA電流模擬量信號進(jìn)行電-光轉(zhuǎn)換和光-電轉(zhuǎn)換,從而
    的頭像 發(fā)表于 05-27 14:53 ?420次閱讀
    <b class='flag-5'>模擬量</b>光端機/<b class='flag-5'>模擬量</b>光纖<b class='flag-5'>轉(zhuǎn)換</b>器的功能特性、選擇時需要考慮哪些因素?

    模擬量PLC有哪些具體種類呢?

    模擬量PLC主要處理連續(xù)的模擬量信號,與主要處理開關(guān)信號的PLC形成對比。模擬量PLC的種類可以多個維度進(jìn)行劃分
    的頭像 發(fā)表于 04-08 10:05 ?548次閱讀

    UART和PWM輸出模擬量的差異性對比

    昨天,有人在“串口音樂” VLOG 后面留言,提出了一個很好的問題。那就是利用單片機的串口輸出信號低通濾波得到的模擬量,與使用傳統(tǒng)的PWM輸出信號低通濾波得到的
    的頭像 發(fā)表于 03-04 17:14 ?1101次閱讀
    UART和PWM輸出<b class='flag-5'>模擬量</b>的差異性對比

    三菱模擬量模塊的種類 三菱模擬量模塊的輸出調(diào)整

    三菱模擬量模塊是工業(yè)自動化領(lǐng)域常用的設(shè)備,用于將數(shù)字信號轉(zhuǎn)換模擬信號,并輸出給其他控制設(shè)備。根據(jù)不同的應(yīng)用需求,三菱模擬量模塊具有多種不同的類型和規(guī)格。本文將詳細(xì)介紹三菱
    的頭像 發(fā)表于 02-05 15:02 ?1368次閱讀

    plc模擬量輸出怎么接線 plc模擬量輸出是什么信號

    PLC模擬量輸出(PLC Analog Output)是指在PLC系統(tǒng)中,根據(jù)輸入信號的大小,通過模擬量輸出模塊將數(shù)字信號轉(zhuǎn)換模擬量信號輸出到外部設(shè)備。這種輸出信號可以是電壓或電流等
    的頭像 發(fā)表于 02-05 14:46 ?4977次閱讀

    了解EMI濾波器:基礎(chǔ)應(yīng)用?

    了解EMI濾波器:基礎(chǔ)應(yīng)用?|深圳比創(chuàng)達(dá)電子
    的頭像 發(fā)表于 01-23 10:26 ?482次閱讀
    了解EMI<b class='flag-5'>濾波</b>器:<b class='flag-5'>從</b>基礎(chǔ)<b class='flag-5'>到</b>應(yīng)用?

    AD7606輸入模擬量最大采集1.25V是什么原因?qū)е碌模?/a>

    最近在寫ad7606驅(qū)動,遇到問題了, 我用atmel AT91RM9200 處理器并口方式采集AD7606 16數(shù)據(jù)總線數(shù)據(jù),模擬量采集最大+-1.25V(量程設(shè)置+-5V)或者最
    發(fā)表于 12-20 07:21

    單片機處理模擬量程序流程是如何的

    單片機處理模擬量程序流程是一種常見的應(yīng)用場景,單片機通常被用來處理各種類型的傳感器信號,例如溫度傳感器、壓力傳感器、光敏傳感器等。在本文中,我將詳盡地描述
    的頭像 發(fā)表于 12-15 09:28 ?1364次閱讀