Fabrication industrielle
Internet des objets industriel | Matériaux industriels | Entretien et réparation d'équipement | Programmation industrielle |
home  MfgRobots >> Fabrication industrielle >  >> Manufacturing Technology >> Processus de fabrication

Hygromètre à miroir réfrigéré Arduino

Composants et fournitures

Arduino UNO
× 1
Alimentation 12V 10A
× 1
Ventilateur haute puissance 12V 40mm
× 1
12V 40mm TEC
× 1
Dissipateur thermique de 40 mm
× 1
petit miroir
× 1
Adhésif thermoconducteur
× 1
Pâte thermique
× 1
pilote de moteur BTS7960
× 1
LED 3 mm :Jaune
× 1
Capteur de lumière OPT101
× 1
Module MOSFET IRF520
× 1
Thermomètre numérique à 1 fil à résolution programmable DS18B20 intégré maximum
× 1
Déploiement du capteur d'humidité et de température SparkFun - Si7021
× 1

Outils et machines nécessaires

Pistolet à colle chaude (générique)

Applications et services en ligne

Arduino IDE

À propos de ce projet

À propos

La mesure de l'humidité peut se faire de différentes manières. La méthode la plus courante consiste à utiliser un capteur d'humidité capacitif. Malheureusement, ces capteurs perdent rapidement en précision lorsqu'ils sont utilisés en continu dans un environnement très humide. Un hygromètre à miroir réfrigéré ne souffre pas de ce problème et est également beaucoup plus précis, en particulier dans la plage d'humidité élevée. Malheureusement, un hygromètre à miroir réfrigéré commercial coûte littéralement des milliers de dollars. Le fonctionnement de base est cependant assez simple, il est donc possible d'en faire un vous-même. Il n'aura pas la même précision de 0,1 degré qu'un appareil commercial, mais dans la plupart des cas, il sera assez bon et certainement plus précis qu'un capteur capacitif.

Ce projet est une preuve de concept et en aucun cas prêt pour la production. De nombreuses améliorations peuvent être apportées mais cela prouve que cela fonctionne.

Comment ça marche

Un hygromètre à miroir réfrigéré utilise un effet Peltier (TEC) pour refroidir une surface réfléchissante jusqu'à ce que de la condensation apparaisse. La condensation est détectée avec une source lumineuse et un capteur optique. La température de surface du miroir est enregistrée au moment où la condensation apparaît. Cette température est équivalente au point de rosée. L'humidité relative peut alors être calculée en utilisant le point de rosée et la température ambiante.

Simplification

Il y a quelques différences avec cet hygromètre à miroir réfrigéré DIY par rapport à une unité commerciale.

Un hygromètre à miroir réfrigéré commercial n'utilise pas de miroir conventionnel car celui-ci ne conduit pas et ne distribue pas très bien la chaleur, ce qui entraîne une réduction de la précision et de l'efficacité. Ces appareils utilisent principalement du cuivre plaqué platine ou rhodium comme miroir. Comme ce n'est ni facile à obtenir ni rentable, un miroir ordinaire est utilisé dans cet hygromètre à miroir réfrigéré DIY. Un petit miroir carré serait mieux qu'un rond mais je n'en ai pas trouvé. Comme alternative, une dalle polie en acier inoxydable serait encore mieux.

Un hygromètre à miroir réfrigéré commercial utilise un thermomètre à résistance platine (PRT) intégré sous le miroir au lieu d'un thermomètre CMS monté sur la surface du miroir. Un PRT nécessite une électronique supplémentaire et son montage entre le Peltier et le miroir tout en offrant une bonne conductivité thermique est problématique. L'inconvénient du montage d'un thermomètre sur la surface du miroir est qu'il modifie les propriétés de répartition de la chaleur, réduisant ainsi la précision. Mais un thermomètre monté en surface est beaucoup plus facile à construire et suffisamment précis.

Un hygromètre à miroir réfrigéré commercial utilise un miroir beaucoup plus petit d'environ 5 mm au lieu de 4 cm. car cela nécessite moins d'énergie et a un facteur de forme plus petit. Cependant, un petit miroir et un Peltier assorti ne sont pas aussi facilement disponibles que la variante plus grande. De plus, un petit Peltier nécessite une très basse tension, nécessitant un pilote personnalisé. Il est également plus difficile de monter un thermomètre CMS sur une petite surface de miroir tout en laissant suffisamment d'espace pour réfléchir une partie de la lumière.

