Senin, Januari 18, 2021
mikroavr.com
No Result
View All Result
  • Login
  • Arduino
    • Sensor
    • program Arduino
  • Project
  • Produk
  • IOT
No Result
View All Result
mikroavr
No Result
View All Result
Home IOT

Cara Termudah Monitoring Listrik 3 Phasa dengan Modul ESP32 dan Sensor PZEM-004T v3

Jimmi SitepubyJimmi Sitepu
Februari 21, 2020
0 0
0
Cara Termudah Monitoring Listrik 3 Phasa dengan Modul ESP32 dan Sensor PZEM-004T v3
240
SHARES
1.6k
VIEWS
Share on FacebookShare on Twitter

Sensor PZEM-004T v.3.0

Sensor PZEM-004T v30 adalah sensor yang bisa mengukur beberapa variable listrik, sebuah sensor yang cocok di gunakan untuk mengukur listrik rumahan. Spesifikasi dari sensor ini sebagai berikut:

VoltagePower FactorFrequency
Range nya: 80 – 260VAC
Resolusi: 0.1
Akurasi : 0.5%
Range: 0.00 – 1.00
Resolusi : 0.1
Akurasi: 1%
Range: 45-65Hz
Resolusi: 0.1Hz
Akurasi: 0.5%
CurrentActive PowerActive Energy
Range: 0-100A / 0- 10A
Start: 0.01A(10A) 0.02A(100A)
Resolusi: 0.000A
Akurasi: 0.5%
Range 0 – 2.3kW(10A)
Start: 0.4W
Resolusi: 0.1W
Akurasi: 0.5%
Range: 0 – 9999.99kWh
Resolusi : 1Wh
Akurasi: 0.5%
Spesifikasi Sensor PZEM-004v30

Dengan spesifikasi di atas kita bisa mengukur listrik dengan Arus AC 100A, namun jika ingin mengukur lebih dari itu, maka harus menggunakan sensor CT yang lebih besar, kemudian sensor CT pzem-004v3 mengukur cable sensor CT misalnya sensor CT 300/5. Nilai pengukuran nya di sesuaikan dengan ratio dari sensor CT tersebut.

READ ALSO

LoRa Shield Arduino Support Arduino Uno, Arduino mega dan Arduino Mega128

Enkripsi Data Lora pada Modul ESP32 Lora

Modul PZEM-Mikro

Untuk mempermudah monitoring listrik 3 phase ini, kami mikroavr membuat sebuah modul yang khusus. Fungsi nya mengukur arus dengan sensor pzem-004v3 yang dibaca oleh atmega2560 ( arduino mega) kemudian di kirim ke esp32.

Untuk posting data nya bisa menggunakan sim8000v2 atau akses wifi yang di miliki oleh esp32 itu sendiri. Desain harware nya bisa di lihat pada gambar di bawah ini.

blok diagra modul pzem

Modul di atas di desain dalam satu board. Arduino mega2560 dan esp32 di satukan, kemudian di program dengan usb to serial yang kita desain kita sendiri.

Ketiga sensor pzem-004Tv3 di baca oleh dua hardware serial atmega2560 ( Serial2 dan Serial3) kemudian yang satu nya lagi di baca oleh software serial di pin D3 dan D51. Semua data pengukuran di kirim ke ESP32 dengan Serial1.

Desain Hardware dan photo dari controller ini bisa di lihat pada gambar di bawah ini.

Desain controller

Upload Program

Upload program ke esp32 atau ke mega2560 menggunakan usb to serial custome, yang khusus di desain agar langsung di plug ke pcb board. ada dua dip swich merah, satu mode untuk esp32 dan satu mode untuk mega2560. Untuk pemilihan mode bisa di lihat gambar di atas, untuk diswitch sebelah kiri di gunakan untuk mode Arduino mega2560, dan untuk Dip Switch kanan untuk mode ESP32

Order Modul PZEM-MIKRO

DIP SWITCH KIRI UNTUK ARDUINO MEGA2560, DAN DIP SIWTCH KANAN UNTUK ESP32

pemilihan mode program

Untuk mega2560 nya, teman-teman tidak perlu program lagi, karena kami telah memprogram arduino mega2560 nya. Teman-teman hanya perlu program esp32 dengan library yang sudah di buat. Untuk pengujian programakan kita bahas di bawah.

Untuk cara upload progrram bisa di lihat pada gambar di bwah ini. Pemrogram nya sama dengan board esp32 yang ada pada umum nya.

Program Uji ESP32

Baca Sensor

Sebelum membaca data sensor dengan esp32, teman-teman perlu rangkai board controller dengan sensor seperti pada gambar di bawah ini.

Hubungkan sensor CT dan input voltage ke Sensor PZEM-004v3. kemudian geser dip Switch kirim ke on untuk mode program ESP32. Sebelum program ESP32 nya, download dulu library pzem-mikro dibawah ini, cukup clik tombol merah di bawah ini

