處理 220V-AC 電源電壓和測量 AC 負載的真實功率、電壓和電流參數(shù)一直被認為是電子設(shè)計人員在電路設(shè)計和計算方面面臨的一大挑戰(zhàn)。當我們處理電感負載時,情況會變得更加復雜,因為電感負載會改變交流信號的正弦波形(電阻負載不會)。
在這篇文章中,我介紹了一種可以測量負載的交流電壓、RMS 電流、有功功率、視在功率、功率因數(shù)和能耗 (KWh) 的電路。我使用了一個 Arduino-Nano 板作為處理器,以使其對初學者來說更具教育性和吸引力。該設(shè)備獨立測量上述參數(shù)并在 4*20 LCD 上顯示結(jié)果。測量錯誤率約為 0.5% 或更低。
A. 電路分析
圖 1 顯示了交流電能測量電路的示意圖。很明顯,該設(shè)計的兩個主要組件是 Arduino-Nano 板 和 HLW8032 芯片。
圖1-數(shù)字式交流電能表裝置示意圖
A-1:電源輸入
我開始從上到下解釋原理圖。P1 和 P2 是電源連接器,可為 220V 電??源和負載提供牢固的螺釘連接。C1 是一個 100nF X2 額定電容,可降低輸入噪聲。F1、R1 和 R2 提供電源輸入保護。T1 是一種共模扼流圈,也用于降低共模噪聲。
R3、R4、R5 和 R6 是 4 毫歐 2512 電阻器,并聯(lián)構(gòu)成一個 4W 1 毫歐分流電阻器。您應該從 1% 的 2512 封裝電阻器中選擇這些電阻器。如果由于某種原因您無法使用這些電阻器,則可以并聯(lián)使用兩個 2 毫歐電阻器,但是,上述組合在精度和額定分流功率方面提供了最佳結(jié)果。
A2:非隔離電源
HLW8032 芯片的電源應該是非隔離的,參考市電。原因是芯片必須直接讀取分流電阻和電源電壓值。C2 是一個 470nF-630V 電容器,用于降低電源電壓,R8 用于限制電流。R7減少C2的放電時間。D1 和 D2 為整流二極管,D3 為 15V 穩(wěn)壓二極管,用于將電壓調(diào)節(jié)在 15V 左右。C4、C5 和 R9 創(chuàng)建一個低通 RC 濾波器,以盡可能降低噪聲。
REG-1 是 TS2937CW50 [3] 5V 線性穩(wěn)壓器。很明顯,它將電壓調(diào)節(jié)并固定為 5V。C3 是輸出電容,它可以降低穩(wěn)壓器噪聲。
A-3:隔離供應
該部分由 U1 組成,即 HLK-PM01 交直流轉(zhuǎn)換模塊。它為 Arduino 板提供隔離電源。C6、C7 和 L1 提供低通 Pi 濾波器以降低 U1 的輸出噪聲。
A-4:能量計
這部分的主要部件是IC1,它是HLW8032芯片。數(shù)據(jù)表顯示:“HLW8032是一款高精度電能計量IC,采用CMOS工藝制造,主要應用于單相應用。它可以測量線路電壓和電流,并計算有功功率、視在功率和功率因數(shù)。裝置內(nèi)部集成了兩個∑-Δ型ADC和一個高精度電能計量內(nèi)核。HLW8032可以通過UART口進行數(shù)據(jù)通信,采用5V供電,內(nèi)置3.579M晶振,采用8Pin的SOP封裝。HLW8032具有高精度、低功耗、高可靠性、環(huán)境適應性強等特點,適用于單相兩線制電力用戶的電能計量?!?/p>
C8 和 C9 是去耦電容。C10、C11、R12 和 R15 是分流電阻讀取網(wǎng)絡的一部分(參見數(shù)據(jù)表)。R16.。.R20 和 C12 也是電壓測量網(wǎng)絡的一部分(參見數(shù)據(jù)表)。IC2 和 IC3 是數(shù)字隔離器(光耦合器),用于將數(shù)字串行信號傳輸?shù)?Arduino 板。R10 和 R13 是上拉電阻。
A-5。Arduino納米
AR1 是著名的 Arduino-nano 板,IDC1 是 2*8 IDC 連接器,用于將 4*20 綠色背光字符 LCD 連接到板。R23…R26 是下拉電阻,R22 調(diào)節(jié) LCD 的對比度。C13 和 C14 是去耦電容。
B. PCB 布局
圖 2 顯示了設(shè)計的 PCB 布局。它是兩層 PCB 板,我使用了各種 SMD 和通孔組件。圖 3 顯示了 PCB 板和裝配圖的 3D 視圖。
圖 2-數(shù)字電能表電路的PCB布局
圖 3-PCB 板和裝配圖的 3D 視圖
C. 校準
要校準設(shè)備,您只需要一個電阻負載(例如經(jīng)典燈泡,而不是 LED 燈泡!)和一個精確的 RMS 萬用表。我使用了 Silent SDM3045X 萬用表(圖 4)。請觀看 YouTube 視頻了解更多詳情。
圖 4-RMS電流測量(校準過程)
完成該步驟后,您必須更改“HLW8032.h”頭文件(Arduino 庫)中的分流電阻值。轉(zhuǎn)到第 62 行并修改“float CurrentRF”值。就我而言,最佳值是 0.0012。
D. 代碼
Arduino 代碼已插入到下面的框中。您還可以從我自己的 GitHub 存儲 [4] 下載 Arduino 庫。我假設(shè)您知道如何手動安裝 Arduino 庫。這很容易。
#include "HLW8032.h"
#include
#define SYNC_TIME 500
const int rs = 12, en = 11, d4 = 10, d5 = 9, d6 = 8, d7 = 7;
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);
static unsigned long start_time, end_time;
HLW8032 HL;
void setup()
{
? lcd.begin(20, 4);
? HL.begin(Serial, 4);
? start_time = millis();
}
void loop()
{
? end_time = millis();
? HL.SerialReadLoop();
? if (end_time - start_time > SYNC_TIME)
? {
? ? if (HL.SerialRead == 1)
? ? {
? ? ? lcd.setCursor(0, 0);
? ? ? lcd.print("Voltage[V]: ");
? ? ? lcd.setCursor(12, 0);
? ? ? lcd.print(HL.GetVol() * 0.001, 2);
? ? ? lcd.setCursor(0, 1);
? ? ? lcd.print("Current[A]: ");
? ? ? lcd.setCursor(12, 1);
? ? ? lcd.print(HL.GetCurrent(), 2);
? ? ? lcd.setCursor(0, 2);
? ? ? lcd.print("Power[W]: ");
? ? ? lcd.setCursor(10, 2);
? ? ? lcd.print(HL.GetActivePower() * 0.001, 2);
? ? ? lcd.setCursor(0, 3);
? ? ? lcd.print("Energy[KWh]: ");
? ? ? lcd.setCursor(13, 3);
? ? ? lcd.print(HL.GetKWh(), 2);
? ? }
? ? start_time = end_time;
? }
}
E. 測試
校準后,您可以在任何您喜歡的地方使用該設(shè)備。圖 5 顯示了 LCD 屏幕上的打印信息。在您的工作場所和家中,此設(shè)備有很多用例。玩得開心!
圖 5-交流負載的計算參數(shù)(電壓、電流、功率、KWh)
F. 液晶顯示器
使用的 LCD 是標準的綠色背光 4*20 字符 LCD。LCD和板子之間的連接方式是直接點對點連接。這意味著IDC的第一個引腳(左側(cè))從左側(cè)(VSS)連接到LCD的第一個引腳。圖 6 顯示了 LCD 接線。
圖 6-4*20 LCD連接板
G. 物料清單
圖 7 顯示了物料清單。Octopart 網(wǎng)站是構(gòu)建任何類型 BOM 的非常好的工具。
圖 7-材料清單
評論
查看更多