Manufaturação industrial
Internet das coisas industrial | Materiais industriais | Manutenção e reparo de equipamentos | Programação industrial |
home  MfgRobots >> Manufaturação industrial >  >> Manufacturing Technology >> Processo de manufatura

Higrômetro de espelho resfriado Arduino

Componentes e suprimentos

Arduino UNO
× 1
Fonte de alimentação 12V 10A
× 1
Ventilador 12V 40mm de alta potência
× 1
12V 40mm TEC
× 1
Dissipador de calor de 40 mm
× 1
espelho pequeno
× 1
Adesivo termicamente condutor
× 1
Pasta térmica
× 1
BTS7960 motor driver
× 1
LED de 3 mm:amarelo
× 1
sensor de luz OPT101
× 1
Módulo MOSFET IRF520
× 1
Maxim Integrated DS18B20 Termômetro digital de 1 fio de resolução programável com resolução programável
× 1
SparkFun Sensor de umidade e temperatura - Si7021
× 1

Ferramentas e máquinas necessárias

Pistola de cola quente (genérica)

Aplicativos e serviços online

Arduino IDE

Sobre este projeto





Sobre


A medição da umidade pode ser feita de muitas maneiras diferentes. O método mais popular é usar um sensor de umidade capacitivo. Infelizmente, esses sensores perdem a precisão rapidamente quando operados continuamente em um ambiente muito úmido. Um higrômetro de espelho resfriado não sofre desse problema e também é muito mais preciso, especialmente na faixa de alta umidade. Infelizmente, um higrômetro de espelho resfriado comercial custava literalmente milhares de dólares. A operação básica é bastante simples, por isso é possível fazer um você mesmo. Ele não terá a mesma precisão de 0,1 grau de um dispositivo comercial, mas para a maioria dos propósitos será bom o suficiente e certamente mais preciso do que um sensor capacitivo.

Este projeto é uma prova de conceito e de forma alguma está pronto para a produção. Muitas melhorias podem ser feitas, mas isso prova o fato de que funciona.





Como funciona


Um higrômetro de espelho resfriado usa um Peltier (TEC) para resfriar uma superfície reflexiva até que apareça condensação. A condensação é detectada com uma fonte de luz e um sensor óptico. A temperatura da superfície do espelho é registrada no momento em que a condensação aparece. Esta temperatura é equivalente ao ponto de orvalho. A umidade relativa pode então ser calculada usando o ponto de orvalho e a temperatura ambiente.





Simplificação


Existem algumas diferenças com este higrômetro de espelho resfriado DIY em comparação com uma unidade comercial.

Um Higrômetro de Espelho Resfriado comercial não usa um espelho convencional porque ele não conduz e distribui o calor muito bem, causando uma redução na precisão e eficiência. Esses dispositivos usam principalmente cobre folheado a platina ou ródio como espelho. Como isso não é fácil de obter nem econômico, um espelho normal é usado neste higrômetro de espelho resfriado DIY. Um pequeno espelho quadrado seria melhor do que um redondo, mas não consegui encontrar nenhum. Como alternativa, uma placa polida de aço inoxidável seria ainda melhor.

Um higrômetro comercial de espelho resfriado usa um termômetro de resistência de platina (PRT) embutido embaixo do espelho, em vez de um termômetro SMD montado na superfície do espelho. Um PRT requer componentes eletrônicos adicionais e montá-lo entre o Peltier e o espelho e, ao mesmo tempo, fornecer boa condutividade térmica é problemático. A desvantagem de montar um termômetro na superfície do espelho é que isso modifica as propriedades de distribuição de calor, reduzindo a precisão. Mas um termômetro montado em superfície é muito mais fácil de construir e é preciso o suficiente.

Um higrômetro de espelho resfriado comercial usa um espelho muito menor de cerca de 5 mm em vez de 4 cm. já que requer menos energia e tem um formato menor. No entanto, um pequeno espelho e Peltier combinando não estão tão prontamente disponíveis quanto a variante maior. Além disso, um Peltier pequeno requer uma voltagem muito baixa, exigindo um driver personalizado. Também é mais difícil montar um termômetro SMD em uma pequena superfície de espelho, deixando espaço suficiente para refletir um pouco da luz.

