##// END OF EJS Templates
Merge pull request #1 from JesusTapia-dev/schottkyExp...
Merge pull request #1 from JesusTapia-dev/schottkyExp Schottky exp

File last commit:

r8:93e3593b35e8
r9:4fa3aa6760cb merge
Show More
ADC_ZX47.ino
86 lines | 2.3 KiB | text/x-arduino | ArduinoLexer
JesusTapia-dev
diagramaFlujo_v1...
r2 #include <math.h>
JesusTapia-dev
ADC calibrado...
r3 #define pinADC 26
JesusTapia-dev
Reducción de ruido...
r7 float find_maximun(float *p);
JesusTapia-dev
ADC-v1...
r1 int analogValue=0;
float Vout=0;
JesusTapia-dev
Ajuste y alarma serial...
r4 float Plinea=62.5,Vpk=0;// Valor entre 1 y 500 kW, las unidades son kW
JesusTapia-dev
Actualización Serial...
r5 float Plcal=0,dif=0,difPlow=0;
JesusTapia-dev
Ajuste y alarma serial...
r4 bool serialData=1;//Un valor de 1 indica que se debe ingresar por monitor serial
JesusTapia-dev
Reducción de ruido...
r7 float VoutRef=1,Pmax;
JesusTapia-dev
ADC calibrado...
r3 int numSamples=20;
int total=0;
JesusTapia-dev
v2.0...
r8 int contador=0,SIZE=40;
float *p, Parray[40];
JesusTapia-dev
ADC-v1...
r1 void setup() {
Serial.begin(115200);
JesusTapia-dev
ADC calibrado...
r3 analogSetAttenuation(ADC_11db);
JesusTapia-dev
diagramaFlujo_v1...
r2 if(serialData){
JesusTapia-dev
Ajuste y alarma serial...
r4 Serial.println("Ingrese la potencia en la linea:");
while (!Serial.available()); // Wait for input
String potLinChar = Serial.readStringUntil('\n');
Plinea=atof(potLinChar.c_str());
JesusTapia-dev
diagramaFlujo_v1...
r2 }
JesusTapia-dev
Ajuste y alarma serial...
r4 Vpk=sqrt(10*Plinea)/5;
VoutRef=ecuacionLineal(Vpk);
JesusTapia-dev
diagramaFlujo_v1...
r2 Serial.print("Voltaje de salida de referencia: ");
JesusTapia-dev
Actualización Serial...
r5 Serial.print(VoutRef);
Serial.print("Voltaje pkpk:"); Serial.print(" "); Serial.println(Vpk);
JesusTapia-dev
ADC-v1...
r1 }
void loop() {
JesusTapia-dev
ADC calibrado...
r3 total=0;
//analogValue = analogRead(pinADC);
JesusTapia-dev
Actualización Serial...
r5 /*
JesusTapia-dev
ADC calibrado...
r3 for (int i = 0; i < numSamples; i++) {
total += analogRead(pinADC);
JesusTapia-dev
Actualización Serial...
r5 }*/
//int averageValue = total / numSamples;
int averageValue=analogRead(pinADC);
JesusTapia-dev
ADC calibrado...
r3 Vout = 0.8291*averageValue+90.27;//Ajuste realizado para el ADC
JesusTapia-dev
Ajuste y alarma serial...
r4 //Serial.println(Vout);
Plcal=5*pow((Vout+101),2)/(2*175.19*175.19);//Calculamos la potencia en la línea
JesusTapia-dev
v2.0...
r8 //dif=abs(Plinea-Plcal)*100/Plinea;//Hallamos la diferencia porcentual
if (Plcal>3){//valores por debajo de este umbral serán leidos como tierra
Parray[contador]=Plcal;
contador =contador+1;
}
//cuando llenamos los valores hacemos la
if (contador==SIZE){
p=&Parray[0];
Pmax=find_maximun(p);
contador=0;
dif=abs(Plinea-Pmax)*100/Plinea;
difPlow=abs(Plinea-Pmax);
if(dif>10 && difPlow>7) Serial.println(Pmax);
}
/*
if(dif>10 && Vout>120 ){
JesusTapia-dev
Reducción de ruido...
r7 Parray[contador]=Plcal;
contador =contador+1;
JesusTapia-dev
v2.0...
r8 if(contador==SIZE){
JesusTapia-dev
Reducción de ruido...
r7 p=&Parray[0];
Pmax=find_maximun(p);
contador=0;
JesusTapia-dev
v2.0...
r8 difPlow=abs(Plinea-Pmax);
if (difPlow>8) {
Serial.print("Potencia anomala en el transmisor: ");
Serial.println(Pmax);
}
JesusTapia-dev
Reducción de ruido...
r7 }
JesusTapia-dev
v2.0...
r8 } */
JesusTapia-dev
ADC-v1...
r1 }
JesusTapia-dev
Ajuste y alarma serial...
r4 float ecuacionLineal(float Vpk){
float m=175.19,b=-101;
return Vout=m*Vpk+b;
JesusTapia-dev
diagramaFlujo_v1...
r2 }
JesusTapia-dev
Reducción de ruido...
r7 float find_maximun(float *p){
float maxi=*p;
float *q;
q=p;
for(int i=0;i<SIZE;i++){
if(maxi<*(p+i)) {
maxi=*(p+i);
}
}
return maxi;
}