espace_public:arduino_clapet

Ceci est une ancienne révision du document !


Gestion du clapet

Le chauffage solaire est un dispositif qui permet de chauffer durant les journées d'hiver. Pour son fonctionnement un 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 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.

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

 #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
  }

void loop() {

 // Attente de 5secondes entre chaque mesure.
delay(5000);
// Lecture temperature et humidite (temps de lecture>250ms)
// Sensor readings may also be up to 2 seconds 'old' (its a very slow sensor)
// 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();
// Activation/Désactivation ventilateur
if(t_1 > maxTemp) {
    delay(1000);
    Serial.println("Ouverture");
    digitalWrite(clapet_open, LOW);
    digitalWrite(clapet_closed, HIGH);
    delay(15000);
    digitalWrite(clapet_open, LOW);
    digitalWrite(clapet_closed, LOW);
    digitalWrite(fan, HIGH);
} else {
    delay(1000);
    Serial.println("Fermeture");
    digitalWrite(clapet_open, HIGH);
    digitalWrite(clapet_closed, LOW);
    delay(15000);
    digitalWrite(clapet_open, LOW);
    digitalWrite(clapet_closed, LOW);
    digitalWrite(fan, LOW); 
}
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 ");

}

  • espace_public/arduino_clapet.1598263470.txt.gz
  • Dernière modification: 2020/08/24 12:04
  • par loickk