A versão atual não possui um gabinete de bloqueio de luz. Isso pode ser facilmente impresso em 3D e é altamente recomendado para bloquear a interferência de fontes de luz externas. Também pode ser usado para manter a fonte de luz e o sensor de luz no lugar. Se você fizer um gabinete impresso em 3D, certifique-se de que seja bem ventilado. Você pode usar o ventilador Peltier para ventilação, mas certifique-se de puxar o ar para dentro do gabinete, não soprar nele. O interior também deve ser facilmente acessível para a limpeza do espelho.

A implementação atual não pode medir o ponto de congelamento, pois isso requer a diferenciação entre partículas de gelo e gotículas de água, o que requer um segundo sensor óptico para medir a luz espalhada.





Como construir


Pegue o Peltier, limpe ambas as superfícies e coloque adesivo termicamente condutor no lado quente. Certifique-se de que seja distribuído uniformemente. Se você não tiver adesivo termicamente condutor, pode usar pasta térmica com algumas gotas de super cola perto das bordas. Isso funciona igualmente bem. Limpe a superfície do dissipador de calor e pressione o dissipador de calor e Peltier juntos e deixe a cola secar.

Depois que o dissipador de calor for colocado no Peltier e a cola secar, fixe o espelho da mesma forma, limpando primeiro a superfície inferior. É importante que a pasta térmica seja uniformemente distribuída e não haja espaços de ar, caso contrário, a distribuição do calor no espelho não será uniforme.

Quando toda a cola secar, coloque o leque. Certifique-se de usar um ventilador potente o suficiente para resfriar o dissipador de calor, pois ele fica bastante quente. Como conectar o ventilador ao dissipador de calor depende do tipo de dissipador de calor que você usa. Eu apenas colei os dois juntos usando uma pistola de cola quente.

Ligue o ventilador e o Peltier para verificar se há pelo menos duas áreas no espelho onde a condensação aparece ao mesmo tempo. Não alimente o Peltier por muito tempo, pois isso certamente criará um perfil de condensação uniforme. Você quer ver como fica quando a condensação torna-se visível. Se você não estiver satisfeito com o resultado, tente novamente com um novo Peltier, espelho e dissipador de calor, pois é improvável que você possa remover as peças e restaurar a superfície lisa.



Não distribuí a pasta térmica de maneira uniforme resultando em um perfil de condensação irregular como você pode ver na foto acima.

É importante tirar uma foto ou marcar a área onde a condensação aparece ao mesmo tempo porque é nesta área que você deve montar o sensor de temperatura da superfície do espelho e medir a quantidade de luz refletida no espelho.

Neste projeto eu uso um Si7021 para medir a temperatura do espelho porque ele dá uma saída de baixo ruído. Infelizmente, o endereço I2C é codificado permanentemente, então você só pode usar um desses sensores. Para a temperatura ambiente, uso um sensor de temperatura DS18B20, mas não tem uma precisão muito alta. A única razão pela qual uso esses sensores é porque os tenho disponíveis.

Para montar o Si7021 (ou qualquer sensor de temperatura baseado em PCB) no espelho, primeiro coloque uma grande gota de pasta térmica não eletricamente condutora no sensor de temperatura. A placa de circuito impresso também deve ser coberta com pasta térmica, para evitar condensação na parte eletrônica. Em seguida, coloque 4 bolhas grandes de cola quente em cada canto do PCB. Você tem que se mover rápido. Pressione o sensor contra o espelho no local onde a condensação apareceu uniformemente. Certifique-se de colocar o sensor horizontalmente e pressione-o firmemente contra o espelho. A cola quente solidificará rapidamente ao tocar no espelho. Se você precisar reposicionar o sensor, pode facilmente raspá-lo com uma ponta de faca, descascar a cola e tentar novamente. Se houver condensação no PCB, isole-o com cola quente ou plástico em spray.

O ventilador é controlado por um módulo MOSFET IRF520.

O sensor de luz usado é um OPT101, que é sensível, tem baixo ruído de saída e é fácil de usar.

