问题描述
我的工作是测量带有Arduino和PZEM-004T模块的设备的功耗。我将Arduino Mega R3 2560连接到PZEM(用于TX和RX的PIN 18和19)。 Arduino Mega通过USB(A到B)连接到计算机。这是代码:
#include <PZEM004Tv30.h>
PZEM004Tv30 pzem(18,19); // Software Serial pin 18 (RX) & 19 (TX)
void setup() {
Serial.begin(9600);
}
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);
}
Voltage: nanV
Current: nanA
Power: nanW
Energy: nankWh
Frequency: nanHz
PF: nan
我的PZEM的L和N连接到电压,并且不测量电压。为什么?
解决方法
解决了问题。引脚10和11在Arduino Mega R3 2560上支持SoftwareSerial,因此我不得不将它们从引脚18TX和19RX移出。