espace_public:arduino_clapet

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
espace_public:arduino_clapet [2020/08/24 11:34]
loickk
espace_public:arduino_clapet [2021/03/10 18:08]
loickk supprimée
Ligne 2: Ligne 2:
 Le chauffage solaire est un dispositif qui permet de chauffer durant les journées d'​hiver. Pour son fonctionnement un [[espace_public:​electronique|pilotage électronique]] est utilisé. En effet, si celui-ci est mal géré il peut refroidir durant les nuits en hiver ce qui serait contre-productif. Pour gérer correctement l'​alternance entre les jours et les nuits, un clapet à fermeture automatique est piloté de manière électronique. Cette section présente son fonctionnement. Le chauffage solaire est un dispositif qui permet de chauffer durant les journées d'​hiver. Pour son fonctionnement un [[espace_public:​electronique|pilotage électronique]] est utilisé. En effet, si celui-ci est mal géré il peut refroidir durant les nuits en hiver ce qui serait contre-productif. Pour gérer correctement l'​alternance entre les jours et les nuits, un clapet à fermeture automatique est piloté de manière électronique. Cette section présente son fonctionnement.
 {{ :​espace_public:​clapet.png?​400 |}} {{ :​espace_public:​clapet.png?​400 |}}
 +
 +Le clapet peut être ouvert ou fermé en fonction du circuit alimenté. La connexion du milieu (n°2 sur le diagramme ci-dessous) correspond à l'​alimentation 12 volts et est toujours alimenté. Si le port 1 est relié à la masse, le clapet se ferme. Si c'est le port 3 qui est relié à la masse, le clapet s'​ouvre. Il n'est pas possible d'​alimenter les 3 connectiques en même temps.
 +
 +{{ :​espace_public:​connectique_clapet.png?​400 |}}
 +
 +Pour obtenir un clapet qui alterne entre l'​ouverture et la fermeture en fonction de la température du panneau solaire, deux transistor sont utilisés et pilotés par la carte Arduino. De la même manière que pour [[espace_public:​arduino_ventilateur|la régulation du ventilateur 12volts]], un signal sur le transistor concerné est envoyé dès lors que la température du capteur franchit la température de consigne définie.
 +
 +Le schéma ci-dessous présente le fonctionnement du circuit :
 +  * Une alimentation 12Volts alimente le clapet de manière continue sur le connectique +.
 +  * Un transistor est branché sur le port 5 de la carte arduino. Quand la carte Arduino alimente le port, le transistor laisse circuler le courant jusqu'​à la masse de l'​alimentation 12 volts et permet d'​ouvrir le clapet. ​ Quand le port 5 n'est plus alimenté, le clapet arrête de s'​ouvrir
 +  * Comme il existe une butée pour le clapet, il suffit d'​alimenter durant une période assez longue pour que le clapet s'​ouvre complétement avant de couper le signal de la carte Arduino. Une temporisation de 15 secondes est suffisante.
 +  * De la même manière, un transistor est branché en série avec le clapet du côté du connectique (- close). Lorsque la carte Arduino alimente le port 6, le transistor laisse circuler le courant et permet au clapet de se fermer.
 +
 +
 +{{ :​espace_public:​schema_de_fonctionnement_clapet.png?​800 |}}
 +
 +===== Code =====
 +Le code présenté ci-dessous permet de gérer le clapet en fonction des températures mesurées par les capteurs au sein du panneau solaire. Le code [[https://​cloud.ecutsa.fr/​index.php/​s/​jkzwm2zBDpENXcG|est téléchargeable ici]] et contient également la [[espace_public:​arduino_ventilateur|gestion du ventilateur présenté précédemment]].
 +==== Preambule du code ====
 +
 +   #​include <​DHT.h>​
 +   
 +   #​define DHTPIN_1 2     // what pin we're connected to
 +   #​define DHTPIN_2 3     // what pin we're connected to
 +   #​define DHTTYPE DHT11   // DHT 11
 +   DHT dht_1(DHTPIN_1,​ DHTTYPE);
 +   DHT dht_2(DHTPIN_2,​ DHTTYPE);
 +
 +Définition des ports de la carte Arduino attribués au transistor pour l'​ouverture et la fermeture du clapet
 +   #​define clapet_open 5
 +   #​define clapet_closed 6
 +   
 +   #​define fan 7
 +   
 +   int maxTemp = 28;
 +
 +==== Boucle d'​initialisation ====
 +   void setup() ​
 +      {
 +  ​
 +      pinMode(fan,​ OUTPUT); ​  // Signal de sortie pour activer ou non le ventilateur
 +
 +Définition du mode de fonctionnement des ports digitaux du clapet 5 et 6 en signal de sortie. C'est la carte Arduino qui envoie un signal vers le transistor (et non l'​inverse) ​
 +      pinMode(clapet_open,​ OUTPUT); ​  // Signal de sortie pour activer ou non le ventilateur
 +      pinMode(clapet_closed,​ OUTPUT); ​  // Signal de sortie pour activer ou non le ventilateur
 +  ​
 +      Serial.begin(9600);​
 +      dht_1.begin(); ​           // Mise en route du capteur de temperature et d'​humidite
 +      dht_2.begin(); ​           // Mise en route du capteur de temperature et d'​humidite
 +    }
 +    ​
 +==== Boucle infinie====
 +   void loop() ​
 +      {      ​
 +      // Attente de 5secondes entre chaque mesure.
 +      delay(5000);​
 +      ​
 +      // Lecture temperature et humidite (temps de lecture>​250ms)
 +      // Capteur #1
 +      float h_1 = dht_1.readHumidity();​
 +      // Temperature en degres Celsius
 +      float t_1 = dht_1.readTemperature();​
 +      ​
 +      // Capteur #2
 +      float h_2 = dht_2.readHumidity();​
 +      // Temperature en degres Celsius
 +      float t_2 = dht_2.readTemperature();​
 +
 +Si la température du capteur 1 dépasse la température de consigne
 +  if(t_1 > maxTemp) ​
 +     {
 +Attente d'une seconde ​    
 +      delay(1000);​
 +Affichage Ouverture clapet dans la console ​    
 +      Serial.println("​Ouverture clapet"​);​
 +Le signal d'​ouverture du clapet est alimenté (port 5) par la carte Arduino tandis que le signal de fermeture du clapet n'est pas alimenté (port 6).
 +      digitalWrite(clapet_open,​ HIGH);
 +      digitalWrite(clapet_closed,​ LOW);
 +Attente de 15 secondes puis tous les signaux sont coupés (sauf ventilation qui s'​active)
 +      delay(15000);​
 +      digitalWrite(clapet_open,​ LOW);
 +      digitalWrite(clapet_closed,​ LOW);
 +      digitalWrite(fan,​ HIGH);
 +     }
 +Si la température est inférieure à la température de consigne, fermeture des clapets ​
 +  else 
 +     {
 +Attente d'une seconde
 +      delay(1000);​
 +Affichage dans la console "​Fermeture clapet"​
 +      Serial.println("​Fermeture clapet"​);​
 +Le signal de fermeture du clapet est alimenté (port 6) par la carte Arduino tandis que le signal d'​ouverture du clapet n'est pas alimenté (port 5).
 +      digitalWrite(clapet_open,​ LOW);
 +      digitalWrite(clapet_closed,​ HIGH);
 +      delay(15000);​
 +Attente de 15 secondes puis tous les signaux sont coupés.
 +      digitalWrite(clapet_open,​ LOW);
 +      digitalWrite(clapet_closed,​ LOW);
 +      digitalWrite(fan,​ LOW); 
 +     }
 +Affichage des mesures de température et d'​humidité dans la console
 +     ​Serial.print("​ Humidity #1: "​); ​
 +     ​Serial.print(h_1);​
 +     ​Serial.print("​ %\t");
 +     ​Serial.print("​Temperature #1: "​); ​
 +     ​Serial.print(t_1);​
 +     ​Serial.print("​ *C ");
 +     ​Serial.print("​ Humidity #2: "​); ​
 +     ​Serial.print(h_2);​
 +     ​Serial.print("​ %\t");
 +     ​Serial.print("​Temperature #2: "​); ​
 +     ​Serial.print(t_2);​
 +     ​Serial.println("​ *C ");
 +   }