Para a fonte de luz, você pode usar um diodo laser de baixa potência ou um LED normal. Eu tentei os dois e ambos funcionam bem. O laser tem a vantagem de uma resposta melhor, mas é mais difícil de alinhar. O LED tem uma resposta mais plana porque mais luz é espalhada, mas é mais fácil de alinhar. Se você usar um LED, certifique-se de que ele emite um feixe focalizado.

A saída de luz LED e laser é provavelmente muito alta e usar PWM para reduzir a saída não é uma opção porque isso causará interferência no sensor de luz. Em vez disso, basta colocar um resistor em série com o LED ou laser para reduzir a saída.

Para montar o LED ou laser e o sensor de luz OPT101, usei um fio de cobre trançado em um fio de bloqueio para dar mais rigidez. Ambas as extremidades foram presas com cola quente. Isso é bom para uma prova de conceito, mas também é muito frágil para ser usado fora de um laboratório (ou porão). No entanto, é fácil alinhar o sensor e a fonte de luz. A melhor maneira seria imprimir em 3D um suporte para esses dispositivos, também porque um gabinete impresso em 3D é essencial para evitar qualquer interferência de luz externa.

Para controlar o Peltier, um driver de motor BTS7960 é usado. A maneira mais eficiente de conduzir um Peltier é mudar a corrente, não usar PWM. No entanto, os controladores Peltier não estão tão prontamente disponíveis quanto o driver do motor BTS7960 e para esta prova de conceito, o consumo de energia não é um fator.

Depois de montado, carregue o código para o Arduino e ajuste a faixa de sensibilidade OPT101 com um potenciômetro. Uma resistência mais alta significa uma saída de tensão mais alta para a mesma quantidade de luz. Consulte a folha de dados OPT101, Figura 3 - Responsividade de tensão versus irradiação. Para depuração, você pode soprar no espelho para criar condensação ou colocar um objeto na frente do sensor. Se você tiver um ar condicionado, tente ligá-lo (ou desligá-lo) e esperar. Você poderá ver a mudança de umidade.

No gráfico abaixo você pode ver a temperatura (azul), a leitura óptica (vermelho) e o ponto de orvalho medido (verde). Você pode ver o ponto de orvalho aumentando assim que desliguei o ar condicionado.





Segurança


Embora o código fornecido não suporte isso, o hardware pode aquecer o espelho, além de resfriá-lo. Isso é feito simplesmente revertendo a polaridade no Peltier. O aquecimento do espelho pode ser usado para eliminar rapidamente a condensação e melhorar o tempo de resposta. Além disso, a condensação de evaporação rápida elimina pequenos contaminantes. No entanto, isso também representa um risco potencial de segurança porque a superfície do espelho não tem um dissipador de calor. Se o código travar aquecendo o Peltier, na melhor das hipóteses ele derreterá a cola quente que mantém o termômetro no lugar e, na pior, iniciará um incêndio devido ao derretimento dos fios causando um curto-circuito.





Precisão


Como a temperatura do ponto de orvalho medida é um valor absoluto, a calibração não é tão importante quanto com um higrômetro capacitivo ou resistivo. No entanto, haverá pelo menos alguma diferença de temperatura entre a área do sensor de temperatura da superfície do espelho e a área de detecção de luz. Se você precisar verificar a precisão das leituras, pode calibrar o dispositivo com um Higrômetro de espelho resfriado comercial calibrado.

Quanto à contaminação do espelho, isso é apenas parcialmente um problema. A leitura da luz refletida não é absoluta, mas relativa ao início de um ciclo de resfriamento. Quando um ciclo de resfriamento começa, o espelho está sem condensação. A quantidade de luz refletida é medida e usada como referência para detectar condensação. Se o espelho estiver contaminado e menos luz for refletida, isso não deve afetar a detecção de condensação. No entanto, alguns contaminantes diminuem ou aumentam a temperatura na qual ocorre a condensação, portanto, para melhor precisão, limpe a superfície do espelho de vez em quando.

