19 float istV=0,istI=0,istP=0,sqrV=0,sqrI=0,sum_sqrV=0,sum_sqrI=0,sum_inst_power=0;
22 double timelen=(
double)wavenumber*1/Mc_voltage_freq*1000*1000;
27 if (istV<soglia && istV>-soglia) st=
true;
28 if ((micros()-tstart)>10*timelen)
32 Serial.print(
"Not 0 wave cross!");
41 while(micros()-tstart<timelen)
43 istI=RippleRemover(Mc_SampleAnalogAvg(I->pin,1)-midpoint);
44 if(V) istV=(Mc_SampleAnalogAvg(V->pin,1)-midpoint);
45 else istV=Mc_default_voltage;
59 if(minV>istV) minV=istV;
60 if(minI>istI) minI=istI;
62 if(maxV<istV) maxV=istV;
63 if(maxI<istI) maxI=istI;
66 rmsI=sqrt(sum_sqrI/counter)*sensorIstep;
67 rmsV=sqrt(sum_sqrV/counter)*sensorVstep;
68 rP=sensorIstep*sensorVstep*sum_inst_power/counter;
101 MidLine=CheckAnalogLine(Pin_MiddlePoint,num);
102 ripple=abs(MidLine.rms-MidLine.klm);
115 if(abs(value)<=ripple) value=0;
126 midpoint=Mc_KalmanAnalogAvg(Pin_MiddlePoint,campioni);
137 unsigned long tstart;
138 float istS,sqrS,sum_sqrS;
143 double timelen=(
double)wavenumber*1/Mc_voltage_freq*1000*1000;
149 if (istS<soglia && istS>-soglia) st=
true;
150 if ((micros()-tstart)>5*timelen)
153 # ifdef ENERGIA_DEBUG
156 Serial.print(
"Not 0 wave cross: ");
157 Serial.println(counter);
167 while(micros()-tstart<timelen)
169 istS=(Mc_SampleAnalogAvg(S->pin,2)-midpoint);
171 if(minS>istS) minS=istS;
172 if(maxS<istS) maxS=istS;
177 rmsS=sqrt(sum_sqrS/counter)*sensorSstep;
void Mc_Analog_Inist()
Inizialize McMajanLibrary analogic section.
float Mc_SampleAnalogAvg(int, uint16_t)
This function sample an analogic input and return the averange value.
#define Mc_High_ADC_Value
void SetRipple(float, uint16_t num=450)
Set ripple noise.
float RippleRemover(float)
Remove ripple value from specified value.
void ReadMiddlePoint(uint16_t)
Read middle point: this function uses Kalman filter to reduce the noise.
void Start(int mp=-1)
Inizialize Energia.
#define Mc_ADC_extended_bits
void GetWaveValue(struct Mc_AnalogSensor *, uint8_t wavenumber=1)
Sample waves.
void ReadPowerData(struct Mc_AnalogSensor *, struct Mc_AnalogSensor *, uint8_t wavenumber=1)
Read voltage and current data from sensors. This function calculates apparent power, real power, rms current and voltage.