Greetings,
We operate with ADE9000. Our measurements were normal. But for the last 1 day, our measurements have been multiplied. While VC-VB-VA: 230, they all measure around 270. While IA=IB=IC=1,56A, they all come as 1,85A. The strange thing is that when we energize after waiting, the measurements are normal for 30 minutes. Then it throws a multiplier on the Currents, Voltages and power side. Could there be a problem on the DSP Engine side.
/*Ade9000 Temel Haberleşme*/
ADE9000Class ade9000;
#define SPI_SPEED 20000000 //SPI Speed
#define CS_PIN 5 //8-->Arduino Zero. 16-->ESP8266
#define ADE9000_RESET_PIN 27 //Reset Pin on HW
#define PM_1 26 //PM1 Pin: 4-->Arduino Zero. 15-->ESP8266
truct CurrentRMSRegs curntRMSRegs; //Current RMS
struct VoltageRMSRegs vltgRMSRegs; //Voltage RMS
//struct VoltageTHDRegs voltageTHDRegsnValues; //Voltage THD
struct ResampledWfbData resampledData; // Resampled Data
struct ActivePowerRegs activePowerRegs;
struct ReactivePowerRegs reactivePowerRegs;
struct ApparentPowerRegs apparentPowerRegs;
struct PowerFactorRegs powerFactorRegs;
struct VoltageTHDRegs vltgthdRegs; //Value olarak ta alınabiliyor. Regs olarakta
struct CurrentTHDRegs curntThdRegs;//Value olarak ta alınabiliyor. Regs olarakta
struct PowerFactorRegs pfactorRegs;//Value olarak ta alınabiliyor. Regs olarakta
struct ResampledWfbData_harmonic resampledData_harmonic;
struct PeriodRegs prdRegs;
void readRegisterData(void); // RMS olarak alınmakta Seample için void readResampledData(void); kullanılmalı
void resetADE9000(void);
void readResampledData(void);
myNex.begin(115200); //Nextion Editör içindeki c dosyasından ayarlanmalı.
delay(1000);
Serial.begin(115200);
pinMode(PM_1, OUTPUT); //Set PM1 pin as output
digitalWrite(PM_1, LOW); //Set PM1 select pin low for PSM0 mode
pinMode(ADE9000_RESET_PIN, OUTPUT);
digitalWrite(ADE9000_RESET_PIN, HIGH);
void resetADE9000();
delay(1000);
ade9000.SPI_Init(SPI_SPEED,CS_PIN); //Initialize SPI
ade9000.SetupADE9000(); //Initialize ADE9000 registers according to values in ADE9000API.h
delay(1000);
ade9000.SPI_Write_32(ADDR_CVGAIN,0x0003E56D);
ade9000.SPI_Write_32(ADDR_CIGAIN,0x0018ABE7);
ade9000.SPI_Write_32(ADDR_CPGAIN,0xFFFE4618);
}/*-----------Setup Sonu---------*/
void loop() {
readRegisterData();
float AVTHDF = 0;
float BVTHDF = 0;
float CVTHDF = 0;
float AITHDF = 0;
float BITHDF = 0;
float CITHDF = 0;
float AVRMSF = (vltgRMSRegs.VoltageRMSReg_A*(0.0000132940876766141)) ;
float BVRMSF = (vltgRMSRegs.VoltageRMSReg_B*(0.0000132940876766141));
float CVRMSF = (vltgRMSRegs.VoltageRMSReg_C*(0.0000132940876766141));
float AIRMSF = (curntRMSRegs.CurrentRMSReg_A*(0.0000002032579885467));
float BIRMSF = (curntRMSRegs.CurrentRMSReg_B*(0.0000002032579885467));
float CIRMSF = (curntRMSRegs.CurrentRMSReg_C*(0.0000002032579885467));
float NIRMSF = (curntRMSRegs.CurrentRMSReg_N*(0.0000002032579885467));
float AAPF = (activePowerRegs.ActivePowerReg_A*0.0003626792564446720);
float BAPF = (activePowerRegs.ActivePowerReg_B*0.0003626792564446720);
float CAPF = (activePowerRegs.ActivePowerReg_C*0.0003626792564446720);
float TAP = (AAPF + BAPF + CAPF);
float AQPF = (reactivePowerRegs.ReactivePowerReg_A*0.0003626792564446720);
float BQPF = (reactivePowerRegs.ReactivePowerReg_B*0.0003626792564446720);
float CQPF = (reactivePowerRegs.ReactivePowerReg_C*0.0003626792564446720);
float TQP = (AQPF + BQPF + CQPF);
float APFF = (pfactorRegs.PowerFactorReg_A*0.0000000074505805969);
float BPFF = (pfactorRegs.PowerFactorReg_B*0.0000000074505805969);
float CPFF = (pfactorRegs.PowerFactorReg_C*0.0000000074505805969);
AVTHDF = (vltgthdRegs.VoltageTHDReg_A*0.0000007450580596924);
BVTHDF = (vltgthdRegs.VoltageTHDReg_B*0.0000007450580596924);
CVTHDF = (vltgthdRegs.VoltageTHDReg_C*0.0000007450580596924);
AITHDF = (curntThdRegs.CurrentTHDReg_A*0.0000007450580596924);
BITHDF = (curntThdRegs.CurrentTHDReg_B*0.0000007450580596924);
CITHDF = (curntThdRegs.CurrentTHDReg_C*0.0000007450580596924);
}/*-----------Loop Sonu---------*/
void readRegisterData()
{
/*Read and Print RMS & WATT Register using ADE9000 Read Library*/
ade9000.ReadVoltageRMSRegs(&vltgRMSRegs); //Template to read Power registers from ADE9000 and store data in Arduino MCU
ade9000.ReadCurrentRMSRegs(&curntRMSRegs);
ade9000.ReadActivePowerRegs(&activePowerRegs);
ade9000.ReadVoltageTHDRegsnValues(&vltgthdRegs);
ade9000.ReadCurrentTHDRegsnValues(&curntThdRegs);
ade9000.ReadPowerFactorRegsnValues(&pfactorRegs);
ade9000.ReadPeriodRegsnValues(&prdRegs);
}
void resetADE9000(void)
{
digitalWrite(ADE9000_RESET_PIN, LOW);
delay(50);
digitalWrite(ADE9000_RESET_PIN, HIGH);
delay(1000);
//Serial.println("Reset Done");
}
Sory code block not working on you web site.