Bonjour,
Je me présente je m'appelle Benoît, j'ai 35ans et j'habite dans le Rhône.
Je suis passionné d'aquariophilie eau de mer.
Je souhaite automatiser le remplissage de ma cuve d'eau osmosée qui ser à compenser l'évaporation de l'eau dans mon bac.
Sur un osmoseur, nous avons l'arrivée d'eau sur lequel je vais mettre une electro (EV1), un tuyau de rejet d'eau sale, et un tuyau d'eau propre équipée de 2 electro EV2 et EV3 en parallèle.
Les premiers litres qui sortent du tuyau d'eau propre ne sont pas utilisables et doivent jetés à l'égout.
Mon système fonctionnera de la façon suivante :
Sur un capteur bas, Les electro EV1 et EV2 s'ouvrent, pendant 3 minutes, l'eau sale part à l'égout.
Après 3 minutes, l'electro EV2 se ferme et l'electro EV3 s'ouvre, l'eau propre va dans la cuve.
Lorsque le capteur haut est atteint, toutes les electro sont coupées.
Une tempo est mise par sécurité sur l'ouverture de l'electro principale EV1.
J'ai fait le programme, les electro EV1 et EV2 fonctionne correctement.
Par contre l'electro EV3 ne fonctionne pas comme je le souhaite.
Elle s'allume dès l'alimentation de la carte, fonctionnement bien sur déclenchement de niveau bas, mais ne s'etteint pas sur niveau eau, Pouvez-vous SVP m'éclairer ?
Mon programme :
// Déclarations des connexions sur carte et des variables
const byte PIN_RELAIS_EV1 = 4; // Numéro du pin pour le relais electrovanne principale EV1
const byte PIN_RELAIS_EV2 = 5; // Numéro du pin pour le relais electrovanne rejet eau EV2
const byte PIN_RELAIS_EV3 = 6; // Numéro du pin pour le relais electrovanne eau osmosée EV3
const byte PIN_CAPTEUR_CUVE_BAS = 7; // Numéro du pin pour les capteurs de niveau bas cuve
const byte PIN_CAPTEUR_CUVE_HAUT = 8; // Numéro du pin pour les capteurs de niveau haut cuve
unsigned long temps_debut_osmolation; // Variable de type long non signée pour enregristrer un temps
void setup() { // Initialisation du programme
pinMode(PIN_CAPTEUR_CUVE_BAS, INPUT_PULLUP); // Affecte le mode Entrée au pin capteur. En l'absence de branchement, la résistance interne Pullup tire vers un état HIGH non aléatoire.
pinMode(PIN_CAPTEUR_CUVE_HAUT, INPUT_PULLUP); // Affecte le mode Entrée au pin capteur. En l'absence de branchement, la résistance interne Pullup tire vers un état HIGH non aléatoire.
pinMode(PIN_RELAIS_EV1, OUTPUT); // Affecte le mode Sortie (envoi d'un signal) au pin du relais EV1
pinMode(PIN_RELAIS_EV2, OUTPUT); // Affecte le mode Sortie (envoi d'un signal) au pin du relais EV2
pinMode(PIN_RELAIS_EV3, OUTPUT); // Affecte le mode Sortie (envoi d'un signal) au pin du relais EV3
}
void loop() { // Programme en boucle
if (digitalRead(PIN_CAPTEUR_CUVE_BAS) == LOW) { // Si le pin du capteur est LOW (contact pullup fermé, flotteur bas)
temps_debut_osmolation = millis(); // Affecte le temps actuel au début d'osmolation
digitalWrite(PIN_RELAIS_EV1, HIGH); // Envoie du courant au pin relais, l'electrovanne EV1
digitalWrite(PIN_RELAIS_EV2, HIGH); // Envoie du courant au pin relais, l'electrovanne EV2
digitalWrite(PIN_RELAIS_EV3, LOW); // Envoie pas de courant au pin relais, l'electrovanne EV3
}
if (millis() - temps_debut_osmolation >= 10000){ // Si la durée d'osmolation = 10000 ms
digitalWrite(PIN_RELAIS_EV1, LOW); // N'envoie plus de courant sur le pin relais, EV1 se coupe
}
if (millis() - temps_debut_osmolation >= 4000) { // Si la durée d'osmolation dépasse = 4000 ms
digitalWrite(PIN_RELAIS_EV2, LOW);// N'envoie plus de courant sur le pin relais, EV2 se coupe
}
if (millis() - temps_debut_osmolation >= 3000) { // Si la durée d'osmolation dépasse = 3000 ms
digitalWrite(PIN_RELAIS_EV3, HIGH);// N'envoie plus de courant sur le pin relais, EV3 se coupe
}
if (digitalRead(PIN_CAPTEUR_CUVE_HAUT) == LOW) { // Si le pin du capteur est LOW (contact pullup fermé, flotteur haut)
digitalWrite(PIN_RELAIS_EV1, LOW); // Envoie du courant au pin relais, l'electrovane EV1
digitalWrite(PIN_RELAIS_EV2, LOW); // Envoie du courant au pin relais, l'electrovane EV2
digitalWrite(PIN_RELAIS_EV3, LOW); // Envoie du courant au pin relais, l'electrovane EV2
}
}
Merci de votre aide