Linkit One and ML8511 UV sensor

The ML8511 measures the amount of ultra violet rays contained in sunlight, and it is used for the equipment which displays the suntan by a ultra violet rays, the guidance for UV care of skin, etc

The sensor detects 280-390nm light most effectively. This is categorized as part of the UVB (burning rays) spectrum and most of the UVA (tanning rays) spectrum. It outputs a analog voltage that is linearly related to the measured UV intensity (mW/cm2). If your microcontroller can do an analog to digital signal conversion then you can detect the level of UV!

Code

[codesyntax lang=”cpp”]

int UVsensorIn = A0; //Output from the sensor
 
void setup()
{
  pinMode(UVsensorIn, INPUT);
  Serial.begin(9600); //open serial port, set the baud rate to 9600 bps
}
 
void loop()
{
  int uvLevel = averageAnalogRead(UVsensorIn);
 
  float outputVoltage = 3.3 * uvLevel/1024;
  float uvIntensity = mapfloat(outputVoltage, 0.99, 2.9, 0.0, 15.0);
 
  Serial.print(" UV Intensity: ");
  Serial.print(uvIntensity);
  Serial.print(" mW/cm^2"); 
  Serial.println(); 
  delay(200);
}
 
//Takes an average of readings on a given pin
//Returns the average
int averageAnalogRead(int pinToRead)
{
  byte numberOfReadings = 8;
  unsigned int runningValue = 0; 
 
  for(int x = 0 ; x < numberOfReadings ; x++)
    runningValue += analogRead(pinToRead);
  runningValue /= numberOfReadings;
 
  return(runningValue);  
 
}
 

float mapfloat(float x, float in_min, float in_max, float out_min, float out_max)
{
  return (x - in_min) * (out_max - out_min) / (in_max - in_min) + out_min;
}

[/codesyntax]

 

Links

GY-8511 ML8511 UVB UV Rays Sensor Breakout Test Module Detector Analog Output