Download library pzem-mikro

check Example, buka file read_pzem.ino, atau bisa di lihat pada gambar program dib awah ini

#include "pzem_mikro.h";
pzem_mikro pzem(33, 9600);
float curIR, curIS, curIT, Freq;
float voltR, voltS, voltT; 
float pfr,pfs, pft;
float PowerR, PowerS, PowerT;
float KWHR,KWHS, KWHT; 
void setup(){
    Serial.begin(115200);
}

void loop(){
    if(pzem.get_sensor()){
      curIR = pzem.IR();curIS = pzem.IS();curIT = pzem.IT();
      voltR = pzem.VR();voltS = pzem.VS();voltT = pzem.VT();
      Freq = pzem.frequency();    
      pfr = pzem.PFR();pfs = pzem.PFS();pft = pzem.PFT();
      PowerR = pzem.powerR(); PowerS = pzem.powerS(); PowerT = pzem.powerT(); 
      KWHR = pzem.kwhR();KWHS = pzem.kwhS();KWHT = pzem.kwhT();
    }else{
      Serial.println("connection fail");
    }
    
    Serial.print("IR: ");Serial.print(curIR);
    Serial.print(" IS: ");Serial.print(curIS);
    Serial.print(" IT: ");Serial.println(curIT);
    
    Serial.print("VR: ");Serial.print(voltR);
    Serial.print(" VS: ");Serial.print(voltS);
    Serial.print(" VT: ");Serial.println(voltT);
    
    Serial.print("freq: ");Serial.println(Freq);
    
    Serial.print("PFR: ");Serial.print(pfr);
    Serial.print(" PFS: ");Serial.print(pfs);
    Serial.print(" PFT: ");Serial.println(pft);

    Serial.print("powerR: ");Serial.print(PowerR);
    Serial.print(" powerS: ");Serial.print(PowerS);
    Serial.print(" powerT: ");Serial.println(PowerT);
    
    Serial.print("kwhR: ");Serial.print(KWHR);
    Serial.print(" kwhS: ");Serial.print(KWHS);
    Serial.print(" kwhT: ");Serial.println(KWHT);
    Serial.println("---");
    delay(1000);
}


Buka Serial monitor Arduino Ide, disana akan terbaca data data sensor. Silahkan teman-teman olah program di atas untuk keperluan masing masing

IoT Blynk ESP32 ( wifi )

Karena menggunakan ESP32, bisa langsung di koneksikan ke wifi, Program nya mengguanakn dua file, satu modem.h satu iotblynk.ino, bisa langsung buka di example. atau program nya seperti di bawah ini.

file modem.h

#include "WiFi.h";
#include "WiFiClient.h";
#include "BlynkSimpleEsp32.h";

char auth[] = "your-token-blynk";
char ssid[] = "ssid-wifi";
char pass[] = "pass-wifi";

void init_modem(){
  Blynk.begin(auth, ssid, pass);
}


file iot_blynk.ino

#include <pzem_mikro.h>
#include "modem.h"

pzem_mikro pzem(33, 9600);

float curIR, curIS, curIT, Freq;
float voltR, voltS, voltT; 
float pfr,pfs, pft;
float PowerR, PowerS, PowerT;
float KWHR,KWHS, KWHT; 
unsigned long cur_time, old_time;

void setup(){
    Serial.begin(115200);
    init_modem();
}

void loop(){
   Blynk.run();
   cur_time = millis();
   if(cur_time - old_time >= 2000){   
      if(pzem.get_sensor()){
        curIR = pzem.IR();curIS = pzem.IS();curIT = pzem.IT();
        voltR = pzem.VR();voltS = pzem.VS();voltT = pzem.VT();
        Freq = pzem.frequency();    
        pfr = pzem.PFR();pfs = pzem.PFS();pft = pzem.PFT();
        PowerR = pzem.powerR(); PowerS = pzem.powerS(); PowerT = pzem.powerT(); 
        KWHR = pzem.kwhR();KWHS = pzem.kwhS();KWHT = pzem.kwhT();
      }else{
        Serial.println(F("connection fail"));
        pzem.rstPZEM();
      }
      print_data();     
      Blynk.virtualWrite(V0, voltR);
      Blynk.virtualWrite(V1, curIR);
      Blynk.virtualWrite(V2, pfr);
      Blynk.virtualWrite(V3, PowerR);
      Blynk.virtualWrite(V4, KWHR);
      old_time = cur_time;
  }
    delay(1000);
}

