tft每日頭條

 > 生活

 > 電流信号和電壓信号傳輸原理

電流信号和電壓信号傳輸原理

生活 更新时间:2024-11-30 20:46:12

幾天前,我發表了一篇文章,在文中我介紹了一個不用絕對值電路,而是用運放放大交流輸入信号,同時在同相端輸入直流,将輸入的交流信号的電壓擡升到單片機0-3.3V之間的電路。

有幾個網頁留言說可以計量芯片,就我設計的産品來說,其需要控制的增氧泵數量多; 

如果用計量芯片,則每路增氧泵的控制至少增加5元成本。

而且計量芯片還需要一些限流電阻、濾波電容、晶振等外圍器件,會占用大量的PCB闆面積。

所以,我所選用的是非常有競争力的技術方案。

但是,需要非常深厚的軟、硬件功底。

特别是對于軟件,需要解決:

1) MCU資源分配問題,怎麼樣有限的MCU的ROM、RAM以及算力在A/D轉換、真有效值計算、故障判斷及保護、4g通信上做合理的安排。

2) A/D轉換,怎麼樣進行16路A/D的轉換,如何觸發,怎麼分時采樣,采樣結果怎麼存儲。

3) 數據處理,轉換得到的數據如何做真有效值計算,如何标定。

MCU資源分配

我選用了STM32F103RCT6處理器,該款MCU主要有以下資源:

256Kbytes ROM空間,4K用于bootloader, 100K是應用程序區,100K用的固件升級時的固件存儲;剩下的52K用于配置參數存儲(比如标定參數,用戶編寫的程序等)。

64Kbytes RAM空間,4Kbytes用作與4G模塊通信的接收環形隊列,1Kbytes通信接收緩存。

2Kbytes為發送緩存。2Kbytes用于MODBUS通信,2Kbytes用于ADC的DMA緩存。RAM遠用不完。

DMA用到3個通道,一個通道用于A/D轉換,一個通道用于與4G模塊的串口接收,一個用于與4G模塊的串口發送。

Timer用了若幹,其中一個用于A/D轉換的觸發,一個用來産生2ms, 8ms, 100ms, 1s等時基。

ADC用了16個通道,采用"Regular group"功能進行轉換。

中斷方面,使能了100us左右的中斷,用于産生時間,以前耗時時間短的需要立即處理的事件。

比如modbus接收和發送超時計時。

由于複用以前的RS485代碼,RS485的通信沒有用DMA,而是用發送和接收中斷處理。

但是發送和接收中斷隻搬運數據,而沒有任何邏輯處理,因此所有中斷加一起耗時不到10us,保證了主程序的實時性。

A/D的實現

1) 市電周期為20ms,對于每一個通道,在一個周期内共采樣64個點。

一次采樣的時間為:312.5us。

2) 将ADC設置為定時器觸發,觸發周期為312.5us,将全部16個通道設置為"Regular group“,使能"Regular group"轉換功能。

這樣定時器每隔312.5us觸發啟動A/D,A/D模塊自動轉換完所有16個通道。

3) 設置DMA,利用DMA模塊将結果搬移到緩存。

4) 主程序實時查詢DMA的緩存,判斷是否有新的轉換數據,如果有,則将數據取數,根據數據所在的指針位置判斷所在的通道,再對該值做真有效值計算)。

真有效值的算法

真有效值均方根值,即每次轉換出來的數值跟平均值做運算,推導過程如下:

電流信号和電壓信号傳輸原理(交流信号-市電電流電壓的真有效值測量算法)1

真有效值計算公式(少乘了N)

定義兩個64位的變量,用于累加每一次轉換的AD值,以及AD的平方值。

在一個周期64點轉換完成之後,經過下述算式算出AD值的真有效值:

1) AD的平方值的累加值-AD值的累加值*AD值的累加值/N

2) 第1步算出的數值除以N

3) 第2步片出的數值開方;

電流信号和電壓信号傳輸原理(交流信号-市電電流電壓的真有效值測量算法)2

真有效值計算程序

真實物理量的标定

上述步驟算出的是AD值的有效值,而非真實物理量的有效值,要得到物理量的有效值,還需要進行标定轉換。

我一般采用線性标定進行轉換,即物理量=k*AD b,為了避免耗時的浮點數運算,

我将k轉為乘以整數除以另一個整數。

如果線性度比較差,我會采用分段線性化的方法,即根據AD範圍分多段區間進行标定。

标定過程以及分段線性化由一個專門的軟件模塊完成,後面文章再詳述。

,

更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!

查看全部

相关生活资讯推荐

热门生活资讯推荐

网友关注

Copyright 2023-2024 - www.tftnews.com All Rights Reserved