Pzem-004t อ่านรันอ่านค่าไว้นานๆแล้วเป็น NaN อ่านค่าไม่ได้ตลอด

pzem-004t อ่านรันอ่านค่าไว้นานๆแล้วเป็น NaN อ่านค่าไม่ได้ตลอด ต้องไปถอดเสียบใหม่ รีเซ็ต wemos แล้วก็ทำวนไปเรื่อยๆ กว่าจะกลับมาอ่านค่าได้ แล้วไฟบน rx tx ของตัว pzem-004t ก็ติดนานกว่าปกติ เหมือนอ่านข้อมูลไม่ได้ ซึ่งปติแล้วจะติดแป๊บเดียว ปัญหานี้แก้ยังไงดีครับ ต่อกับ wemos pin D5 D6 ครับ

มีภาพการต่อใช้งานไหม ขอดูหน่อย

แปล่งจ่ายไฟเอามาจากสวิตชิ่ง 5V3A ครับ

ตอนแรกต่อ 3 ตัวแบบนี้ครับ แต่มันใช้ไม่ได้เลยลองกลับไปต่อต่อเดียว ทีนี้ก็อ่านคค่าไม่ได้เลยครับ

ตอนแรกก็แก้ address พออ่านค่าไม่ได้เลยลองแก้อีกรอบดู ก็แก้ไม่ได้เลย เป็น 248 ตลอดครับ

ลงวงจรที่ต่อจริงให้ดูหน่อยครับ และ Code ที่ใช้งานอยู่ตอนนี้ด้วยครับ
การต่อไฟเลี้ยง pzem-004t ต่อยังไงครับ

ใช้ อุปกรณ์ และ Code จาก เจ้านี้ หรือเปล่า

ชุดวัดพลังงาน

น่าจะปิด Case ได้แล้วละ เนื่องจากสายหลวม ( ไปอ่านเจอที่ FB.)

โค้ดครับ

#include <PZEM004Tv30.h>


PZEM004Tv30 pzem1(D1, D2);
PZEM004Tv30 pzem2(D3, D4);
PZEM004Tv30 pzem3(D6, D5);

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


}

void loop() {

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

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

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

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

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

 float pfL = pzem1.pf();
 if ( !isnan(pfL) ) {
   Serial.print("PF: "); Serial.println(pfL);
 } else {
   Serial.println("Error reading power factor");
 }

 Serial.println();

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

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

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

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

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

  float pfG = pzem2.pf();
  if ( !isnan(pfG) ) {
    Serial.print("PF: "); Serial.println(pfG);
  } else {
    Serial.println("Error reading power factor");
  }

  Serial.println();
  Serial.println("pzem3");

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

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

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

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

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

  float pfGen = pzem3.pf();
  if ( !isnan(pfGen) ) {
    Serial.print("PF: "); Serial.println(pfGen);
  } else {
    Serial.println("Error reading power factor");
  }

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

ขอดู Code กับ การต่อสายไฟหน่อยครับ

ที่บอกว่าเอาสายชุดล่าง มาเสียบอ่านชุดบน แล้ว อ่านไม่ได้ อาจจะเป็นที่ Module pzem-004t
น่าจะมีปัญหา ลองวัดไฟ AC ที่เข้ามา ผ่าน C และ R ดูครับ ว่ามีไฟไหม R อาจขาดก็ได้ครับ

Case นี้ เปิดต่อ คนละเจ้า

1 Like

สายต่อเหมือนวง Diagram ข้างบนเลยครับ แต่ไฟเลี้ยงมาจากสวิตชิ่ง

วัด C และ R ที่อยู่ยนตัว module pzem-004t ใช่มั้ยครับ

ขออนุุญาตปิดเคสนะครับ เนื่องจากไม่ต้องการใช้งานตัวที่ 1 แล้ว เลยแกะออกแล้วครับ

1 Like

ใช่ครับ วัด ที่ R มีไฟ AC มาไหม

ทดลอง เอาสายชุดบน ลงมาต่อ Module pzem-004t ชุดล่าง แล้วลองดูว่า อ่านค่าได้ไหม ถ้าอ่านค่าได้ ก็แสดงว่า Module pzem-004t ชุดบน น่าจะมีปัญหาครับ