IMA4 2017/2018 P1 : Différence entre versions

De Wiki de Projets IMA
(Choix techniques : matériel et logiciel)
 
(102 révisions intermédiaires par 3 utilisateurs non affichées)
Ligne 1 : Ligne 1 :
 +
<include nopre noesc src="/home/pedago/pimasc/include/video-ProductionBiere-iframe.html" />
 
__TOC__
 
__TOC__
 
<br style="clear: both;"/>
 
<br style="clear: both;"/>
Ligne 63 : Ligne 64 :
  
 
==Cahier des charges==
 
==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==
 
==Choix techniques : matériel et logiciel==
 +
 +
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===
 
===Matériel===
  
Trois pompes Walfront DC 12V. Il s'agit d'un modèle peristaltique.
+
Trois pompes Walfront DC 12V.
 
Ces pompes possèdent un débit réglable, via une PWM.
 
Ces pompes possèdent un débit réglable, via une PWM.
  
Ligne 74 : Ligne 83 :
 
Une Arduino UNO afin de gérer le système.
 
Une Arduino UNO afin de gérer le système.
  
Des transistors BC547 (nombre à confirmer).
+
Trois transistors BC547.
 +
 
 +
Trois résistances 1Kohms.
  
Des résistances 10Kohms (nombre à confirmer).
+
Une résistance 4,7 Kohms.
  
Des diodes (nombre à confirmer).
+
Trois diodes.
  
Un capteur de température pour liquides.
+
Un capteur de température pour liquides DS18B20.
  
 
==Liste des tâches à effectuer==
 
==Liste des tâches à effectuer==
Ligne 109 : Ligne 120 :
 
==Prologue==
 
==Prologue==
 
==Semaine 1==
 
==Semaine 1==
===Correction du modèle===
 
  
Après avoir discuté avec nos enseignants sur le modèle proposé, afin de répondre à la question difficile, nous avons modifié celui ci.
+
 
 +
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).
 
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).
  
Ligne 129 : Ligne 142 :
  
 
==Semaine 2==
 
==Semaine 2==
 +
 +
Après quelques recherches nous avons décidé d'utiliser le circuit de contrôle suivant
 +
 +
[[Fichier:Circuit pompe.JPG|400px]]
 +
 +
==Semaine 3==
 +
 +
[[Fichier:Circuit_une_pompe.jpg|thumb|left|200px]]
 +
 +
[[Fichier:Circuit_transistor.jpg|thumb|right|200px]]
 +
 +
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.
 +
 +
<br style="clear: both;" />
 +
 +
==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.
 +
 +
[[Fichier:Schema_Montage_final.png|Schéma du circuit Altium]]
 +
 +
 +
 +
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.
 +
 +
 +
[[Fichier:raccord.png|1000px]]
 +
 +
==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.
 +
 +
[[Fichier:Image site.jpg|600px]]
 +
 +
Dans cette seconde capture l'utilisateur a entré une donnée.
 +
 +
[[Fichier:Image site2.jpg|600px]]
 +
 +
===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.
 +
 +
[[Fichier:PCB_P1.png]]
 +
 +
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.
 +
 +
==Semaine 10==
 +
Nous avons effectués plusieurs tests sur notre système, avec seulement de l'eau ambiante et de l'eau froide.
 +
 +
L'objectif était de vérifier que l'eau qui circulerait dans notre serpentin serait à la température choisie par l'utilisateur.
 +
 +
Cependant lors des essais nos pompes ne sont pas comportées comme prévu. Par exemple la pompe d'eau froide ne s'activait pas quand il le fallait.
 +
 +
Nous avons donc décidé de vérifier les différents composants de notre système. Nous avons découvert qu'un de nos transistors avait grillé.
 +
 +
En faisant des recherches, et des mesures au voltmètre et à l'ampèremètre, nous avons compris que le courant qui traversait nos transistors était beaucoup trop élevé.
 +
 +
Nous avons donc changé ceux ci pour des KSP2222A, dont la limite de courant est plus élevée.
 +
 +
==Semaine 11==
 +
 +
L'objectif d'aujourd'hui était de tester quelle est la température envoyé dans les tuyaux, lorsqu'on mélange de l'eau venant de deux cuves.
 +
 +
Nous disposions des cuves d'eau froide et d'eau chaude. Le mélange était stocké dans une bouteille, et la température de l'eau de celle ci était mesuré. Les premier résultats étaient satisfaisant, puisque nous ne faisions que diminuer notre commande. Mais puisque nous n'avions pas de l'eau chaude, nous n'avons pas pu tester une remonté de la commande. L'eau ambiante n'ayant pas un écart très important avec l'eau de notre bouteille, la remonté aurait été très lente.
 +
 +
==Semaine 12==
 +
Nouveau test sur la commande en eau froide. Toujours dans le but de s'assurer que la température qui traverse le serpentin est bien celle choisie par l'utilisateur.
 +
 +
Nous avons mis en place une régulation simple : la sonde nous renvoie la température actuelle du mélange. Une nouvelle consigne est alors envoyée au système en fonction du résultat.
 +
 +
