基于C2000內置12位ADC的電能計量方案
摘要
本應用筆記介紹了基于C2000內核和片內12位ADC實(shí)現軟件電能計量的方案。C2000是德州儀器半導體有限公司生產(chǎn)的32位高性能實(shí)時(shí)微控制器,廣泛應用于諸如馬達驅動(dòng),數字電源等各種和功率控制相關(guān)的實(shí)時(shí)控制領(lǐng)域,而電能和功率的計算在以上應用中往往作為反饋控制的輸入信號存在。因此,將軟件電能計量算法集成到C2000平臺上是實(shí)現各種實(shí)時(shí)控制SOC方案的關(guān)鍵。本文介紹了在C2000上實(shí)現軟件計量算法的具體方法以及TI基于C2000的軟件計量庫的使用方法,同時(shí)給出了測試結果。
1 C2000計量庫介紹
1.1應用背景
節能環(huán)保的倡導和推行使大部分家用電器都有對能耗統計的需求,對于這個(gè)巨大的應用市場(chǎng),將C2000芯片在家電電機電源上的應用優(yōu)勢在最小硬件成本添加代價(jià)下兼容拓展能耗統計功能是本次設計的目的。
C2000芯片專(zhuān)注于電機電源控制,其優(yōu)秀的性能已被業(yè)界普遍認可。本次設計是基于C2000 Piccolo系列芯片搭建的軟件測試平臺,實(shí)現一套滿(mǎn)足智能家居能耗計量的軟件庫,使用最小的硬件代價(jià)實(shí)現對C2000應用領(lǐng)域的豐富。
1.2硬件平臺及軟件庫介紹
本次參考設計硬件平臺使用C2000 Piccolo Entry Line Control Pad,這是TI提供的一套低成本C2000開(kāi)發(fā)板,基于此平臺搭建的電路進(jìn)行計量庫開(kāi)發(fā)可以使用戶(hù)在逐步學(xué)C2000開(kāi)發(fā)編程的同時(shí)實(shí)現一套能耗計量軟件。
此參考設計實(shí)現一個(gè)單相電能計量方案。參考設計的目的旨在實(shí)現一個(gè)完整的單相計量庫。使用戶(hù)在這個(gè)參考設計的基礎上快速建立自己的單相計量方案。代碼庫提供有功功率,無(wú)功功率,視在功率,有功能量以及無(wú)功能量,同時(shí)還能測量回路電流有效值,電壓有效值,功率因數,頻率等參數,滿(mǎn)足單相電能計量的需求,軟件支持數字校表。
2 第二部分 計量電路及功能描述
2.1計量代碼庫
調用計量庫時(shí),只需要將emeter目錄下的所有文件都添加進(jìn)來(lái),就能夠使用計量功能了。其中文件emeter-interface.h中聲明了所有對外調用接口,供程序調用,以實(shí)現校表和計量數據讀取等功能。算法庫默認配置ADC轉換率為3200點(diǎn)/秒,轉換數據為12bit,數據范圍0—4096,實(shí)現單相計量。函數adc_interrupt()實(shí)現對原始轉換數據的運算,measurement_callback()負責進(jìn)一步處理adc_interrupt()中預處理的數據。因此可以在ADC每個(gè)中斷中調用adc_interrupt(adc_raw[2]),也可以緩存多個(gè)點(diǎn)然后再循環(huán)調用此函數,函數入參adc_raw為信號輸入,adc_raw[0]為電壓轉換數據,adc_raw[1]為電流轉換數據。adc_interrupt(),measurement_callback()實(shí)現流程如圖1所示:
圖1 計量軟件流程圖
計量前端電路由電壓信號調理電路和電流信號調理電路組成。電壓信號調理電路使用電阻器對輸入工頻信號分壓,并經(jīng)過(guò)運算放大器緩沖后送至MCU ADC輸入引腳。電流互感器輸出電流信號通過(guò)負載電阻轉換成電壓信號,經(jīng)過(guò)運算放大器放大后送至MCU ADC輸入引腳。推薦電路如圖2所示:
圖2 CT計量前端參考電路
上圖電壓輸入分析如下:
市電220V交流輸入,經(jīng)10k和15k并聯(lián)再串聯(lián)2M電阻分壓,輸入交流電壓為220V*(6/(2000+6))=0.66V,直流電壓3.3*10/25=1.32V??偟妮斎腚妷悍?.66*1.414+1.32=2.25V,輸入信號3.3V以?xún)?。電流互感器輸?A/2.5mA(根據互感器具體型號定),取樣電阻電壓2.5*10=25mV,經(jīng)運放20倍放大(具體放大倍數調整R9,R10),輸入交流信號25*20=0.5V,總的輸入電流幅值(10A)1*1.414+1.6=3.014V,輸入信號3.3V以?xún)?。當使用錳銅電阻獲得電流信號時(shí),電流信號調理電路形式如下:
圖3 錳銅計量前端參考電路
2.2函數說(shuō)明
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)
介紹:代碼庫初始化,在上電之初調用。
入參:無(wú)
出參:無(wú)
void measurement_callback (void)
介紹:此函數周期性(1s)調用,以更新實(shí)時(shí)數據。
入參:無(wú)
出參:無(wú)
不可中斷重入,不可中斷中使用。
void adc_interrupt(int16_t * adc_raw)
Application Report
ZHCA501–Jan 2013
介紹:可以在A(yíng)DC每個(gè)中斷中調用adc_interrupt(adc_raw[2]),也可以緩存多個(gè)點(diǎn)然后再循環(huán)調用此函數,
函數入參adc_raw為信號輸入,adc_raw[0]為電壓轉換數據,adc_raw[1]為電流轉換數據
入參:電壓電流輸入ADC值數值,adc_raw [0]電壓,adc_raw [1]電流。
出參:無(wú)
2.3 地址及相應功能介紹
考慮到代碼將來(lái)的改動(dòng)或擴展,地址不具體定義。使用枚舉變量讓編譯器自動(dòng)生成。用戶(hù)可以include的這個(gè)變量定義,使用枚舉地址設置和獲取數據。
int32_t get_parameter(int address)函數地址枚舉變量定義如下:
獲取實(shí)時(shí)數據結構
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,
AFE_GET_VRMS,
AFE_GET_IRMS,
AFE_GET_POWER_FACTOR,
AFE_GET_FREQUENCY,
AFE_GET_ENERGY_MODE,
AFE_GET_STARTUP_I,
AFE_GET_PULSE_CONST,
AFE_GET_POWER_GAINA0,
AFE_GET_PHASEOFFSET_A0,
AFE_GET_VGAINA,
AFE_GET_IGAINA,
AFE_GET_IOFFSETA,
};
以下對每個(gè)地址進(jìn)行解析:
AFE_GET_ACTIVE_POWER
描述:有功功率
單位:10mW
AFE_GET_REACTIVE_POWER
描述:無(wú)功功率
單位:10mVar
AFE_GET_APPARENT_POWER
描述:視在功率
單位:10mVA
AFE_GET_VRMS
描述:電壓有效值
單位:10mV
AFE_GET_IRMS
描述:電流有效值
單位:1mA
AFE_GET_POWER_FACTOR
描述:功率因數
單位:0.0001
AFE_GET_ACTIVE_ENERGY
描述:兩回路中較大有功電能脈沖數
單位:依賴(lài)脈沖常數
AFE_GET_REACTIVE_ENERGY
描述:兩回路中較大無(wú)功電能脈沖數
單位:依賴(lài)脈沖常數
AFE_GET_FREQUENCY
描述:系統頻率
單位:0.01Hz
AFE_GET_POWER_GAINA0
描述:功率增益
AFE_GET_PHASEOFFSET_A0
描述:電壓電流角差補償
AFE_GET_VGAINA
描述:電壓增益
AFE_GET_IGAINA
描述:電流增益
AFE_GET_IOFFSETA
描述:電流偏置
單位:1mA
AFE_GET_POFFSETA
描述:功率偏置
單位:10mW
AFE_GET_ENERGY_MODE
描述:能量累計模式
單位:0絕對值累計1正能量累計
ZHCA501–Jan2013
描述:?jiǎn)?dòng)電流
單位:1mA
AFE_SET_PULSE_CONST
描述:脈沖常數
獲取實(shí)時(shí)數據結構
enum set_parameter_table
{
AFE_SET_BASE = 0x00,
AFE_SET_POWER_GAINA0,
AFE_SET_PHASEOFFSET_A0,
AFE_SET_VGAINA,
AFE_SET_STARTUP_I,
AFE_SET_FREQUENCY,
AFE_SET_SAMPLES_10S,
AFE_SET_IGAINA,
AFE_SET_IOFFSETA,
AFE_SET_POFFSETA,
AFE_SET_ENERGY_MODE,
AFE_SET_PULSE_CONST,
AFE_SET_CAL_INIT,
};
AFE_SET_POWER_GAINA0
描述:功率增益
AFE_SET_PHASEOFFSET_A0
描述:電壓電流角差補償
AFE_SET_VGAINA
描述:電壓增益
AFE_SET_STARTUP_I
描述:?jiǎn)?dòng)電流
單位:1mA
AFE_SET_IGAINA
描述:電流增益
AFE_SET_IOFFSETA
描述:電流偏置
單位:1mA
AFE_SET_POFFSETA
描述:功率偏置
單位:10mW
AFE_SET_PULSE_CONST
描述:脈沖常數
AFE_SET_CAL_INIT
描述:校表初始化
AFE_SET_CAL_END
描述:校表結束
AFE_SET_SAVE_FUNC
描述:用戶(hù)設置校表數據保存函數
3 校表介紹
3.1 校表寄存器
校表寄存器在火線(xiàn)零線(xiàn)等同對待。
功率增益寄存器
電壓電流角差補償寄存器
有功偏置寄存器
電流增益寄存器
電流偏置寄存器
電壓增益寄存器
3.2 校表方法
本計量庫提供了專(zhuān)門(mén)的接口對計量參數進(jìn)行校準。校表軟件在pc端運行,通過(guò)串口通訊,進(jìn)行參數設置。具體操作可參考示例代碼。
3.2.1 功率增益及偏置校準
功率增益校準可以進(jìn)行單點(diǎn)和兩點(diǎn)校準。當單點(diǎn)校準時(shí),功率偏置默認為0。當兩點(diǎn)校準時(shí),功率偏置為功率相對0點(diǎn)的截距。校表可以通過(guò)脈沖也可以通過(guò)多次讀取功率值求平均進(jìn)行。兩點(diǎn)校表公式如下:(最好取100%Ib 和5%Ib兩點(diǎn))
功率增益校驗公式:
EH和EL為大電流和小電流時(shí)功率的誤差。(如100%Ib和5%Ib兩點(diǎn)功率的誤差)NH2L為大電流和小電流的比差。(如NH2L=100%Ib/5%Ib=20)
功率偏置校驗公式:
PGEN是在小電流時(shí)的標準功率值。
無(wú)功的增益和偏置類(lèi)似于有功,可參考有功校準。以下是一個(gè)單點(diǎn)校表的例子,說(shuō)明如何編寫(xiě)校表軟件:
1. EH =0.5%
2. 原始的P1_GAINn=10000
3. 新的P1_GAINn+1=10000/(1+0.5%)=9950
3.2.2 電壓電流角差校準
電壓電流的角度補償使用的是軟件同步。
角差補償使用下面公式
fM是電網(wǎng)頻率。如果fM=50Hz,fm=256×4096=1MHz,每個(gè)步長(cháng)是0.017°,當功率增益和偏置都校準完畢后,才對角差進(jìn)行校準。步驟如下:
1. 在100%Ib點(diǎn),設置功率因數為0.5L。
2. 獲取當前脈沖的誤差E。并將E帶入下面公式
公式計算如下例:
1. E =0.3%
2. 原始的 P1_PHASEn = 6
3. 新的 P1_PHASEn+1 =10+6=16
3.2.3 電壓增益校準
電壓增益校準步驟如下:
1. 將電壓設置成固定的電壓值,如:220V
2. 如下公式
3. 設置VRMS_FACTORn+1 到功率增益寄存器,步驟如下:
1) VRMSGEN = 220V and VRMSmeasure = 219V
2) 原始的 VRMS_FACTORn = 2000
3) 新的 VRMS_FACTORn+1 =2000*220/219=2009
3.2.4 電流增益校準
此校準類(lèi)同電壓增益校準。
3.3 校表軟件使用
3.3.1 校表軟件界面介紹
圖4 校表軟件界面
圖4的校表軟件界面分為5個(gè)模塊:1,串口連接模塊;2,實(shí)時(shí)數據模塊;3,校正數據設置模塊;4,校正數據讀出模塊;5、通訊數據模塊。
3.3.2 實(shí)時(shí)數據模塊使用
實(shí)時(shí)數據模塊將電表實(shí)時(shí)測量的數據通過(guò)串口讀出在校表軟件中顯示,實(shí)時(shí)顯示數據包括:Voltage(V)有效電壓值(單位:伏特),Current(A)有效電流(單位:安培),Active Power(W)有功功率(單位:瓦特),Reactive Power(Var)無(wú)功功率(單位:乏),Apparent Power(VA)視在功率(單位:伏安),Power Factor 功率因素Frequency(Hz)頻率(單位:赫茲)。點(diǎn)擊Read按鈕,可以顯示電表實(shí)時(shí)測量的數據。
3.3.3 校正數據設置模塊使用
校表軟件目前只支持Voltage Gain有效電壓增益、Current Gain有效電流增益、Power Gain有功功率增益、Phase Offset相位偏置單點(diǎn)校正。默認電壓校正點(diǎn)為:220V有效電壓,電流校正點(diǎn)為:1A有小電流,有功功率校正點(diǎn)為:220W;相位偏置校正點(diǎn)為:220V、1A、0.5L。
校正步驟:
1,使用校表儀器輸出220V有效電壓,1A有效電流,功率因素1.0的信號,送至電表電壓、電流輸入端;
2,在Volage Gain中輸入默認有效電壓校正值220,點(diǎn)擊Setting設置;
3,在Current Gain中輸入默認有效電流校正值1,點(diǎn)擊Setting設置;
4,在Power Gain中輸入默認有功功率校正值220,點(diǎn)擊Setting設置;
5,使用校表儀器輸入有效電壓,1A有效電流,功率因素0.5的信號,送至電表電壓、電流輸入端;
6,在Phase Offset中輸入offset值,一個(gè)單位對應0.02°,輸入一個(gè)數值,然后通過(guò)實(shí)時(shí)數據窗口讀出新的功率因素,反復校正,直至讀出功率因素接近0.5即可;
7,校正完畢后,點(diǎn)擊Save保存數據,電表將最后的校正數據保存至MCU FLASH中。
3.3.4 校正數據讀出模塊使用
校正數據讀出模塊可以通過(guò)串口將電表FLASH存儲的V Gain,I Gain,Phase Offset,P Gain校正數值的讀出。
3.3.5 通訊數據模塊使用
通訊數據模塊實(shí)時(shí)顯示串口收發(fā)的數據。設置過(guò)程中如果出現“Time out!”提示,表示連接超時(shí),應當檢查通訊線(xiàn)路連接,然后重新發(fā)送命令。校正數據設置成功后,通訊數據模塊提示“Set successful!”。通過(guò)按鍵Clear Logs,可以清空通訊數據窗口歷史數據。
4 結論
4.1 硬件平臺
本方案在C2000F280270 Control Pad上進(jìn)行搭建了測試平臺,并在標準的電能表測試設備上進(jìn)行了精度測試。圖5為實(shí)際測試的樣機:
圖5 測試樣機
4.2 軟件資源占用
本方案占用的C2000資源如下表所示。
4.3 測試數據
本方案測試精度如下:
電壓電流頻率
有功功率和無(wú)功功率:
功率因素:
5 參考文獻
[1] TI. TMS320F28027/28026/28023/28022/28021/28020/280200 Piccolo Microcontrollers
[2] Kes Tam. Current-Transformer Phase-Shift Compensation and Calibration.
[3] Percy Yu. MSP430AFE253 test report for China State Grid specification.
評論