Brigadoon - An Occasional Corner on the Internet
Arduino Based Weather Station
Designed by Mark Little
This project is to develop an Arduino based home weather station by the sequential development of sensors. The initial phase will deal with a tipping bucket rain gauge followed by ground thermometers,  air temperature, relative humidity and pressure.
The figure to the left comes from a ResearchGate published  thesis "Analysis of local weather radar data in support of sewer system modelling" by Toon Goormans - click the figure to see the article. The figure demonstrates the principle of the tipping bucket rain gauge.
As the rain falls, it is gathered in the funnel (1) and falls into the bucket mechanism that consists of the two triangular buckets (2) sitting on a pivot.
Because of the sloped floor of the bucket catching the water, eventually the weight of the collected water will over-balance the bucket and it will tip over so that it hits the bump stop (3) allowing the water will drain out.
The other bucket will now catch the rain falling though the funnel and the process will repeat as the water continues to fall.

To determine the rainfall, it is necessary to count the number of times that the bucket tips. This is commonly done by mounting a small magnet on the peak of the tipping bucket so that as it passes the vertical position during tipping, it activates a magnetic reed switch that is connected to some form of counter.

Because the rainfall is gathered from the funnel's relatively large area, it is possible to detect small amounts of rain, however, it does mean that measurements and calculations need to be done to estimate the rainfall amount from the number of bucket tips counted. It should also be noted that the rainfall measurement has a minimum amount of rain that it can detect. That amount is the amount of rainfall that is need to fill the bucket until it tips over.
References
"Analysis of local weather radar data in support of sewer system modelling"  by Toon Goormans

Next Page
Tipping Bucket Rain Gauge
Calculating Tipping Counts and Rates
NOTE: The actual calibration parameters for the tipping bucket rain gauge will be determined later when the sensor  to be used is selected.

According to the World Atlas, the highest average rainfall in the world is 11,871mm per annum. Assuming that the tipping bucket rain gauge tips when a 1 point (0.254 mm) of rain has fallen, the heaviest average annual rainfall would correspond to 46,736 bucket tips which is within capacity of an unsigned 16-bit integer (65535), but not an unsigned 8-bit counter (255).

Assuming the peak rainfall for that location would be 100% higher than the average, that would result in 93,472 bucket tips per year. This value is easily held in an unsigned 32-bit long integer (4,294,967,295). Assuming the rainfall rates above, an unsigned long integer is capable of holding the accumulated rainfall for thousands of years, well past the expected lifetime of the weather station.

Using the officially recognised highest rainfall record for the U.S. rainfall for a 5-minute period was 2.3". This is 27.6"/hr or 701 mm/hr, giving a tipping rate of 1.3 tips per second. It is very doubtful that the average home tipping rain gauge sensor could sustain such a rate. For the purposes of this project, the maximum tipping rate will be taken as once every two (2) seconds (457 mm/hr). At that rate, the 8-bit counter will overflow every 510 seconds (8.5 minutes) and a 16-bit counter would overflow every 131,070 seconds (36.4 hours).
Measuring Rainfall Over Different Periods
If the rainfall is held in a long integer, it is simple to measure the rainfall over different periods of time. All that is needed is another long integer that records the rainfall counter at the start of the period. Subtracting that value from the total rainfall will give you the rainfall over that periods.