UVM-30A - calibration? -
41south - 02-11-2018
Hi all
I am just testing and calibrating my solar/UV board. My question is does the UVM-30A sensor normally require much in the way of calibration? I ask because here it is a sunny day and I have the sensor uncovered outside and with the UV_Transmission = 100 the reading is very high. At UV_Transmission = 150 still without any cover I come close to the expected reading from our National Institute of Water and Air. Does this seem usual or could my sensor be of some dubious quality?
Many thanks
RE: UVM-30A - calibration? -
werk_ag - 02-11-2018
Unless the manufacturer have changed their specs, uncovered and at horizontal position the UVM-30A output should be around 1.1V, corresponding to UV Index of 11+
What readings are you getting on the receiver?
Can you measure voltage at A1 on the TX board?
RE: UVM-30A - calibration? -
41south - 02-11-2018
i'm currently reading 11.9 for about 1.052 v at the sensor output/A1 input
RE: UVM-30A - calibration? -
werk_ag - 02-11-2018
(02-11-2018, 02:27)41south Wrote: i'm currently reading 11.9 for about 1.052 v at the sensor output/A1 input
That is close to what should be the maximum UV reading when using UV_Transmission = 100. If you are having a sunny day without cloud on the sky, that reading may not be to far from reality (its Spring on NZ now I think).
What are the average UV readings at nearby weather stations? Use WU if needed.
Make sure the sensor is pointing to the sky in horizontal position, not facing the sun.
RE: UVM-30A - calibration? -
41south - 02-11-2018
It should only be a max of 7 today and about 6 now. I need to plot some input volts vs UV reading - or is that in the debug routine?
RE: UVM-30A - calibration? -
werk_ag - 02-11-2018
WeatherDuino UV readings for the UVM30-A sensor are implemented according to the data shown below, which you can also find on many places on the internet.
The output voltage you are getting from the sensor seems to correspond to the UV Index presented on the table, however you can fine tune it by changing the UV_Transmission value. Preferably do it after you have chosen the cover material, readings will be a lot lower then.
RE: UVM-30A - calibration? -
41south - 02-11-2018
Thanks Werk, I did find those pictures and that data too.
Yes fine tuning via the UV_T was my thought as well, I just wanted to make sure that was the correct way as the reading looked a little high initially.
Thanks
Colin
RE: UVM-30A - calibration? -
41south - 14-11-2018
Sorry more questions on this - it's not making sense to me
Here are the debug readings with UV_Transmission set at 100 in the debug code (no cover, mounted flat) from approximately 10.00 to 10.15 today. Below is the expected solar graph which says that I should expect between 5 and 6 at this time.
I assume that the debug output avg UV is an average millivolt output of the sensor over the period? If that is the case this lines up nicely with my expected UV of 5 to 6 when you look at the output graph for the UVM30A sensor.
Unfortunately the Indice UV value does not agree - as per my original observation it is very high
Sending ID4...
ACD0 - SolarRad :428 SolarRad :585
ADC1 - avg UV : 699 Indice UV : 8.2
Sending ID4...
ACD0 - SolarRad :428 SolarRad :585
ADC1 - avg UV : 690 Indice UV : 8.1
Sending ID4...
ACD0 - SolarRad :427 SolarRad :584
ADC1 - avg UV : 715 Indice UV : 8.4
Sending ID4...
ACD0 - SolarRad :427 SolarRad :584
ADC1 - avg UV : 725 Indice UV : 8.5
Sending ID4...
ACD0 - SolarRad :427 SolarRad :584
ADC1 - avg UV : 707 Indice UV : 8.3
Sending ID4...
ACD0 - SolarRad :427 SolarRad :584
ADC1 - avg UV : 730 Indice UV : 8.6
Sending ID4...
ACD0 - SolarRad :437 SolarRad :598
ADC1 - avg UV : 673 Indice UV : 7.9
Sending ID4...
ACD0 - SolarRad :446 SolarRad :610
ADC1 - avg UV : 700 Indice UV : 8.2
Sending ID4...
ACD0 - SolarRad :454 SolarRad :621
ADC1 - avg UV : 768 Indice UV : 9.0
Would you be kind enough to explain the mathematics behind your calculation of the UV?
RE: UVM-30A - calibration? -
41south - 14-11-2018
This is the existing calculation - I hope (used in both debug on the TX and in the RX) which appears to read high
// --- ADC1 is data from my UV sensor UVM-30A
const byte UV_Transmission = 100;
IndiceUV = ((avg_IndiceUV * 12.0 * (100.0 / UV_Transmission)) / 1024.0) ;
If I change the *12.0 value to *9.0 then the IndiceUV values fit almost perfectly with the UVM30A data sheet scale
// --- ADC1 is data from my UV sensor UVM-30A
const byte UV_Transmission = 100;
IndiceUV = ((avg_IndiceUV * 9.0 * (100.0 / UV_Transmission)) / 1024.0) ;
As an example 700*9*1/1024 = 6.1 - near perfect
Debug data with the above change - again pretty much bang on
Sending ID4...
ACD0 - SolarRad :545 SolarRad :745
ADC1 - avg UV : 937 Indice UV : 8.2
Sending ID4...
ACD0 - SolarRad :547 SolarRad :748
ADC1 - avg UV : 950 Indice UV : 8.3
Sending ID4...
ACD0 - SolarRad :548 SolarRad :749
ADC1 - avg UV : 954 Indice UV : 8.4
Sending ID4...
ACD0 - SolarRad :549 SolarRad :751
ADC1 - avg UV : 939 Indice UV : 8.3
Sending ID4...
ACD0 - SolarRad :550 SolarRad :752
ADC1 - avg UV : 934 Indice UV : 8.2
Sending ID4...
ACD0 - SolarRad :553 SolarRad :756
ADC1 - avg UV : 935 Indice UV : 8.2
Sending ID4...
ACD0 - SolarRad :555 SolarRad :759
ADC1 - avg UV : 934 Indice UV : 8.2
Sending ID4...
ACD0 - SolarRad :557 SolarRad :762
ADC1 - avg UV : 955 Indice UV : 8.4
RE: UVM-30A - calibration? -
werk_ag - 15-11-2018
Hi,
(14-11-2018, 22:25)41south Wrote: I assume that the debug output avg UV is an average millivolt output of the sensor over the period? If that is the case this lines up nicely with my expected UV of 5 to 6 when you look at the output graph for the UVM30A sensor.
Unfortunately the Indice UV value does not agree - as per my original observation it is very high
Sending ID4...
ACD0 - SolarRad :428 SolarRad :585
ADC1 - avg UV : 699 Indice UV : 8.2
Sending ID4...
ACD0 - SolarRad :428 SolarRad :585
ADC1 - avg UV : 690 Indice UV : 8.1
...
In the debug output (and that is what is transmitted to the RX) the avg UV is the raw reading of ADC0, which is from 0 to 1023, for an input voltage of 0V to 1.1V (the ADC ref voltage is set to 1.1V before each reading).
(14-11-2018, 23:25)41south Wrote: This is the existing calculation - I hope (used in both debug on the TX and in the RX) which appears to read high
// --- ADC1 is data from my UV sensor UVM-30A
const byte UV_Transmission = 100;
IndiceUV = ((avg_IndiceUV * 12.0 * (100.0 / UV_Transmission)) / 1024.0) ;
With this formula we calculate the UV index directly from the raw ADC reading.
Supposing UV_Transmission = 100 and, with the maximum ADC raw reading of 1023 which should correspond to the maximum voltage output of the sensor (1.1V), we will get and UV Index of 11.98 (11+ on the data sheet)
What seems to be happening is that your sensor is outputting a higher voltage than indicated on the specs.
If you change the value of 12 to 9, what happens is that you will never get an UV index greater that 1023 * 9 /1024 = 8.99, as the raw reading of the ADC will never be great than 1023.