色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

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

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

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

實(shí)例講解單片機(jī)模擬量采集: 從硬件到程序, 從濾波到實(shí)際值轉(zhuǎn)換,有多少人懂了?

jf_pJlTbmA9 ? 來源:今日頭條 ? 作者:今日頭條 ? 2023-10-17 14:28 ? 次閱讀

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

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

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

wKgZomUD8BaAUcE4AAI0-d3PlZM858.png 圖1:電池組電壓檢測(cè)電路

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

wKgZomUD8BmAJTJgAAD353Ydto0687.png 圖2:電池組充電電流檢測(cè)電路

如圖3為單片機(jī)STM32F103CBT6,圖1和圖2的模擬信號(hào)輸入至單片機(jī)的PA5、PA6、PA7。

wKgaomUD8ByAB5E9AAGYqnfdvZg450.png 圖3:STM32F103CBT6單片機(jī)

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

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

wKgaomUD8B2AEBQPAAC0SxT2BCU483.png 圖4:配置端口模式

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

wKgZomUD8CCAXU2TAAHq5tP_8_M447.png 圖5:模數(shù)轉(zhuǎn)換并緩存

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

wKgaomUD8CGAS8SRAAA8KWp5Snw887.png 圖6:初始化

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

wKgaomUD8CKAcHdNAABaze8psik849.png 圖7:聲明函數(shù)

如圖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ù)在下面講)。

wKgZomUD8CSAWHAdAADmyWUrGag933.png 圖8:函數(shù)調(diào)用

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

s16 Charging_Current;		 //充電電流實(shí)際值
s16 Battery1_Voltage;		 //電池組1電壓實(shí)際值
s16 Battery2_Voltage;		 //電池組2電壓實(shí)際值
s16 Battery_Voltage; 		 //電池組總電壓值

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

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

/******************************
模擬量處理函數(shù)
******************************/
void Analog_Processing(void)
{
//對(duì)AD值進(jìn)行濾波
ADC_Charging_Current=Filter(ADC_ConvertedValue[0],ADC_Charging_Current,1,10);
ADC_Battery1_Voltage=Filter(ADC_ConvertedValue[1],ADC_Battery1_Voltage,1,10);
ADC_Battery2_Voltage=Filter(ADC_ConvertedValue[2],ADC_Battery2_Voltage,1,10);
//AD值轉(zhuǎn)換為實(shí)際值
Charging_Current = Adc_To_Act(ADC_Charging_Current, 10, 4096, 0, 220);//22.0A
Battery1_Voltage = Adc_To_Act(ADC_Battery1_Voltage, 10, 4096, 0, 267);//267V
Battery2_Voltage = Adc_To_Act(ADC_Battery2_Voltage, 10, 4096, 0, 267);//267V
//兩組電壓相加得到總電壓
Battery_Voltage = Battery1_Voltage + Battery2_Voltage;
}

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

/******************************
濾波函數(shù)(base/k越大,容性越大)
該函數(shù)相當(dāng)于是一個(gè)電容,通常取值k=1,base=10
******************************/
u16 Filter(u16 NewData, u16 OldData, u8 k, u8 base)
{
	u16 uiResult;
	if (NewData > OldData)
	{
		uiResult = NewData - OldData;
		uiResult *= k;
		uiResult += base >> 2;
		uiResult /= base;
		uiResult = OldData + uiResult; 
	}
	else if (OldData > NewData)
	{
		uiResult = OldData - NewData;
		uiResult *= k;
		uiResult += base >> 2;
		uiResult /= base;
		uiResult = OldData - uiResult; 
	}
	else
	{
		uiResult = NewData;
	}
	
	return(uiResult);
}

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

ADC_Battery1_Voltage=Filter(ADC_ConvertedValue[1],ADC_Battery1_Voltage,1,10);

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

/******************************
AD值轉(zhuǎn)換實(shí)際值函數(shù)
******************************/
s16 Adc_To_Act(s16 Adc_Value, s16 Pre_Adc_Min, s16 Pre_Adc_Max, s16 Pre_Act_Min, s16 Pre_Act_Max)
{
s32 _temp;
s32 _range;
_temp = (s32)((Adc_Value - Pre_Adc_Min) * (Pre_Act_Max - Pre_Act_Min) / (Pre_Adc_Max-Pre_Adc_Min)) + Pre_Act_Min;
_temp = Adc_Value - Pre_Adc_Min;
_range = Pre_Act_Max - Pre_Act_Min;
_temp = _temp * _range;
_range = Pre_Adc_Max - Pre_Adc_Min;
_temp = _temp + _range / 2;
_temp = _temp / _range;
_temp = _temp + Pre_Act_Min;
return(_temp);
}

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

Charging_Current = Adc_To_Act(ADC_Charging_Current, 10, 4096, 0, 220);//22.0A

要點(diǎn):

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

