Contrôle et Interface

L’interface

Mon système utilise des boutons et des interrupteurs physiques pour certaines opérations de base : allumer des pompes ou sélectionner lequel des corps de chauffe est actif.  Tout le reste passe par l’interface graphique.

Le logiciel affiché est grandement inspiré du design d’un de ceux que j’utilise chez Cybelec (l’entreprise ou je travaille). Je rappelle qu’on vends des commandes numériques pour presses plieuses, et que je suis en fait edsan train de réaliser une commande numérique pour le brassage de la bière. C’est finalement assez similaire…

Le Raspberry Pi (le micro ordinateur qui est intégré dans mon système) affiche donc le logiciel que j’ai écrit en C#. Ce même  logiciel, en réaction à des actions sur l’interface envoie des ordres à l’Arduino (le microcontrolleur qui actionne/vérifie les entrées-sorties sur mon système) Les deux communiquent ensemble par liaison série.

IMG_0280
Le Raspberry Pi (à gauche) et l’Arduino (à droite), communiquent ensemble par liaison Série (la nappe de câbles jaune-orange-rouge-marron juste sous l’Arduino qui passe par un convertisseur de tension)

L’interface graphique affichée est relativement épurée. On peut éditer des recettes, et les exécuter. Un mode manuel permet de prendre directement contrôle des éléments de chauffe ou des pompes. Et enfin d’autres menus permettent de voir l’état du système (software, hardware et électronique), de le configurer ou de le tester. La plupart des éléments d’interface sont fait pour être touché.

L'interface du BrewManager
L’interface du BrewManager
BrewManagerLogWindow
La fenêtre qui permet de voir le statut des I/Os et du microcontrôlleur.
BrewManagerPIDTuning
La fenêtre affichée lorsqu’on souhaite tuner les paramètres de l’algorithme de régulation des corps de chauffe.

Deux principaux modes de travail sont disponibles (directement empruntés au monde des commandes numériques pour machines industrielles) :

  • Le mode manuel qui permet de commander tous les éléments individuellement
  • Le mode automatique qui exécute un programme de brassage bien défini, et évite donc de rentrer des valeurs à la main.

Le mode manuel est parfaitement fonctionnel pour exécuter un brassage de A à Z. On peut choisir d’activer ou de désactiver les pompes, et sélectionner les modes des deux corps de chauffe. On a aussi accès à un compte à rebours qui permet de faire sonner l’alarme au bout d’un certain temps. Et le tout en gardant un œil sur les 5 sondes de températures.

Le mode manuel du BrewManager.
Le mode manuel du BrewManager.
Vous allez me dire : « mais pourquoi un mode automatique ??? »

Tout simplement parce que mon objectif est d’intervenir le minimum sur le processus de brassage. Mon rêve serait de programmer la recette, d’appuyer sur Start, et de revenir 6 heures plus tard pour mettre les levures et fermer la cuve de fermentation. Mais, çà c’est l’objectif à moyen terme (cet été ??)…

Pour l’instant, je voudrais au moins pouvoir programmer par exemple  :

  1. Atteindre 55°C, faire sonner l’alarme (pour m’indiquer de transférer l’eau et le grain, puis de brancher les tuyaux correctement pour le brassage).
  2. Commencer à brasser en actionnant les deux pompes et en exécutant ces palier de températures:
    1. 20 minutes à 55°C
    2. 20 minutes à 62°C
    3. 30 minutes à 68°C
    4. 10 minutes à 74°C
    5. Puis sonner l’alarme pour m’indiquer de faire la phase de rinçage.
  3. etc.

Avoir un mode automatique permet donc de réaliser les paliers sans mon intervention. En mode manuel, il me faudrait choisir la température, programmer l’alarme, puis une fois que celle-ci sonne, il me faudrait alors revenir programmer la température suivante et le compte à rebours.

J’ai identifié 6 phases principales, et chacune aura son menu :

  1. La phase de remplissage de la cuve d’eau chaude avec de l’eau (froide) qui vient du robinet (quelques minutes)
  2. Le préchauffage de l’eau chaude dans cette même cuve (quelques minutes)
  3. Le transfert d’une partie de l’eau chaude dans la cuve de brassage (quelques minutes)
  4. Le brassage à proprement parler (de une à deux heures)
  5. Le rinçage des drêches (les restes des grains de malt qui doivent être lavés avec de l’eau très chaude pour en extraire le reste des sucre). Cette phase est lente et réalise le transfert du moût depuis la cuve de brassage vers la cuve d’ébullition.(de une à deux heures)
  6. Et enfin l’ébullition (de une à deux heures)

Actuellement l’interface graphique du mode automatique n’est pas encore complètement finalisée, mais en voici une ébauche pour la phase 2 et la phase 3:

L'interface affichée en mode automatique pour préchauffer l'eau de la cuve d'eau chaude.
L’interface affichée en mode automatique pour préchauffer l’eau de la cuve d’eau chaude.
L'interface affichée en mode automatique pour transférer l'eau depuis la cuve d'eau chaude vers la cuve de brassage.
L’interface affichée en mode automatique pour transférer l’eau depuis la cuve d’eau chaude vers la cuve de brassage. On remarque que le système calcule automatiquement la durée de transfert en fonction de la quantité et du débit de la pompe.

Il me faudra encore quelques heures de travail pour finaliser cela correctement.

Le contrôle

Le contrôle est assuré par l’Arduino. Ce dernier est programmé en C++. Je ne vais pas rentrer trop dans les détails d’architecture logicielle, mais je vais tout de même présenter les aspects « régulation ». La régulation c’est par exemple, « faire chauffer » ou non le corps de chauffe pour maintenir une température mesurée par une sonde.

Un des avantages de programmer moi-même l’Arduino, c’est que je peux vraiment faire ce que je veux avec. Un Arduino ne coûte que quelques sous (5 environ), et me permet de remplacer trois éléments (2 PID + Chrono) dont le prix est bien plus élevé. En plus c’est plus marrant et plus gratifiant.

Le PID pour les corps de chauffe

Le PID, dans un langage d’automaticien, c’est (pour faire simple) un bloc qui prends en entrée une valeur X et qui fait varier une sortie Y. En principe, les variations sur Y sont supposées influer sur X. Le but du PID est de s’assurer que X prenne la valeur que l’on souhaite qu’elle prenne (le X visé). Y’a plein d’applications possibles. Voici des exemples:

  • Dans mon cas, le X, c’est la température de la cuve en °C (entre 10°C et 100°C), et le Y, c’est la puissance à appliquer sur le corps de chauffe en Watts (entre 0 W et 6000 W). Je souhaite que la cuve soit à une température précise X visé, et le PID se charge de trouver la puissance Y pour atteindre rapidement ou maintenir précisément cette température. Le PID va automatiquement prendre en considération la dissipation thermique.
  • L’exemple historique se trouve dans la marine, et dans les auto-pilotes. Un bateau  doit généralement maintenir un cap précisément (c’est le X visé). Une boussole lui fournir le X. Le PID calcule la position du gouvernail pour maintenir le cap sur X visé. Le PID va automatiquement prendre en considération le vent ou les courant qui font dévier le cap.

Trois paramètres (gains) influencent le PID :

  • Le gain proportionnel P, qui prends l’erreur et calcule un Y. Dans mon cas, c’est 1 kW par dizième de degré. (Si la température mesurée est trop basse par rapport à celle visée de 0.3°C, on applique 3 kW sur le corps de chauffe)
  • Le gain intégral I, qui prends en compte le cumul des erreurs précédentes et le multiplie par I, puis l’ajoute au résultat des calculs précédents. Son but est de maintenir une certaine puissance de maintien lorsque l’erreur est nulle.
  • Enfin, le gain dérivé D, qui prends en compte la pente des erreurs précédentes. Son but est de tenir compte de la dynamique du système dans les phase ou l’on minimise cherche à atteindre une nouvelle température visée.

Le PID est principalement utilisé pour chauffer l’eau de la cuve d’eau chaude. Dans la cuve d’ébullition mes premiers tests ont montré que le manque de brassage d’eau faisait que la température n’était pas homogène au sein de la cuve. Donc réguler sur une température arbitraire n’aurait pas vraiment de sens. C’est pour cette raison que je contrôle la cuve d’ébullition directement en puissance, en appliquant directement la valeur qui maintient une ébullition constante et suffisante (autour de 4 kW selon mes premiers tests).

Les pompes

Je ne régule pas les pompes à proprement parler, vu que je ne vérifie pas la quantité de liquide pompé (ceci viendra plus tard). Par contre, mon système me permet de calculer le débit dans des situations courantes, comme par exemple le passage de l’eau depuis la marmite d’eau chaude vers la marmite de brassage. A terme je souhaite que les volumes soient automatiquement gérés et que je n’aie pas à les mesurer systématiquement.

Conclusion

C’est vraiment cette partie qui me distingue de tout ce que les autres ont fait. Et y’a encore beaucoup de place pour des améliorations. Mais on verra surement ce qu’il faut faire en priorité après un ou deux brassages…

13 réflexions sur « Contrôle et Interface »

  1. Bonjour c’est encore moi 🙂

    Quand tu dis que tu contrôle simplement la puissance de ta cuve ébullition pour maintenir une ébullition constante tu utilises quoi pour contrôler ?

    J’ai une résistance de 6 kW aussi. Ça suffit pour maintenir l’ébu pendant 1h ? Ça chauffe pas trop les câbles ?

    Si tu as deux minutes pour me répondre… Merci !

    Christophe

    1. Oui, je controlle simplement la puissance avec des pulses. Environ 2s de duty cycle. Pour une ebullition stable et correcte avec 50l, je mets en général entre 65% et 75% de la puissance. Donc pour 75% : 1,5 sec allumé, puis 0,5 sec éteint.

      A 100% j’ai une ébullition trop violente et une évaporation trop importante (11-12 litre par heure).

      Mon corps de chauffe est triphasé donc 3 * 2kW en 240 Volt. Ca fait environ 8 ampères par phase. Chaque phase est transportée sur un fil de 2,5mm2 qui est en Suisse le standart pour du 16A (meme si ca peut monter plus haut). J’aurais pu aussi mettre du 1,5mm2 (13A max en Suisse).

      Les fils ne chauffent absolument pas avec cette utilisation.

      Si t’as une résistance monophasée de 6kW, ca fait 25A, et pour ca, je te conseillerais plutot du 4mm carré de section (ca commence à faire du gros fil).

  2. Merci de ta réponse complète ! Je dois vraiment être bête car je ne comprends pas avec quel appareil ou quelle est la partie de ton « système » qui contrôle ces cycles de pulses ?
    un PID mais je n’en vois pas dans ton système et tu dis l’avoir remplacé par l’Arduino où est ce directement l’Arduino qui te permet de faire ce contrôle ? Ou alors il manque un truc que je ne vois pas…

    Ah là là j’ai encore du boulot 🙂

    Tes résistances ont l’air top et si je valide mon process je commanderais probablement les mêmes car les camco c’est pas super. J’ai du 4 mm² en câblage mais j’avais mis une rallonge un peu juste et ça a chauffé dur ! En chauffe ça tient sur un 20 A qui est le standard pour les prises en France.

    Par contre j’ai des doutes sur la puissance si tu fait bouillir 50 l avec 75% de 6 kW je risque bien d’être un peu juste avec mes 6 kW pour 80 litres.

    Merci en tout cas de tes réponses et de ta patience 😉

    ++

    1. Et oui, c’est bien l’arduino qui exécute le PID et qui régule par rapport aux sondes températures (lesquels sont aussi directement connectés dessus). Deux sorties 5V permettent d’ouvrir ou de fermer les 2 lots de SSR qui commandent les deux corps de chauffe.

      Pas de souci pour 6kW et 80l… Mon système tient l’ébullition avec 50% de puissance. La dissipation thermique pour 80l est minime par rapport à 50l. Je parie sur 85% de puissance pour faire bouillir 80l correctement.

      Par contre la montée en température pour atteindre le point d’ébullition (la il faut bien évidemment setter la puissance à 100%) prendra forcément plus de temps.

  3. Bonjour,
    Superbe logiciel.
    Est il possible de le partager?
    Je vois que tu peux rentrer les recettes c top
    Je le mettrais bien sûr mon raspberry
    Merci d’avance

    1. Salut Laurent,
      Désolé pour la réponse, j’étais en vacances…
      Alors, oui je pourrais te le fournir. Mais il est pas ans un état très élégant, et il tourne sous mono + python, donc l’installation est pas forcément évidente… De plus, il faut aussi un arduino, et le code qui tourne sous l’arduino.
      Faudrait que je mette ca au propre un de ces quatre.
      Quelle compétences informatique as tu ?

      1. Bonjour,
        Merci pour ta réponse.
        mes compétences en informatique sont limitées.
        Je programme des raspberry pour la domotique mais vraiment sur des tutos….
        Le style de progés dans un premier temps et de faire évoluer ma brasserie sur les paliers de températures et donc de monter des sondes comme toi.
        L’avantage est que en plus d’avoir une visu sur ton installation tu rentre la recette donc des alertes au changement.
        Arduino est surement comme le raspberry il doit y avoir des tutos pour que je puisse vraiment faire un truc de sympa….
        Si tu as le temps de m’expliquer via ton blog vraiment sympa.
        bonne continuation
        laurent

  4. Bonjour, ton projet est super!
    Ca donne envie de se lancer, mais pour moi ca sera sur de plus petites cuves pour sur :)!
    Je ne sais pas si tu mets à disposition ton code arduino et raspberry, si c’est le cas ca m’interesserait beaucoup de voir comment tu gères tout ca!
    bonne continuation! Will

  5. Salut! Excellent job!
    J’ai egalement un système similaire moins elaboré, tu n’as pas de température de consigne dans ton mash tun en mode automatique ? (Seulement une regul sur ton HLT?).
    Geo.

  6. Avant de poser ma question, je tiens à souligner à quel point ton blog est bien fait, merci pour ton partage et bravo!

    Je me demandais donc pourquoi utilisais-tu l’Arduino alors que tu possèdes un Raspberry pi et que ce même Raspberry pi possède des I/O et même une alimentation 5V pour tes relais… Pourquoi ne pas utiliser directement le RPi?
    Tu sembles maîtriser le C# en plus!
    Merci pour ton retour,
    Batiste

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *