Manufactura industrial
Internet industrial de las cosas | Materiales industriales | Mantenimiento y reparación de equipos | Programación industrial |
home  MfgRobots >> Manufactura industrial >  >> Manufacturing Technology >> Proceso de manufactura

Higrómetro de espejo frío Arduino

Componentes y suministros

Arduino UNO
× 1
Fuente de alimentación 12V 10A
× 1
Ventilador de alta potencia de 12 V y 40 mm
× 1
12V 40mm TEC
× 1
Disipador de calor de 40 mm
× 1
espejo pequeño
× 1
Adhesivo termoconductor
× 1
Pasta térmica
× 1
controlador de motor BTS7960
× 1
LED de 3 mm:amarillo
× 1
Sensor de luz OPT101
× 1
Módulo IRF520 MOSFET
× 1
Termómetro digital de 1 cable de resolución programable DS18B20 de Maxim Integrated
× 1
Sensor de temperatura y humedad SparkFun Breakout - Si7021
× 1

Herramientas y máquinas necesarias

Pistola de pegamento caliente (genérica)

Aplicaciones y servicios en línea

Arduino IDE

Acerca de este proyecto

Acerca de

La medición de la humedad se puede realizar de muchas formas diferentes. El método más popular es utilizar un sensor de humedad capacitivo. Desafortunadamente, estos sensores pierden precisión rápidamente cuando se operan continuamente en un ambiente muy húmedo. Un higrómetro de espejo frío no sufre este problema y también es mucho más preciso, especialmente en el rango de alta humedad. Desafortunadamente, un higrómetro de espejo refrigerado comercial cuesta literalmente miles de dólares. Sin embargo, la operación básica es bastante simple, por lo que es posible hacer uno usted mismo. No tendrá la misma precisión de 0,1 grados que un dispositivo comercial, pero para la mayoría de los propósitos será lo suficientemente bueno y ciertamente más preciso que un sensor capacitivo.

Este proyecto es una prueba de concepto y de ninguna manera está listo para la producción. Se pueden realizar muchas mejoras, pero demuestra el hecho de que funciona.

Cómo funciona

Un higrómetro de espejo frío usa un Peltier (TEC) para enfriar una superficie reflectante hasta que aparece la condensación. La condensación se detecta con una fuente de luz y un sensor óptico. La temperatura de la superficie del espejo se registra en el momento en que aparece la condensación. Esta temperatura es equivalente al punto de rocío. La humedad relativa se puede calcular utilizando el punto de rocío y la temperatura ambiente.

Simplificación

Hay algunas diferencias con este higrómetro de espejo frío de bricolaje en comparación con una unidad comercial.

Un higrómetro de espejo frío comercial no utiliza un espejo convencional porque no conduce ni distribuye el calor muy bien, lo que reduce la precisión y la eficiencia. Estos dispositivos utilizan principalmente cobre chapado en platino o rodio como espejo. Como no se puede obtener fácilmente ni es rentable, se utiliza un espejo normal en este higrómetro de espejo frío de bricolaje. Un pequeño espejo cuadrado sería mejor que uno redondo, pero no pude encontrar uno. Como alternativa, una losa pulida de acero inoxidable sería incluso mejor.

Un higrómetro de espejo frío comercial utiliza un termómetro de resistencia de platino (PRT) incrustado debajo del espejo en lugar de un termómetro SMD montado en la superficie del espejo. Un PRT requiere componentes electrónicos adicionales y montarlo entre el Peltier y el espejo y, al mismo tiempo, proporcionar una buena conductividad térmica es problemático. La desventaja de montar un termómetro en la superficie del espejo es que modifica las propiedades de distribución del calor, reduciendo la precisión. Pero un termómetro montado en la superficie es mucho más fácil de construir y es lo suficientemente preciso.

Un higrómetro de espejo frío comercial utiliza un espejo mucho más pequeño de aproximadamente 5 mm en lugar de 4 cm. ya que requiere menos energía y tiene un factor de forma más pequeño. Sin embargo, un espejo pequeño y un Peltier a juego no están tan fácilmente disponibles como la variante más grande. Además, un Peltier pequeño requiere un voltaje muy bajo, lo que requiere un controlador personalizado. También es más difícil montar un termómetro SMD en una superficie de espejo pequeña dejando suficiente espacio para reflejar algo de luz.