La version actuelle n'a pas de boîtier bloquant la lumière. Cela peut être facilement imprimé en 3D et est fortement recommandé afin de bloquer les interférences des sources lumineuses extérieures. Il peut également être utilisé pour maintenir la source lumineuse et le capteur de lumière en place. Si vous fabriquez un boîtier imprimé en 3D, assurez-vous qu'il est bien ventilé. Vous pouvez utiliser le ventilateur Peltier pour la ventilation, mais assurez-vous d'aspirer de l'air dans l'enceinte, pas de souffler dedans. L'intérieur doit également être facilement accessible pour le nettoyage des miroirs.

La mise en œuvre actuelle ne peut pas mesurer le point de gel car cela nécessite de différencier les particules de glace et les gouttelettes d'eau, ce qui nécessite un deuxième capteur optique pour mesurer la lumière diffusée.

Comment construire

Prenez le Peltier, nettoyez les deux surfaces et placez un adhésif thermoconducteur sur le côté chaud. Assurez-vous qu'il est uniformément réparti. Si vous n'avez pas d'adhésif thermoconducteur, vous pouvez utiliser de la pâte thermique avec quelques gouttes de super colle près des bords. Cela fonctionne tout aussi bien. Nettoyez la surface du dissipateur de chaleur et appuyez sur le dissipateur de chaleur et Peltier ensemble et laissez la colle sécher.

Une fois le dissipateur thermique fixé au Peltier et la colle sèche, fixez le miroir de la même manière, en veillant à nettoyer d'abord la surface inférieure. Il est important que la pâte thermique soit uniformément répartie et qu'il n'y ait pas d'entrefer, sinon la répartition de la chaleur sur le miroir ne sera pas uniforme.

Lorsque toute la colle a séché, fixez le ventilateur. Assurez-vous d'utiliser un ventilateur suffisamment puissant pour refroidir le dissipateur de chaleur car il devient très chaud. La manière de fixer le ventilateur au dissipateur thermique dépend du type de dissipateur thermique que vous utilisez. Je viens de coller les deux ensemble à l'aide d'un pistolet à colle chaude.

Allumez le ventilateur, puis le Peltier pour vérifier s'il y a au moins deux zones sur le miroir où la condensation apparaît en même temps. N'alimentez pas le Peltier trop longtemps car cela créera certainement un profil de condensation uniforme. Vous voulez voir à quoi cela ressemble lorsque la condensation devient juste visible. Si vous n'êtes pas satisfait du résultat, réessayez avec un nouveau Peltier, un miroir et un dissipateur thermique car il est peu probable que vous puissiez retirer les pièces et restaurer la surface lisse.

Je n'ai pas réparti uniformément la pâte thermique, ce qui a entraîné un profil de condensation irrégulier comme vous pouvez le voir sur la photo ci-dessus.

Il est important de faire une photo ou de marquer la zone où la condensation apparaît en même temps car c'est la zone où vous devez monter le capteur de température de surface du miroir et mesurer la quantité de lumière réfléchie par le miroir.

Dans ce projet, j'utilise un Si7021 pour mesurer la température du miroir car il donne une sortie à faible bruit. Malheureusement, l'adresse I2C est codée en dur, vous ne pouvez donc utiliser qu'un de ces capteurs. Pour la température ambiante j'utilise un capteur de température DS18B20 mais il n'a pas une très grande précision. La seule raison pour laquelle j'utilise ces capteurs est que je les avais disponibles.

Pour monter le Si7021 (ou tout autre capteur de température à base de PCB) sur le miroir, placez d'abord une grosse goutte de pâte thermique non conductrice d'électricité sur le capteur de température. Le PCB doit également être recouvert de pâte thermique, afin d'éviter la condensation sur l'électronique. Ensuite, placez 4 grosses gouttes de colle chaude sur chaque coin du PCB. Il faut aller vite. Appuyez le capteur contre le miroir à l'endroit où la condensation est apparue uniformément. Assurez-vous de placer le capteur horizontalement et appuyez fermement le capteur contre le miroir. La colle chaude se solidifiera rapidement une fois qu'elle touchera le miroir. Si vous devez repositionner le capteur, vous pouvez facilement le gratter à l'aide d'un cutter, retirer la colle et réessayer. Si vous avez de la condensation sur le PCB, isolez-le avec de la colle chaude ou du plastique pulvérisé.

Le ventilateur est contrôlé par un module MOSFET IRF520.

Le capteur de lumière utilisé est un OPT101, qui est sensible, a un faible bruit de sortie et est facile à utiliser.

