Sekilas Mengenai PZEM-004T V3.0
Pada artikel ini, kita akan membahas penggunaan atau pemakaian modul PZEM-004T V3.0 yang diinterface atau diprogram dengan menggunakan Arduino UNO atau Arduino Mega2560. Jika menggunakan contoh program dengan Hardware Serial maka diperlukan Arduino Mega2560 karena Arduino UNO Hardware Serialnya sudah digunakan untuk komunikasi dengan Serial Monitor.
Sebagaimana yang sudah saya sampaikan pada artikel sebelumnya, bahwasannya modul PZEM-004T V3.0 merupakan upgrade version dari PZEM-004T V2.0 dan juga protokol untuk komuniksi interface nya juga sudah berbeda, maka library program untuk PZEM-004T V2 tidak bisa digunakan untuk interface dengan PZEM-004T V3.0.
Untuk mengetahui lebih detail dan lengkap mengenai perbedaan maupun kelebihan diantara keduanya, silahkan buka artikel sebelumnya : Mengenal PZEM-004T Modul Elektronik Untuk Alat Pengukuran Listrik
Sedangkan untuk contoh program modul PZEM-004T V2.0 silahkan buka link artikel dibawah :
Contoh Program Interfacing PZEM-004T V2.0 Dengan Menggunakan Arduino
Hardware Yang Dibutuhkan
Pada contoh program modul PZEM-004T V3 ini, dibutuhkan beberapa hardware antara lain :
- Modul PZEM-004T V3.0
- Arduino UNO atau Arduino Mega2560
- Beberapa kabel jumper M-F / F-F
- Beban / Load (bisa menggunakan Lampu TL / Bohlam / LED / Bor Listrik)
- USB to Serial TTL (optional untuk digunakan testing fungsi dengan aplikasi PZEM-004T Master).
Rangkaian / Wiring Diagram
Tabel berikut menunjukkan hubungan atau koneksi antara modul PZEM-004T V3.0 dengan Arduino
PZEM-004T V3.0 | Arduino UNO / Mega2560 |
VCC | +5V |
GND | GND |
TX | RX (Software Serial / Harware Serial) |
RX | TX (Software Serial / Harware Serial) |
Untuk koneksi atau hubungan antara PZEM-004T V3.0 dengan Current Transformer (CT) , Beban / Load dan Arduino secara lengkap bisa dilihat pada gambar dibawah :
Testing Fungsi Modul PZEM-004T V3.0
Ada kalanya ketika kita membuat program dengan Arduino dan setelah diupload ternyata outputnya tidak sesuai dengan yang diharapkan, banyak yang mengeluhkan modul PZEM-004T V3.0 nya rusak atau tidak berfungsi.
Untuk itu sebelum melakukan interfacing modul PZEM-004T V3.0 dengan Arduino, kami menyarankan sebaiknya dilakukan uji fungsi terlebih dahulu terhadap modul PZEM-004T V3.0 nya untuk memastikan bahwasannya modul PZEM-004T V3.0 tersebut tidak rusak atau berfungsi dengan baik.
Download aplikasi untuk testing fungsi modul PZEM-004T V3.0 pada link berikut :
Selanjutnya ekstrak / unzip file yang sudah didownload tadi, kemudian register file : isAnalogLibrary.ocx pada sistem Windows OS PC / Laptop dengan cara berikut :
- Copy file isAnalogLibrary.ocx ke folder : Windows/System32/
- Buka command prompt atau cmd.exe
- ketik : Regsvr32.exe C:\Windows\System32\isAnalogLibrary.ocx
- Jika berhasil, akan muncul notifikasi Registered Successfully
Setelah berhasil melakukan register file : isAnalogLibrary.ocx, selanjutnya jalankan file : PZEM004T-Master.exe untuk melakukan testing apakah modul PZEM-004T V3.0 nya berfungsi atau tidak.
Perlu diketahui, untuk melakukan testing dengan menggunakan aplikasi tersebut, diperlukan hardware USB to Serial TTL yang cukup banyak tersedia di pasaran seperti : tipe CH340, tipe PL2303 dll seperti gambar di bawah.
Setelah modul PZEM-004T V3.0 nya sudah dirangkai baik dengan Beban / Load (bisa Lampu / Bor Listrik) maupun dengan USB to Serial TTL dan pastikan USB to Serial TTL nya sudah dikenali / dideteksi oleh Windows OS, klik Set COM Port kemudian klik Start Measure.
Setelah dilakukan testing atau uji fungsi dan dipastikan modul PZEM-004T V3.0 nya berfungsi dengan baik, bisa dilanjutkan dengan membuat program dengan Arduino maupun mikrontroller lainnya.
Code Program
Pada contoh program untuk mengakses atau melakukan interfacing modul PZEM-004T V3.0 menggunakan Arduino ini, kita menggunakan library berikut :
PZEM-004T-v30 atau PZEM-004T-v30
Setelah library tersebut didownload dan diinstall, buka contoh program yang ada dari bawaan library tersebut atau copy paste sketch berikut :
#include <PZEM004Tv30.h> PZEM004Tv30 pzem(11, 12); // Software Serial pin 11 (RX) & 12 (TX) void setup() { Serial.begin(115200); } void loop() { float voltage = pzem.voltage(); if(voltage != NAN){ Serial.print("Voltage: "); Serial.print(voltage); Serial.println("V"); } else { Serial.println("Error reading voltage"); }float current = pzem.current();
if(current != NAN){
Serial.print("Current: ");
Serial.print(current);
Serial.println("A");
} else {
Serial.println("Error reading current");
}
float power = pzem.power();
if(current != NAN){
Serial.print("Power: ");
Serial.print(power);
Serial.println("W");
} else {
Serial.println("Error reading power");
}
float energy = pzem.energy();
if(current != NAN){
Serial.print("Energy: ");
Serial.print(energy,3);
Serial.println("kWh");
} else {
Serial.println("Error reading energy");
}
float frequency = pzem.frequency();
if(current != NAN){
Serial.print("Frequency: ");
Serial.print(frequency, 1);
Serial.println("Hz");
} else {
Serial.println("Error reading frequency");
}
float pf = pzem.pf();
if(current != NAN){
Serial.print("PF: ");
Serial.println(pf);
} else {
Serial.println("Error reading power factor");
}
Serial.println();
delay(2000);
}
Atau contoh yang menggunakan Harware Serial seperti berikut :
#include <PZEM004Tv30.h> PZEM004Tv30 pzem(&Serial3); // Menggunakan Hardware Serial 3 void setup() { Serial.begin(115200); } void loop() { float voltage = pzem.voltage(); if(voltage != NAN){ Serial.print("Voltage: "); Serial.print(voltage); Serial.println("V"); } else { Serial.println("Error reading voltage"); }float current = pzem.current();
if(current != NAN){
Serial.print("Current: ");
Serial.print(current);
Serial.println("A");
} else {
Serial.println("Error reading current");
}
float power = pzem.power();
if(current != NAN){
Serial.print("Power: ");
Serial.print(power);
Serial.println("W");
} else {
Serial.println("Error reading power");
}
float energy = pzem.energy();
if(current != NAN){
Serial.print("Energy: ");
Serial.print(energy,3);
Serial.println("kWh");
} else {
Serial.println("Error reading energy");
}
float frequency = pzem.frequency();
if(current != NAN){
Serial.print("Frequency: ");
Serial.print(frequency, 1);
Serial.println("Hz");
} else {
Serial.println("Error reading frequency");
}
float pf = pzem.pf();
if(current != NAN){
Serial.print("PF: ");
Serial.println(pf);
} else {
Serial.println("Error reading power factor");
}
Serial.println();
delay(2000);
}
Setelah sketch program diatas diupload pada board Arduino, buka Serial Monitor pada Baudrate : 115200. Jika semua berfungsi dengan baik, maka data-data pembacaan oleh modul PZEM-004T V3.0 akan ditampilkan pada window Serial Monitor.
++++++++ Semoga Bermanfaat ++++++++
Keluaran yang saya dapatkan selalu NaN, itu kenapa ya pak ?,
saya beli 2, keduanya NaN semua, sudah saya pastikan saya melakukan wiring dengan tepat
Coba dites dulu dengan program : PZEM004T-Master.exe yg bisa didownload pd artikel
Bang, Kalau reset energy counter code nya gmna.?
Kalau pake python code nya gmn,.?
Untuk Reset Energy kan sudah ada fungsinya, tinggal manggil aja pzem.resetEnergy();
Halo.. saya sudah mengetes dengan menggunakan master.exe. Namun, disitu bermasalah di com port. Padahal port ttl-usb sudah disesuaikan di device manager. Boleh dibantu ka? Trims
Pastikan Com Port dari USB to TTL nya tidak diakses oleh aplikasi yg lain semisal Arduino IDE atau Hyperterminal atau lainnya. Dan pastikan juga USB to TTL nya berfungsi dgn baik, cb diganti yg lain atau kl ada 2, tes komunikasi antar USB to TTL dgn program seperti Hyperterminal u/ memastikan USB to TTL nya berfungsi.
Bang kok sensor arus tidak terbaca ya, display arus selalu 0
kalau tegangan sudah sesuai
Coba dipastikan lagi wiring nya sudah betul trus coba dengan Load/beban yang lebih besar dayanya semisal Setrika dan dicek dulu dengan aplikasi PZEM004T-Master.exe
bang, itu untuk pilihan callibration passwordnya diisi apa ya?
PZEM-004T sudah dikalibrasi dari pabrik nya
Apakah aplikasi pzem004t master.exe hanya untuk versi 3?
Kebetulan pzem_master.exe yg ini mmg versi terakhir jd cocoknya u/ PZEM-004T V3.0. Mestinya ada jg yg u/ PZEM-004T yg lama, tentunya file pzem_master.exe nya jg harus yg lama karena sudah beda protokol komunikasi nya.
Jika menggunakan NodeMCU apakah codingan nya sama?
Sama