国产精品久久久aaaa,日日干夜夜操天天插,亚洲乱熟女香蕉一区二区三区少妇,99精品国产高清一区二区三区,国产成人精品一区二区色戒,久久久国产精品成人免费,亚洲精品毛片久久久久,99久久婷婷国产综合精品电影,国产一区二区三区任你鲁

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

深度講解模擬量的硬件和程序的設計

GReq_mcu168 ? 來源:今日頭條 ? 作者:電鹵藥丸 ? 2021-04-28 17:28 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

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

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

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

4e7efe86-a7ff-11eb-9728-12bb97331649.png

圖1:電池組電壓檢測電路

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

4f3fc878-a7ff-11eb-9728-12bb97331649.png

圖2:電池組充電電流檢測電路

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

4f6098e6-a7ff-11eb-9728-12bb97331649.png

圖3:STM32F103CBT6單片機

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

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

4f760262-a7ff-11eb-9728-12bb97331649.png

圖4:配置端口模式

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

4f86db78-a7ff-11eb-9728-12bb97331649.png

圖5:模數轉換并緩存

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

4fc06fc8-a7ff-11eb-9728-12bb97331649.png

圖6:初始化

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

4fd31f92-a7ff-11eb-9728-12bb97331649.png

圖7:聲明函數

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

4ffcf466-a7ff-11eb-9728-12bb97331649.png

圖8,函數調用

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

s16 Charging_Current; //充電電流實際值

s16 Battery1_Voltage; //電池組1電壓實際值

s16 Battery2_Voltage; //電池組2電壓實際值

s16 Battery_Voltage; //電池組總電壓值

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

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

/******************************

模擬量處理函數

******************************/

void Analog_Processing(void)

{

//對AD值進行濾波

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值轉換為實際值

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;

}

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

/******************************

濾波函數(base/k越大,容性越大)

該函數相當于是一個電容,通常取值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);

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

/******************************

AD值轉換實際值函數

******************************/

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表示要轉換的模擬量;Pre_Adc_Min表示模擬量AD值的最小值;Pre_Adc_Max表示模擬量AD值的最大值;Pre_Act_Min表示轉換后實際值的最小值;Pre_Act_Max表示轉換后實際值的最大值;(以下最大實際值220表示22.0A,是因為數碼管顯示需要小數表示)。

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

要點:

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

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

③電池組分為兩組檢測,一是為了降低元件所承受的電壓,二是為了監視兩組電池電壓之間是否平衡,達到保護電池目的。

③函數應功能模塊化,且具備通用性質,便于移植和調用,對于很多朋友應先學會如何使用,底層代碼只要會配置就完全足夠了。

當然,以上提供的設計是我通常的做法,能滿足大多數的常規應用。
編輯:lyn

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 鉛酸電池
    +關注

    關注

    9

    文章

    283

    瀏覽量

    27738
  • 模擬量
    +關注

    關注

    5

    文章

    557

    瀏覽量

    27654
  • 硬件
    +關注

    關注

    11

    文章

    3595

    瀏覽量

    69011

