DistributeurBoisson2019
Sommaire
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.
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 :
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 :
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.
Schéma de câblage
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
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
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)
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
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é.
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.