为什么我的PZEM-004T模块无法测量?

问题描述

我的工作是测量带有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移出。