Go Down

Topic: projet gestion hydrolique (Read 874 times) previous topic - next topic

SimonShow

Bonjour,

je dois faire un programme arduino pour mon projet de fin d'année. Je suis en terminale STI2D option EE et je me permet de vous poser quelques questions car je n'ai pas trop de connaissances sur arduino...

Alors je dois faire un programme pour qu'une cuve se remplisse automatiquement grace à 2 capteur et une électrovanne et une pompe.

Donc il y aura un capteur de niveau en bas de la cuve et un autre en haut de la cuve. Le capteur a un niveau bas et un niveau haut. Alors mon programme est: quand l'eau de la cuve atteint le capteur bas, l'électrovanne doit se mettre en marche et la pompe aussi. Ensuite quand le capteur haut de la cuve est atteint, l'électrovanne doit s'arrêter et la pompe aussi.

Voici le programme que j'ai commencer a produire,  j'aimerai savoir se que vous en penser:



Code: [Select]

const int elecvanne = 7;     // déclare l'EV2 sur la broche 7
const int capteurbas =  11;      // the number of the LED pin
const int capteurhaut = 12;

int cb = 0;
int ch = 0;

void setup() {
  // initialize the LED pin as an output:
  pinMode(elecvanne, OUTPUT);     
  // initialize the pushbutton pin as an input:
  pinMode(capteurbas, INPUT);     
  pinMode(capteurhaut, INPUT);
}

void loop()
{
  // read the state of the pushbutton value:
  cb = digitalRead(capteurbas);
  ch = digitalRead(capteurhaut);
  pinMode(elecvanne, OUTPUT);
 
  // check if the pushbutton is pressed.
  // if it is, the buttonState is HIGH:
  if (cb == HIGH)
  {     
  digitalWrite(elecvanne, HIGH); 
  }
  else
  {
   digitalWrite(elecvanne, LOW);
  }
 
  if (ch == HIGH)
  {
  digitalWrite(elecvanne,HIGH);
  }
  else
  {
  digitalWrite(elecvanne,LOW);
  }
}
 

Mais je me suis rendu compte d'un petit problème... quand le capteur bas va être à l'état 1, c'est à dire qu'il n'y a pas d'eau dans la cuve, j'ai peur que quand la cuve va se remplir, le remplissage s'arrête des que le capteur bas est a l'état 0.

Merci d'avance pour votre aide 

fdufnews

Mais je me suis rendu compte d'un petit problème... quand le capteur bas va être à l'état 1, c'est à dire qu'il n'y a pas d'eau dans la cuve, j'ai peur que quand la cuve va se remplir, le remplissage s'arrête des que le capteur bas est a l'état 0.
Si tu as peur c'est que tu as mal analysé le problème en amont.

Donc, il faut mettre le clavier de coté, sortir le papier et le crayon et raisonner un peu.

Tu as 2 capteurs, qui peuvent chacun prendre 2 états.
Ce qui donne 4 cas possibles.
Il faut donc analyser les 4 cas en question. Déduire le fonctionnement de la pompe et de l'électrovanne pour chacun des cas. Et coder ensuite.

bricoleau

Petit conseil supplémentaire : quand tu rédigeras le rapport de ton projet, ce serait bien que le titre comporte un hydraulique écrit correctement.  ;)

HOFRAT

Salut Simonzottiv!

Je pense qu'il marchera mieux avec cet algorithme...

Si certains pensent que c'est faux n'hésitez pas à le corriger.

Code: [Select]
/* AFFECTATION DES BROCHES */

const int elecvanne = 7;         // déclaration de l'électrovanne sur le pin 7
const int capteurbas =  11;      // déclaration du capteur bas sur le pin 11
const int capteurhaut = 12;      // déclaration du capteur haut sur le pin 12

/* DÉCLARATION DES VARIABLES */

int cb = 0;   // variable capteur bas
int ch = 0;   // variable capteur haut

/* DÉCLARATION DES ENTRÉES ET SORTIES */

void setup()
{
  pinMode(elecvanne, OUTPUT);     // l'ectrovanne est une sortie
  pinMode(capteurbas, INPUT);     // le capteur bas est une entrée
  pinMode(capteurhaut, INPUT);    // le capteur haut est une entrée
}

/* DÉBUT DE LA BOUCLE */

void loop()

{
 
  cb = digitalRead(capteurbas);  // lire l'état du capteur bas
  ch = digitalRead(capteurhaut); // lire l'état du capteur haut
 
 
 /* si capteur haut = 0 et capteur bas = 0 alors électrovanne = 0 */
    if (ch == LOW && cb == LOW)           
       {
        digitalWrite(elecvanne, LOW);
       }
 
 /* si capteur haut = 1 et capteur bas = 0 alors électrovanne = 0 */
    if (ch == HIGH && cb == LOW)
       {
        digitalWrite(elecvanne, LOW);
       }
 
 /* si capteur haut = 0 et capteur bas = 1 alors électrovanne = 1 */
   if (ch == LOW && cb == HIGH)
       {
        digitalWrite(elecvanne, HIGH);
       }
    return;
}

   

Go Up