Régulation du taux d'humidité UE 803 - Optimisation et Contrôle des Procédés - Master 2 - Ingénierie Chimique Projet Expérimental Arduino Objectif du projet : Réussir à réguler un flux d'air sec et un flux de d'air humidifié à l'aide d'un barboteur pour réguler le taux d'humidité dans l'air à l'aide de 2 pompes et du logiciel Arduino. Pourquoi avons-nous choisi ce projet ? La régulation de l'humidité de l'air est un procédé très utilisé en industrie pour réaliser des analyses qualitatives mais aussi dans le but de tester la résistance de certains produits à l'humidité notamment en industrie. Liste du matériel : 2 x Électrovannes pour l'air 2 x Tuyaux hermétiques pour le montage qui seront découpés en plusieurs morceaux 1 x Barboteur maison 1 x Capteur d’humidité 2 x Pompes 1 x Carte Arduino 2 x bouteilles 1 x paquet de riz 2 x relais fils électrique pour raccorder les appareils entre eux - Réalisation d'un schéma prototype du montage (28/10/2022) On a réalisé un premier schéma du montage afin d'étudier les équipements dont nous aurions besoin pour réaliser notre projet. - Réalisation du support du projet (12/01/2023) Sur cette première image on peut voir support qui a été assemblé à partir de bois recycler. - Réalisation du barboteur (12/01/2023)                                   Afin de réaliser notre barboteur nous utilisons une bouteille de soda sur laquelle nous réalisons 2 trous : le 1er en bas de la bouteille qui est la sortie d'air humide et le second en haut de la bouteille au niveau du bouchon pour l'entrée gaz sec. Les trous ont été réalisés à l'aide de la perceuse à colonne qui nous permet d'avoir plus de précision pour la réalisation de nos trous. Pour humidifier l'air il entre par le haut de la bouteille dans un tube qui bullera dans l'eau pour l'humidifier. - Réalisations des relais pour le contrôle des pompes (12/01/2023) Des relais ont été ajoutés afin de pouvoir contrôler les pompes individuellement en fonction du signal envoyé par la carte arduino. - Réalisation du montage Arduino / Code (26/01/2023) Code que nous avons trouvé et qui a été testé : */ #include #define brocheDeBranchementDHT 6 // La ligne de communication du DHT22 sera donc branchée sur la pin D6 de l'Arduino #define typeDeDHT DHT22 // Ici, le type de DHT utilisé est un DHT22 (que vous pouvez changer en DHT11, DHT21, ou autre, le cas échéant) // Instanciation de la librairie DHT DHT dht(brocheDeBranchementDHT, typeDeDHT); // ======================== // Initialisation programme // ======================== void setup () { // Initialisation de la liaison série (pour retourner les infos au moniteur série de l'ordi) Serial.begin(9600); Serial.println("Programme de test du DHT22"); Serial.println("=========================="); Serial.println(); // Initialisation du DHT22; dht.begin(); } // ================= // Boucle principale // ================= void loop () { // Lecture des données float tauxHumidite = dht.readHumidity(); // Lecture du taux d'humidité (en %) float temperatureEnCelsius = dht.readTemperature(); // Lecture de la température, exprimée en degrés Celsius // Vérification si données bien reçues if (isnan(tauxHumidite) || isnan(temperatureEnCelsius)) { Serial.println("Aucune valeur retournée par le DHT22. Est-il bien branché ?"); delay(2000); return; // Si aucune valeur n'a été reçue par l'Arduino, on attend 2 secondes, puis on redémarre la fonction loop() } // Calcul de la température ressentie float temperatureRessentieEnCelsius = dht.computeHeatIndex(temperatureEnCelsius, tauxHumidite, false); // Le "false" est là pour dire qu'on travaille en °C, et non en °F // Affichage des valeurs Serial.print("Humidité = "); Serial.print(tauxHumidite); Serial.println(" %"); Serial.print("Température = "); Serial.print(temperatureEnCelsius); Serial.println(" °C"); Serial.print("Température ressentie = "); Serial.print(temperatureRessentieEnCelsius); Serial.println(" °C"); Serial.println(); // Temporisation de 2 secondes (pour rappel : il ne faut pas essayer de faire plus d'1 lecture toutes les 2 secondes, avec le DHT22, selon le fabricant) delay(2000); } On réalise les premiers branchements des 2 pompes sur la carte arduino ainsi que le capteur d'humidité qui nous a d'ailleurs posé un peu problème car le capteur possède 4 branches et nous n'avons la possibilité que de brancher 4 branches nous avons donc demander de l'aide à monsieur Pulpytel pour nous aider pour ce branchement. Suite à ça nous avons recherché le code afin de faire fonctionner le capteur d'humidité et pouvoir récupérer les valeurs. Code que nous avons réalisé : #include #include #include #define brocheDeBranchementDHT 6    // La ligne de communication du DHT22 sera donc branchée sur la pin D6 de l'Arduino#define typeDeDHT DHT22             // Ici, le type de DHT utilisé est un DHT22 (que vous pouvez changer en DHT11, DHT21, ou autre, le cas échéant)// Instanciation de la librairie DHTDHT dht(brocheDeBranchementDHT, typeDeDHT);int objectif;const int relais_pompe1 = 3;const int relais_pompe2 = 4;// ========================// Initialisation programme// ========================void setup () { // Initialisation de la liaison série (pour retourner les infos au moniteur série de l'ordi)  Serial.begin(9600);  Serial.println("Programme de test du DHT22");  Serial.println("==========================");  Serial.println();  pinMode(BROCHE_CAPTEUR, INPUT_PULLUP);  pinMode(relais_pompe1,OUTPUT);  pinMode(relais_pompe2,OUTPUT); // Initialisation du DHT22;  dht.begin();} // =================// Boucle principale// =================void loop () { // Lecture des données  float tauxHumidite = dht.readHumidity();              // Lecture du taux d'humidité (en %)  float temperatureEnCelsius = dht.readTemperature();   // Lecture de la température, exprimée en degrés Celsius printf("quel est le taux d'humidité souhaité ?"); scanf("%d",&objectif);  // Vérification si données bien reçues  if (isnan(tauxHumidite) || isnan(temperatureEnCelsius)) {    Serial.println("Aucune valeur retournée par le DHT22. Est-il bien branché ?");    delay(2000);    return;         // Si aucune valeur n'a été reçue par l'Arduino, on attend 2 secondes, puis on redémarre la fonction loop()  }  // Calcul de la température ressentie  float temperatureRessentieEnCelsius = dht.computeHeatIndex(temperatureEnCelsius, tauxHumidite, false); // Le "false" est là pour dire qu'on travaille en °C, et non en °F // Affichage des valeurs  Serial.print("Humidité = "); Serial.print(tauxHumidite); Serial.println(" %");  Serial.print("Température = "); Serial.print(temperatureEnCelsius); Serial.println(" °C");  Serial.print("Température ressentie = "); Serial.print(temperatureRessentieEnCelsius); Serial.println(" °C");  Serial.println();  // Temporisation de 2 secondes (pour rappel : il ne faut pas essayer de faire plus d'1 lecture toutes les 2 secondes, avec le DHT22, selon le fabricant)  delay(2000);  while(tauxHumidite!=objectif){if(tauxHumidite