diff --git a/ADC_ZX47/ADC_ZX47.ino b/ADC_ZX47/ADC_ZX47.ino index 0a068a6..3bc2867 100644 --- a/ADC_ZX47/ADC_ZX47.ino +++ b/ADC_ZX47/ADC_ZX47.ino @@ -5,7 +5,7 @@ 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 +bool serialData=0;//Un valor de 1 indica que se debe ingresar por monitor serial float VoutRef=1,Pmax; int numSamples=20; int total=0; @@ -30,13 +30,18 @@ void loop() { int averageValue=analogRead(pinADC); Vout = 0.8291*averageValue+90.27;//Ajuste realizado para el ADC Plcal=5*pow((Vout+101),2)/(2*175.19*175.19);//Calculamos la potencia en la línea + + Serial.println(Plcal); + delay(10); //dif=abs(Plinea-Plcal)*100/Plinea;//Hallamos la diferencia porcentual + /* 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-1)){ + int x=SIZE-1; + if (contador>x){ p=&Parray[0]; Pmax=find_maximun(p); contador=0; @@ -44,10 +49,9 @@ void loop() { difPlow=abs(Plinea-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/python_mqtt/publish_script.py b/python_mqtt/publish_script.py new file mode 100644 index 0000000..553b332 --- /dev/null +++ b/python_mqtt/publish_script.py @@ -0,0 +1,13 @@ +import paho.mqtt.publish as publish + +# Especificar la dirección del broker MQTT como localhost +broker_address = "localhost" + +# Especificar el tópico al que deseas publicar +topico = "tu_topico_aqui" + +# Mensaje que deseas publicar +mensaje = "Hola, mundo MQTT!" + +# Publicar el mensaje en el tópico +publish.single(topico, mensaje, hostname=broker_address) diff --git a/python_mqtt/subscribe_script.py b/python_mqtt/subscribe_script.py new file mode 100644 index 0000000..39dada7 --- /dev/null +++ b/python_mqtt/subscribe_script.py @@ -0,0 +1,65 @@ +import matplotlib.pyplot as plt +import matplotlib.animation as animation +import paho.mqtt.client as mqtt +import numpy as np +subscribe_topic="tesis/AnalogRaw" +broker_address = "192.168.43.149" +analogRawMatriz=[] +contador = 0 +data=[] +def init(): + ax.set_ylim(0, 500) # Ajusta los límites de la gráfica según tus necesidades + ax.set_xlim(0,30) + line.set_data([], []) + return line, +def update(frame): + y_data = np.array(data) + x_data = np.arange(len(y_data)) + line.set_data(x_data, y_data) + return line, +# Callback cuando se establece la conexión con el broker MQTT +def on_connect(client, userdata, flags, rc): + if rc == 0: + print("Conexión exitosa con el broker") + # Suscribirse a un tópico después de la conexión exitosa + client.subscribe(subscribe_topic) + else: + print("Error de conexión. Código de retorno =", rc) +# Callback cuando se recibe un mensaje en el tópico suscrito +def on_message(client, userdata, msg): + global analogRawMatriz + global contador + global data + mensaje = float(msg.payload.decode()) + analogRawMatriz.append(mensaje) + contador=contador+1 + if contador==500: + contador=0 + valor_promedio = sum(analogRawMatriz) / len(analogRawMatriz) + potencia=0.6233*valor_promedio+62.891 + data.append(potencia) + data[:] = data[-30:] + analogRawMatriz=[] + print(potencia) +# Configurar el cliente MQTT +client = mqtt.Client() +# Configurar los callbacks +client.on_connect = on_connect +client.on_message = on_message +client.connect(broker_address, port=1883, keepalive=60) +# Configuración de la gráfica +fig, ax = plt.subplots() +line, = ax.plot([], [], lw=2) +ax.set_xlabel('Tiempo') +ax.set_ylabel('Analog Raw') +ax.grid(True) +# Configuración de la animación +ani = animation.FuncAnimation(fig, update, frames=None, init_func=init, blit=True) +# Mantener la ejecución del programa para recibir mensajes +#client.loop_forever() +client.loop_start() +plt.show() +client.loop_stop() +"""" +PARA UN IPP DE 10MS Y 10 US DE ANCHO, la ecuación sera:PotLinea= 0.6233*AnalogRaw+62.891 +""" \ No newline at end of file