Our full technical support staff does not monitor this forum. If you need assistance from a member of our staff, please submit your question from the Ask a Question page.


Log in or register to post/reply in the forum.

Unusually high rainfall readings on two instruments


jan May 3, 2022 03:28 PM

We have set up a new weather station with two redundant rainfall measurements which are both reading unusually high values (in the range of hundreds to thousands of mm per day) and we can't seem to figure out how if this is a software or hardware issue. Any pointers on how to find out where the error lies would be highly appreciated.

The measurement setup is as follows:

- We log data on a CR1000X (logger programme is provided below) where we connected a ClimaVue50 (on C5) weather station and an additional heated 52202-L rain gauge (on C7). Both are scanned every minute and data is saved in 1-minute intervals. Both the weather station and rain gauge are mounted on poles that do allow for some vibration (as we see from the tilt sensor output) but not so much as that the tipping bucket would tip by itself.

- Additionally, there are four more tipping buckets (C1 to C4) and pressure sensors (1H to 4H) connected. These are scanned every second and data is saved in 10-second intervals.

- Data is transmitted via FTP in a SlowSequence call every hour.

What we observe:

- Both the ClimaVue and the rain gauge measurements are considerably higher than realistic rainfall data would suggest. E.g. for the entire month of February 2022, public weather service data recorded a total of 31.1 mm of rain at a station about 8 km from our site. Our measurements totalled 5622 mm and 6984 mm for the ClimaVue and the rain gauge, respectively.

- Our measurements are not noisy, i.e. we only record rain during rainfall events (and not during windy conditions without actual rainfall). The general pattern of the rainfall data is also in good agreement with the official weather service data; just scaled up by approx. two orders of magnitude without showing a clear constant scaling factor.

- It appears strange that both rain measurements show the same erroneous behaviour. They do use different measurement principles and the data from the ClimaVue comes out as an SDI-12 string that gets parsed by the logger and we are not applying any corrections to the SDI-12 string.

What we tried:

- We tried to tighten the pole to reduce potential vibrations but that didn't seem to have any effect. Also, the ClimaVue and the rain gauge use two different measurement principles. While I would expect that the tipping bucket rain gauge could be affected by strong vibrations, I would expect the ClimaVue not to be affected by vibrations.

- We initially scanned the weather data also at 1-second intervals by mistake and then changed it to 1-minute intervals after we noticed. The ClimaVue should, to our understanding, be ok with scan intervals >10 seconds.

What we wonder:

- It looks like a software or wiring issue that affects both rainfall measurements. But since the ClimaVue is interfaced by SDI-12 and the rain gauge via a pulse counter C-port, it seems odd that they show similar errors.

- Are we mixing up something between our two different scan and data table saving intervals? Are we scanning data at too high frequencies (1 second and 10 seconds)?

- Did we wrongly configure our C-ports? (The other 4 tipping bucket measurements on C1 to C4 are working fine, however).

As mentioned above, here I copy the current logger program that is running on the CR1000X (with some sensitive FTP config data removed).

 

' This program was written to collect data on a CR1000X data logger with the
' following sensors attached:
'  - 1x Campbell ClimaVue50 weather station (measuring air temperature, 
'    barometric pressure, lightning average distance, lightning strike count, 
'    precipitation, relative humidity, solar radiation, tilt, wind direction, 
'    and wind speed)
'    -> SDI-12 address: 9
'        C5  SDI-12 
'        GND Shield/Signal ground 
'        12V Power
'        G   Power ground 
'  - 4x tipping bucket counter as part of the combined outflow measurement
'    system (consisting of tipping bucket + Thomson weir)
'        C1, C2, C3, C4
'        GND Shield/Signal ground
'  - 4x Keller relative pressure sensor as part of the combined outflow 
'    measurement system (consisting of tipping bucket + Thomson weir)
'        1H, 2H, 3H, 4H 
'          -> L channels are pulled to G
'        12V Power
'  - 1x R.M. Young 52202 heated rain gauge 
'        C7  Pulse input
'        5V  Signal power
'        GND Shield/Signal ground
'  - additional measurements of logger battery voltage and panel temperature

' Data is written into the following data files:
'  - outflow: contains data from the outflow measurements only
'                 on the determined logging interval 
'  - weather:  contains selected data from the weather station only
'                 on the determined logging interval 

' ====================================================
' Definitions
' ====================================================

' Constants
' ----------------------------------------------------