原文標題:模擬量采集從硬件到程序,從濾波到實際值轉換,多少人懂了

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

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    西門子S7-1200和S7-1500 PLC系列模擬量傳感器怎么接線

    西門子S7-1200和S7-1500PLC系列模擬量傳感器怎么接線,現場看到的4線制,3線制,2線制模擬量傳感器接線。
    的頭像 發表于 03-06 13:57 ?42次閱讀
    西門子S7-1200和S7-1500 PLC系列<b class='flag-5'>模擬量</b>傳感器怎么接線

    模擬量光端機兩線制怎么接線?廣州郵科接線全攻略

    在工業自動化、遠程監控和智能傳感系統中,模擬量光端機扮演著信號遠距離、高抗干擾傳輸的關鍵角色。尤其當現場使用的是兩線制壓力/溫度變送器(輸出4-20mA信號)時,如何正確接線成為工程實施中的核心問題
    的頭像 發表于 02-09 09:36 ?86次閱讀
    <b class='flag-5'>模擬量</b>光端機兩線制怎么接線?廣州郵科接線全攻略

    工業人必看:一主一從WIFI模擬量雙向對傳模塊選型攻略

    WIFI 模擬量雙向對傳模塊是物聯網與工業自動化領域中,專用于模擬量信號無線雙向傳輸的智能硬件,也是銜接前端傳感器、后端執行器與控制平臺的關鍵設備,能破解傳統有線傳輸布線難、維護成本高的痛點。 一
    的頭像 發表于 12-01 17:31 ?647次閱讀

    廣州郵科模擬量光端機,到底是啥神器?一篇文章給你講明白!

    你是不是在工廠、電站或者監控項目里,經常聽到“模擬量信號”這個詞?比如壓力、溫度、流量這些連續變化的數據,要把它們傳得遠、傳得穩,可真不是件簡單事。老式的布線方式又麻煩又容易受干擾,頭都大了對吧
    的頭像 發表于 10-30 09:38 ?304次閱讀
    廣州郵科<b class='flag-5'>模擬量</b>光端機,到底是啥神器?一篇文章給你講明白!

    抗干擾模擬量無線模塊,與PLC、DCS數據自組網

    一、概述 模擬量轉無線模塊 是一種用于將模擬量信號(如溫度、濕度、壓力、電流、電壓等)轉換為無線信號進行傳輸的設備。 二、 模擬量轉無線模塊的特點 1. 遠距離傳輸: 無線傳輸距離可達50KM左右
    的頭像 發表于 10-29 10:12 ?351次閱讀
    抗干擾<b class='flag-5'>模擬量</b>無線模塊,與PLC、DCS數據自組網

    提升性價比之選:CAN接口模擬量采集模塊的三大核心功能價值

    在工業物聯網(IIoT)、智能控制與自動化系統中,存在大量 “連續變化” 的物理信號,比如溫度的升降、壓力的波動、電流的強弱,這些信號被稱為 “模擬量”。而CAN 接口模擬量采集模塊,正是一種專門
    的頭像 發表于 10-11 15:30 ?373次閱讀

    CAN接口模擬量采集模塊能做什么?工業/汽車/能源等四大領域實例拆解

    CAN 接口模擬量采集模塊憑借高精度采集、抗干擾傳輸、工業級穩定的核心優勢,已從傳統工業場景滲透到汽車、能源、農業、醫療等多個領域。其本質是通過模擬量信號捕獲 - 數字量轉換 - CAN 總線傳輸
    的頭像 發表于 10-11 15:29 ?656次閱讀

    模擬量對傳模塊能做什么

    模擬量對傳模塊是一種用于連續信號傳輸的設備,能夠將模擬量輸入(如電壓、電流、溫度、壓力等)通過有線或無線方式從一個位置傳輸到另一個位置,并進行高精度還原。與開關(離散信號)不同,模擬量
    的頭像 發表于 04-17 15:16 ?737次閱讀

    模擬量單向一對多對傳模塊是什么

    模擬量單向一對多對傳模塊是一種在工業自動化、數據采集和遠程監控等領域廣泛應用的專業設備。其核心功能是將單個模擬量信號源(如溫度、壓力、流量等傳感器輸出的4-20mA或0-10V信號)通過隔離、轉換
    的頭像 發表于 04-16 17:04 ?600次閱讀

    LORA模擬量單向對傳模塊

    LORA(LongRangeRadio)模擬量單向對傳模塊是一種集成了LORA通信技術與模擬信號傳輸功能的無線通信設備。這種設備專為長距離、低功耗的物聯網應用設計,通過降低數據傳輸速率來換取更遠
    的頭像 發表于 04-14 16:27 ?712次閱讀

    LoRa模擬量雙向對傳模塊

    LORA模擬量雙向對傳模塊是一種集成了LORA通信技術和模擬信號傳輸功能的設備。通過LORA技術實現了遠距離、低功耗的無線通信,同時支持模擬量的采集和傳輸,這使得該模塊在物聯網、工業自動化、環境監測
    的頭像 發表于 04-14 16:26 ?1429次閱讀

    4G模擬量對傳模塊,無線通訊,實時同步模擬量信號

    在當今快速發展的物聯網時代,無線通信模塊扮演著至關重要的角色。其中,4G模擬量對傳模塊作為一種結合了4G通信技術和模擬量傳輸功能的設備,正逐漸在工業自動化、遠程監控、智能家居等領域展現出其獨特的優勢
    的頭像 發表于 04-10 16:54 ?768次閱讀

    西門子PLC-模擬量采集計算使用方法

    西門子PLC-模擬量采集計算使用方法,很實用
    發表于 04-09 15:29 ?1次下載

    PLC如何通過模擬量輸出對變頻器調速

    今天本篇文章通過對變頻器的控制來分享模擬量如何使用。變頻器調速主要是控制變頻器輸出電源的頻率,變頻器頻率的控制方式主要有變頻器操作面板給定方式、變頻器上的端子控制方式(多段速)、通過通信的方式(如
    的頭像 發表于 04-01 17:29 ?3572次閱讀
    PLC如何通過<b class='flag-5'>模擬量</b>輸出對變頻器調速

    LORA模擬量互傳模塊助力工業自動化

    隨著物聯網(IoT)技術的蓬勃發展,工業自動化領域正經歷著前所未有的變革。在這一變革中,LORA(Long Range)模擬量互傳模塊以其高效穩定的特點,成為了推動工業自動化升級的重要力量
    的頭像 發表于 03-06 16:34 ?764次閱讀