DistributeurBoisson2019

De troyesGEII
Révision datée du 10 avril 2020 à 20:02 par Bjacquot (discussion | contributions) (Explication du programme)
Aller à : navigation, rechercher

Partie 1

INTRODUCTION

Dans le cadre de notre seconde année du DUT Génie électrique et Informatique industrielle à l’IUT de Troyes, il nous est proposé un projet de 4 mois nous permettant de mettre en pratique nos connaissances et nos compétences professionnelles au travers d’un cahier de charges ayant pour finalité de faire du café pour notre projet.

PRÉSENTATION DU PROJET

Le Bvm972 est un dispositif automatique de boissons chaudes et froides permettant de faire du café, du thé ou encore du chocolat. Le choix est assuré par une interface Homme / Machine contenant 56 sélections programmables. Pour la réalisation des boissons, il peut accueillir : • entre 3.8 à 4.5 Kg de graine de café • 5.2 Kg de sucre • 4.8 Kg de chocolat • 2.2 Kg de lait en poudre • 700 gobelets Pour son bon fonctionnement, il est équipé de système automatique pour le réglage de la mouture afin de garantir une meilleur qualité du produit quelques soient les variations de températures et le taux d’humidité ambiant. Bvm972-2.jpg

LES MESURES EFFECTUÉES

Pour pouvoir effectuer les câblages sur les actionneurs et les capteurs nous avions eu à relever les mesures ci-dessous sur ces derniers : Capture mesure.PNG

SCHÉMA HYDRAULIQUE

Pendant le fonctionnement normal, le distributeur est mis en veille. En appuyant sur la touche relative à la boisson désirée, le cycle de distribution de la boisson est activé et l'eau fraîche coule dans le circuit hydraulique ci-dessous :


Capture.PNG

Pour assurer le bon fonctionnement du circuit hydraulique, il est nécessaire de savoir piloter les actionneurs et vérifier l’état des capteurs.

Partie 2

PILOTAGE DES CAPTEURS

Ce capteur est un capteur TOR, une sorte d’interrupteur qui informe d’un stock plein de l’eau lorsque le courant passe. Capture1.PNG


Schéma de câblage

Capture2.PNG

Programmation

#include <Wire.h>
#include "Adafruit_MCP23008.h"
Adafruit_MCP23008 mcp;

int bouton = 0;     // Numéro de la broche à laquelle est connecté le bouton poussoir
int led =  1;      // Numéro de la broche à laquelle est connectée la LED

// Déclaration des variables :
int etatBouton = 0;         // variable qui sera utilisée pour stocker l'état du bouton

  
void setup() {  
  Serial.begin(9600);
  mcp.begin();      // use default address 0
  mcp.pinMode(led, OUTPUT);     // indique que la broche led est une sortie :
  mcp.pinMode(bouton, INPUT);  // indique que la broche bouton est une entrée :
}

           // le code dans cette fonction est exécuté en boucle
void loop() {
  etatBouton = mcp.digitalRead(bouton);   // lit l'état du bouton et stocke le résultat dans etatBouton

         // Si etatBouton est à 5V (HIGH) c'est que le bouton est appuyé
  if ( etatBouton == HIGH) {     
     mcp.digitalWrite(led, LOW);  // on allume la LED
      Serial.println(0);          //On affiche l'etat de la led sur le moniteur serie
      delay(1000);               //Pour une durée de 1s
  
  }
  else {
     mcp.digitalWrite(led, HIGH); // sinon on éteint
      Serial.println(1);         //On affiche l'etat de la led sur le moniteur serie
      delay(1000);              //Pour une durée de 1s
  }
}

Explication du programme des Capteurs

L'utilisation d'un bouton poussoir, et plus généralement d'un contacteur, va nous amener à gérer non plus les sorties, mais les entrées de la carte Arduino. Nous allons donc voir comment elles fonctionnent, comment on les programme, comment on en récupère les informations (il s'agit pour le moment de récupérer les informations des entrées numériques).

Les entrées numériques Nous avons utilisé jusqu'à présent les sorties numériques : soit l'Arduino est en position haute (HIGH) et il envoie du +5V, soit il est en position basse, et il est à 0V, donc au grounds. Et bien les entrées numériques fonctionnent sur le même principe : soit elles reçoivent du +5V ou du 0V. Pour les sorties nous utilisions la commande digitalWrite(pin, état), qui est donc une commande d'écriture : write=écrire. Pour les entrées, nous utiliserons la commande digitaRead(pin), qui vous l'aurez peut-être deviné est une commande de lecture : read=lire. Mais avant toute chose il faut comprendre une notion importante de l'Arduino : un pin est soit en entrée, soit en sortie, mais pas les deux. Il est donc important de bien définir si le pin va se comporter en entrée ou en sortie ! C'est ce que nous avons fait grâce à la commande que nous avons utilisée.