② 電池組輸入至運(yùn)放的8個(gè)1M的電阻是兩個(gè)為一組的,且功率至少1/4W以上,因?yàn)樵?a href="http://www.1cnz.cn/v/tag/873/" target="_blank">高壓下的電阻容易老化,為保險(xiǎn)起見,通常一個(gè)電阻的最大壓差在100V以下為宜;

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

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

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

來源:今日頭條(版主:電鹵藥丸)
免責(zé)聲明:本文為轉(zhuǎn)載文章,轉(zhuǎn)載此文目的在于傳遞更多信息,版權(quán)歸原作者所有。本文所用視頻、圖片、文字如涉及作品版權(quán)問題,請(qǐng)聯(lián)系小編進(jìn)行處理


審核編輯 黃宇

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

    關(guān)注

    6035

    文章

    44554

    瀏覽量

    634653
  • 濾波
    +關(guān)注

    關(guān)注

    10

    文章

    667

    瀏覽量

    56633
  • 模擬量
    +關(guān)注

    關(guān)注

    5

    文章

    491

    瀏覽量

    25541
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    AVR單片機(jī)C語言實(shí)例講解帶你輕松入門精通

    本帖最后由 eehome 于 2013-1-5 10:08 編輯 AVR單片機(jī)C語言實(shí)例講解帶你輕松入門精通
    發(fā)表于 11-05 14:22

    LabVIEW入門精通之模擬量輸入(AI)程序設(shè)計(jì)

    【LabVIEW入門精通】7.1 模擬量輸入(AI)程序設(shè)計(jì)(利用LabVIEW實(shí)現(xiàn))
    發(fā)表于 01-08 11:25 ?0次下載

    【LabVIEW入門精通】模擬量輸出(AO)程序設(shè)計(jì)

    【LabVIEW入門精通】8.2 模擬量輸出(AO)程序設(shè)計(jì)(利用LabVIEW實(shí)現(xiàn))
    發(fā)表于 01-04 09:42 ?0次下載

    PIC單片機(jī)之I2C(模式)實(shí)例講解

    PIC單片機(jī)之I2C(模式)實(shí)例講解
    發(fā)表于 01-24 17:21 ?30次下載

    跳舞機(jī)器的軟件部分設(shè)計(jì):主控單片機(jī)程序機(jī)程序

    首先介紹一下軟件的架構(gòu),小π機(jī)器的軟件部分主要包含手機(jī)APP程序、上位機(jī)程序、主控單片機(jī)程序
    發(fā)表于 04-09 14:17 ?5588次閱讀
    跳舞機(jī)器<b class='flag-5'>人</b>的軟件部分設(shè)計(jì):主控<b class='flag-5'>單片機(jī)</b><b class='flag-5'>程序</b>和<b class='flag-5'>從</b><b class='flag-5'>機(jī)</b><b class='flag-5'>程序</b>

    單片機(jī)采樣模擬量數(shù)據(jù)的方法

    單片機(jī)的ADC接口屬于模數(shù)轉(zhuǎn)換接口,將外部的模擬量信號(hào)轉(zhuǎn)化為數(shù)字信號(hào),單片機(jī)屬于數(shù)字器件,需將模擬信號(hào)轉(zhuǎn)化為數(shù)字信號(hào)才能夠?yàn)?/div>
    發(fā)表于 07-07 09:39 ?5872次閱讀

    單片機(jī)是如何采樣模擬量信號(hào)數(shù)據(jù)的

    單片機(jī)的ADC接口屬于模數(shù)轉(zhuǎn)換接口,將外部的模擬量信號(hào)轉(zhuǎn)化為數(shù)字信號(hào),單片機(jī)屬于數(shù)字器件,需將模擬信號(hào)轉(zhuǎn)化為數(shù)字信號(hào)才能夠?yàn)?/div>
    發(fā)表于 08-05 17:46 ?1.8w次閱讀
    <b class='flag-5'>單片機(jī)</b>是如何采樣<b class='flag-5'>模擬量</b>信號(hào)數(shù)據(jù)的

    使用51單片機(jī)模擬量采集串口顯示的程序和工程文件合集免費(fèi)下載

    本文檔的主要內(nèi)容詳細(xì)介紹的是使用51單片機(jī)模擬量采集串口顯示的程序和工程文件合集免費(fèi)下載。
    發(fā)表于 09-19 17:04 ?14次下載
    使用51<b class='flag-5'>單片機(jī)</b><b class='flag-5'>模擬量</b><b class='flag-5'>采集</b>串口顯示的<b class='flag-5'>程序</b>和工程文件合集免費(fèi)下載

    深度講解模擬量硬件程序的設(shè)計(jì)

    單片機(jī)系統(tǒng)里對(duì)模擬量的處理要比數(shù)字量稍顯復(fù)雜,但是只要掌握了使用技巧,使用起來也很簡(jiǎn)單,很多朋友一開始比較糾結(jié)于單片機(jī)的底層語言,非要先弄個(gè)明白才罷休,其實(shí)大可不必,重要的是我們要先學(xué)會(huì)怎么應(yīng)用。
    的頭像 發(fā)表于 04-28 17:28 ?2770次閱讀
    深度<b class='flag-5'>講解</b><b class='flag-5'>模擬量</b>的<b class='flag-5'>硬件</b>和<b class='flag-5'>程序</b>的設(shè)計(jì)

    單片機(jī)采集電壓信號(hào)(AD轉(zhuǎn)換器的應(yīng)用實(shí)例)上

    單片機(jī)采集電壓信號(hào)(AD轉(zhuǎn)換的應(yīng)用實(shí)例)上上一篇文章我們講了如何把一個(gè)信號(hào)的峰值采集,今天我們來講如何把它連入
    發(fā)表于 11-17 11:51 ?23次下載
    <b class='flag-5'>單片機(jī)</b><b class='flag-5'>采集</b>電壓信號(hào)(AD<b class='flag-5'>轉(zhuǎn)換</b>器的應(yīng)用<b class='flag-5'>實(shí)例</b>)上

    模擬量平均值濾波是什么

    模擬量輸入模塊一般都有平均濾波的功能,例如,S7-200編程軟件的系統(tǒng)塊中模擬量輸入濾波器的“樣本數(shù)日”就是用來設(shè)置平均值濾波的采樣周期的
    發(fā)表于 12-22 11:34 ?1875次閱讀

    以EM235為例講解S7-200模擬量編程

    本文以 EM235 為例講解 S7-200 模擬量編程,主要包括以下內(nèi)容: 1、模擬量擴(kuò)展模塊接線圖及模塊設(shè)置 2、模擬量擴(kuò)展模塊的尋址 3、模擬量
    發(fā)表于 07-07 15:59 ?5次下載

    模擬量濾波程序算法詳解

    就要對(duì)模擬量信號(hào)進(jìn)行濾波,使其盡量消除現(xiàn)場(chǎng)的干擾,今天就給大家分享個(gè)模擬量濾波的FB塊,這個(gè)程序分為二種
    的頭像 發(fā)表于 11-14 09:53 ?3861次閱讀

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

    我司研發(fā)銷售6軸、9軸電子羅盤(陀螺儀|加速計(jì)|磁力計(jì))、傾角傳感器、姿態(tài)傳感器,慣導(dǎo)、數(shù)據(jù)采集盒、IoT遠(yuǎn)程智慧監(jiān)測(cè)等 產(chǎn)品廣泛應(yīng)用于:無人機(jī)、無人船、巡檢/引導(dǎo)/送餐/水下機(jī)器、AGV、云
    的頭像 發(fā)表于 11-25 14:54 ?1745次閱讀
    <b class='flag-5'>實(shí)例</b><b class='flag-5'>講解</b><b class='flag-5'>單片機(jī)</b><b class='flag-5'>模擬量</b><b class='flag-5'>采集</b>: <b class='flag-5'>從</b><b class='flag-5'>硬件</b><b class='flag-5'>到</b><b class='flag-5'>程序</b>, <b class='flag-5'>從</b><b class='flag-5'>濾波</b><b class='flag-5'>到</b><b class='flag-5'>實(shí)際</b><b class='flag-5'>值</b><b class='flag-5'>轉(zhuǎn)換</b>

    單片機(jī)處理模擬量程序流程是如何的

    單片機(jī)處理模擬量程序流程是一種常見的應(yīng)用場(chǎng)景,單片機(jī)通常被用來處理各種類型的傳感器信號(hào),例如溫度傳感器、壓力傳感器、光敏傳感器等。在本文中,我將詳盡地描述
    的頭像 發(fā)表于 12-15 09:28 ?1501次閱讀
    主站蜘蛛池模板: 麻豆国产成人AV在线| 女同给老师下媚药| 亚洲精品成人a| 国产视频这里只有精品| 久久偷拍国2017的| 沈芯语麻豆0076 视频| 成人五级毛片免费播放| 少妇久久久久久被弄高潮| 成片免费观看视频在线网| 乌克兰黄色录像| 国产综合无码一区二区色蜜蜜| 伊人久久电影院| 欧美 亚洲 日韩 在线综合| 高挑人妻无奈张开腿| 亚洲精品久久久一区| 啦啦啦WWW在线观看免费高清版| ⅹxx日本护土| 小SAO货水真多把你CAO烂| 久久国产亚洲精品AV麻豆| 成人毛片手机版免费看| 亚洲日韩精品AV中文字幕| 欧美日韩亚洲成人| 国语精彩对白2021| 大地影院免费观看视频| 亚洲色婷婷久久精品AV蜜桃久久| 免费国产足恋网站| 国产性色AV内射白浆肛交后入| 最近的中文字幕2019国语| 王晶经典三级| 欧美s00老人| 久99久热只有精品国产99| 岛国在线无码免费观| 英国video性精品高清最新| 十分钟视频影院免费| 男人女人边摸边吃奶边做| 久久婷婷色一区二区三区| 国产午夜视频| 国产精品XXXXX免费A片| bbwvideos欧美老妇| 99久久免费看少妇高潮A片| 诱受H嗯啊巨肉各种play|