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