Manual

do

Maker

.

com

Sensor UV com Arduino - GUVA-S12SD

Sensor UV com Arduino - GUVA-S12SD

Se você ainda não utilizou esse sensor UV com Arduino ou com qualquer outra MCU, alegre-se e anime-se em adquirir um, porque é muito simples utilizá-lo e é mais um ítem barato pra sua coleção de sensores (se é que você também faz dessas maluquices de colecionar sensores). A primeira aplicação que pensei fará com que todas as mamães o desejem; um medidor de índice UV para saber a hora que a criança deve abrigar-se do sol. Mas você pode utilizá-lo também em projetos que envolvam estufas, display de índice UV para piscina, clubes, praças etc. Nada mal, hum? E isso pode ser feito com qualquer um dos nossos "brinquedos digitais", incluindo o ESP8266. Mas antes que isso possa virar um projeto, vamos testá-lo, certo?

Se quiser passar uns minutos lendo sobre radiação UV, recomendo esse link da wikipedia.

Características do sensor GUVA-S12SD

Como já citado, esse sensor é útil para detectar a radiação ultravioleta emitida pela luz do sol e pode ser utilizado em qualquer MCU que tenha conversos AD, inclusive o ESP8266 ou ESP32. Se desejar utilizar em boards como o Raspberry Pi, terá que adicionar um conversor AD, como o citado nesse outro artigo. Talvez eu até escreva outro(s) artigo(s) a respeito utilizando ESP*, Raspberry ou outra coisa, mas dessa vez vamos utilizar esse sensor UV com Arduino porque certamente é a MCU mais popular do momento.

Seu custo é ínfimo e você o encontra na UsinaInfo. Clique aqui para ir direto ao anúncio do dispositivo.

O sensor UV GUVA-S12SD trabalha com tensões entre 2.5V e 5V e faz leituras dentro de um comprimento de onde entre 240 e 370nm. Trabalha em temperaturas entre 20 e 80 graus, de modo que você conseguirá utilizá-lo inclusive no inverno da Paraíba, onde as 3 estações do ano são "quente", "fervendo" e "mormaço". Se quiser, pode tentar utilizá-lo também no Ceará, entre as estações "verão" e "inferno", mas não posso garantir seu funcionamento. Brincadeiras  a parte, funciona em qualquer lugar.

Como utilizar o sensor UV com Arduino

Não tem mistério, é fácil e rápido. Apenas algumas informações serão necessárias, portanto vamos direto ao assunto. Primeiro, a leitura desse dispositivo é trivial, uma vez que ele tem uma saída analógica que deve ser ligada ao conversor AD da MCU que será utilizada para o projeto. Mas isso não basta, precisamos ter em mente quais serão os índices de radiação correspndentes à leitura. Para tal, vamos utilizar a seguinte tabela:

Índice UV012345
Saída em mV50227318408503606
valor analógico10466583103124
Índice UV67891011+
Saída em mV69679588197610791170+
Valor analógico142162180200221240

O valor para o índice 0 pode ser menor que 50 e o ponto médio de cada um é ((B-A)/2)+A. Ou qualquer outra expressão que resulte no valor médio entre A e B, não "acorregeie" minha matemática nos comentários. Daí você pode achar que seu sensor não está funcionando aí em Maceió, mas se você colocar a mão sobre o sensor durante a medição às 7 da manhã deve ver uma variação entre 1079 e 1170 sim. Brincadeira de novo.

Wiring

Agora que você já sabe que resultados obterá utilizando esse sensor UV com Arduino e como gerar os respectivos alarmes visuais ou sonoros, basta fazer o wiring. Mas que nem precisa dessa citação, afinal é óbvio. Coloque VCC em 5V do Arduino, GND ao GND do Arduino e SIGNAL ao A0 do Arduino. Por acaso estou com um problema em um dos pinos do meu expansor de I/O do Arduino Nano, por isso coloquei o sinal conectado ao pino A2, mas tanto faz, desde que esteja utilizando um pino do ADC.

Código

O código está bastante simples, voltaremos a falar desse sensor com um projetinho bacana que tenho em mente, por enquanto vamos apenas fazer a medição para que você já possa ir brincando enquanto não sai o artigo do projeto.

float sensor = 0.0;
float raw    = 0.0;

void setup() {
  Serial.begin(9600);
  // put your setup code here, to run once:

}

void loop() {
    for (int i=0;i <5;i++){
        raw += analogRead(A2);  
    }
    Serial.print("Valor medio da leitura: ");
    Serial.println(raw/5);
    sensor = raw/1024.0*5.0;
    sensor = sensor/5;
    Serial.print("Nivel UV: ");
    Serial.println(sensor);
    raw = 0.0;
    delay(2000);
}

Como você pode ver, não tem absolutamente nada de especial. Apenas atente-se em fazer a divisão pela tensão do seu nível lógico; se for 3V3, substitua "sensor = raw/1024.0*5.0" por "sensor = raw/1024.0*3.3". A medição Feita dentro de casa às 01:25 ficou no nível 0, pela razão explicitada à esquerda e direita dos dois pontos (":") e acho que me odiariam se colocasse um video de 3 segundos para mostrar a leitura sob a luz do sol, portanto, fica apenas o tutorial.

Espero que tenha gostado da introdução e que pegue logo o seu para fazermos o projeto tão logo eu o publique.

Inscreva-se no nosso canal Manual do Maker no YouTube.

Também estamos no Instagram.

Nome do Autor

Djames Suhanko

Autor do blog "Do bit Ao Byte / Manual do Maker".

Viciado em embarcados desde 2006.
LinuxUser 158.760, desde 1997.