• <li id="00i08"><input id="00i08"></input></li>
  • <sup id="00i08"><tbody id="00i08"></tbody></sup>
    <abbr id="00i08"></abbr>
  • 新聞中心

    EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 如何基于C2000內(nèi)置12位ADC設(shè)計電能計量方案?

    如何基于C2000內(nèi)置12位ADC設(shè)計電能計量方案?

    作者: 時間:2018-08-03 來源:網(wǎng)絡(luò) 收藏

    摘要

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

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

    1 C2000計量庫介紹

    1.1應(yīng)用背景

    節(jié)能環(huán)保的倡導(dǎo)和推行使大部分家用電器都有對能耗統(tǒng)計的需求,對于這個巨大的應(yīng)用市場,將C2000芯片在家電電機電源上的應(yīng)用優(yōu)勢在最小硬件成本添加代價下兼容拓展能耗統(tǒng)計功能是本次設(shè)計的目的。

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

    1.2硬件平臺及軟件庫介紹

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

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

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

    2.1計量代碼庫

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

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

    上圖電壓輸入分析如下:

    市電220V交流輸入,經(jīng)10k和15k并聯(lián)再串聯(lián)2M電阻分壓,輸入交流電壓為220V*(6/(2000+6))=0.66V,直流電壓3.3*10/25=1.32V。總的輸入電壓幅值0.66*1.414+1.32=2.25V,輸入信號3.3V以內(nèi)。電流互感器輸入5A/2.5mA(根據(jù)互感器具體型號定),取樣電阻電壓2.5*10=25mV,經(jīng)運放20倍放大(具體放大倍數(shù)調(diào)整R9,R10),輸入交流信號25*20=0.5V,總的輸入電流幅值(10A)1*1.414+1.6=3.014V,輸入信號3.3V以內(nèi)。當(dāng)使用錳銅電阻獲得電流信號時,電流信號調(diào)理電路形式如下:

    2.2函數(shù)說明

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

    int32_t get_parameter(int address)

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

    入?yún)ⅲ?6位整型address地址

    出參:返回該地址上的數(shù)據(jù)。

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

    uint8_t set_parameter(int address, int32_t value)

    介紹:設(shè)置各種校表參數(shù)和表參數(shù)到地址address。

    入?yún)ⅲ?6位整型,address地址32位有符號整型value值

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

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

    void measurement_setup (void)

    介紹:代碼庫初始化,在上電之初調(diào)用。

    入?yún)ⅲ簾o

    出參:無

    void measurement_callback (void)

    介紹:此函數(shù)周期性(1s)調(diào)用,以更新實時數(shù)據(jù)。

    入?yún)ⅲ簾o

    出參:無

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

    void adc_interrupt(int16_t * adc_raw)

    Application Report

    ZHCA501–Jan 2013

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

    函數(shù)入?yún)dc_raw為信號輸入,adc_raw[0]為電壓轉(zhuǎn)換數(shù)據(jù),adc_raw[1]為電流轉(zhuǎn)換數(shù)據(jù)

    入?yún)ⅲ弘妷弘娏鬏斎階DC值數(shù)值,adc_raw [0]電壓,adc_raw [1]電流。

    出參:無

    2.3 地址及相應(yīng)功能介紹

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

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

    獲取實時數(shù)據(jù)結(jié)構(gòu)

    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 下一頁

    關(guān)鍵詞: C2000 控制 ADC

    評論


    相關(guān)推薦

    技術(shù)專區(qū)

    關(guān)閉
    主站蜘蛛池模板: 富阳市| 太白县| 鄢陵县| 泗阳县| 奇台县| 瓦房店市| 临夏市| 汉源县| 醴陵市| 双流县| 确山县| 乐平市| 德清县| 澎湖县| 石嘴山市| 柳林县| 巩义市| 文登市| 五大连池市| 无锡市| 博湖县| 门头沟区| 吉木萨尔县| 延吉市| 平顶山市| 建昌县| 汉中市| 大方县| 湖口县| 新竹县| 江北区| 肥城市| 浮梁县| 浦县| 阿鲁科尔沁旗| 安丘市| 凌云县| 孟村| 天镇县| 朔州市| 仁布县|