' Scan intervals (How often should a measurements be taken?)
Const SCAN_INTERVAL_OUTFLOW_SEC = 1   'data logging interval for outflow data (in seconds)
Const SCAN_INTERVAL_WEATHER_MIN = 1   'data logging interval for weather data (in minutes)

' Log intervals (How often should a measurements be recorded in a datafile?)
Const LOG_INTERVAL_OUTFLOW_SEC = 10   'data logging interval for outflow data (in seconds)
Const LOG_INTERVAL_WEATHER_MIN = 1    'data logging interval for weather data (in minutes)

' Upload interval (How often should data be uploaded to the FTP server?)
Const FTP_INTERVAL_UPLOAD_MIN = 60    'FTP data sending interval (in minutes)

' FTP server authentification parameters
Const FTP_SERVER = "..."
Const FTP_USER = "..."
Const FTP_PW = "..."

' Variables
' ----------------------------------------------------
Public volt_batt          'Battery voltage
Public temp_panel         'Internal panel temperature
Public rain_rg            'Heated rain gauge precipitation
Public grv_tip            'Tipping bucket discharge gravel roof
Public ext_tip            'Tipping bucket discharge extensive roof
Public wet_tip            'Tipping bucket discharge wetland roof
Public int_tip            'Tipping bucket discharge intensive roof
Public grv_pres           'Thomson weir discharge gravel roof
Public ext_pres           'Thomson weir discharge extensive roof
Public wet_pres           'Thomson weir discharge wetland roof
Public int_pres           'Thomson weir discharge intensive roof
Public climavue_data(14)  'ClimaVue SDI-12 output
Dim count_outflow         'counter for number of measurements per outflow log interval
Public n_outflow          'total number of measurements per outflow log interval
Dim count_weather         'counter for number of measurements per outflow log interval
Public n_weather          'total number of measurements per outflow log interval
Public FTP_outflow_status 'Status of FTP connetion
Public FTP_weather_status 'Status of FTP connetion

' Aliases for ClimaVue output
' ----------------------------------------------------
Alias climavue_data(1) = flux_density
Alias climavue_data(2) = rain_cv
Alias climavue_data(3) = strikes_n
Alias climavue_data(4) = strikes_dist
Alias climavue_data(5) = wind_speed
Alias climavue_data(6) = wind_dir
Alias climavue_data(7) = gust_speed
Alias climavue_data(8) = temp_air
Alias climavue_data(9) = press_vapor
Alias climavue_data(10) = press_atm
Alias climavue_data(11) = rh
Alias climavue_data(12) = temp_rh
Alias climavue_data(13) = tilt_x
Alias climavue_data(14) = tilt_y

' Units
' ----------------------------------------------------
Units volt_batt = V
Units temp_panel = °C
Units rain_rg = n
Units grv_tip = n
Units ext_tip = n
Units wet_tip = n
Units int_tip = n
Units grv_pres = mV
Units ext_pres = mV
Units wet_pres = mV
Units int_pres = mV
Units flux_density = W_m2
Units rain_cv = mm
Units strikes_n = n
Units strikes_dist = km
Units wind_speed = m_s
Units wind_dir = °
Units gust_speed = m_s
Units temp_air = °C
Units press_vapor = kPa
Units press_atm = kPa
Units rh = %
Units temp_rh = °C
Units tilt_x = °
Units tilt_y = °
Units n_outflow = n
Units n_weather = n

' ====================================================
' Data tables
' ====================================================

' Data Table (outflow)
' ----------------------------------------------------

DataTable(outflow,True,-1)
	DataInterval(0,LOG_INTERVAL_OUTFLOW_SEC,Sec,0)
	 
  Sample(1,n_outflow,UINT4)  
  Totalize(1,grv_tip,FP2,False)
  Totalize(1,ext_tip,FP2,False)
  Totalize(1,wet_tip,FP2,False)
  Totalize(1,int_tip,FP2,False)  
  Average(1,grv_pres,FP2,False)
  Average(1,ext_pres,FP2,False)
  Average(1,wet_pres,FP2,False)
  Average(1,int_pres,FP2,False)
  Average(1,wet_level,FP2,False)  
	
EndTable

' Data Table (weather)
' ----------------------------------------------------

