ขอคำปร๊กษา เกี่ยวกับการใช้งาน pzem-004t v3 วัดค่าไม่ตรง

pingly (Jirakron) June 6, 2021, 5:17am #1

สวัสดีครับ ตอนนี้ผมกำลังศึกษาพฤติกรรมการใช้ไฟฟ้าของบ้านตัวเอง โดนใช้ esp8266+Dht11+Pzem 004tv3 และแสดงใน Blynk ซึ่งปัญหาที่พบคือ ตัว pzem วัดแรงดันและ กระแสไม่ตรงตาม แคลมป์มิเตอร์ หลายๆครั้ง พบว่า แรงดันและกระแสสูงกว่าแคลมป์มิเตอร์วัดได้ ผมจึงซื้อ esp8266+Dht11+Pzem 004tv3 มาอีกชุดเพื่อทดสอบเทียบ ผลเป็นเหมือนเดิม
??? จึงสงใสปัญหาที่เกิด เกิดจาก Software หรือ Hardware รบกวนขอคำปรึกษาด้วยครับ

ภาพ
ภาพ

311600

311601

311602

311606

การต่อใช้งานครับ ตัวไฟเลี้ยง Pzem ผมลองใช้งาน 5v และ 3.3v ผลก็ไม่ต่างกันเลยครับ TT

โค้ด

#include <ESP8266WiFi.h>
#include <BlynkSimpleEsp8266.h>
#include <PZEM004Tv30.h>
#include "DHT.h"

#define PIN_RESET -1
#define DC_JUMPER 0
#define BLYNK_PRINT Serial


PZEM004Tv30 pzem(D5, D6);
DHT dht;

char auth[] = "555";
char ssid[] = "555";
char pass[] = "555";

BLYNK_WRITE(V8)
{
  int pinValue = param.asInt();
  if(pinValue==HIGH){
    Serial.println("Reset energy");
    pzem.resetEnergy();
  }
}

void setup() {
  Serial.begin(115200);
  Blynk.begin(auth, ssid, pass, "oasiskit.com", 8080);
  Serial.println("Status\tHumidity (%)\tTemperature (C)\t(F)");
  dht.setup(2); // data pin 2
}

void loop() {
    float voltage = pzem.voltage();
    if( !isnan(voltage) ){
        Serial.print("Voltage: "); Serial.print(voltage); Serial.println("V");
    } else {
        Serial.println("Error reading voltage");
    }

    float current = pzem.current();
    if( !isnan(current) ){
        Serial.print("Current: "); Serial.print(current); Serial.println("A");
    } else {
        Serial.println("Error reading current");
    }

    float power = pzem.power();
    if( !isnan(power) ){
        Serial.print("Power: "); Serial.print(power); Serial.println("W");
    } else {
        Serial.println("Error reading power");
    }

    float energy = pzem.energy();
    if( !isnan(energy) ){
        Serial.print("Energy: "); Serial.print(energy,3); Serial.println("kWh");
    } else {
        Serial.println("Error reading energy");
    }

    float frequency = pzem.frequency();
    if( !isnan(frequency) ){
        Serial.print("Frequency: "); Serial.print(frequency, 1); Serial.println("Hz");
    } else {
        Serial.println("Error reading frequency");
    }

    float pf = pzem.pf();
    if( !isnan(pf) ){
        Serial.print("PF: "); Serial.println(pf);
    } else {
        Serial.println("Error reading power factor");
    }
    {
  delay(dht.getMinimumSamplingPeriod());
  float humidity = dht.getHumidity(); // ดึงค่าความชื้น
  float temperature = dht.getTemperature(); // ดึงค่าอุณหภูมิ
  Serial.print(dht.getStatusString());
  Serial.print("\t");
  Serial.print(humidity, 1);
  Serial.print("\t\t");
  Serial.print(temperature, 1);
  Serial.print("\t\t");
  Serial.println(dht.toFahrenheit(temperature), 1);
  Blynk.run();
  Blynk.virtualWrite(V0, temperature); 
  Blynk.virtualWrite(V1, humidity); 
  Blynk.virtualWrite(V2, voltage);
  Blynk.virtualWrite(V3, current);
  Blynk.virtualWrite(V4, power);
  Blynk.virtualWrite(V5, energy);
  Blynk.virtualWrite(V6, frequency);
  Blynk.virtualWrite(V7, pf);
    }

    Serial.println();
    delay(2000);
}

KD2NYY (Thanasak) June 6, 2021, 8:30am #2

ทดลอง Code ที่อ่าน pzem-004t v3 ตัวเดียวโดดๆ ดูหน่อยครับ ว่า ยังอ่านได้สูงเหมือนเดิมไหม

pingly (Jirakron) June 6, 2021, 3:01pm #3

พอมารันตัว Pzem โดดๆ ค่าตรงครับ (วัดมิเตอร์เทียบ)

สาเหตุเกิดจากอะไรหรอครับ

น่าจะกระแสไฟเลี้ยงไม่พอครับ

ขอบคุณครับ