Différences
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente | ||
espace_public:arduino_ventilateur [2020/08/21 13:10] loickk |
— (Version actuelle) | ||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
- | ====== Régulation d'un ventilateur 12 volts avec une carte Arduino ====== | ||
- | Le fonctionnement du chauffage solaire électronique nécessite une [[espace_public:electronique|gestion électronique]] permettant de piloter le ventilateur en fonction de la température au sein du panneau. | ||
- | Pour le pilotage du ventilateur, deux capteurs de température sont utilisés : | ||
- | * Le premier est placé en amont du ventilateur à l'intérieur de la conduite du bas du capteur. Sa température est proche de la température de l'habitat. | ||
- | * Le second capteur de température est placé en aval du panneau solaire, au niveau de la sortie d'air. | ||
- | |||
- | {{ :espace_public:vue_en_coupe_vert_2.png?600 |}} | ||
- | |||
- | ===== Dans quelles conditions active t'on le ventilateur ? ===== | ||
- | Il existe trois cas de figure : | ||
- | * Lorsque la température T1 du capteur en amont du ventilateur est inférieure à une température de confort défini 22°C et que la température en aval du panneau T2 est supérieure à 25°C, le panneau solaire est en mesure de chauffer l'habitat et le ventilateur est activé. | ||
- | * Lorsque la température T1 du capteur en amont du ventilateur est supérieure à la température de confort de 22°C, il n'est pas nécessaire de chauffer et le ventilateur peut être coupé. | ||
- | * Lorsque la température T1 du capteur en amont du ventilateur est inférieure à la température de 22°C mais que la température en aval du panneau est inférieure à 25°C, le panneau ne peut pas chauffer la pièce. Le ventilateur reste donc coupé pour ne pas consommer inutilement de l'électricité. | ||
- | |||
- | ===== Liste de matériaux ===== | ||
- | Pour assurer le contrôle du ventilateur, nous allons utiliser : | ||
- | * Une diode 1N4007 | ||
- | {{ :espace_public:diode.jpg?200 |}} | ||
- | |||
- | * Un transistor BC547 | ||
- | {{ :espace_public:transistor.jpg?200 |}} | ||
- | |||
- | * Une carte Arduino ATmega 328 Uno | ||
- | {{ :espace_public:arduino_uno.png?200 |}} | ||
- | |||
- | * Deux capteurs de températures DHT11 | ||
- | {{ :espace_public:dht11.jpg?200 |}} | ||
- | |||
- | * Une résistance de 1kOhms | ||
- | {{ :espace_public:r1kohms.jpg?150 |}} | ||
- | * Un convertisseur 230Volts-12Volts | ||
- | {{ :espace_public:transformateur-led-12w-12v.jpg?200 |}} | ||
- | |||
- | * Un câble secteur 230Volts | ||
- | * Câbles mâle-mâle | ||
- | * Câbles femelle-mâle | ||
- | * Un ventilateur 12V | ||
- | {{ :espace_public:ventilateur_12v.jpg?300 |}} | ||
- | |||
- | ===== Code ===== | ||
- | ==== Préambule du code ==== | ||
- | Chargement de la bibliothèque du capteur de température | ||
- | #include <DHT.h> | ||
- | |||
- | Définition des ports attribués aux capteurs de températures (ports 2 et 3) | ||
- | #define DHTPIN_1 2 // what pin we're connected to | ||
- | #define DHTPIN_2 3 // what pin we're connected to | ||
- | Définition du type de capteur de température (DHT11) | ||
- | #define DHTTYPE DHT11 // DHT 11 | ||
- | Définition de la valeur entière (int) de la température de consigne qui pilote le ventilateur | ||
- | int maxTemp = 25; | ||
- | Définition du port attribué au signal d'activation/désactivation du ventilateur | ||
- | #define fan 7 | ||
- | Commande qui attribue au nom dht_1 et dht_2 des capteur DHT de type DHTTYPE et branché sur le port DHTPIN_1 et DHTPIN_2. | ||
- | DHT dht_1(DHTPIN_1, DHTTYPE); | ||
- | DHT dht_2(DHTPIN_2, DHTTYPE); | ||
- | |||
- | ==== Initialisation ==== | ||
- | void setup() | ||
- | { | ||
- | Définition du mode de fonctionnement du port digital numéro 7 (fan) en signal de sortie. C'est la carte Arduino qui envoie un signal vers le transistor (et non l'inverse) | ||
- | pinMode(fan, OUTPUT); // Signal de sortie pour activer ou non le ventilateur | ||
- | Définition du débit de données avec la commande Serial.begin en bits par seconde à une valeur de 9600 bits par secondes. | ||
- | Serial.begin(9600); | ||
- | Démarrage des capteurs de température.. | ||
- | 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() | ||
- | { | ||
- | Pause de 5000ms avec la commande delay. | ||
- | delay(5000); | ||
- | Lecture de la température et de l'humidité définie dans des variables réelles flottantes (de type float) avec les commandes dht_1.readHumidity() et dht_1.readTemperature(). | ||
- | float h_1 = dht_1.readHumidity(); // Humidité relative | ||
- | float t_1 = dht_1.readTemperature(); // Temperature en degres Celsius | ||
- | float h_2 = dht_2.readHumidity(); // Humidité relative | ||
- | float t_2 = dht_2.readTemperature(); // Temperature en degres Celsius | ||
- | |||
- | Activation et désactivation du ventilateur avec une condition de type if/else. | ||
- | Si la température t_1 est supérieure a maxTemp (25°C), le signal de sortie **fan** (port 7) est alimenté en courant (alimentation du Transistor). | ||
- | Sinon, le signal de sortie n'est pas alimenté | ||
- | if(t_1 > maxTemp) | ||
- | { | ||
- | digitalWrite(fan, HIGH); | ||
- | } | ||
- | else | ||
- | { | ||
- | digitalWrite(fan, LOW); | ||
- | } | ||
- | |||
- | Affichage dans la console de l'humidité et de la température mesurée | ||
- | 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 "); | ||
- | } |