La versión actual no tiene una caja de bloqueo de luz. Sin embargo, esto se puede imprimir fácilmente en 3D y es muy recomendable para bloquear la interferencia de fuentes de luz externas. También se puede utilizar para mantener la fuente de luz y el sensor de luz en su lugar. Si hace un recinto impreso en 3D, asegúrese de que esté bien ventilado. Puede utilizar el ventilador Peltier para ventilar, pero asegúrese de introducir aire en el recinto, no soplarlo. El interior también debe ser de fácil acceso para limpiar los espejos.

La implementación actual no puede medir el punto de escarcha, ya que requiere diferenciar entre partículas de hielo y gotas de agua, lo que requiere un segundo sensor óptico para medir la luz dispersa.

Cómo construir

Tome el Peltier, limpie ambas superficies y coloque adhesivo termoconductor en el lado caliente. Asegúrese de que esté distribuido uniformemente. Si no tiene adhesivo termoconductor, puede usar pasta térmica con unas gotas de superpegamento cerca de los bordes. Esto funciona igualmente bien. Limpie la superficie del disipador de calor y presione el disipador de calor y Peltier juntos y deje que el pegamento se seque.

Después de que el disipador de calor esté conectado al Peltier y el pegamento se haya secado, coloque el espejo de la misma manera, asegurándose de limpiar primero la superficie inferior. Es importante que la pasta térmica se distribuya uniformemente y que no haya espacios de aire, de lo contrario, la distribución del calor en el espejo no será uniforme.

Cuando todo el pegamento se haya secado, coloque el ventilador. Asegúrese de usar un ventilador lo suficientemente potente como para enfriar el disipador de calor, ya que se calienta bastante. La forma de conectar el ventilador al disipador de calor depende del tipo de disipador de calor que utilice. Simplemente pegué los dos con una pistola de pegamento caliente.

Encienda el ventilador, luego el Peltier para verificar si hay al menos dos áreas en el espejo donde aparece la condensación al mismo tiempo. No encienda el Peltier por mucho tiempo porque eso ciertamente creará un perfil de condensación uniforme. Desea ver cómo se ve cuando la condensación se vuelve visible. Si no está satisfecho con el resultado, vuelva a intentarlo con un nuevo Peltier, espejo y disipador de calor, ya que es poco probable que pueda quitar las piezas y restaurar la superficie lisa.

No distribuí la pasta térmica de manera uniforme, lo que resultó en un perfil de condensación irregular como puede ver en la foto de arriba.

Es importante hacer una foto o marcar el área donde aparece la condensación al mismo tiempo porque esta es el área donde debe montar el sensor de temperatura de la superficie del espejo y medir la cantidad de luz reflejada en el espejo.

En este proyecto utilizo un Si7021 para medir la temperatura del espejo porque da una salida de ruido baja. Desafortunadamente, la dirección I2C está codificada de forma rígida, por lo que solo puede usar uno de esos sensores. Para la temperatura ambiente utilizo un sensor de temperatura DS18B20 pero no tiene una precisión muy alta. La única razón por la que uso esos sensores es porque los tenía disponibles.

Para montar el Si7021 (o cualquier sensor de temperatura basado en PCB) en el espejo, primero coloque una gota grande de pasta térmica no conductora de electricidad en el sensor de temperatura. La PCB también debe cubrirse con pasta térmica para evitar la condensación en los componentes electrónicos. Luego, coloque 4 gotas grandes de pegamento caliente en cada esquina de la PCB. Tienes que moverte rápido. Presione el sensor contra el espejo en el lugar donde la condensación apareció de manera uniforme. Asegúrese de colocar el sensor horizontalmente y presione el sensor firmemente contra el espejo. El pegamento caliente se solidificará rápidamente una vez que toque el espejo. Si necesita reposicionar el sensor, puede rasparlo fácilmente con una broca de cúter, quitar el pegamento y volver a intentarlo. Si tiene condensación en la PCB, aíslela con pegamento termofusible o plástico en aerosol.

El ventilador está controlado por un módulo MOSFET IRF520.

El sensor de luz utilizado es un OPT101, que es sensible, tiene un ruido de salida bajo y es fácil de usar.

Para la fuente de luz, puede utilizar un diodo láser de baja potencia o un LED normal. Probé ambos y ambos funcionan bien. El láser tiene la ventaja de una mejor respuesta pero es más difícil de alinear. El LED tiene una respuesta más plana porque se dispersa más luz, pero es más fácil de alinear. Si usa un LED, asegúrese de que emita un haz enfocado.

