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

UltraV:Um medidor portátil de índice UV

Componentes e suprimentos

Arduino Nano R3
× 1
Texas Instruments ML-8511
× 1
Tela OLED de 128x64
× 1
MT3608 conversor DC-DC Stup-up
× 1
Bateria CR2 (3v)
× 1
Suporte de bateria CR2
× 1

Sobre este projeto


Não conseguindo me expor ao sol por causa de um problema dermatológico, aproveitei o tempo que passaria na praia para construir um medidor de raios ultravioleta. UltraV.

Ele é construído em um Arduino Nano rev3, com um sensor UV, um conversor DC / DC para aumentar a tensão da bateria de 3v e um pequeno display OLED. Meu objetivo principal era mantê-lo portátil, para que eu pudesse saber facilmente o índice UV a qualquer momento e em qualquer lugar.





Etapa 1:peças e componentes

  • Microcontrolador Arduino Nano rev.3
  • Sensor UV ML8511
  • exibição OLED de 128 × 64 (SSD1306)
  • MT3608 DC-DC step-up
  • bateria CR2
  • suporte de bateria CR2
  • Mudar
  • Caixa de proteção





Etapa 2:o sensor


O ML8511 (Lapis Semiconductors) é um sensor de UV, que é adequado para adquirir intensidade de UV em ambientes internos ou externos. O ML8511 é equipado com um amplificador interno, que converte a fotocorrente em voltagem, dependendo da intensidade de UV. Esse recurso exclusivo oferece uma interface fácil para circuitos externos, como ADC. No modo de desligamento, a corrente de espera típica é 0,1 µA, permitindo assim uma vida útil mais longa da bateria.

Recursos:
  • Fotodiodo sensível a UV-A e UV-B
  • Amplificador operacional integrado
  • Saída de tensão analógica
  • Baixa corrente de alimentação (300 µA típico) e baixa corrente de espera (0,1 µA típico)
  • Pacote de montagem em superfície pequeno e fino (4,0 mm x 3,7 mm x 0,73 mm, cerâmica QFN de 12 pinos)

Infelizmente, não tive a chance de encontrar nenhum material transparente aos raios ultravioleta para proteger o sensor. Qualquer tipo de tampa transparente que testei (plástico, vidro, etc.) estava atenuando a medição de UV. A melhor escolha parece ser vidro de sílica fundida com quartzo, mas não encontrei nenhum a um preço razoável, então decidi deixar o sensor fora da caixa, ao ar livre.





Etapa 3:Operações


Para fazer a medição, basta ligar o aparelho e apontar para o sol por alguns segundos, mantendo-o alinhado com a direção dos raios solares. Então observe no visor:o índice à esquerda sempre mostra a medida instantânea (um a cada 200 ms), enquanto a leitura à direita é a leitura máxima feita durante esta sessão:é o que você precisa.

Na parte inferior esquerda do visor é relatada também a nomenclatura equivalente da OMS (BAIXO, MODERADO, ALTO, MUITO ALTO, EXTREMO) para o índice UV medido.





Etapa 4:tensão e leitura da bateria


Escolho uma bateria CR2, pelo seu tamanho e capacidade (800 mAh). Usei UltraV durante o verão e a bateria ainda lê 2,8 V, então estou bastante satisfeito com a escolha. Quando opera, o circuito drena cerca de 100 mA, mas uma medição de leitura não leva mais do que alguns segundos. Como a tensão nominal da bateria é 3v, adicionei um conversor DC-DC para aumentar a tensão até 9 volts e conectei-o ao pino Vin.

Para ter a indicação da tensão da bateria no display, usei uma entrada analógica (A2). As entradas analógicas do Arduino podem ser usadas para medir a tensão CC entre 0 e 5 V, mas essa técnica requer uma calibração. Para realizar a calibração, você precisará de um multímetro. Primeiro, alimente o circuito com sua bateria final (o CR2) e não use a alimentação USB do computador; meça 5 V no Arduino do regulador (encontrado no pino 5 V do Arduino):essa tensão é usada para a tensão de referência do ADC do Arduino por padrão. Agora coloque o valor medido no esboço da seguinte forma (suponha que eu li 5.023):
  voltagem =((longa) soma / (longa) NUM_SAMPLES * 5023) / 1024,0;  

No esboço, estou tomando a medição de tensão como uma média de 10 amostras.





Etapa 5:esquema e conexões





Etapa 6:Software


Para o display, usei o U8g2lib que é muito flexível e poderoso para este tipo de display OLED, permitindo uma ampla escolha de fontes e boas funções de posicionamento.

Com relação à leitura de tensão do ML8511, usei o pino de referência Arduino de 3,3 V (com precisão de 1%) como base para o conversor ADC. Então, fazendo uma conversão analógica para digital no pino de 3,3 V (conectando-o a A1) e, em seguida, comparando essa leitura com a leitura do sensor, podemos extrapolar uma leitura real, não importa o que VIN seja ( contanto que esteja acima de 3,4 V).
  int uvLevel =averageAnalogRead (UVOUT); int refLevel =averageAnalogRead (REF_3V3); float outputVoltage =3.3 / refLevel * uvLevel;  

