The CT PZEM004T is a multifunctional energy meter designed to measure key electrical parameters such as voltage, current, power, energy, and frequency. It is specifically built to work with current transformers (CTs) for monitoring AC electrical systems. This component is widely used in energy management systems, industrial automation, and home energy monitoring applications. Its ability to provide real-time data makes it an essential tool for analyzing energy efficiency and optimizing power usage.
The CT PZEM004T is a compact and versatile module with the following key specifications:
Parameter | Specification |
---|---|
Voltage Range | 80V - 260V AC |
Current Range | 0A - 100A (with external CT) |
Power Range | 0W - 22kW |
Energy Range | 0kWh - 9999kWh |
Frequency Range | 45Hz - 65Hz |
Communication Protocol | UART (9600 baud rate) |
Power Supply | Self-powered (via measured AC voltage) |
Accuracy | ±0.5% |
Dimensions | 48mm x 29mm x 21mm |
The CT PZEM004T module has a simple pinout for easy integration into circuits. Below is the pin configuration:
Pin Name | Description |
---|---|
VCC | Power input (5V DC) for UART communication |
GND | Ground connection |
TX | UART Transmit pin (connects to RX of microcontroller) |
RX | UART Receive pin (connects to TX of microcontroller) |
AC Input | Connects to the AC voltage to be measured |
CT Input | Connects to the current transformer (CT) |
Below is an example Arduino sketch to read data from the CT PZEM004T using UART communication:
#include <SoftwareSerial.h>
// Define RX and TX pins for SoftwareSerial
SoftwareSerial pzemSerial(10, 11); // RX = pin 10, TX = pin 11
// PZEM004T communication commands
byte readVoltage[] = {0xB0, 0xC0, 0xA8, 0x01, 0x01, 0x00, 0x1A};
byte response[7]; // Buffer to store the response
void setup() {
Serial.begin(9600); // Initialize Serial Monitor
pzemSerial.begin(9600); // Initialize SoftwareSerial for PZEM004T
Serial.println("PZEM004T Test");
}
void loop() {
// Send voltage read command
pzemSerial.write(readVoltage, sizeof(readVoltage));
delay(100); // Wait for the response
// Read response from PZEM004T
if (pzemSerial.available() >= 7) {
for (int i = 0; i < 7; i++) {
response[i] = pzemSerial.read();
}
// Calculate voltage from response
float voltage = (response[2] << 8 | response[3]) / 10.0;
Serial.print("Voltage: ");
Serial.print(voltage);
Serial.println(" V");
}
delay(1000); // Wait 1 second before next reading
}
No Data Received via UART
Incorrect Voltage or Current Readings
Module Not Powering On
Communication Errors
Q: Can the PZEM004T measure DC voltage or current?
A: No, the PZEM004T is designed specifically for AC systems and cannot measure DC parameters.
Q: What is the maximum current the module can measure?
A: The module can measure up to 100A when used with the appropriate current transformer (CT).
Q: Can I use multiple PZEM004T modules with one microcontroller?
A: Yes, you can connect multiple modules by assigning unique addresses to each module using the UART protocol.
Q: Is the module safe to use with high-voltage systems?
A: Yes, but proper safety precautions and electrical isolation must be implemented to ensure safe operation.