From 46bdc0fae18244e4b7d3f6e3f02863e446304bc2 2023-11-22 20:14:30 From: JesusTapia-dev Date: 2023-11-22 20:14:30 Subject: [PATCH] corrección ADC se modificó parte del código para que envie constantemente los valores de potencia en línea. --- diff --git a/ADC_ZX47/ADC_ZX47.ino b/ADC_ZX47/ADC_ZX47.ino index 0671ca7..0a068a6 100644 --- a/ADC_ZX47/ADC_ZX47.ino +++ b/ADC_ZX47/ADC_ZX47.ino @@ -27,48 +27,27 @@ void setup() { Serial.print("Voltaje pkpk:"); Serial.print(" "); Serial.println(Vpk); } void loop() { - total=0; - //analogValue = analogRead(pinADC); - /* - for (int i = 0; i < numSamples; i++) { - total += analogRead(pinADC); - }*/ - //int averageValue = total / numSamples; int averageValue=analogRead(pinADC); Vout = 0.8291*averageValue+90.27;//Ajuste realizado para el ADC - //Serial.println(Vout); Plcal=5*pow((Vout+101),2)/(2*175.19*175.19);//Calculamos la potencia en la línea //dif=abs(Plinea-Plcal)*100/Plinea;//Hallamos la diferencia porcentual - if (Plcal>3){//valores por debajo de este umbral serán leidos como tierra + if (Plcal>4){//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){ + if (contador>(SIZE-1)){ 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 ){ - Parray[contador]=Plcal; - contador =contador+1; - if(contador==SIZE){ - p=&Parray[0]; - Pmax=find_maximun(p); - contador=0; - difPlow=abs(Plinea-Pmax); - if (difPlow>8) { - Serial.print("Potencia anomala en el transmisor: "); - Serial.println(Pmax); - } + Serial.print("Valor normal: "); Serial.println(Pmax); + if(dif>10 && difPlow>9) { + Serial.print("Nivel anómalo: "); + Serial.println(Pmax); } - } */ + } } float ecuacionLineal(float Vpk){ float m=175.19,b=-101; diff --git a/MQTT_start/MQTT_start.ino b/MQTT_start/MQTT_start.ino index 96ebb2f..7f130a5 100644 --- a/MQTT_start/MQTT_start.ino +++ b/MQTT_start/MQTT_start.ino @@ -1,17 +1,18 @@ #include #include -const char *ssid = "maracumango"; +const char *ssid = "HUAWEI P smart"; const char *password = "12345678"; -const char *mqtt_server = "192.168.199.158"; +const char *mqtt_server = "192.168.43.149"; const int mqtt_port = 1883; const char *mqtt_client_id = "ESP32_Client"; const char *subscribe_topic = "tesis/potenciaNominal"; const char *publish_topic = "tesis/potencia"; +const char *publish_topic_voltage = "tesis/ReferenceVoltage"; WiFiClient espClient; PubSubClient client(espClient); - +float Vpk=0,Vout=0; void setup_wifi() { delay(10); Serial.println(); @@ -38,11 +39,13 @@ void callback(char *topic, byte *payload, unsigned int length) { // Convierte la cadena a un número (en este caso, asume que es un float) float potenciaNominal = atof(receivedValue); // Realiza cálculos basados en la potencia nominal recibida (sustituye con tu lógica) - float voltajeCalculado = potenciaNominal * 1.2; + Vpk= sqrt(10*potenciaNominal)/5; + Vout=175.19*Vpk-101; + // Publica el resultado en el tópico de voltaje char result[10]; - snprintf(result, sizeof(result), "%.2f", voltajeCalculado); - client.publish(publish_topic, result); + snprintf(result, sizeof(result), "%.2f", Vout); + client.publish(publish_topic_voltage, result); } void reconnect() {