You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
We try to develop a device, and according to it's working algorithm, we need to calculate L1, L2 and L3 instant voltage and current value (3-Phase energy monitoring.)
For just one line (L1), we can measure everything good. But while we try to use L2 and L3 emon object everything is blocked.
Our summarized code is : (Testing is done with Arduino Mega 2560 and Arduino Giga R1)
`#include "EmonLib.h"
//Device Energy Line 1
EnergyMonitor device_energy_line_1;
//Device Energy Line 2
EnergyMonitor device_energy_line_2;
//Device Energy Line 3
EnergyMonitor device_energy_line_3;
//
/** ENERGY MONITOR CALCULATION PARAMETERS **/
//
//Number of half wavelengths (crossings)
#define WAVE_LENGTHS_AMOUNT 20
#define CALCULATION_TIMEOUT 50
//
/** VOLTAGE LINE PARAMETERS **/
//
//Define Analog pins
#define VOLTAGE_LINE_1 A0
#define VOLTAGE_LINE_2 A1
#define VOLTAGE_LINE_3 A2
//Voltage calibration value
#define VOLTAGE_CALIBRATION_1 234.26
#define VOLTAGE_CALIBRATION_2 234.26
#define VOLTAGE_CALIBRATION_3 234.26
//Voltage phase shift value
#define VOLTAGE_PHASE_SHIFT 1.7
/*************************************************************/
/*************************************************************/
/** CURRENT PARAMETERS **/
//Define Analog pins
#define CURRENT_LINE_1 A3
#define CURRENT_LINE_2 A4
#define CURRENT_LINE_3 A5
//Phase calibration value : The phase calibration value has 2 different values. We use them because of ACS724's different reading values
#define CURRENT_CALIBRATION_1 26
#define CURRENT_CALIBRATION_2 26
#define CURRENT_CALIBRATION_3 26
void setup() {
//Device energy line 1-2-3 : Voltage
device_energy_line_1.voltage(VOLTAGE_LINE_1, VOLTAGE_CALIBRATION_1, VOLTAGE_PHASE_SHIFT);
device_energy_line_2.voltage(VOLTAGE_LINE_2, VOLTAGE_CALIBRATION_2, VOLTAGE_PHASE_SHIFT);
device_energy_line_3.voltage(VOLTAGE_LINE_3, VOLTAGE_CALIBRATION_3, VOLTAGE_PHASE_SHIFT);
//Device energy line 1-2-3 : Current
device_energy_line_1.current(CURRENT_LINE_1, CURRENT_CALIBRATION_1);
device_energy_line_2.current(CURRENT_LINE_2, CURRENT_CALIBRATION_2);
device_energy_line_3.current(CURRENT_LINE_3, CURRENT_CALIBRATION_3);
}
void loop() {
device_energy_line_1.calcVI(WAVE_LENGTHS_AMOUNT, CALCULATION_TIMEOUT);
//Test Mode : device_energy_line_1.serialprint(); //This is for printing for all data : realpower, apparent power, Vrms, Irms, power factor
device_energy_line_2.calcVI(WAVE_LENGTHS_AMOUNT, CALCULATION_TIMEOUT);
//Test Mode : device_energy_line_2.serialprint(); //This is for printing for all data : realpower, apparent power, Vrms, Irms, power factor
device_energy_line_3.calcVI(WAVE_LENGTHS_AMOUNT, CALCULATION_TIMEOUT);
/*
Rest of our codes, include millis() timing elements like momentary button value read as in 1000ms, LED animations like 100 ms, 75 ms etc. These are blocking because of emon instance's calculations.
*/
}
`
As I wrote in code block, We have some functions have own millis() measurings, button reading state, LED animations. All of them, have own millis() calculations. Without emon instances for 3-phases, all of them work good.
For testing or finding blocking thing, we deleted device_energy_line_2 and 3 instances. Just for device_energy_line_1 for example, it doesnt block anything in code.
Could you have any advices or what we do wrong for 3-phases EnergyMonitor instances ?
Thanks a lot for your help...
The text was updated successfully, but these errors were encountered:
Hi All,
We try to develop a device, and according to it's working algorithm, we need to calculate L1, L2 and L3 instant voltage and current value (3-Phase energy monitoring.)
For just one line (L1), we can measure everything good. But while we try to use L2 and L3 emon object everything is blocked.
Our summarized code is : (Testing is done with Arduino Mega 2560 and Arduino Giga R1)
`#include "EmonLib.h"
//Device Energy Line 1
EnergyMonitor device_energy_line_1;
//Device Energy Line 2
EnergyMonitor device_energy_line_2;
//Device Energy Line 3
EnergyMonitor device_energy_line_3;
//
/** ENERGY MONITOR CALCULATION PARAMETERS **/
//
//Number of half wavelengths (crossings)
#define WAVE_LENGTHS_AMOUNT 20
#define CALCULATION_TIMEOUT 50
//
/** VOLTAGE LINE PARAMETERS **/
//
//Define Analog pins
#define VOLTAGE_LINE_1 A0
#define VOLTAGE_LINE_2 A1
#define VOLTAGE_LINE_3 A2
//Voltage calibration value
#define VOLTAGE_CALIBRATION_1 234.26
#define VOLTAGE_CALIBRATION_2 234.26
#define VOLTAGE_CALIBRATION_3 234.26
//Voltage phase shift value
#define VOLTAGE_PHASE_SHIFT 1.7
/*************************************************************/
/*************************************************************/
/** CURRENT PARAMETERS **/
//Define Analog pins
#define CURRENT_LINE_1 A3
#define CURRENT_LINE_2 A4
#define CURRENT_LINE_3 A5
//Phase calibration value : The phase calibration value has 2 different values. We use them because of ACS724's different reading values
#define CURRENT_CALIBRATION_1 26
#define CURRENT_CALIBRATION_2 26
#define CURRENT_CALIBRATION_3 26
void setup() {
//Device energy line 1-2-3 : Voltage
device_energy_line_1.voltage(VOLTAGE_LINE_1, VOLTAGE_CALIBRATION_1, VOLTAGE_PHASE_SHIFT);
device_energy_line_2.voltage(VOLTAGE_LINE_2, VOLTAGE_CALIBRATION_2, VOLTAGE_PHASE_SHIFT);
device_energy_line_3.voltage(VOLTAGE_LINE_3, VOLTAGE_CALIBRATION_3, VOLTAGE_PHASE_SHIFT);
//Device energy line 1-2-3 : Current
device_energy_line_1.current(CURRENT_LINE_1, CURRENT_CALIBRATION_1);
device_energy_line_2.current(CURRENT_LINE_2, CURRENT_CALIBRATION_2);
device_energy_line_3.current(CURRENT_LINE_3, CURRENT_CALIBRATION_3);
}
void loop() {
device_energy_line_1.calcVI(WAVE_LENGTHS_AMOUNT, CALCULATION_TIMEOUT);
//Test Mode : device_energy_line_1.serialprint(); //This is for printing for all data : realpower, apparent power, Vrms, Irms, power factor
device_energy_line_2.calcVI(WAVE_LENGTHS_AMOUNT, CALCULATION_TIMEOUT);
//Test Mode : device_energy_line_2.serialprint(); //This is for printing for all data : realpower, apparent power, Vrms, Irms, power factor
device_energy_line_3.calcVI(WAVE_LENGTHS_AMOUNT, CALCULATION_TIMEOUT);
/*
Rest of our codes, include millis() timing elements like momentary button value read as in 1000ms, LED animations like 100 ms, 75 ms etc. These are blocking because of emon instance's calculations.
*/
}
`
As I wrote in code block, We have some functions have own millis() measurings, button reading state, LED animations. All of them, have own millis() calculations. Without emon instances for 3-phases, all of them work good.
For testing or finding blocking thing, we deleted device_energy_line_2 and 3 instances. Just for device_energy_line_1 for example, it doesnt block anything in code.
Could you have any advices or what we do wrong for 3-phases EnergyMonitor instances ?
Thanks a lot for your help...
The text was updated successfully, but these errors were encountered: