Go Down

Topic: Contrôleur de T°, Humidité avec pilotage manuel ou automatique (Read 17194 times) previous topic - next topic

J-M-L

Bonjour à tous

j'ai vu un nombre important de questions sur le pilotage d'un système de contrôle de température et humidité alors j'ai nettoyé un peu un vieux code que je vous livre en pièce jointe.

La partie régulation est complètement simplifiée dans ce code pour que chacun puisse l'adapter à ses besoins. (la fonction regulation() a besoin d'être écrite en fonction de vos besoins. Je donne juste un petit exemple simple de code de ce côté là qui dit si la T° est en dessous de la consigne alors chauffer, si T° OK on ne fait rien, si trop chaud, déclencher la climatisation.  Idem pour l'humidité, on déclenche si l'humidité en dessous de la consigne, je ne traite pas le cas 'trop humide' - à vous de voir ce que vous voulez faire dans ce cas :) )

MODE DE FONCTIONNEMENT
l'idée est assez simple: le montage dispose de capteurs de t° et d'humidité et doit piloter des sorties. il y a 3 sorties tout ou rien qui pourraient être reliées simplement à des relais (représentées à l'affichage sous la forme de C pour Chaud (Chauffage), F pour Froid (climatiseur), H pour Humidificateur) et une sortie de type PWM (représentée à l'affichage par V pour Ventilateur et qui pilote en analogWrite() une sortie PWM).

Il y a différents modes possibles que l'utilisateur va choisir. Vous passez de mode en mode en appuyant sur le bouton des Modes. un double click sur le bouton des modes "éteint" le système --> LCD éteint, relais éteints plus de régulation - mais l'arduino n'est pas éteint ni en veille. un simple click sur le bouton des modes revient en mode automatique.

Il y a un mode automatique (représenté par "A" à l'affichage), où vous pouvez dans la fonction void regulation() établir votre stratégie de gestion des systèmes  de régulation et un mode manuel (représenté par "M" à l'affichage) où vous pouvez vous même déclencher par 4 boutons dédiés les relais du Chauffage ("C"), Climatiseur ("F"), Humidicateur ("H") et le ventilateur ("V") qui est en PWM.

Enfin il y a un mode Programme (représenté par "P" à l'affichage), où vous pouvez régler à l'aide d'un potentiomètre les consignes pour la T°, l'humidité. Pour ce faire vous tenez appuyé le bouton correspondant (Chaud ou Froid pour la consigne de T° et Humidité pour la consigne d'humidité) et bougez le potentiomètre pour faire varier la consigne (qui sera affichée sur le LCD).

Le PWM du ventilateur est réglable manuellement dans tous les modes et n'a pas de consigne particulière. Vous tenez enfoncé le bouton du Ventilateur et bougez le potentiomètre. ça calcule une valeur PWM entre 0 et 255 sur toute la course de votre potentiomètre et affiche à l'écran un petit symbole à côté de la consigne de température pour montrer à quelle vitesse est réglée cette sortie. C'est un petit 'v' avec des pointillés au dessus. pas de pointillés => PWM à 0 et 5 pointillés => PWM à 255)

Quand on sort du mode "Programme", les consignes sont stockées en EEPROM pour le prochain démarrage.

Il y a une RTC dans le montage si votre régulation automatique devait tenir compte d'un horaire particulier, mais il n'y a pas de mode associé à une gestion temporelle - je laisse cela à votre sagacité :)

L'écran du LCD est configuré pour tenir sur une 2 Lignes de 16 caractères


Le montage ressemble à cela:




COMPOSANTS UTILISES
  • 5 boutons momentannés
  • un LCD 2 lignes 16 caractères
  • une horloge DS3231
  • un DS18820 avec la résistance de 4.7KΩ qui va bien pour la température (le code gère plusieurs DS18820)
  • un Si7021 en I2C pour une l'humidité (et une autre mesure de t°). (préféré au DHT22 car plus rapide)
  • un "te291 level shifter" = adaptateur de tension I2C car le Si7021 ne  fonctionne qu'en 3.3V
  • un potentiomètre à glissière ou rotatif
  • des relais "qui vont bien"


LIBRAIRIES UTILISEES
*    attention cette librairie doit être améliorée lire la modification proposée ici si elle n'a pas été encore implémentée dans le code

CABLAGE
  • boutons en INPUT_PULLUP donc 1 côté vers la pin Arduino, un côté vers GND
  • RTC en I2C sous 5V (SDA, SCL, 5V, GND)
  • LCD en I2C sous 5V (SDA, SCL, 5V, GND)
  • Si7021 en I2C sous 3.3 V donc alimentation en 3.3V et usage du te291 level shifter pour transformer SDA et SCL de 5V en 3.3V
  • Potentiomètre en câblage standard (Vcc 5V, GND et broche mesure vers Pin Arduino)


PINS UTILISEES
  • 0,1 = Rx,Tx - port Série pour communication USB
  • 2   = laissée libre si besoin d'interruption
  • 3  = pour le bus 1 wire avec une résistance de 4.7KΩ entre 5V et pin 3
  • 4  = pin relai Chauffage (génération de chaud)
  • 5  = pin relai Humidificateur
  • 6  = pin relai Ventilateur (PWM utilsé pour le pilotage de cette pin)
  • 7  = pin relai Climatiseur (génération de froid)
  • 8  = pin bouton MODE
  • 9  = pin bouton Chauffage
  • 10 = pin bouton Humidificateur
  • 11 = pin bouton Ventilateur
  • 12 = pin bouton Climatiseur
  • 13 = LED_BUILTIN affichage de l'état du système (éteinte quand système éteint)
  • A0 = pin pour le potentiomètre de consigne
  • A1
  • A2
  • A3
  • SDA, SCL = I2C communication (UNO = A4 (SDA) + A5 (SCL) / MEGA = 20 (SDA) + 21 (SCL))
Hello - Please do not PM me for help,  others will benefit as well if you post your question publicly on the forums.
Bonjour Pas de messages privés SVP, postez dans le forum directement pour que ça profite à tous

Col68

Bonjour J-M-L,

Quel magnifiques Tutoriel, les possibilités d'affichages et de contrôles sont impressionnant.
Vous êtes un Génie J-M-L, vivement le matériels impatient de le réaliser,  en effet ce projet convient  à tout ce qui à besoin de réguler la température et humidité.

Merci  encore pour le partage, cordialement.

bricofoy

impressionnant ! merci pour ce modèle de code, moi qui suis en plein dans ma régulation de chauffage, ça me donne quelques idées pour clarifier mon code :)
-tu savais que si tu passe le CD de windows à l'envers, tu entends une chanson satanique ?
-non, mais il y a pire : à l'endroit, ça l'installe !

Leptro

Un gros bravo pour le code..

Ce sera un bonne source d'inspiration pour beaucoup dont moi...


J-M-L

merci :)

c'est pas super optimisé, mais j'ai pris le temps de rajouter des commentaires dans le code, donc ça doit se lire à peu près correctement
Hello - Please do not PM me for help,  others will benefit as well if you post your question publicly on the forums.
Bonjour Pas de messages privés SVP, postez dans le forum directement pour que ça profite à tous

68tjs

Je propose qu'on décerne le "setup d'or" à JML
Là c'est trop fort !
Merci et que rajouter ?
Encore merci.
Les Shadocks : L'ignorance ne s'apprend pas.

bricofoy

que rajouter ?

une carte SD et un enregistrement des valeurs avec un pas de temps réglable ? une détection d'erreurs avec enregistrement sur la même carte SD ?

je sors ----->[ ]
-tu savais que si tu passe le CD de windows à l'envers, tu entends une chanson satanique ?
-non, mais il y a pire : à l'endroit, ça l'installe !

J-M-L

une carte SD et un enregistrement des valeurs avec un pas de temps réglable ? une détection d'erreurs avec enregistrement sur la même carte SD ?

je sors ----->[ ]
bonne idée, j'attends votre code :)
Hello - Please do not PM me for help,  others will benefit as well if you post your question publicly on the forums.
Bonjour Pas de messages privés SVP, postez dans le forum directement pour que ça profite à tous

bricofoy

-tu savais que si tu passe le CD de windows à l'envers, tu entends une chanson satanique ?
-non, mais il y a pire : à l'endroit, ça l'installe !

esloch

je suis moi aussi sur des projet d'horloge avec affichage de la température et de l'humidité ... mais la qualité de votre code est impressionnante ... bravo 

Col68

Bonjour/Bonsoir JML,

Ça y est je reçois mes articles petit à petit, me manque le DS3231 et le Si7021 (superbe découverte de capteur) grâce à vous merci infiniment JML.

Trop hâte de pouvoir réalisé ce super projet "J-M-L Contrôle " Merci vraiment pour ce service énorme pour nous les amateurs dans le monde Arduino.

J'en ai fait des recherches sur le net, Contrôleur, Thermostat, PID... et sur toute la planète :) mais jamais vu un aussi beau travail, aussi net et précis avec autant de possibilité pour le contrôle de température et, d'humidité.

Le tout avec ventilation contrôlé, sans oublier la possibilité de programmation, entre mode manuel, auto... et tout ça sur un lcd 1602 :) Trop trop fort.
Vous êtes un Génie, tout mes respects pour JML. (Karma, matin midi soir)

À bientôt avec le projet "J-M-L Contrôle " fini, photos partagé.
I love you JML, très bonnes continuations

J-M-L

Hello - Please do not PM me for help,  others will benefit as well if you post your question publicly on the forums.
Bonjour Pas de messages privés SVP, postez dans le forum directement pour que ça profite à tous

ARTNOW


J-M-L

Hello - Please do not PM me for help,  others will benefit as well if you post your question publicly on the forums.
Bonjour Pas de messages privés SVP, postez dans le forum directement pour que ça profite à tous

AIRPOPCIE

bonsoir J-M-L je fais en ce moment un croquis pour gérer une cave à vins avec 5 sondes DS18B20.
1 à la cave
1 dans le grenier ou se trouve la clim
1 dans le caisson de la clim ( qui ne doit jamais être en négatif).
1 dans la gaine d'admission de l'air extérieur
1 dans le coffret électronique ( surveiller s'il n'y a pas de surchauffe due au transfo qui m'a déjà fait des T° élevées)

Mon problème est la variation d'environ 0.25°C dans certaines mesures alors que la variation n'est pas aussi rapide.

Quelle est la lecture de tes sondes. Moi je récupère le 1/10eme).

Merci de ton aide

Go Up