Pour la source lumineuse, vous pouvez soit utiliser une diode laser de faible puissance, soit une LED ordinaire. J'ai essayé les deux et ils fonctionnent tous les deux très bien. Le laser a l'avantage d'une meilleure réponse mais est plus difficile à aligner. La LED a une réponse plus plate car plus de lumière est dispersée, mais elle est plus facile à aligner. Si vous utilisez une LED, assurez-vous qu'elle émet un faisceau focalisé.

La sortie de lumière LED et laser est probablement trop élevée, et l'utilisation de PWM pour réduire la sortie n'est pas une option car cela provoquerait des interférences dans le capteur de lumière. Au lieu de cela, placez simplement une résistance en série avec la LED ou le laser pour réduire la sortie.

Pour monter la LED ou le laser et le capteur de lumière OPT101, j'ai utilisé du fil de cuivre torsadé en fil de verrouillage pour lui donner plus de rigidité. Les deux extrémités ont été fixées avec de la colle chaude. C'est bon pour une preuve de concept, mais c'est aussi beaucoup trop fragile pour être utilisé hors d'un laboratoire (ou d'un sous-sol). Il est cependant facile d'aligner le capteur et la source de lumière. Un meilleur moyen serait d'imprimer en 3D un support pour ces appareils, également parce qu'un boîtier imprimé en 3D est indispensable pour éviter toute interférence de la lumière extérieure.

Pour contrôler le Peltier, un pilote de moteur BTS7960 est utilisé. Le moyen le plus efficace de piloter un Peltier est de changer le courant, de ne pas utiliser PWM. Cependant, les contrôleurs Peltier ne sont pas aussi facilement disponibles que le pilote de moteur BTS7960 et pour cette preuve de concept, la consommation d'énergie n'est pas un facteur.

Une fois assemblé, téléchargez le code sur l'Arduino et ajustez la plage de sensibilité de l'OPT101 avec un potentiomètre. Une résistance plus élevée signifie une tension de sortie plus élevée pour la même quantité de lumière. Reportez-vous à la fiche technique de l'OPT101, Figure 3 - Réactivité à la tension par rapport à l'irradiance. Pour le débogage, vous pouvez souffler sur le miroir pour créer de la condensation, ou placer un objet devant le capteur. Si vous avez un climatiseur, essayez de l'allumer (ou de l'éteindre) et attendez. Vous pourrez voir le changement d'humidité.

Dans le graphique ci-dessous, vous pouvez voir la température (bleu), la lecture optique (rouge) et le point de rosée mesuré (vert). Vous pouvez voir le point de rosée augmenter alors que je viens d'éteindre le climatiseur.

Sécurité

Bien que le code fourni ne le supporte pas, le matériel peut chauffer le miroir en plus de le refroidir. Cela se fait en inversant simplement la polarité sur le Peltier. Le chauffage des miroirs peut être utilisé pour éliminer rapidement la condensation et améliorer le temps de réponse. De plus, la condensation par évaporation éclair élimine les petits contaminants. Cependant, cela pose également un risque potentiel pour la sécurité car la surface du miroir n'a pas de dissipateur thermique. Si le code est bloqué en chauffant le Peltier, au mieux il fera fondre la colle chaude qui maintient le thermomètre en place et au pire il déclenchera un incendie dû à la fonte des fils provoquant un court-circuit.

Précision

Comme la température du point de rosée mesurée est une valeur absolue, l'étalonnage n'est pas aussi important qu'avec un hygromètre capacitif ou résistif. Cependant, il y aura au moins une certaine différence de température entre la zone du capteur de température de la surface du miroir et la zone de détection de la lumière. Si vous devez vérifier l'exactitude des lectures, vous pouvez étalonner l'appareil avec un hygromètre à miroir réfrigéré commercial étalonné.

Quant à la contamination des miroirs, ce n'est que partiellement un problème. La lecture de la lumière réfléchie n'est pas absolue mais relative au début d'un cycle de refroidissement. Lorsqu'un cycle de refroidissement démarre, le miroir est exempt de condensation. La quantité de lumière réfléchie est mesurée et utilisée comme référence pour détecter la condensation. Si le miroir est contaminé et que moins de lumière est réfléchie, cela ne devrait pas affecter la détection de condensation. Cependant, certains contaminants abaissent ou augmentent la température à laquelle la condensation se produit, donc pour une meilleure précision, nettoyez la surface du miroir de temps en temps.