O espelho e os sensores de temperatura ambiente não precisam ter alta precisão calibrada, mas a resolução deve ser alta. Por exemplo, se a temperatura real é 24,0 graus, mas mede 24,5 graus, isso está bom, desde que o espelho e o termômetro ambiente também medam 24,5 (pode ser normalizado) e o número apenas oscila com uma casa decimal. Muitos termômetros têm um jitter de 0,2 ou 0,3 graus. Seria melhor usar um sensor de temperatura TSYS01 para a medição da temperatura da superfície do espelho e da temperatura ambiente, pois esses sensores fornecem a mesma precisão que um termômetro de resistência de platina de 0,1 graus.

É importante que o sensor de temperatura tenha um bom contato com a superfície do espelho. O uso de pasta térmica não eletricamente condutiva é obrigatório.

Não resfrie o espelho mais rápido do que o tempo de resposta do termômetro, caso contrário, o ponto de orvalho detectado será impreciso.

O sensor de temperatura deve ser colocado em um local do espelho onde a condensação da área de detecção de luz apareça ao mesmo tempo.

A montagem de um sensor de temperatura na superfície do espelho modifica a distribuição do calor, reduzindo a precisão. Pode ser tentador usar uma unidade de termômetro infravermelho como alternativa, mas infelizmente o espelho reflete alguma quantidade de radiação térmica, de modo que a medição será influenciada pelo ambiente.

Tecnicamente, uma leitura de umidade também depende da pressão barométrica, mas o efeito é muito pequeno em ambientes ambientais. Qualquer mudança de pressão causada por portas batendo e vento externo soprando causando pressão diferencial em um edifício provavelmente causará mais problemas do que realmente vale a pena.

O ar quente do dissipador de calor Peltier não deve ser puxado sobre o espelho.

Uma queda lenta da temperatura fornecerá leituras mais precisas, mas também reduz o tempo de resposta. O tempo de resposta pode ser melhorado oscilando a temperatura próximo ao ponto de orvalho.

Código

  • Higrômetro de espelho resfriado
