

The PZEM-022 is a multifunctional energy meter designed for monitoring and measuring key electrical parameters in AC circuits. It provides accurate readings of voltage, current, power, energy consumption, and frequency. Equipped with a digital display, the PZEM-022 allows for real-time monitoring, while its UART communication interface enables data logging and remote monitoring applications. This makes it an ideal choice for industrial automation, home energy management systems, and laboratory testing setups.








The PZEM-022 is designed to operate in a wide range of AC applications. Below are its key technical specifications:
| Parameter | Specification |
|---|---|
| Voltage Range | 80V - 260V AC |
| Current Range | 0A - 100A (with external current transformer) |
| Power Range | 0W - 22kW |
| Energy Range | 0kWh - 9999kWh |
| Frequency Range | 45Hz - 65Hz |
| Accuracy | ±0.5% |
| Communication Protocol | UART (9600 baud rate) |
| Power Supply | Self-powered (via measured AC line) |
| Display Type | Digital LCD |
| Operating Temperature | -10°C to 60°C |
| Dimensions | 79mm x 43mm x 48mm |
The PZEM-022 has a simple wiring interface for both power measurement and UART communication. Below is the pin configuration:
| Terminal | Description |
|---|---|
| L (Line) | Connect to the live AC wire |
| N (Neutral) | Connect to the neutral AC wire |
| Pin | Description |
|---|---|
| TX | Transmit data (connect to RX of microcontroller) |
| RX | Receive data (connect to TX of microcontroller) |
| GND | Ground (common ground with microcontroller) |
Power Measurement Setup:
Current Transformer (CT) Installation:
UART Communication:
Below is an example Arduino sketch to read data from the PZEM-022 using UART communication:
#include <SoftwareSerial.h>
// Define RX and TX pins for SoftwareSerial
SoftwareSerial pzemSerial(10, 11); // RX = pin 10, TX = pin 11
void setup() {
Serial.begin(9600); // Initialize Serial Monitor
pzemSerial.begin(9600); // Initialize PZEM-022 communication
Serial.println("PZEM-022 Energy Meter Example");
}
void loop() {
// Request data from PZEM-022
pzemSerial.write(0xB0); // Example command to request data (check datasheet)
delay(100); // Wait for response
// Read response from PZEM-022
while (pzemSerial.available()) {
byte data = pzemSerial.read();
Serial.print("Received: ");
Serial.println(data, HEX); // Print data in hexadecimal format
}
delay(1000); // Wait 1 second before next request
}
0xB0 command with the appropriate command based on the PZEM-022 datasheet.No Data Received via UART:
Incorrect Measurements:
Display Not Turning On:
UART Communication Interference:
Q1: Can the PZEM-022 measure DC circuits?
A1: No, the PZEM-022 is designed specifically for AC circuits and cannot measure DC parameters.
Q2: Is the PZEM-022 compatible with 3.3V microcontrollers?
A2: Yes, but you will need a logic level converter to safely interface the 5V UART signals with a 3.3V microcontroller.
Q3: Can I reset the energy reading to zero?
A3: Yes, the PZEM-022 supports a reset command via UART. Refer to the datasheet for the specific command.
Q4: What is the maximum cable length for the CT?
A4: The CT cable should ideally be kept under 1 meter to minimize signal loss and interference.
By following this documentation, you can effectively integrate the PZEM-022 into your projects for accurate energy monitoring and data logging.