DataTable(weather,True,-1)
	DataInterval(0,LOG_INTERVAL_WEATHER_MIN,Min,0)
	
  Sample(1,n_weather,UINT4)  
  Sample(1,volt_batt,FP2)
  Sample(1,temp_panel,FP2)  
  Totalize(1,rain_rg,FP2,False)  
  Totalize(1,rain_cv,FP2,FALSE) 
  Average(1,temp_air,FP2,False)
  Average(1,rh,FP2,False)
  Average(1,temp_rh,FP2,False)  
  Average(1,press_atm,FP2,False)
  Average(1,press_vapor,FP2,False) 
  Average(1,flux_density,FP2,False)  
  Average(1,wind_speed,FP2,False)
  Average(1,wind_dir,FP2,False)
  Maximum(1,gust_speed,FP2,False,True)
  Totalize(1,strikes_n,FP2,False)
  Minimum(1,strikes_dist,FP2,False,True)  
  Sample(1,tilt_x,FP2)
  Sample(1,tilt_y,FP2)  
	
EndTable

' ====================================================
' Logger program
' ====================================================

' Main Program
' ----------------------------------------------------
BeginProg    
	Scan(SCAN_INTERVAL_OUTFLOW_SEC,Sec,1,0)
	
  ' Outflow measurements
  '-----------------------------------
  
  	'Count number of measurements per log interval
  	count_outflow = count_outflow + 1
	  n_outflow = count_outflow
	  
    'Read tipping bucket outflow counters
    PulseCount(grv_tip,1,C1,2,0,1,0)
    PulseCount(ext_tip,1,C2,2,0,1,0)
    PulseCount(wet_tip,1,C3,2,0,1,0)
    PulseCount(int_tip,1,C4,2,0,1,0)
    
    'Read pressure sensor voltage
    VoltDiff(grv_pres,1,mV1000,1,False,0,50,1.0,0)
    VoltDiff(ext_pres,1,mV1000,2,False,0,50,1.0,0)
    VoltDiff(wet_pres,1,mV1000,3,False,0,50,1.0,0)
    VoltDiff(int_pres,1,mV1000,4,False,0,50,1.0,0)
        
    If TimeIntoInterval(0,LOG_INTERVAL_OUTFLOW_SEC,Sec) Then
          
      'reset counters  
      count_outflow = 0
      
    EndIf
    
  ' Weather measurements
  '-----------------------------------
  
    If TimeIntoInterval(0,SCAN_INTERVAL_WEATHER_MIN,Min) Then

  	  'Count number of measurements per log interval
  	  count_weather = count_weather + 1
	    n_weather = count_weather
	  
		  'Default datalogger measurements
		  Battery(volt_batt)
		  PanelTemp(temp_panel,50)
		  
      'Heated raingauge
      PulseCount(rain_rg,1,C7,2,0,1,0)
    
      'Get data from ClimaVUE 50 Compact Digital Weather Sensor
      '-> The R7! command needs to be sent with >10s scan interval.
      SDI12Recorder(climavue_data(),C5,9,"R7!",1,0)
    
      'Convert fractional relative humidity into percent relative humidity
      rh = rh*100
    
      If TimeIntoInterval(0,LOG_INTERVAL_WEATHER_MIN,Min) Then
          
        'reset counters  
        count_weather = 0
      
      EndIf
      
    EndIf
		
		'Call data tables
		CallTable outflow
		CallTable weather
		
	NextScan

  SlowSequence
    Do
      Delay(1,10,Sec)	
      FTP_outflow_status = FTPClient(FTP_SERVER,FTP_USER,FTP_PW,"outflow","...",9,0,FTP_INTERVAL_UPLOAD_MIN,Min,13)
      FTP_weather_status = FTPClient(FTP_SERVER,FTP_USER,FTP_PW,"weather","...",9,0,FTP_INTERVAL_UPLOAD_MIN,Min,13)
    Loop
  EndSequence
  
EndProg

 


smile May 8, 2022 10:56 AM

there is a compilation error, the declaration of the variable wet_level is missing, but for the problem encountered it is not important.

a particular note is in the fact that the reading of the rain gauge has the multiplier of 1 therefore it records pulses and not rain level (in mm or inches).
Another note is the different scan between the readings, under an "if iftime", and the "calltables", which are always performed instead. For example, if the reading is performed every minute and the call for the historical table every 5 seconds, the total will be 12 times greater, while the averages will not have this problem.
Have you tried with a known amount of water?

Smile


jan May 10, 2022 04:14 PM

This post is under review.

Log in or register to post/reply in the forum.