Les résultats sont plutôt prometteurs. Notre système permet d'obtenir la température désirée avec une précision de plus ou moins 2°C. Le temps de réponse du système est acceptable.
 +
 +
 +
La prochaine étape sera de réaliser les tests de chauffe d'un mélange, via un serpentin.
 +
 +
 +
==Séance supplémentaire==
 +
Nous avons réalisé des tests visant à contrôler la température dans la cuve contenant le mélange.
 +
 +
Si l'ensemble du système fonctionnait correctement, nous sommes loin de l'objectif visant à changer rapidement la température de la cuve. En effet notre système mettait beaucoup trop de temps à la baisser.
 +
 +
A l'origine de ce problème, deux choses :
 +
 +
* notre système est loin d'être parfait niveau isolation thermique. En effet le serpentin a une trop grande surface de contact avec les parois de la cuve, ce qui entraine    des pertes. Ensuite il y a bien sur les échanges avec l'air.
 +
 +
* le débit des pompes n'est pas assez élevé. Une pompe par cuve d'eau ne permet pas d'obtenir un débit suffisant.
 +
 +
Pour les prochains tests, nous essaierons de voir si la cuve principale se refroidit plus vite avec trois pompes reliées à l'eau froide.
 +
Nous ferons en sorte de limiter la surface de contact du serpentin, pour diminuer les pertes.
  
 
=Documents Rendus=
 
=Documents Rendus=
 +
[[Média:Code version1.txt]]
 +
 +
[[Média : Rapport_projet_CARLIER_BOENS.pdf]]
 +
 +
[[Média:Codes gestion.zip]]

Version actuelle datée du 15 juin 2018 à 21:22


Vidéo HD


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

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. 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

Circuit pompe.JPG

Semaine 3

Circuit une pompe.jpg
Circuit transistor.jpg

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.

Schéma du circuit Altium


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.


Raccord.png

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.

Image site.jpg

Dans cette seconde capture l'utilisateur a entré une donnée.

Image site2.jpg

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.

PCB P1.png

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.

Semaine 10

Nous avons effectués plusieurs tests sur notre système, avec seulement de l'eau ambiante et de l'eau froide.

L'objectif était de vérifier que l'eau qui circulerait dans notre serpentin serait à la température choisie par l'utilisateur.

Cependant lors des essais nos pompes ne sont pas comportées comme prévu. Par exemple la pompe d'eau froide ne s'activait pas quand il le fallait.

Nous avons donc décidé de vérifier les différents composants de notre système. Nous avons découvert qu'un de nos transistors avait grillé.

En faisant des recherches, et des mesures au voltmètre et à l'ampèremètre, nous avons compris que le courant qui traversait nos transistors était beaucoup trop élevé.

Nous avons donc changé ceux ci pour des KSP2222A, dont la limite de courant est plus élevée.

Semaine 11

L'objectif d'aujourd'hui était de tester quelle est la température envoyé dans les tuyaux, lorsqu'on mélange de l'eau venant de deux cuves.

Nous disposions des cuves d'eau froide et d'eau chaude. Le mélange était stocké dans une bouteille, et la température de l'eau de celle ci était mesuré. Les premier résultats étaient satisfaisant, puisque nous ne faisions que diminuer notre commande. Mais puisque nous n'avions pas de l'eau chaude, nous n'avons pas pu tester une remonté de la commande. L'eau ambiante n'ayant pas un écart très important avec l'eau de notre bouteille, la remonté aurait été très lente.

Semaine 12

Nouveau test sur la commande en eau froide. Toujours dans le but de s'assurer que la température qui traverse le serpentin est bien celle choisie par l'utilisateur.

Nous avons mis en place une régulation simple : la sonde nous renvoie la température actuelle du mélange. Une nouvelle consigne est alors envoyée au système en fonction du résultat.

Les résultats sont plutôt prometteurs. Notre système permet d'obtenir la température désirée avec une précision de plus ou moins 2°C. Le temps de réponse du système est acceptable.


La prochaine étape sera de réaliser les tests de chauffe d'un mélange, via un serpentin.


Séance supplémentaire

Nous avons réalisé des tests visant à contrôler la température dans la cuve contenant le mélange.

Si l'ensemble du système fonctionnait correctement, nous sommes loin de l'objectif visant à changer rapidement la température de la cuve. En effet notre système mettait beaucoup trop de temps à la baisser.

A l'origine de ce problème, deux choses :

  • notre système est loin d'être parfait niveau isolation thermique. En effet le serpentin a une trop grande surface de contact avec les parois de la cuve, ce qui entraine des pertes. Ensuite il y a bien sur les échanges avec l'air.
  • le débit des pompes n'est pas assez élevé. Une pompe par cuve d'eau ne permet pas d'obtenir un débit suffisant.

Pour les prochains tests, nous essaierons de voir si la cuve principale se refroidit plus vite avec trois pompes reliées à l'eau froide. Nous ferons en sorte de limiter la surface de contact du serpentin, pour diminuer les pertes.

Documents Rendus

Média:Code version1.txt

Média : Rapport_projet_CARLIER_BOENS.pdf

Média:Codes gestion.zip