diff --git a/ADC_ZX47/ADC_ZX47.ino b/ADC_ZX47/ADC_ZX47.ino index 3eebf35..023d47f 100644 --- a/ADC_ZX47/ADC_ZX47.ino +++ b/ADC_ZX47/ADC_ZX47.ino @@ -1,14 +1,16 @@ #include #define pinADC 26 +float find_maximun(float *p); int analogValue=0; float Vout=0; float Plinea=62.5,Vpk=0;// Valor entre 1 y 500 kW, las unidades son kW float Plcal=0,dif=0,difPlow=0; bool serialData=1;//Un valor de 1 indica que se debe ingresar por monitor serial -float VoutRef=1; +float VoutRef=1,Pmax; int numSamples=20; int total=0; -int contador=0; +int contador=0,SIZE=15; +float *p, Parray[15]; void setup() { Serial.begin(115200); analogSetAttenuation(ADC_11db); @@ -25,7 +27,6 @@ void setup() { Serial.print("Voltaje pkpk:"); Serial.print(" "); Serial.println(Vpk); } void loop() { - int Parray[10]; total=0; //analogValue = analogRead(pinADC); //Hacemos multisampling para asegurar el buen performance @@ -41,9 +42,18 @@ void loop() { dif=abs(Plinea-Plcal)*100/Plinea;//Hallamos la diferencia porcentual difPlow=abs(Plinea-Plcal); if(dif>10 && Vout>120){ - Serial.print("Nivel anómalo de potencia Ph"); - Serial.print(" "); Serial.print(Plcal); - Serial.print(" "); Serial.println(Vout); + Parray[contador]=Plcal; + contador =contador+1; + if(contador==15){ + p=&Parray[0]; + Pmax=find_maximun(p); + contador=0; + Serial.print("Potencia anomala en el transmisor: "); Serial.print(Pmax); + } + + // Serial.print("Nivel anómalo de potencia Ph"); + //Serial.print(" "); Serial.print(Plcal); + //Serial.print(" "); Serial.println(Vout); } /* else if(VoutRef<3000 && difPlow>5 && Vout>120){ Serial.print("Potencia anómala para Plow"); @@ -55,3 +65,14 @@ float ecuacionLineal(float Vpk){ float m=175.19,b=-101; return Vout=m*Vpk+b; } +float find_maximun(float *p){ + float maxi=*p; + float *q; + q=p; + for(int i=0;i