void print_data(){
  Serial.print("IR: ");Serial.print(curIR);
    Serial.print(" IS: ");Serial.print(curIS);
    Serial.print(" IT: ");Serial.println(curIT);
    
    Serial.print("VR: ");Serial.print(voltR);
    Serial.print(" VS: ");Serial.print(voltS);
    Serial.print(" VT: ");Serial.println(voltT);
    
    Serial.print("freq: ");Serial.println(Freq);
    
    Serial.print("PFR: ");Serial.print(pfr);
    Serial.print(" PFS: ");Serial.print(pfs);
    Serial.print(" PFT: ");Serial.println(pft);

    Serial.print("powerR: ");Serial.print(PowerR);
    Serial.print(" powerS: ");Serial.print(PowerS);
    Serial.print(" powerT: ");Serial.println(PowerT);
    
    Serial.print("kwhR: ");Serial.print(KWHR);
    Serial.print(" kwhS: ");Serial.print(KWHS);
    Serial.print(" kwhT: ");Serial.println(KWHT);
    Serial.println("---");

}



IoT Blynk SIM800

Seperti Keterangan di atas, bahwa modol PZEM-MIKRO ini juga di lengkapi dengan sim800. Untuk memonitoring listrik menggunakan sim800 hampir mirip program nya dengan contoh Iot Blynk di wifi, tinggal dirubah sedikit di file modem.h nya. Sebelum upload program di bawah ini, download dulu library tinygsm, tekan tombol merah di bawah ini.

Download library tinygsm.h

file modem.h

#define BLYNK_PRINT Serial
#define SerialAT Serial2
#define RXD2 27
#define TXD2 26

#define TINY_GSM_MODEM_SIM800
#include "TinyGsmClient.h";
#include "BlynkSimpleTinyGSM.h";

TinyGsm modem(SerialAT);

char auth[] = "your-token-blynk";
char apn[]  = "YourAPN";
char user[] = "";
char pass[] = "";

void init_modem(){
  SerialAT.begin(115200, SERIAL_8N1, RXD2, TXD2);
  delay(1000);
  //--------change baud to 4800 ------------
    SerialAT.println("AT+IPR=4800");
  while(SerialAT.available()>0){
    Serial.print(SerialAT.readString());
  }
  delay(2000);
  SerialAT.println("AT&W");
  while(SerialAT.available()>0){
    Serial.print(SerialAT.readString());
  }
  delay(2000);
  SerialAT.begin(4800, SERIAL_8N1, RXD2, TXD2);
  SerialAT.println("AT+IPR?");
  while(Serial1.available()>0){
    Serial.print(Serial1.readString());
  }
  delay(2000);
  //--------------------
  
  Serial.println("Initializing modem...");
  modem.restart();
  Blynk.begin(auth, modem, apn, user, pass);
}

iot_blynk_sim800.ino

#include "pzem_mikro.h";
#include "modem.h"
pzem_mikro pzem(33, 9600); // jangan rubah nilai ini

float curIR, curIS, curIT, Freq;
float voltR, voltS, voltT; 
float pfr,pfs, pft;
float PowerR, PowerS, PowerT;
float KWHR,KWHS, KWHT; 
unsigned long cur_time, old_time;

void setup(){
    Serial.begin(115200);
    init_modem();
}

void loop(){
     Blynk.run();
   cur_time = millis();
   if(cur_time - old_time >= 2000){   
      if(pzem.get_sensor()){
        curIR = pzem.IR();curIS = pzem.IS();curIT = pzem.IT();
        voltR = pzem.VR();voltS = pzem.VS();voltT = pzem.VT();
        Freq = pzem.frequency();    
        pfr = pzem.PFR();pfs = pzem.PFS();pft = pzem.PFT();
        PowerR = pzem.powerR(); PowerS = pzem.powerS(); PowerT = pzem.powerT(); 
        KWHR = pzem.kwhR();KWHS = pzem.kwhS();KWHT = pzem.kwhT();
      }else{
        Serial.println(F("connection fail"));
        pzem.rstPZEM();
      }
      print_data();     
      Blynk.virtualWrite(V0, voltR);
      Blynk.virtualWrite(V1, curIR);
      Blynk.virtualWrite(V2, pfr);
      Blynk.virtualWrite(V3, PowerR);
      Blynk.virtualWrite(V4, KWHR);
      old_time = cur_time;
  }
    delay(1000);
}
void print_data(){
    Serial.print("IR: ");Serial.print(curIR);
    Serial.print(" IS: ");Serial.print(curIS);
    Serial.print(" IT: ");Serial.println(curIT);
    
    Serial.print("VR: ");Serial.print(voltR);
    Serial.print(" VS: ");Serial.print(voltS);
    Serial.print(" VT: ");Serial.println(voltT);
    
    Serial.print("freq: ");Serial.println(Freq);
    
    Serial.print("PFR: ");Serial.print(pfr);
    Serial.print(" PFS: ");Serial.print(pfs);
    Serial.print(" PFT: ");Serial.println(pft);

    Serial.print("powerR: ");Serial.print(PowerR);
    Serial.print(" powerS: ");Serial.print(PowerS);
    Serial.print(" powerT: ");Serial.println(PowerT);
    
    Serial.print("kwhR: ");Serial.print(KWHR);
    Serial.print(" kwhS: ");Serial.print(KWHS);
    Serial.print(" kwhT: ");Serial.println(KWHT);
    Serial.println("---");

}

