Activar Salida en Comun con Sensores segun estado de Condicionales If

Saludos ,

Tengo 2 sensores para medir voltages , usos condicionales con parametros establecidos para cada uno sensor 1 y sensor 2 , cada sensor mide los voltages de la red , si alguno de los 2 sensores se salen de sus parametros de lectura en su condicional se activa una salida que es comun para los 2

Tengo 3 lineas 2 Fase y un Neutro L1 , L2 , N , Sensor1 mide L1+N Para 120v
sensor 2 mide L1 + L2 Para 220v

mi pregunta ? Lo primero que ocurra en las lectura de cada sensor determinar el estado de salida en comun para evitar un choke de estados o error de activacion o desactivacion descontrolada ...

ej: sensor1 se sale de parametro normal se pone en LOW , se supone que como es salida comun para sensor 2 tambien ve la salida en LOW , y viceversa.

y si ocurre algo al mismo tiempo en SENSOR 1 Y SENSOR 2 que accion tomar ?

voy adjuntar el codigo de ejemplo



#include "EmonLib.h"
EnergyMonitor emon1;
EnergyMonitor emon2;

const int Led = 2;


void setup()
{
  Serial.begin(9600);
  emon1.voltage(0, 234.26, 1.7);
  emon2.voltage(1, 234.26, 1.7);
  pinMode (Led , OUTPUT);
}

void loop()
{
  emon1.calcVI(20, 2000);
  emon2.calcVI(20, 2000);

  float Voltage1 = emon1.Vrms;
  float Voltage2 = emon2.Vrms;

  // SENSOR V1

  if (Voltage1  >= 0 && Voltage1 <= 100) //  FUERA DE ESTE PARAMETRO
  {
    digitalWrite (Led, LOW);
  }

  if (Voltage1  >= 100  && Voltage1 <=  150) { //  DENTRO DE PARAMETRO NORMAL 

    digitalWrite (Led, HIGH);  //  Activacion Salida Comun sensor 1 / 2

  }

  if (Voltage1 >= 150) //  FUERA DE ESTE PARAMETRO

  {
    digitalWrite (Led, LOW);
  }

  ///*****************SENSOR V2********************************


  if (Voltage2  >= 0 && Voltage2 <= 190) //  FUERA DE ESTE PARAMETRO ANORMAL
  {
    digitalWrite (Led, LOW);
  }


  if (Voltage2  >= 190 && Voltage2 <=  250) //  DENTRO DE PARAMETRO NORMAL

  {

    digitalWrite (Led, HIGH); //  Activacion Salida Comun sensor 1 / 2

  }

  if (Voltage2 >= 250) // FUERA DE ESTE PARAMETRO  ANORMAL

  {
    digitalWrite (Led, LOW);
  }


}

¿ Y no sería más fácil poner un led por sensor???. En fin...
Crea dos variables booleanas, una por sensor, que acompañen en su valor al valor del led y después de tus comprobaciones compruebas si ambas están apagadas y obras en consecuencia. ¿Encender otro led quizás?
Saludos.

hola , gonpezzi de acuerdo a tu pregunta
¿ Y no sería más fácil poner un led por sensor??? lo puedo hacer pero no es lo que quiero uso 2 sensores para medir y sensar lo que ocurra independientemente con el voltaje de la red tanto en el 120v y el 220v y controlar una misma salida en este caso un relay o contactor , lo tengo montado ya haciendo test pero he notado que se activa desactiva rapidamente hace esto de alto > low > alto > low al salirse del rango quedando en LOW , le tengo un tiempo de espera de x tiempo .. q al pasar vuelve a el estado alto .. que podria estar pasando..

Prueba este código veamos si te va mejor:


#include "EmonLib.h"
EnergyMonitor emon1;
EnergyMonitor emon2;

const int Led = 2;
bool sensor1 = true, sensor2 = true;

void setup()
{
  Serial.begin(9600);
  emon1.voltage(0, 234.26, 1.7);
  emon2.voltage(1, 234.26, 1.7);
  pinMode (Led , OUTPUT);
}

void loop() {
  emon1.calcVI(20, 2000);
  emon2.calcVI(20, 2000);

  float Voltage1 = emon1.Vrms;
  float Voltage2 = emon2.Vrms;

  ///*****************SENSOR V1********************************
  if (Voltage1  >= 100  && Voltage1 <=  150) { //  DENTRO DE PARAMETRO NORMAL
    digitalWrite (Led, HIGH);  //  Activacion Salida Comun sensor 1 / 2
    sensor1 = true;
  }
  //FUERA DE PARAMETRO NORMAL
  else {
    digitalWrite (Led, LOW);  //  Activacion Salida Comun sensor 1 / 2
    sensor1 = false;
  }


  ///*****************SENSOR V2********************************

  if (Voltage2  >= 190 && Voltage2 <=  250) { //  DENTRO DE PARAMETRO NORMAL
    digitalWrite (Led, HIGH); //  Activacion Salida Comun sensor 1 / 2
    sensor2 = true;
  }
  else {
    digitalWrite (Led, LOW);  //  Activacion Salida Comun sensor 1 / 2
    sensor2 = false;
  }

  ///*****************FALLO CATASTROFICO********************************

  if (sensor1 == false && sensor2 == false) {
    // Haces lo que quieras.
  }
}

gonpezzi , a partir de este código me va mejor , le agregue otras lineas y trabaja mucho mejor con variable boolenas

graciass.. broo

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.