Senseo de Red Electrica Y Planta de Emergencia y envío por SMS.

Hola a todos en este foro.
Estoy tratando de realizar este proyecto y buscando por aquí y por allá he podido ir armando mi sketch hasta donde mis pobres conocimientos tanto de arduino como de programación me lo han permitido. He logrado que la parte del monitoreo del estado de la planta de emergencia ya esté funcionando pero quiero agregarle la parte del senseo también del estado de la Red eléctrica y es dónde no he podido hasta el momento saber como agregar esa parte al void loop ya que prácticamente es agregarle otro tanto igual al que ya tengo hecho y por eso solicito la ayuda de algun buen samaritano que pudiera indicar algunos tips para lograrlo. Anexo el sketch con la parte que ya tengo funcionando, la cual solo he copiado y adaptado como se podrán dar cuenta. por su atención Gracias!

#include <SoftwareSerial.h>
#include <String.h>
#include <Button.h>

SoftwareSerial mySerial(3, 2);

#define BUTTON_PIN 8 //Connect a relay from Arduino pin 8 to ground using the NC pin
#define PULLUP true //To keep things simple, we use the Arduino’s internal pullup resistor.
#define INVERT true //Since the pullup resistor will keep the pin high unless the
//switch is closed, this is negative logic, i.e. a high state
//means the button is NOT pressed. (Assuming a normally open switch.)
#define DEBOUNCE_MS 20 //A debounce time of 20 milliseconds usually works well for tactile button switches.
#define LED_PIN 13 //The standard Arduino “Pin 13” LED

boolean powerOn;
boolean previousPowerState = true;

Button myBtn(BUTTON_PIN, PULLUP, INVERT, DEBOUNCE_MS); //Declare the button
boolean ledState; //A variable that keeps the current LED status

char myCellPhone = “xxxxxxxxxx”;

void setup()
{
pinMode(LED_PIN, OUTPUT); //Set the LED pin as an output
mySerial.begin(4800); // the GPRS baud rate
delay(500);
SendStartUpMessage(); // Send a Text message to indicate the sketch started
}

void loop()
{

powerOn = myBtn.read(); //Read the button

if (powerOn == true) { //If the button changed state, change the LED state
digitalWrite(LED_PIN, HIGH);
if (previousPowerState == false) {
previousPowerState = true;
SendPowerRestoredMessage();
}

}
else {
digitalWrite(LED_PIN, LOW);
if (previousPowerState == true) {
previousPowerState = false;
SendPowerFailureMessage();
}
}

}

void SendStartUpMessage() {
mySerial.print(“AT+CMGF=1\r”); //Because we want to send the SMS in text mode
delay(100);
mySerial.print(“AT + CMGS = “”); //send sms message, be careful need to add a country code before the cellphone number
mySerial.print(myCellPhone);
mySerial.println(”"");
delay(100);
mySerial.println(“El Monitor de la P.E. ha arrancado Bien.”);//the content of the message
delay(100);
mySerial.println((char)26);//the ASCII code of the ctrl+z is 26
delay(100);
mySerial.println();
}

void SendPowerRestoredMessage() {
mySerial.print(“AT+CMGF=1\r”); //Because we want to send the SMS in text mode
delay(100);
mySerial.print(“AT + CMGS = “”); //send sms message, be careful need to add a country code before the cellphone number
mySerial.print(myCellPhone);
mySerial.println(”"");
delay(100);
mySerial.println(“Planta de Emergencia Operando.”);//the content of the message
delay(100);
mySerial.println((char)26);//the ASCII code of the ctrl+z is 26
delay(100);
mySerial.println();
}

void SendPowerFailureMessage() {
mySerial.print(“AT+CMGF=1\r”); //Because we want to send the SMS in text mode
delay(100);
mySerial.print(“AT + CMGS = “”); //send sms message, be careful need to add a country code before the cellphone number
mySerial.print(myCellPhone);
mySerial.println(”"");
delay(100);
mySerial.println(“Planta de Emergencia Parada.”);//the content of the message
delay(100);
mySerial.println((char)26);//the ASCII code of the ctrl+z is 26
delay(100);
mySerial.println();
}

p.d. Todo este sketch anterior funciona perfectamente el problema viene cuando intento agregarle la parte del senseo de la red y ya no me funciona como espero.

Hola azetin. Primero definamos el sensor. 1) OPCION TRANSFORMADOR: Lo mas simple es que uses un transformador 220-6VAC o 9VAC en el secundario. Acto seguido debes usar un divisor resistivo pero también debes desplazar la señal de entrada que tiene pico positivo y pico negativo en 2.5V. 1.1) Sin rectificador: Una alternativa simple es esta

Aca todo el link

1.2) Con rectificador

link

2) Con optoacloplador Este es un integrado diseñado especialmente para estos casos, es sencillamente brillante desde mi punto de vista. HCPL-7520 Isolated Linear Sensing IC

3) Sin aislación. Esta alternativa suelo dejarla de lado porque pone en riesgo électrico a toda persona que toque el arduino. Sería usar un dividor resistivo con algunos componentes mas pero obliga a compartir el neutro con la masa del Arduino y de ahi mi reticencia en usar este método. Ni siquiera lo consideres, teniendo en cuenta todos los elementos que ya tienes en tu proyecto.

Un muy buen ejemplo donde el arduino esta sin aislación. Arduino Wattimetro

Hola a todos de nuevo.

Muy amable de tu parte surbyte, pero lo de los sensores ya lo tenía solucionado con relevadores de 5vcc alimentados por cargadores de pared de celulares de 5vcc de salida. De hecho el sketch de la parte monitora de la Planta de Emergencia ya lo tenía funcionando perfectamente y sólo me faltaba acoplar en el sketch la parte monitora de la Energía Comercial (AC). El caso es que hasta hoy pude lograr que me funcionara perfectamente el sketch ya con las dos partes integradas. Me sensa la Energía Comercial y en caso de falla me envía un sms (Falla de Energía Comercial) y después si arranca la Planta de Emergencia me envía otro sms (Planta de Emergencia Operando). Posteriormente si se restablece la Energía Comercial otro sms (Energía Comercial Restablecida) y por último cuando para la Planta otro sms (Planta de Emergencia en StandBy).

Te agradezco tu interés.

bueno Azetin, me disculpo porque no lei tu código y en el esta claro que solo quieres saber estados digitales del monitoreo. Te felicito porque estas en los pocos que he visto usa la libreria button, que es excelente por cierto. Bueno, tambien veo que resolviste tu proyecto y me alegro por ello. Si quieres pasar a algo mas complejo, alguien podrá darte una mano.