Sekian dulu tulisan kita dari mikroavr. Jika tertarik ingin memiliki controller di atas, tinggal clik tombol merah di bawah ini.

Pesan modul PZEM

Thanks (mikroavr.com)

Share240TweetShare
Previous Post

Membaca Sensor PZEM-004T v3 dengan ESP32

Next Post

ESP32 Telegram Bot Untuk Relay 8 channel dan Sensor DHT21

Jimmi Sitepu

Jimmi Sitepu

Hobbyist Embedded System, Robotic, IOT and write all about them. So we have nice quote "Learning and Sharing"

Related Posts

LoRa Shield Arduino Support Arduino Uno, Arduino mega dan Arduino Mega128
Arduino

LoRa Shield Arduino Support Arduino Uno, Arduino mega dan Arduino Mega128

Oktober 15, 2020
Enkripsi Data Lora pada Modul ESP32 Lora
Arduino

Enkripsi Data Lora pada Modul ESP32 Lora

Maret 1, 2020
ESP32 LoRa Node 923MhZ dengan ADC yang lebih Baik dan Stabil
Arduino

ESP32 LoRa Node 923MhZ dengan ADC yang lebih Baik dan Stabil

Februari 23, 2020
ESP32 Telegram Bot Untuk Relay 8 channel dan Sensor DHT21
Arduino

ESP32 Telegram Bot Untuk Relay 8 channel dan Sensor DHT21

Februari 1, 2020
Macam-Macam Sensor Arus pada Rangkaian Elektronik
Arduino

Membaca Sensor PZEM-004T v3 dengan ESP32

Desember 26, 2019
ESP32 Lora Gateway Arduino dengan 2 Node Lora Uno di frequency 923Mhz
Arduino

ESP32 Lora Gateway Arduino dengan 2 Node Lora Uno di frequency 923Mhz

Oktober 11, 2019
Next Post
ESP32 Telegram Bot Untuk Relay 8 channel dan Sensor DHT21

ESP32 Telegram Bot Untuk Relay 8 channel dan Sensor DHT21

ESP32 LoRa Node 923MhZ dengan ADC yang lebih Baik dan Stabil

ESP32 LoRa Node 923MhZ dengan ADC yang lebih Baik dan Stabil

Please login to join discussion

Tulisan Terbaru

Macam Macam Gerbang Logika Pada Sistem Elektronika Digital

Macam Macam Gerbang Logika Pada Sistem Elektronika Digital

Januari 4, 2021
Project Sensor Tekanan Air dan Udara dengan Arduino

Sensor Tekanan Air Dan Udara Dengan Arduino

Desember 20, 2020
Setting Parameter Dengan ESP32 HTML Form melalui Access Point

Setting Parameter Dengan ESP32 HTML Form melalui Access Point

Desember 10, 2020
Mengirim Data Sensor Suhu dengan Komunikasi LoRa

Mengirim Data Sensor Suhu dengan Komunikasi LoRa

November 26, 2020
Memproteksi Program Esp32 dengan Chip Id

Memproteksi Program Esp32 dengan Chip Id

November 25, 2020
Mengenal Pin Out ESP32 Agar Tidak Salah Dalam Penggunaan nya

Mengenal Pin Out ESP32 Agar Tidak Salah Dalam Penggunaan nya

Oktober 2, 2020

Browse by Category

  • Arduino
  • Ebook
  • ESP32
  • IOT
  • jasa
  • Komponen
  • PCB
  • Produk
  • program Arduino
  • Project
  • Rangkaian
  • Sensor
  • Tips
  • Uncategorized

Recent News

Macam Macam Gerbang Logika Pada Sistem Elektronika Digital

Macam Macam Gerbang Logika Pada Sistem Elektronika Digital

Januari 4, 2021
Project Sensor Tekanan Air dan Udara dengan Arduino

Sensor Tekanan Air Dan Udara Dengan Arduino

Desember 20, 2020
  • About US
  • Blog
  • MIKROAVR

© 2020 mikroavr.com - Learning and sharing.

No Result
View All Result
  • About US
  • Blog
  • MIKROAVR

© 2020 mikroavr.com - Learning and sharing.

Welcome Back!

Sign In with Google
OR

Login to your account below

Forgotten Password?

Create New Account!

Sign Up with Google
OR

Fill the forms below to register

All fields are required. Log In

Retrieve your password

Please enter your username or email address to reset your password.

Log In