Tutorial Lengkap PZEM 004T V4 Arduino UNO Dan Arduino MEGA

Pengertian & Fungsi PZEM-004T V4

PZEM-004T adalah modul elektronik yang digunakan untuk mengukur parameter listrik AC seperti:

  • Tegangan (Volt)
  • Arus (Ampere)
  • Daya (Watt)
  • Energi (kWh)
  • Frekuensi (Hz)
  • Faktor daya (Power Factor)

Semua data ini bisa dibaca lewat komunikasi serial TTL oleh mikrokontroler seperti Arduino. Modul ini cocok buat monitoring jaringan listrik di rumah, panel surya, IoT, dan sistem proteksi otomatis.


Prinsip Kerja

Secara umum, PZEM-004T bekerja sebagai berikut:

  1. Sensing:
    Modul terhubung langsung garis listrik AC (biasanya 80 – 260 V AC) untuk membaca tegangan & arus. Arus diukur lewat current transformer (CT) internal atau eksternal.
  2. Pengolahan Sinyal:
    Sensor analog (tegangan & arus) diproses oleh rangkaian internal dan dikonversi menjadi digital.
  3. Komunikasi Serial:
    Nilai-nilai tadi dikirim ke mikrokontroler via TTL Serial (5 V, 9600 baud) sehingga bisa diolah lebih lanjut di Arduino.

Spesifikasi Utama

ParameterNilai
Tegangan operasi80 – 260 V AC
Rentang Arus0 – 100 A (dengan CT)
Rentang Daya0 – 22 kW
Energi0 – 9999 kWh
Frekuensi45 – 65 Hz
Akurasi±0.5 %
KomunikasiTTL Serial 9600 bps
Tegangan logik5 V TTL

Kelebihan

  • Mengukur banyak parameter listrik sekaligus (tegangan, arus, daya, energi, dll).
  • Output bisa langsung dibaca oleh mikrocontroller lewat serial.
  • Tidak perlu sensor tegangan/arus terpisah → semua sudah dalam satu modul.

Kekurangan / Hal yang Perlu Diwaspadai

  • Harus dihubungkan ke listrik bertegangan tinggi AC, jadi membutuhkan kehati-hatian tinggi saat pemasangan.
  • Memerlukan pemrograman dan wiring yang benar agar data terbaca.
  • Akurasi meskipun tinggi (~±0.5 %) tetap punya toleransi, jadi tidak setepat alat ukur profesional.

Contoh Penerapan

  1. Monitoring energi rumah – lihat berapa konsumsi listrik real-time.
  2. Panel Surya / Solar Power Monitoring – pantau produksi & konsumsi energi.
  3. Sistem IoT / Dashboard online – kirim data ke Blynk/Thingspeak.
  4. Proteksi otomatis – relay buka jika arus berlebih.
  5. Alat pembatas konsumsi listrik – buat proyek energy efficiency.

Wiring PZEM-004T V4 ke Arduino Uno

PZEM-004TArduino Uno
VCC5 V
GNDGND
TXArduino RX (mis: pin 8 SoftwareSerial)
RXArduino TX (mis: pin 9 SoftwareSerial)
#include <SoftwareSerial.h>
#include <PZEM004Tv30.h>

// SoftwareSerial RX: 8, TX: 9
SoftwareSerial pzemSerial(8, 9);
PZEM004Tv30 pzem(pzemSerial);

void setup() {
  Serial.begin(115200);    // Serial Monitor
  pzemSerial.begin(9600);  // PZEM default baud
  Serial.println("PZEM-004T V4 READY");
}

void loop() {
  float voltage   = pzem.voltage();     // V
  float current   = pzem.current();     // A
  float power     = pzem.power();       // W
  float energy    = pzem.energy();      // kWh
  float frequency = pzem.frequency();   // Hz
  float pf        = pzem.pf();          // Power Factor

  if (isnan(voltage)) {
    Serial.println("PZEM TIDAK TERBACA!");
  } else {
    Serial.print("Tegangan  : "); Serial.print(voltage);   Serial.println(" V");
    Serial.print("Arus      : "); Serial.print(current);   Serial.println(" A");
    Serial.print("Daya      : "); Serial.print(power);     Serial.println(" W");
    Serial.print("Energi    : "); Serial.print(energy);    Serial.println(" kWh");
    Serial.print("Frekuensi : "); Serial.print(frequency); Serial.println(" Hz");
    Serial.print("PF        : "); Serial.println(pf);
  }
  Serial.println("-----------------------");
  delay(1000);
}

Wiring PZEM-004T V4 ke Arduino Mega

Modul PZEM-004TArduino Mega
VCC5V
GNDGND
TX (modul)RX2 (pin 16)
RX (modul)TX2 (pin 17)
include <PZEM004Tv30.h>
#include <SoftwareSerial.h> // Tidak digunakan di Mega, hanya untuk info

// Gunakan Serial2 (pin 16 = TX2, pin 17 = RX2)
PZEM004Tv30 pzem(&Serial2);

void setup() {
  Serial.begin(9600);    // Untuk monitor Serial di PC
  Serial2.begin(9600);   // Untuk komunikasi ke PZEM-004T V3
  delay(1000);

  Serial.println("Monitoring PZEM-004T V3 dengan Arduino Mega (Serial2)");

  IPAddress ip = pzem.getAddress();
  Serial.print("PZEM Alamat IP: "); Serial.println(ip);
}

void loop() {
  float voltage = pzem.voltage();
  float current = pzem.current();
  float power   = pzem.power();
  float energy  = pzem.energy();
  float frequency = pzem.frequency();
  float pf = pzem.pf();

  if (isnan(voltage)) {
    Serial.println("Gagal membaca data dari PZEM-004T.");
  } else {
    Serial.print("Tegangan   : "); Serial.print(voltage); Serial.println(" V");
    Serial.print("Arus       : "); Serial.print(current); Serial.println(" A");
    Serial.print("Daya       : "); Serial.print(power); Serial.println(" W");
    Serial.print("Energi     : "); Serial.print(energy); Serial.println(" Wh");
    Serial.print("Frekuensi  : "); Serial.print(frequency); Serial.println(" Hz");
    Serial.print("Faktor Daya: "); Serial.println(pf);
    Serial.println("------------------------------------");
  }

  delay(2000);
}

Leave a Reply

Your email address will not be published. Required fields are marked *