IMA4 2017/2018 P1
Sommaire
Présentation générale
Description
L'objectif de ce projet est de réaliser un système automatisé de production de bière. Celui ci devra être capable de mélanger, chauffer et refroidir le mélange suivant la recette donnée et les ingrédients choisis par l'utilisateur.
Objectifs
Analyse du projet
Positionnement par rapport à l'existant
Analyse du premier concurrent : Saveur Bière
Cette société se pose comme la 1ère en terme de vente de bière en ligne. Un de ses secteur d'activité concerne notamment les kits pour réaliser ses propres mélanges chez soi. Elle propose une très large gamme de produit, notamment en proposant des packs adaptés aux différents "niveaux" des consommateurs. On trouve ainsi des produits adaptés aux débutants et brasseurs confirmés.
Son principal point fort est la possibilité de pouvoir réutiliser son kit plusieurs fois, en mettant en vente tous les ingrédients nécessaires, les produits de nettoyage, les filtres, le matériel d'embouteillage...
Cependant tous les produits de Saveur Bière demandent au consommateur de contrôler à tout instant le mélange, lors des différentes étapes de fabrication. Le consommateur doit donc contrôler la température, le brassage et la durée de chaque phase.
Contre ce concurrent nous devrons axer notre communication sur le fait que notre produit est entièrement automatisé et qu'il ne nécessite pas une vigilance constante de l'utilisateur.
Analyse du second concurrent : Youtube
Un autre concurrent qui ne peut pas être négligé, bien qu'il soit indirect, est youtube.
Allez sur le site, tapez tout simplement "fabrication bière maison", et vous aller trouver des centaines de vidéos sur le sujet. L'intérêt de ces vidéos c'est que leurs réalisateurs n'utilisent que du matériel de cuisine classique pour leurs préparations. Ainsi une personne qui souhaite s'initier à la fabrication maison ne verra pas forcément l'intérêt d'acheter un kit ou une machine.
Cependant cette méthode présente le même défaut que pour Saveur Bière : vigilance constante. De plus les résultats sont très "hasardeux", même en faisant particulièrement attention à sa préparation.
La plateforme Youtube pourrait cependant être un bon moyen pour mettre en valeur notre produit, et notamment proposer de nouvelles recettes.
Scénario d'usage du produit ou du concept envisagé
Notre produit se présente sous la forme suivante : la cuve de mélange est la partie principale, elle est assez grande pour contenir 5L de bière; au dessus de celle ci se trouvent les cuves à ingrédients, plus petites, elles servent à ajouter les différents produits (houblon, levures, épices...); sur notre produit se trouve un écran qui indique à quelle étape du processus nous nous trouvons, ainsi que le temps restant de l'ensemble de la préparation.
Notre produit est contrôlable grâce à une application smartphone ou par ordinateur, via une liaison Bluetooth.
Lorsqu'un client veut réaliser sa bière il doit d'abord ajouter ses ingrédients dans les cuves concernées. Très important c'est à lui de doser les différentes produits, l'appareil ne le fera pas lui même. Ensuite il doit s'assurer que l'appareil est branché à une arrivée d'eau. Puis vient le réglage de la recette.
L'application affiche chaque étape. Dans celles ci on peut paramétrer quel ingrédient ajouter, quelle quantité d'eau, la température, la durée ... Certaines étapes sont parfois optionnelles, ou n'apparaissent que dans des recettes précises, nous avons donc ajouté la possibilité de passer celles ci.
Réponse à la question difficile
Chacune des étapes de production implique une température précise. Par conséquent un système de chauffage doit être implémenté sur notre produit. Cependant toutes les recettes n'impliquent pas une augmentation de la dite température, il est parfois nécessaire de refroidir le mélange.
Or attendre pendant X heures que notre bière refroidisse serait particulièrement inconvenant. Aussi voici notre problématique: Quel système pourrions nous implanter afin de pouvoir gérer les hausses et baisses de température?
Nous avons décidé d'utiliser un serpentin, qui sera plongé dans la cuve de brassage. Celui ci sera alimenté par trois arrivées d'eau, chacune reliée au serpentin par une pompe : une d'eau chaude (100°C), une d'eau à température ambiante (nous considérons 20°C) et une dernière d'eau froide (0°C). Quand nous souhaitons chauffer le mélange, on activera les pompes 1 et 2 de façon à obtenir la température souhaitée dans le serpentin. Par analogie le refroidissement s'effectue de la même manière, via les pompes 2 et 3.
Préparation du projet
Cahier des charges
L'objectif est de réaliser un système permettant de contrôler la température d'une cuve principale.
Le choix de la température dépendra de l'utilisateur, il pourra ainsi choisir celle qui lui convient. Elle devra être comprise entre 0 et 100 °C. Il s'agit là d'une contrainte de notre système.
Choix techniques : matériel et logiciel
Pour le matériel, nous utiliserons un Arduino UNO. Celui présente les capacités nécessaires au bon fonctionnement du système.
Dans ce projet, les pompes utilisés seront péristaltiques : elles fonctionnent grâce à la rotation de "points de pression" sur le tube, qui passe dans celles ci. Leur intérêt est de pouvoir démarrer à vide.
Matériel
Trois pompes Walfront DC 12V. Il s'agit d'un modèle péristaltique. Ces pompes possèdent un débit réglable, via une PWM.
Une alimentation 12V DC afin de faire fonctionner les pompes et le système de contrôle.
Une Arduino UNO afin de gérer le système.
Trois transistors BC547.
Trois résistances 1Kohms.
Une résistance 4,7 Kohms.
Trois diodes.
Un capteur de température pour liquides DS18B20.
Liste des tâches à effectuer
Calendrier prévisionnel
Réalisation du Projet
Feuille d'heures
Tâche | Prélude | Heures S1 | Heures S2 | Heures S3 | Heures S4 | Heures S5 | Heures S6 | Heures S7 | Heures S8 | Heures S9 | Heures S10 | Total |
---|---|---|---|---|---|---|---|---|---|---|---|---|
Analyse du projet | 0 |
Prologue
Semaine 1
Au début du projet nous avons pensé à concevoir un système composé de plusieurs cuves, chacune étant réservées à un rôle précis (chauffer ou refroidir).
Après avoir proposé aux enseignants ce modèle, afin de répondre à la question difficile, nous avons modifié celui ci. Notre système comportera toujours plusieurs cuves mais leur rôles seront différents. Nous aurons une cuve principale (1), destinée à contenir le mélange. A coté se trouveront trois autres qui contiendront de l'eau, respectivement, froide (environ 0°C) (2), chaude (environ 100°C)(3) et à température ambiante(4).
Dans la cuve principale, à environ 1/3 de sa hauteur, nous positionnerons un capteur de température afin d'observer l'évolution du mélange.
Afin de gérer la température, un serpentin sera placé dans la cuve (1). Nous y ferons circuler de l'eau provenant des 3 autres. Chacune d'entre elles sera reliée au serpentin via une pompe. Si nous souhaitons chauffer, nous actionnerons la pompe de la cuve (3) à pleine vitesse jusqu'à un certain seuil. Quand celui ci sera atteint, nous actionnerons la pompe de la cuve (4) afin d'obtenir la température voulue. Quand le point de chauffe souhaité sera atteint, nous maintiendrons les débits des pompes (3) et (4) afin de se maintenir à ce point. Pour refroidir, nous n'actionnerons que la (2) au début pour refroidir rapidement, puis nous stabiliserons avec la pompe (4).
Lorsque l'eau sort du serpentin, il faut distinguer trois cas:
1) Il n'y a que de l'eau provenant de (3), nous la renverrons dans (3), en considérant que cela n'aura pas d'impact sur la température de (3)
2) C'est un mélange entre (3) et (4) nous renvoyons toujours dans (3)
3) Elle provient de (2), l'eau est complétement évacuée du système
Semaine 2
Après quelques recherches nous avons décidé d'utiliser le circuit de contrôle suivant
Semaine 3
Début de la rédaction du programme Arduino pour le contrôle de la pompe. Afin de réaliser ceci nous utiliserons une PWM.
Un Arduino possède les fonctions nécessaires à sa mise en place. Nous utiliserons donc la fonction analogWrite(pinX, vitesse).
pin correspond au port de l'Arduino qui générera notre signal (les pins pouvant réaliser cette action sont prédéterminés).
Le rapport cyclique est calculé de la façon suivante R = vitesse / 255.
Ainsi en utilisant cette fonction, nous générerons sur pinX une PWM de rapport cyclique R.
Nous avons également réalisé quelques tests afin de voir le comportement de la pompe.
Sur cette photo, les deux câbles du haut sont reliés à l'alimentation 12V.
Semaine 4
Nous avons réfléchi sur le montage électrique et hydraulique de l'ensemble du système. La partie électrique doit pouvoir alimenter les trois pompes en fonction des sorties de l'arduino ainsi que retourner les valeurs captées par la sonde de température. Le schéma a été réalisé sur Altium en prévision de la réalisation d'une carte de commande qui gérera la partie électrique.
Concernant la partie hydraulique, la seule pièce qui nous manquait était un raccord entre le tube en silicone en sortie des trois pompes et la conduite en cuivre constituant le serpentin. Un raccord a été imaginé puis modélisé prévisionnellement (surtout au niveau des côtes) sur Onshape en vue d'une impression 3d.
Semaine 5
Nous avons écrit un programme Arduino pour pouvoir commander les pompes. Au départ, nous avions configuré la commande pour n'avoir que le débit équivalent à celui d'une seule pompe dans la conduite, mais cela posait problème dans les cas où le rapport cyclique du signal de commande d'une des pompes était inférieur à 30%. Nous avons donc palier ce problème en augmentant le débit dans la conduite tout en gardant la même température théorique.
Il nous fallait aussi pouvoir récupérer les données de la sonde de température. En nous basant sur le code ainsi que la librairie fournie avec cette dernière, nous avons aménagé notre code pour avoir le retour de température. Nous avons ensuite modifié la commande des pompes pour que celle ci soit dynamique selon la température retournée par la sonde. Dans la première version du code, la température cible des pompes était la même que la température voulue pour le bassin. Maintenant, grâce à la sonde de température, nous établissons une température cible qui a autant d'écart avec la température voulue que n'a cette dernière avec la température actuelle. Ainsi, la température actuelle tendra plus vite vers la température voulue pour le bassin.
La version actuelle du code est faite avec l'IDE Arduino.
Semaine 6
Partie interface
Pour cette séance nous nous sommes occupé de la réalisation d'une interface utilisateur.
Celle ci permettra de connaitre : le débit de chacune des pompes et la température actuelle de la cuve de mélange.
L'utilisateur pourra également choisir le mode de fonctionnement du système : en auto le système se gère tout seul, en manuel la température désirée est à choisir.
Cette première ébauche vous montre à quoi ressemblera l'interface (nous ajouterons quelques cadres et un peu de couleur, histoire de rendre ça plus vivant). Dans le cas présent nous sommes en mode Manuel, et l'utilisateur n'a pas encore entré de température.
Dans cette seconde capture l'utilisateur a entré une donnée.
Partie matérielle
Pour la partie matérielle, nous avons finalisé le PCB sous Altium et envoyé les fichiers en vue d'une impression de la carte.
Nous avons également réfléchi sur la structure du système : pour l'assemblage des différentes parties, certaines pièces comme les supports des cartes et le support du serpentin seront modélisées sous Onshape puis imprimé au Fabricarium.
Semaine 7
Partie interface
Après quelques essais à l'aide du langage php, nous avons décidé d'utiliser le Java, car celui ci permettra de réaliser plus facilement un affichage dynamique des températures. Nous avons recours à la bibliothèque RXTX, développée par arduino, qui permet la réalisation de liaisons séries entre classes java et un des ports COM du PC.
Partie matérielle
La carte réalisée a été récupéré et les composants y ont été soudés. Néanmoins, toutes les connectiques pour les moteurs, la sonde et les pins Arduino ne seront faites qu'une fois le modèle de la structure finalisé.
Une réflexion a été faite quant aux problèmes de support du serpentin et du raccord. Les matériaux disponibles au Fabricarium sont déformables aux hautes températures de notre système. Nous ne pouvons donc pas utiliser ces matériaux dans la cuve et la conduite. Mais une alternative a été trouvé : un fil d'acier inoxydable tressé permettra de maintenir le serpentin dans la cuve, et un serflex sera utilisé pour maintenir le tube souple autour de la conduite en cuivre.
Semaine 8
Réalisation d'un programme permettant de réaliser des tests sur les temps de chauffe et de refroidissement de la cuve.
Semaine 9
Lors de cette séance, nous avons modifié la fonction de gestion des vitesses. Nous avons également ajouté une gestion de certains cas particuliers et un système d'arrêt.
Dans notre programme trois variables ont été ajoutées, ambiant,chaud et froid. Elles correspondent respectivement : à la température de la cuve d'eau ambiante (20°C), celle de la cuve d'eau chaude (100°C) et enfin à celle d'eau froide(~0°C).
Lorsque le système est en marche, l'utilisateur peut choisir la température de la cuve. Dans le cas où il choisit une des trois températures particulières, seule la pompe correspondante sera activée.
Si son choix est inférieur à ambiant, un mélange d'eau froide et ambiante sera envoyé. La vitesse du moteur ambiant, gérée par une PWM, se réglera grâce à la formule :
vitesseM = constrain(255 * (temp - froid)/(ambiant - temp),0,255)
Si son choix est supérieur à ambiant, un mélange d'eau chaude et ambiante sera envoyé. La vitesse du moteur ambiant, gérée par une PWM, se réglera grâce à la formule :
vitesseM = constrain(255 * (chaud - temp)/(temp - ambiant),0,255)
Dans tous les cas vitesseC = constrain(255 * (temp - ambiant)/(froid - temp),0,255) (moteur eau froide)
Et vitesseH = constrain(255 * (temp - ambiant)/(chaud - temp),0,255) (moteur eau chaude)
La fonction constrain(val,x,y) permet de maintenir les vitesses chargés dans l'intervalle [x,y]. Dans le cas du calcul réalisé pour vitesseC, cela permet de maintenir la vitesse à 0 quand l'utilisateur choisit une température au dessus de 20°C.