Ce code permet de lire la valeur reçue par le pin 10. Saisissez-le et testez-le en ne connectant rien sur votre Arduino. Dans le meilleur des cas, vous obtiendrez une série de 0. Dans le pire, vous obtiendrez des séries de 1 et de 0 qui changent sans raison valable. C'est ce qu'on appelle un comportement erratique. C'est-à-dire que la valeur obtenue n'est pas fiable. Et ne vous y trompez pas, même si pour ce test, vous obtenez des 0, vous verrez que si vous ne cherchez pas à pallier ce comportement erratique, lors de vos projets, vous risquez d'avoir des comportements de la carte inattendus. Ce sera peut-être plus visible dans ce qui vient.

Le principe de ce bouton est que lorsque l'on appuie, le courant passe, et lorsque l'on relâche et bien... le courant ne passe plus. Pour comprendre, l'Arduino va pouvoir lire une valeur de +5V ou de 0V. Donc en théorie, si on envoie le +5V sur un poussoir, quand il est baissé, il laisse passer le courant et l'Arduino reçoit +5V, il indique donc HIGH (ou 1). Si le poussoir est ouvert, l'Arduino devrait ne rien recevoir, donc être à 0V et indiquer LOW (ou 0). On remarque que le programme n'est pas si simple. Nous verrons plus tard comment le rendre plus concis.

Etat de capteurs

ces capteurs ne renverront que deux niveaux logiques : 0 = absence d’eau. 1 = présence d'eau

Capture3.PNG

Carte Capteutr

La carte capteur est associée à une carte Arduino qui lui permet de communiquer avec les autres éléments du système (des électrovannes) Capture4.PNG

PILOTAGE DES ACTIONNEURS

PILOTAGE DES ÉLECTROVANNES

Comme indiqué ci-dessous les électrovannes qui se trouvent sur la machine à café sont alimentées en 24v et elle sont commandées par une carte arduino alimentée en 5v : L’électrovanne est composé d’une entrée (1) et deux sorties (2)(3).Elle permet de fermer une sortie pour en ouvrir une autre. En clair, lorsque l’on demande du café à la machine, la sortie 2 se ferme pour laisser passer l’eau entre la 1 et 3. Et quand la machine s’arrête, la sortie 2 s’ouvre et la 3 se ferme. L’eau en pression dans la chaudière est alors évacuée. Soit l’eau retourne dans le bac à eau soit dans le réservoir d’eau usée.

Schéma de Câblage des Électrovannes

Capture5.PNG

PILOTAGE DE LA POMPE

La pompe est piloter par ce shéma ci-dessous qui est composé de deux parties: une partie commande et une partie puissance comme indiqué ci-dessous. La pompe propulse l’eau dans tout le circuit hydraulique de la machine à café de façon à passer à travers la mouture de café. IMG 20200327 201503.jpg

TESTE DE FONCTIONNEMENT

Programmation

Voici le programme qu’on a mis en place pour pouvoir piloter les capteurs, les électrovannes et vérifier le bon fonctionnement du système:

#include <Wire.h>
#include "Adafruit_MCP23008.h"
Adafruit_MCP23008 mcp;

int pinBouton  = 2;
int pinGrille1 = 3;
int pinGrille2 = 4;
int pinBouton1 = 5;
int pinLed1    = 6;
int pinPompe   = 7;

void setup()
{
  // définition des broches en sortie
  //Serial.begin(9600);
  mcp.pinMode(pinBouton,  INPUT);
  mcp.pinMode(pinBouton1, INPUT);
  mcp.pinMode(pinGrille1, OUTPUT);
  mcp.pinMode(pinGrille2, OUTPUT);
  mcp.pinMode(pinLed1,    OUTPUT);
  mcp.pinMode(pinPompe,   OUTPUT);
}
void loop()
{
   //test des conditions
   if (digitalRead(pinBouton1)==HIGH)
  {
    mcp.digitalWrite(pinGrille1,HIGH); //5v
    mcp.digitalWrite(pinPompe,  HIGH);
    }
    else
    {
    mcp.digitalWrite(pinGrille1,LOW); //0v
    mcp.digitalWrite(pinPompe,  LOW);
      }
  if (mcp.digitalRead(etatBouton)==HIGH)
  {
  mcp.digitalWrite(pinGrille2,LOW); //5v
  mcp.digitalWrite(pinLed1,   LOW); //Led1 ETEINTE
    
  }
  else
  {
  mcp.digitalWrite(pinGrille2,HIGH); //
    
  mcp.digitalWrite(pinLed1,   HIGH); //Led1 allumer
}  
  delay(100); //petite attente
}

CONCLUSION

Ce projet de DISTRIBUTEUR DE BOISSON a cette particularité de rassembler divers corps de métiers : programmation, informatique, électronique, et bien d'autres. Cette pluridisciplinarité fut un obstacle que nous avons surmonté grâce aux compétences multiples et à la polyvalence de notre équipe. Cette polyvalence a notamment été mise à profit dans l'attribution des tâches afin que chacun tire parti de ses accomplissements. Enfin, les temps impartis à la réalisation du système furent bref et il a fallu faire preuve de flexibilité et de persévérance pour respecter les délais imposées par le projet. Somme toute, nous avons retrouvé lors de ces quatre mois, les compétences, les contraintes mais aussi l’excitation d’un projet d’entreprise.