Jump to content
UltravioletPhotography

UV sensor?


Recommended Posts

Strange, here it works just fine.

 

It is a board for arduino (DFROBOT DFRduino UNO)using as UV Sensor the chip GUVA-S12SD, which works from 200 to 370nm and which gives an output of 0 to 1V according to some kind of UV Index from 0 to 10

Link to comment
  • 3 weeks later...

Took some time, but now I got both versions, this is how my self programmed "UV-meter" looks:

 

post-21-0-06886200-1440105908.jpg

 

 

These are the two sensors, they work slightly different:

 

post-21-0-16767700-1440105974.jpg

 

 

And this is my instrument at work:

post-21-0-28442100-1440106028.jpg

 

The less are programmed as half and full bright, so with 5 leds I can get a reading scale from about 1 to 10

 

First finding: Some UV flash lights start with a high output and as the leds get warm the UV output drops rather quickly

 

The V1 sensor with ML8511 has some sensitivity into the visual spectrum

The V2 cuts visual light better off

The output ranges are also slightly different.

 

With the Arduino I get a zero reading at about 200 and the signal can get up to about 640 (from a scale of 1024 of the digitised analog input of the arduino) with the V1 sensor

and the V2 starts at 1 and goes up to ?700 plus something

 

Unfortunately, up to now, I had no chance to measure the sun (lack of sun light)

Link to comment

If somebody wants to know how the programming looks like (the read values can be monitored via the USB port on a terminal):

 

 

/*

UV_Meter_Aduino and ML8511 V1 UV Sensor

 

Indicates the range (205 to 672 read out on A0)

multplied by 0.5

in 10 steps of 23 to 24

with leds on pins 5,6,9,10,11

as these pins allow pulse code output

so every led shows two/three steps

as off, low light, high bright

 

Steps are also printed on usb output (COM0:9600 baud)

as UV 0 ,,, UV 10 plus "Sensor level" and original anlog Value

 

This example code is in the public domain.

*/

 

int led1 = 5; // the pin that the LED is attached to

int led2 = 6;

int led3 = 9;

int led4 = 10;

int led5 = 11;

 

 

int l0=0;

int l1=3;

int l2=30;

 

int s1=0;

int s2=0;

int s3=0;

int s4=0;

int s5=0;

 

 

int sensor=A0;

 

// the setup routine runs once when you press reset:

void setup() {

// declare pin 9 to be an output:

pinMode(led1, OUTPUT);

pinMode(led2, OUTPUT);

pinMode(led3, OUTPUT);

pinMode(led4, OUTPUT);

pinMode(led5, OUTPUT);

Serial.begin (9600);

}

 

// the loop routine runs over and over again forever:

void loop() {

// set the brightness leds:

int sensorValue;

int analogValue = analogRead(0);

 

analogWrite(led1, s1);

analogWrite(led2, s2);

analogWrite(led3, s3);

analogWrite(led4, s4);

analogWrite(led5, s5);

 

if (analogValue < 20) {

sensorValue=0;

}

else {

sensorValue= 0.5*(analogValue-194);

}

Serial.println("");

Serial.print(sensorValue);

Serial.print(" ");

Serial.print(analogValue);

Serial.print(" ");

 

if (sensorValue<=5) {

s1=0;

s2=0;

s3=0;

s4=0;

s5=0;

Serial.print("UV 0 ");

}

if (sensorValue >5 && sensorValue<=28) {

s1=l1;

s2=0;

s3=0;

s4=0;

s5=0;

Serial.print("UV 1 ");

}

if (sensorValue >28 && sensorValue<=52) {

s1=l2;

s2=0;

s3=0;

s4=0;

s5=0;

Serial.print("UV 2 ");

}

if (sensorValue >52 && sensorValue<=75) {

s1=l2;

s2=l1;

s3=0;

s4=0;

s5=0;

Serial.print("UV 3 ");

}

if (sensorValue >75 && sensorValue<=99) {

s1=l2;

s2=l2;

s3=0;

s4=0;

s5=0;

Serial.print("UV 4 ");

}

if (sensorValue >99 && sensorValue<=122) {

s1=l2;

s2=l2;

s3=l1;

s4=0;

s5=0;

Serial.print("UV 5 ");

}

if (sensorValue >122 && sensorValue<=146) {

s1=l2;

s2=l2;

s3=l2;

s4=0;

s5=0;

Serial.print("UV 6 ");

}

if (sensorValue >146 && sensorValue<=169) {

s1=l2;

s2=l2;

s3=l2;

s4=l1;

s5=0;

Serial.print("UV 7 ");

}

if (sensorValue >169 && sensorValue<=193) {

s1=l2;

s2=l2;

s3=l2;

s4=l2;

s5=0;

Serial.print("UV 8 ");

}

if (sensorValue >193 && sensorValue<=216) {

s1=l2;

s2=l2;

s3=l2;

s4=l2;

s5=l1;

Serial.print("UV 9 ");

}

if (sensorValue >216) {

s1=l2;

s2=l2;

s3=l2;

s4=l2;

s5=l2;

Serial.print("UV10 ");

}

 

 

 

// wait for 100 milliseconds

delay(100);

}

Link to comment

Please sign in to comment

You will be able to leave a comment after signing in



Sign In Now
×
×
  • Create New...