Le miroir et les capteurs de température ambiante n'ont pas besoin d'avoir une précision calibrée élevée, mais la résolution doit être élevée. Par exemple, si la température réelle est de 24,0 degrés, mais qu'elle mesure 24,5 degrés, c'est bien tant que le miroir et le thermomètre ambiant mesurent également 24,5 (peut être normalisé) et que le nombre ne tremble qu'avec une décimale. De nombreux thermomètres ont une gigue de 0,2 ou 0,3 degré. Il serait préférable d'utiliser un capteur de température TSYS01 pour la mesure de la température de surface du miroir et de la température ambiante, car ces capteurs offrent la même précision qu'un thermomètre à résistance en platine de 0,1 degré.

Il est important que le capteur de température établisse un bon contact avec la surface du miroir. L'utilisation de pâte thermique non conductrice d'électricité est impérative.

Ne pas refroidir le miroir plus vite que le temps de réponse du thermomètre, sinon le point de rosée détecté sera inexact.

Le capteur de température doit être placé à un endroit du miroir où la condensation de la zone de détection de lumière apparaît en même temps.

Le montage d'un capteur de température sur la surface du miroir modifie la répartition de la chaleur, réduisant ainsi la précision. Il peut être tentant d'utiliser un thermomètre infrarouge comme alternative, mais malheureusement, le miroir réfléchit une certaine quantité de rayonnement thermique, de sorte que la mesure sera influencée par l'environnement.

Techniquement, une lecture d'humidité dépend également de la pression barométrique mais l'effet est très faible dans les environnements ambiants. Tout changement de pression causé par le claquement des portes et le vent extérieur provoquant une pression différentielle dans un bâtiment est susceptible de causer plus de problèmes que cela n'en vaut la peine.

L'air chaud du dissipateur thermique Peltier ne doit pas être aspiré par le miroir.

Une baisse de température lente donnera des lectures plus précises, mais réduira également le temps de réponse. Le temps de réponse peut être amélioré en faisant osciller la température près du point de rosée.

Code

  • Hygromètre à miroir réfrigéré
