Go Down

Topic: Control de electrovalvulas con tiempo... (Read 776 times) previous topic - next topic

emmanuel_sandoval

Soy nuevo en esto y estoy haciendo un proyecto de temporizador con un arduino uno-r3 y un modulo de reveladores
la idea es esta: quiero controlar cuatro electrovalvulas: la Electrovalvula 1 se encendería y se apagaria cada 12 horas, la electrovalvula 2 se encendería  y se apagaría cada 5 minutos, mientras las Electrovalvulas 3 y 4 están apagadas.
después de las 12 horas las Electrovalvulas 1 y 2 se apagarían y se haría el mismo ciclo pero ahora con las electrovalvulas 3 y 4 y asi alternadamente.

espero alguien me pueda ayudar, escribo lo que tengo de mi codigo (los tiempos están así por que es el código con el que estoy probando). Gracias.



const int ledPinB =  8;      // the number of the LED pin B
const int ledPinC =  9;      // the number of the LED pin C
const int ledPinD =  10;      // the number of the LED pin C
const int ledPinF =  11;      // the number of the LED pin C


// Variables will change:

int ledStateB = LOW;             // ledState used to set the LED B
int ledStateC = HIGH;             // ledState used to set the LED C
int ledStateD = LOW;
int ledStateF = HIGH;


long previousMillisB = 60000;        // will store last time LED B was updated
long previousMillisC = 60000;        // will store last time LED C was updated
long previousMillisD = 10000;
long previousMillisF = 10000;


// the follow variables is a long because the time, measured in miliseconds,
// will quickly become a bigger number than can be stored in an int.

long intervalB = 60000;           // interval at which to blink LED B(milliseconds)
long intervalC = 60000;           // interval at which to blink LED C(milliseconds)
long intervalD = 10000;
long intervalF = 10000;

void setup()
{
  // set the digital pin as output:
       
  pinMode(ledPinB, OUTPUT);     
  pinMode(ledPinC, OUTPUT);     
  pinMode(ledPinD, OUTPUT);
  pinMode(ledPinF, OUTPUT);
}

void loop()
{
  unsigned long currentMillis = millis();
 
 
  //Led B
  if(currentMillis - previousMillisB > intervalB)
  {
    previousMillisB = currentMillis;   
    if (ledStateB == LOW)
      ledStateB = HIGH;
    else
      ledStateB = LOW;
    digitalWrite(ledPinB, ledStateB);
  }
  //Led C
  if(currentMillis - previousMillisC > intervalC)
  {
    previousMillisC = currentMillis;   
    if (ledStateC == HIGH)
      ledStateC = LOW;
    else
      ledStateC = HIGH;
    digitalWrite(ledPinC, ledStateC);
  }
  //Led D
  if(currentMillis - previousMillisD > intervalD)
  {
    previousMillisD = currentMillis;   
    if (ledStateD == LOW)
      ledStateD = HIGH;
    else
      ledStateD = LOW;
    digitalWrite(ledPinD, ledStateD);
  }
  //Led F
  if(currentMillis - previousMillisF > intervalF)
  {
    previousMillisF = currentMillis;   
    if (ledStateF == HIGH)
      ledStateF = LOW;
    else
      ledStateF = HIGH;
    digitalWrite(ledPinF, ledStateF);

}
}

Valvulin

porque no haces un contador de 24 horas y otro de 10 minutos que se autoreseteen cuando llegan a la cuenta y luego preguntas en el caso de las EV 1 y 3 cuando este entre 1 y 12 prende una y entre 13 y 24 la otra, de la misma manera con EV3 y 4 cuando esta entre EV1 este prendida y el 2do contador esta entre 1 y 5 prende y entre 6 y 10 apaga, y luego la misma pregunta pero con EV3

1 2 3 4 5 6 7 8 9 10 11 12
_________________
EV 1                                    |
                                            |                           EV 2
                                            |_______________________
                                            13 14 15 16 17 18 19 20 21 22 23 24


1 2 3 4 5
________
                     |
EV1 y EV2  |
                     |_______
                      6 7 8 9 10

1 2 3 4 5
________
                     |
                     |  EV3 y EV4
                     |_______
                      6 7 8 9 10

No se si se entiende la idea..


Hice un trato con Dios, el no arregla máquinas y yo no hago milagros..!

josemanu

integra un contador, basta con una variable que se incremente a cada loop, luego para hacer el funcionamiento alternado cambia los valores de intervalC, B, D y F según el valor del contador sea par o impar.
http://www.ardumania.es/

Iniciación

Go Up