Baixe o código completo no seguinte link.
UltraV_OLED.ino.zip





Etapa 7:caixa do gabinete


Depois de vários (ruins) testes de corte manual da vitrine retangular em uma caixa de plástico comercial, decidi projetar a minha própria para ela. Assim, com um aplicativo CAD projetei uma caixa e para mantê-la o mais pequena possível, montei a bateria CR2 externamente na parte traseira (com um porta-bateria colado na própria caixa).

Baixe o arquivo STL para a caixa do gabinete, a partir do link a seguir.
UltraV.stl.zip





Etapa 8:Possíveis melhorias futuras

  • Utilizar um espectrômetro de UV para medir os valores reais do Índice de UV em tempo real sob várias condições (os espectrômetros de UV são muito caros);
  • Grave simultaneamente a saída do ML8511 com o microcontrolador Arduino;
  • Escreva um algoritmo para relacionar a saída do ML8511 ao valor UVI real em tempo real sob uma ampla gama de condições atmosféricas.





Etapa 10:créditos

  • Carlos Orts:https://create.arduino.cc/projecthub/McOrts/mobil ...
  • Fórum do Arduino:http://forum.arduino.cc/index.php?topic=3922.0
  • Eletrônica inicial:https://startingelectronics.org/articles/arduino / ...
  • U8g2lib:https://github.com/olikraus/u8g2/wiki/u8g2referen ...
  • Organização Mundial da Saúde, Índice UV:http://www.who.int/uv/intersunprogramme/activitie ...
https://github.com/olikraus/u8g2/wiki/u8g2reference

Código

  • UltraV
UltraV C / C ++
Código
 / * Fabio Marzocca @ 2018 As conversões analógicas para digitais dependem totalmente do VCC. Presumimos que seja 5 V, mas se a placa for alimentada por USB, pode ser tão alto quanto 5,25 V ou tão baixo quanto 4,75 V:http://en.wikipedia.org/wiki/USB#Power Por causa dessa janela desconhecida, isso faz o ADC bastante impreciso na maioria dos casos. Para corrigir isso, usamos a referência de 3,3 V a bordo muito precisa (com precisão de 1%). Portanto, fazendo um ADC no pino de 3,3 V (A1) e comparando isso com a leitura do sensor, podemos extrapolar uma leitura real, não importa qual seja o VIN (contanto que esteja acima de 3,4 V) .v. 2.0.0 - julho de 2018 - mudou de LCD 16x2 para OLEDv. 2.0.1 - setembro de 2018 - função de leitura da bateria alterada * / # include  #include  #include  U8G2_SSD1306_128X64_NONAME_F_SW_I2C u8g2 (U8G2_R0, / * clock =* / SCL, / * =* / SDA, / * reset =* / U8X8_PIN_NONE); // Todas as placas sem reset do display # define FIRST_ROW_Y 16 # define FIRST_ROW_X 16 # define BOX_H 38 // Definições de pinos de hardwareconst int UVOUT =A0; // Saída do sensorconst int REF_3V3 =A1; // Alimentação de 3,3 V na placa Arduinoconst int VBATT =A2; // Battery voltagefloat maxUV =0; // Configuração do readvoid do índice UV máximo () {pinMode (UVOUT, INPUT); pinMode (REF_3V3, INPUT); pinMode (VBATT, INPUT); u8g2.begin ();} void loop () {u8g2.firstPage (); faça {int uvLevel =averageAnalogRead (UVOUT); int refLevel =averageAnalogRead (REF_3V3); // Use o pino de alimentação de 3,3 V como referência para obter um valor de saída muito preciso do sensor float outputVoltage =3,3 / refLevel * uvLevel; float uvIntensity =mapfloat (outputVoltage, 0,99, 2,6, 0,0, 15,0); // Converte a tensão para um nível de intensidade de UV readBattery (); if (maxUV  =0) &&(categ <3)) {strcpy (strCat, "LOW"); } else if ((categ> =3) &&(categ <6)) {strcpy (strCat, "MODERATE"); } else if ((categ> =6) &&(categ <8)) {strcpy (strCat, "HIGH!"); } else if ((categ> =8) &&(categ <10)) {strcpy (strCat, "MUITO ALTO!"); } else if (categ> =11) {strcpy (strCat, "EXTREME!"); } u8g2.setCursor (0,64); u8g2.print (strCat); } // Faz uma média de leituras em um determinado pino // Retorna a médiaint averageAnalogRead (int pinToRead) {byte numberOfReadings =16; unsigned int runningValue =0; for (int x =0; x  

Processo de manufatura

  1. Divisor de tensão
  2. Bateria de batata
  3. O que é um medidor?
  4. Multímetros
  5. Construção da bateria
  6. O que é uma máquina portátil de solda a ponto?
  7. Máquina CMM Portátil – Fixa ou Portátil?
  8. Entendendo a bateria usada em automóveis
  9. Diferentes maneiras de testar um alternador
  10. 7 sinais de alternador ruim ou defeituoso