Higrômetro de espelho resfriado C / C ++
Código do Arduino
 #include  #include  // Watchdog crash detecção // Estas são bibliotecas personalizadas. # Include "Si7021.h" // sensor de umidade com aquecedor # include  // DS18B20 temp sensor # include  // DS18B20 temp sensor // Timer library:https://github.com/brunocalou/Timer#include "timer.h" #include "timerManager.h" // Definir os pinos de hardware na placa Arduino. # Define coolingPWM 6 # define heatingPWM 5 # define coolingEnable 13 # define heatingEnable 12 # define tecFan 7 # define optionalSensor 0 // Analog in # define oneWireBus A3 // DS18B20 temp sensor // O estado do TEC. # Define COOLING 0 # define HEATING 1 # define OFF 2 // TimersTimer timerMainLoop; Timer timerTecCooling; Timer timerSampleNoise; // Sensor de temperatura (umidade não utilizada). Si7021 si7021; // DS18B20 temp sensorOneWire oneWire (oneWireBus); Sensores de temperatura Dallas (&oneWire); umidade flutuante =0; valorTemp ambiente flutuante =0; flutuanteponto ópticoDewpoint =0; // Defina-os para um valor inicial mais alto para obter o intervalo correto do plotter serial correto.float mirrorTemp =30; float óptico =30; float dewPoint =15; // valor inicial deve ser menor que o espelho temp.float relativeHumidity =30; int tecState =OFF; bool cooling =false; int intervalTecCooling =200; // Com que freqüência o temporizador do TEC é atualizado em ms.float opticalThreshold =0.5f; //0.5 // A quantidade de graus C que a leitura óptica tem que cair abaixo da referência para sinalizar a detecção de condensação. Este deve ser um número maior do que o sinal 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 calculHumidity (float TD, float T) {// O ponto de orvalho não pode ser maior que o temperatura. se (TD> T) {TD =T; } // Aproximação de agosto-Roche-Magnus. float rh =100 * (exp ((17,625 * TD) / (243,04 + TD)) / exp ((17,625 * T) / (243,04 + T))); return rh;} // Define o TEC para aquecimento, resfriamento ou off.void SetTEC (int state, int amount) {tecState =state; // Observe que para aquecimento e resfriamento, o pino de aquecimento E resfriamento precisa ser definido como alto. Pergunte ao designer de PCB por quê. // Driver usado para controlar o TEC:placa de driver do motor BTS7960. Observe que o PWM para acionar um TEC não é eficiente e é melhor usar uma fonte de corrente variável. switch (estado) {case COOLING:digitalWrite (heatingEnable, HIGH); analogWrite (aquecimentoPWM, 0); digitalWrite (coolingEnable, HIGH); analogWrite (resfriamentoPWM, quantidade); pausa; case HEATING:digitalWrite (coolingEnable, HIGH); analogWrite (refrigeraçãoPWM, 0); digitalWrite (heatingEnable, HIGH); analogWrite (aquecimentoPWM, quantidade); pausa; caso OFF:digitalWrite (coolingEnable, LOW); analogWrite (refrigeraçãoPWM, 0); digitalWrite (heatingEnable, LOW); analogWrite (aquecimentoPWM, 0); pausa; padrão:digitalWrite (coolingEnable, LOW); analogWrite (refrigeraçãoPWM, 0); digitalWrite (heatingEnable, LOW); analogWrite (aquecimentoPWM, 0); }} void setup () {// Detecção de falha do Watchdog. Isso é por segurança, porque você não quer que o TEC fique preso no modo de aquecimento. wdt_enable (WDTO_2S); // WDTO_500MS // WDTO_1S Serial.begin (9600); // 9600 // 57600 pinMode (coolingPWM, OUTPUT); pinMode (heatPWM, OUTPUT); pinMode (coolingEnable, OUTPUT); pinMode (heatingEnable, OUTPUT); pinMode (tecFan, OUTPUT); pinMode (optionalSensor, INPUT); // Configurar os temporizadores timerMainLoop.setInterval (intervalMainLoop); timerMainLoop.setCallback (mainLoop); timerMainLoop.start (); timerTecCooling.setInterval (intervalTecCooling); timerTecCooling.setCallback (tecCoolingCallback); timerSampleNoise.setInterval (intervalTecCooling); timerSampleNoise.setCallback (sampleNoiseCallback); // configuração do sensor de temperatura si7021. uint64_t serialNumber =0ULL; si7021.begin (); serialNumber =si7021.getSerialNumber (); // sensor de temperatura DS18B20 onewire sensores.begin (); // Desative o registro de depuração do sensor de temperatura para que o gráfico funcione corretamente. / * Serial.print ("Número de série Si7021:"); Serial.print ((uint32_t) (serialNumber>> 32), HEX); Serial.println ((uint32_t) (serialNumber), HEX); // Versão do firmware Serial.print ("Versão do firmware Si7021:"); Serial.println (si7021.getFirmwareVersion (), HEX); * / startNoiseSampling (); } // Obtenha o sensor óptico reading.float getOptical () {int opt ​​=analogRead (ópticoSensor); float optFactored =(float) opt / 30.0f; return optFactored;} // Timer callback.void tecCoolingCallback () {digitalWrite (tecFan, HIGH); // Aumente lentamente a potência do TEC. tecPwm + =pwmIncrement; // Clamp if (tecPwm> maxPwm) {tecPwm =maxPwm; } // Definir a quantidade de resfriamento do TEC SetTEC (COOLING, tecPwm); // É detectada condensação? if (óptico <=(noiseSampleLowest - óptico Threshold)) {// Registrar o ponto de orvalho; dewPoint =mirrorTemp; ópticoDewpoint =óptico; stopTec (); }} void startNoiseSampling () {noiseSampling =true; noiseSampleHighest =0; noiseSampleLowest =10000; timerSampleNoise.start ();} void 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 () {// Detecção de falha do Watchdog wdt_reset (); // Atualize todos os temporizadores. TimerManager ::instance (). Update ();} 

Esquemas


Processo de manufatura

  1. Espelho
  2. Arduino Spybot
  3. FlickMote
  4. TV B-Gone caseiro
  5. Espelho infinito Caleidoscópio
  6. Relógio mestre
  7. Encontre-me
  8. Arduino Power
  9. Tech-TicTacToe
  10. Arduino Quadruped