UltraV:Um medidor portátil de índice UV
Componentes e suprimentos
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 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 9:Galeria de imagens
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 ...
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
- Divisor de tensão
- Bateria de batata
- O que é um medidor?
- Multímetros
- Construção da bateria
- O que é uma máquina portátil de solda a ponto?
- Máquina CMM Portátil – Fixa ou Portátil?
- Entendendo a bateria usada em automóveis
- Diferentes maneiras de testar um alternador
- 7 sinais de alternador ruim ou defeituoso