新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 如何基于C2000內置12位ADC設計電能計量方案?

        如何基于C2000內置12位ADC設計電能計量方案?

        作者: 時間:2018-08-03 來源:網絡 收藏

        摘要

        本文引用地址:http://www.104case.com/article/201808/385262.htm

        本應用筆記介紹了基于內核和片內12位實現軟件電能計量的方案。是德州儀器半導體有限公司生產的32位高性能實時微器,廣泛應用于諸如馬達驅動,數字電源等各種和功率相關的實時領域,而電能和功率的計算在以上應用中往往作為反饋控制的輸入信號存在。因此,將軟件電能計量算法集成到平臺上是實現各種實時控制SOC方案的關鍵。本文介紹了在C2000上實現軟件計量算法的具體方法以及TI基于C2000的軟件計量庫的使用方法,同時給出了測試結果。

        1 C2000計量庫介紹

        1.1應用背景

        節能環保的倡導和推行使大部分家用電器都有對能耗統計的需求,對于這個巨大的應用市場,將C2000芯片在家電電機電源上的應用優勢在最小硬件成本添加代價下兼容拓展能耗統計功能是本次設計的目的。

        C2000芯片專注于電機電源控制,其優秀的性能已被業界普遍認可。本次設計是基于C2000 Piccolo系列芯片搭建的軟件測試平臺,實現一套滿足智能家居能耗計量的軟件庫,使用最小的硬件代價實現對C2000應用領域的豐富。

        1.2硬件平臺及軟件庫介紹

        本次參考設計硬件平臺使用C2000 Piccolo Entry Line Control Pad,這是TI提供的一套低成本C2000開發板,基于此平臺搭建的電路進行計量庫開發可以使用戶在逐步學C2000開發編程的同時實現一套能耗計量軟件。

        此參考設計實現一個單相電能計量方案。參考設計的目的旨在實現一個完整的單相計量庫。使用戶在這個參考設計的基礎上快速建立自己的單相計量方案。代碼庫提供有功功率,無功功率,視在功率,有功能量以及無功能量,同時還能測量回路電流有效值,電壓有效值,功率因數,頻率等參數,滿足單相電能計量的需求,軟件支持數字校表。

        2 第二部分 計量電路及功能描述

        2.1計量代碼庫

        調用計量庫時,只需要將emeter目錄下的所有文件都添加進來,就能夠使用計量功能了。其中文件emeter-interface.h中聲明了所有對外調用接口,供程序調用,以實現校表和計量數據讀取等功能。算法庫默認配置轉換率為3200點/秒,轉換數據為12bit,數據范圍0—4096,實現單相計量。函數adc_interrupt()實現對原始轉換數據的運算,measurement_callback()負責進一步處理adc_interrupt()中預處理的數據。因此可以在每個中斷中調用adc_interrupt(adc_raw[2]),也可以緩存多個點然后再循環調用此函數,函數入參adc_raw為信號輸入,adc_raw[0]為電壓轉換數據,adc_raw[1]為電流轉換數據。adc_interrupt(),measurement_callback()實現流程如圖1所示:

        計量前端電路由電壓信號調理電路和電流信號調理電路組成。電壓信號調理電路使用電阻器對輸入工頻信號分壓,并經過運算放大器緩沖后送至MCU ADC輸入引腳。電流互感器輸出電流信號通過負載電阻轉換成電壓信號,經過運算放大器放大后送至MCU ADC輸入引腳。推薦電路如圖2所示:

        上圖電壓輸入分析如下:

        市電220V交流輸入,經10k和15k并聯再串聯2M電阻分壓,輸入交流電壓為220V*(6/(2000+6))=0.66V,直流電壓3.3*10/25=1.32V??偟妮斎腚妷悍?.66*1.414+1.32=2.25V,輸入信號3.3V以內。電流互感器輸入5A/2.5mA(根據互感器具體型號定),取樣電阻電壓2.5*10=25mV,經運放20倍放大(具體放大倍數調整R9,R10),輸入交流信號25*20=0.5V,總的輸入電流幅值(10A)1*1.414+1.6=3.014V,輸入信號3.3V以內。當使用錳銅電阻獲得電流信號時,電流信號調理電路形式如下:

        2.2函數說明

        emeter-interface.h文件中聲明的主要函數和宏定義如下:

        int32_t get_parameter(int address)

        介紹:獲取各種計量參數從地址address。

        入參:16位整型address地址

        出參:返回該地址上的數據。

        可中斷重入,可中斷中使用。

        uint8_t set_parameter(int address, int32_t value)

        介紹:設置各種校表參數和表參數到地址address。

        入參:16位整型,address地址32位有符號整型value值

        出參:返回1表示操作成功,返回0表示操作失敗。

        不可中斷重入,不可中斷中使用。

        void measurement_setup (void)

        介紹:代碼庫初始化,在上電之初調用。

        入參:無

        出參:無

        void measurement_callback (void)

        介紹:此函數周期性(1s)調用,以更新實時數據。

        入參:無

        出參:無

        不可中斷重入,不可中斷中使用。

        void adc_interrupt(int16_t * adc_raw)

        Application Report

        ZHCA501–Jan 2013

        介紹:可以在ADC每個中斷中調用adc_interrupt(adc_raw[2]),也可以緩存多個點然后再循環調用此函數,

        函數入參adc_raw為信號輸入,adc_raw[0]為電壓轉換數據,adc_raw[1]為電流轉換數據

        入參:電壓電流輸入ADC值數值,adc_raw [0]電壓,adc_raw [1]電流。

        出參:無

        2.3 地址及相應功能介紹

        考慮到代碼將來的改動或擴展,地址不具體定義。使用枚舉變量讓編譯器自動生成。用戶可以include的這個變量定義,使用枚舉地址設置和獲取數據。

        int32_t get_parameter(int address)函數地址枚舉變量定義如下:

        獲取實時數據結構

        enum get_parameter_table

        {

        AFE_BASE_A = 0x0000,

        AFE_GET_ACTIVE_POWER,

        AFE_GET_REACTIVE_POWER,

        AFE_GET_APPARENT_POWER,

        AFE_GET_ACTIVE_ENERGY,

        AFE_GET_REACTIVE_ENERGY,


        上一頁 1 2 3 下一頁

        關鍵詞: C2000 控制 ADC

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 寿光市| 乐平市| 金华市| 凤台县| 扎兰屯市| 博乐市| 阳西县| 正镶白旗| 阿巴嘎旗| 东安县| 黄平县| 沧源| 静乐县| 调兵山市| 洪泽县| 奈曼旗| 山东省| 上思县| 常德市| 阳春市| 沂源县| 仙游县| 清河县| 张家川| 大英县| 南陵县| 太仆寺旗| 当涂县| 罗甸县| 上栗县| 丹凤县| 遂川县| 祁连县| 明水县| 文昌市| 称多县| 清水河县| 东台市| 将乐县| 新干县| 蕉岭县|