pingly (Jirakron) June 6, 2021, 5:17am #1
สวัสดีครับ ตอนนี้ผมกำลังศึกษาพฤติกรรมการใช้ไฟฟ้าของบ้านตัวเอง โดนใช้ esp8266+Dht11+Pzem 004tv3 และแสดงใน Blynk ซึ่งปัญหาที่พบคือ ตัว pzem วัดแรงดันและ กระแสไม่ตรงตาม แคลมป์มิเตอร์ หลายๆครั้ง พบว่า แรงดันและกระแสสูงกว่าแคลมป์มิเตอร์วัดได้ ผมจึงซื้อ esp8266+Dht11+Pzem 004tv3 มาอีกชุดเพื่อทดสอบเทียบ ผลเป็นเหมือนเดิม
??? จึงสงใสปัญหาที่เกิด เกิดจาก Software หรือ Hardware รบกวนขอคำปรึกษาด้วยครับ
การต่อใช้งานครับ ตัวไฟเลี้ยง 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 โดดๆ ค่าตรงครับ (วัดมิเตอร์เทียบ)