Hygromètre à miroir réfrigéréC/C++
Code Arduino
#include #include  //Watchdog crash detection//Ce sont des bibliothèques personnalisées.#include "Si7021.h" //Capteur d'humidité avec chauffage#include  //DS18B20 temp sensor#include  //DS18B20 temp sensor//Timer library :https://github.com/brunocalou/Timer#include "timer.h"#include "timerManager.h" //Définir les broches matérielles sur la carte Arduino.#define CoolingPWM 6#define HeatingPWM 5#define CoolingEnable 13#define HeatingEnable 12#define tecFan 7#define OpticalSensor 0 //Analog in#define oneWireBus A3 //DS18B20 temp sensor // L'état du TEC.#define REFROIDISSEMENT 0#define CHAUFFAGE 1#define OFF 2//TimersTimer timerMainLoop;Timer timerTecCooling;Timer timerSampleNoise;//Capteur de température (humidité non utilisée). Si7021 si7021;//DS18B20 capteur de températureOneWire oneWire (oneWireBus); Capteurs de température Dallas(&oneWire);float humidité =0;float ambientTemp =0;float OpticalDewpoint =0;//Réglez-les sur une valeur initiale plus élevée pour obtenir la plage du traceur série correcte.float mirrorTemp =30; optique flottante =30 ; point de rosée flottant =15 ; //la valeur initiale doit être inférieure au miroir temp.float relativeHumidity =30;int tecState =OFF;bool cooling =false;int intervalTecCooling =200; //La fréquence à laquelle le temporisateur TEC est mis à jour dans ms.float OpticalThreshold =0.5f; //0,5 //Le nombre de degrés C que la lecture optique doit descendre en dessous de la référence afin de signaler la détection de condensation. Ce doit être un nombre plus grand que le signal noise.int pwmIncrement =1; int startPwm =100;int maxPwm =255;int intervalMainLoop =200; int tecPwm =0;int noiseSampleIndex =0;int noiseSampleAmount =10;float noiseSampleHighest =0;float noiseSampleLowest =10000;bool noiseSampling =false;float calculateHumidiity(float TD, float T){ //Le point de rosée ne peut pas être supérieur au Température. si(TD> T){ TD =T; } //Approximation Août-Roche-Magnus. flottant rh =100*(exp((17,625*TD)/(243,04+TD))/exp((17,625*T)/(243,04+T))); return rh;}//Définir le TEC sur chauffage, refroidissement ou arrêt.void SetTEC(int state, int montant){ tecState =state; //Notez que pour le chauffage et le refroidissement, la broche de chauffage ET de refroidissement doit être réglée sur haut. Demandez au concepteur de PCB pourquoi. //Pilote utilisé pour contrôler le TEC :carte de commande du moteur BTS7960. Notez que PWM pour piloter un TEC n'est pas efficace et il est préférable d'utiliser une source de courant variable. switch(state) { case COOLING:digitalWrite(heatingEnable, HIGH); analogWrite(chauffagePWM, 0); digitalWrite(coolingEnable, HIGH); analogWrite(coolingPWM, montant); Pause; cas CHAUFFAGE:digitalWrite(coolingEnable, HIGH); analogWrite(refroidissementPWM, 0); digitalWrite(heatingEnable, HIGH); analogWrite(chauffagePWM, montant); Pause; case OFF :digitalWrite (coolingEnable, LOW); analogWrite(refroidissementPWM, 0); digitalWrite(heatingEnable, LOW); analogWrite(chauffagePWM, 0); Pause; par défaut :digitalWrite(coolingEnable, LOW ); analogWrite(refroidissementPWM, 0); digitalWrite(heatingEnable, LOW); analogWrite(chauffagePWM, 0); }}void setup() { //Détection de crash du chien de garde. C'est pour la sécurité car vous ne voulez pas que le TEC reste bloqué en mode chauffage. wdt_enable(WDTO_2S); //WDTO_500MS //WDTO_1S Serial.begin (9600); //9600 //57600 pinMode (coolingPWM, OUTPUT); pinMode(chauffagePWM, SORTIE); pinMode(coolingEnable, OUTPUT); pinMode(heatingEnable, OUTPUT); pinMode(tecFan, SORTIE); pinMode(opticalSensor, INPUT); //Configurer les minuteries timerMainLoop.setInterval(intervalMainLoop); timerMainLoop.setCallback(mainLoop); timerMainLoop.start(); timerTecCooling.setInterval(intervalTecCooling); timerTecCooling.setCallback(tecCoolingCallback); timerSampleNoise.setInterval(intervalTecCooling); timerSampleNoise.setCallback(sampleNoiseCallback); //Configuration du capteur de température si7021. uint64_t serialNumber =0ULL; si7021.begin(); SerialNumber =si7021.getSerialNumber(); //DS18B20 onewire capteur de température capteurs.begin(); // Désactive la journalisation du débogage du capteur de température afin que le graphique fonctionne correctement. /* Serial.print("Numéro de série Si7021 :"); Serial.print((uint32_t)(serialNumber>> 32), HEX); Serial.println((uint32_t)(serialNumber), HEX); //Version du firmware Serial.print("Version du firmware du Si7021 :"); Serial.println(si7021.getFirmwareVersion(), HEX); */ startNoiseSampling(); }//Obtenir la lecture du capteur optique.float getOptical(){ int opt ​​=analogRead(opticalSensor); float optFactored =(float)opt / 30.0f; return optFactored;}//Timer callback.void tecCoolingCallback(){ digitalWrite(tecFan, HIGH); //Augmentez lentement la puissance du TEC. tecPwm +=pwmIncrément; //Clamp if(tecPwm> maxPwm){ tecPwm =maxPwm; } //Définir la quantité de refroidissement TEC SetTEC(COOLING, tecPwm); //De la condensation est-elle détectée ? if(optical <=(noiseSampleLowest - OpticalThreshold)){ //Enregistrer le point de rosée ; point de rosée =mirrorTemp; point de rosée optique =optique ; stopTec(); }}void startNoiseSampling(){ noiseSampling =true; noiseSampleHighest =0 ; bruitSamplePlus bas =10000 ; timerSampleNoise.start();}void sampleNoiseReset(){ timerSampleNoise.stop(); noiseSampleIndex =0; noiseSampling =false;}void sampleNoiseCallback(){ if(noiseSampleIndex> noiseSampleAmount){ sampleNoiseReset(); startTecCooling(); } else{ if(optical> noiseSampleHighest){ noiseSampleHighest =Optical; } if(optical =noiseSampleLowest)){ startNoiseSampling(); } }void loop() { //Détection de crash du chien de garde wdt_reset(); //Mettre à jour tous les temporisateurs. TimerManager::instance().update();}

Schémas


Processus de fabrication

  1. Miroir
  2. Arduino Spybot
  3. FlickMote
  4. Téléviseur maison B-Gone
  5. Miroir infini Kaléidoscope
  6. horloge maîtresse
  7. Trouvez-moi
  8. Puissance Arduino
  9. Tech-TicTacToe