Es probable que la salida de luz LED y láser sea demasiado alta, y usar PWM para reducir la salida no es una opción porque eso causará interferencia en el sensor de luz. En su lugar, coloque una resistencia en serie con el LED o el láser para reducir la salida.

Para montar el LED o el láser y el sensor de luz OPT101, utilicé un cable de cobre trenzado en un cable de bloqueo para darle más rigidez. Ambos extremos se aseguraron con pegamento caliente. Esto es bueno para una prueba de concepto, pero también es demasiado frágil para usarse fuera de un laboratorio (o sótano). Sin embargo, es fácil alinear el sensor y la fuente de luz. Una mejor manera sería imprimir en 3D un soporte para estos dispositivos, también porque una carcasa impresa en 3D es imprescindible para evitar cualquier interferencia de la luz exterior.

Para controlar el Peltier, se utiliza un controlador de motor BTS7960. La forma más eficiente de conducir un Peltier es cambiar la corriente, no usar PWM. Sin embargo, los controladores Peltier no están tan fácilmente disponibles como el controlador de motor BTS7960 y para esta prueba de concepto, el consumo de energía no es un factor.

Una vez ensamblado, cargue el código en el Arduino y ajuste el rango de sensibilidad OPT101 con un potenciómetro. Una resistencia más alta significa una salida de voltaje más alta para la misma cantidad de luz. Consulte la hoja de datos OPT101, Figura 3 - Responsividad de voltaje frente a irradiancia. Para depurar, puede soplar sobre el espejo para crear condensación o colocar un objeto frente al sensor. Si tiene aire acondicionado, intente encenderlo (o apagarlo) y esperar. Podrá ver el cambio de humedad.

En el siguiente gráfico, puede ver la temperatura (azul), la lectura óptica (rojo) y el punto de rocío medido (verde). Puede ver que el punto de rocío aumenta cuando apagué el aire acondicionado.

Seguridad

Aunque el código suministrado no lo admite, el hardware puede calentar el espejo además de enfriarlo. Esto se hace simplemente invirtiendo la polaridad en el Peltier. La calefacción por espejo se puede utilizar para eliminar rápidamente la condensación y mejorar el tiempo de respuesta. Además, la condensación por evaporación instantánea elimina los pequeños contaminantes. Sin embargo, esto también presenta un riesgo potencial de seguridad porque la superficie del espejo no tiene un disipador de calor. Si el código se atasca calentando el Peltier, en el mejor de los casos, derretirá el pegamento caliente que sostiene el termómetro en su lugar y, en el peor de los casos, iniciará un incendio debido a que los cables se derriten y provocan un cortocircuito.

Precisión

Debido a que la temperatura del punto de rocío medida es un valor absoluto, la calibración no es tan importante como con un higrómetro capacitivo o resistivo. Sin embargo, habrá al menos alguna diferencia de temperatura entre el área del sensor de temperatura de la superficie del espejo y el área de detección de luz. Si necesita verificar la precisión de las lecturas, puede calibrar el dispositivo con un higrómetro de espejo refrigerado comercial calibrado.

En cuanto a la contaminación del espejo, esto es solo un problema parcial. La lectura de luz reflejada no es absoluta sino relativa al inicio de un ciclo de enfriamiento. Cuando comienza un ciclo de enfriamiento, el espejo está libre de condensación. La cantidad de luz reflejada se mide y se utiliza como referencia para detectar la condensación. Si el espejo está contaminado y se refleja menos luz, no debería afectar la detección de condensación. Sin embargo, algunos contaminantes reducen o aumentan la temperatura a la que se produce la condensación, por lo que, para una mayor precisión, limpie la superficie del espejo de vez en cuando.

Los sensores de temperatura ambiente y del espejo no necesitan tener una precisión calibrada alta, pero la resolución debe ser alta. Por ejemplo, si la temperatura real es de 24,0 grados, pero mide 24,5 grados, está bien siempre que tanto el espejo como el termómetro ambiental también midan 24,5 (se puede normalizar) y el número solo fluctúe con un decimal. Muchos termómetros tienen una fluctuación de 0,2 o 0,3 grados. Sería mejor usar un sensor de temperatura TSYS01 para medir la temperatura de la superficie del espejo y la temperatura ambiente, ya que estos sensores brindan la misma precisión que un termómetro de resistencia de platino de 0.1 grados.

Es importante que el sensor de temperatura haga un buen contacto con la superficie del espejo. Es imperativo el uso de pasta térmica no conductora de electricidad.

No enfríe el espejo más rápido que el tiempo de respuesta del termómetro, de lo contrario, el punto de rocío detectado será inexacto.

El sensor de temperatura debe colocarse en una ubicación del espejo donde la condensación del área de detección de luz aparezca al mismo tiempo.

Montar un sensor de temperatura en la superficie del espejo modifica la distribución del calor, reduciendo la precisión. Puede ser tentador usar una unidad de termómetro infrarrojo como alternativa, pero desafortunadamente el espejo refleja cierta cantidad de radiación térmica, por lo que la medición se verá influenciada por el entorno.

Técnicamente, una lectura de humedad también depende de la presión barométrica, pero el efecto es muy pequeño en entornos ambientales. Es probable que cualquier cambio de presión causado por el portazo de las puertas y el viento del exterior que provoque una presión diferencial en un edificio causen más problemas de los que vale la pena.

El aire caliente del disipador de calor Peltier no debe pasar sobre el espejo.

Una bajada de temperatura lenta dará lecturas más precisas, pero también reducirá el tiempo de respuesta. Sin embargo, el tiempo de respuesta se puede mejorar oscilando la temperatura cerca del punto de rocío.

Código

  • Higrómetro de espejo frío
Higrómetro de espejo frío C / C ++
Código Arduino
 #include  #include  // Detección de fallas de Watchdog // Estas son bibliotecas personalizadas. # Incluyen "Si7021.h" // sensor de humedad con calentador # incluyen  // Sensor de temperatura DS18B20 # incluye  // Sensor de temperatura DS18B20 // Biblioteca de temporizadores:https://github.com/brunocalou/Timer#include "timer.h" #include "timerManager.h" // Definir los pines de hardware en la placa Arduino. # Definir refrigeraciónPWM 6 # definir calefacciónPWM 5 # definir refrigeraciónEnable 13 # definir calefacciónEnable 12 # definir tecFan 7 # definir sensor óptico 0 // Entrada analógica # definir oneWireBus A3 // Sensor de temperatura DS18B20 // El estado del TEC. # Define REFRIGERACIÓN 0 # define CALEFACCIÓN 1 # define OFF 2 // TimersTimer timerMainLoop; Timer timerTecCooling; Timer timerSampleNoise; // Sensor de temperatura (humedad no utilizada). Si7021 si7021; // Sensor de temperatura DS18B20 OneWire oneWire (oneWireBus); Sensores de temperatura de Dallas (&oneWire); humedad de flotación =0; temperatura ambiente de flotación =0; punto de rocío óptico flotante =0; // Establezca estos en un valor inicial más alto para obtener el rango de Plotter en serie correct.float mirrorTemp =30; flotador óptico =30; punto de rocío flotante =15; // el valor inicial debe ser menor que la temperatura del espejo. // Con qué frecuencia se actualiza el temporizador TEC en ms.float opticalThreshold =0.5f; //0.5 // La cantidad de grados C que la lectura óptica tiene que caer por debajo de la referencia para marcar la detección de condensación. Debe ser un número mayor que el ruido de la señal.int pwmIncrement =1; int startPwm =100; int maxPwm =255; int intervaloMainLoop =200; int tecPwm =0; int noiseSampleIndex =0; int noiseSampleAmount =10; float noiseSampleHighest =0; float noiseSampleLowest =10000; bool noiseSampling =false; float calculateHumidity (float TD, float T) {// El punto de rocío no puede ser mayor que el temperatura. si (TD> T) {TD =T; } // Aproximación de August-Roche-Magnus. flotar rh =100 * (exp ((17.625 * TD) / (243.04 + TD)) / exp ((17.625 * T) / (243.04 + T))); return rh;} // Configura el TEC para calentar, enfriar o apagar.void SetTEC (int estado, int cantidad) {tecState =state; // Tenga en cuenta que tanto para calefacción como para refrigeración, la clavija de calefacción Y refrigeración debe estar configurada en alto. Pregúntele al diseñador de PCB por qué. // Controlador utilizado para controlar la placa de controlador de motor TEC:BTS7960. Tenga en cuenta que PWM para impulsar un TEC no es eficiente y es mejor usar una fuente de corriente variable. switch (estado) {case ENFRIAMIENTO:digitalWrite (HeatingEnable, HIGH); analogWrite (calefacciónPWM, 0); digitalWrite (coolingEnable, HIGH); analogWrite (refrigeraciónPWM, cantidad); descanso; carcasa HEATING:digitalWrite (coolingEnable, HIGH); analogWrite (refrigeraciónPWM, 0); digitalWrite (HeatingEnable, HIGH); analogWrite (calefacciónPWM, cantidad); descanso; caso APAGADO:digitalWrite (coolingEnable, LOW); analogWrite (refrigeraciónPWM, 0); digitalWrite (HeatingEnable, LOW); analogWrite (calefacciónPWM, 0); descanso; predeterminado:digitalWrite (coolingEnable, LOW); analogWrite (refrigeraciónPWM, 0); digitalWrite (HeatingEnable, LOW); analogWrite (calefacciónPWM, 0); }} void setup () {// Detección de fallos del perro guardián. Esto es por seguridad porque no desea que el TEC se quede atascado en el modo de calefacción. wdt_enable (WDTO_2S); // WDTO_500MS // WDTO_1S Serial.begin (9600); // 9600 // 57600 pinMode (refrigeraciónPWM, SALIDA); pinMode (calefacciónPWM, SALIDA); pinMode (enfriamientoEnable, SALIDA); pinMode (HeatingEnable, OUTPUT); pinMode (tecFan, SALIDA); pinMode (sensor óptico, ENTRADA); // Configurar los temporizadores timerMainLoop.setInterval (intervalMainLoop); timerMainLoop.setCallback (mainLoop); timerMainLoop.start (); timerTecCooling.setInterval (intervalTecCooling); timerTecCooling.setCallback (tecCoolingCallback); timerSampleNoise.setInterval (intervalTecCooling); timerSampleNoise.setCallback (sampleNoiseCallback); // Configuración del sensor de temperatura si7021. uint64_t serialNumber =0ULL; si7021.begin (); serialNumber =si7021.getSerialNumber (); // DS18B20 sensor de temperatura de un solo cable sensores.begin (); // Desactive el registro de depuración del sensor de temperatura para que el gráfico funcione correctamente. / * Serial.print ("Número de serie Si7021:"); Serial.print ((uint32_t) (serialNumber>> 32), HEX); Serial.println ((uint32_t) (serialNumber), HEX); // Versión de firmware Serial.print ("Versión de firmware Si7021:"); Serial.println (si7021.getFirmwareVersion (), HEX); * / startNoiseSampling (); } // Obtener el sensor óptico reading.float getOptical () {int opt ​​=analogRead (opticalSensor); float optFactored =(flotante) opt / 30.0f; return optFactored;} // Temporizador de devolución de llamada.void tecCoolingCallback () {digitalWrite (tecFan, HIGH); // Incrementa lentamente la potencia del TEC. tecPwm + =pwmIncrement; // Fijar if (tecPwm> maxPwm) {tecPwm =maxPwm; } // Establecer la cantidad de enfriamiento TEC SetTEC (COOLING, tecPwm); // ¿Se detecta condensación? if (óptico <=(noiseSampleLowest - opticalThreshold)) {// Registra el punto de rocío; dewPoint =mirrorTemp; OpticalDewpoint =óptico; stopTec (); }} void startNoiseSampling () {noiseSampling =true; noiseSampleHighest =0; noiseSampleLowest =10000; timerSampleNoise.start ();} vacío sampleNoiseReset () {timerSampleNoise.stop (); noiseSampleIndex =0; NoiseSampling =false;} void sampleNoiseCallback () {if (noiseSampleIndex> NoiseSampleAmount) {sampleNoiseReset (); startTecCooling (); } else {if (óptico> noiseSampleHighest) {noiseSampleHighest =óptico; } if (óptico  =noiseSampleLowest)) {startNoiseSampling (); }} void loop () {// Detección de fallos de vigilancia wdt_reset (); // Actualiza todos los temporizadores. TimerManager ::instancia (). Update ();} 

Esquemas


Proceso de manufactura

  1. Reflejar
  2. Arduino Spybot
  3. FlickMote
  4. Televisión casera B-Gone
  5. Espejo infinito del caleidoscopio
  6. Reloj maestro
  7. Encuéntrame
  8. Arduino Power
  9. Tech-TicTacToe
  10. Arduino Cuadrúpedo
  11. Joystick de Arduino