Most digital, consumer rain gauges use the tipping bucket design where the tipping buckets fill with a known amount of water (typically the amount that corresponds to 0.01" inch or either 1mm, depending on region), then flip over to dump the water while triggering a reed switch. It's a simple and low cost design, but accuracy is +/- several percent, at best as it's sensitive to rain rate, etc.. For that reason, they're often not accepted for official measurements (ie. the Cocorahs program with the United States National Weather Service requires the use of a manual rain gauge, but they do allow you to weigh the collected water contents on a kitchen scale for precise accuracy.)
This got me thinking of affordable ways to more-accurately automate the process by scrapping the tipping buckets for a weight-based approach using load cells and a Raspberry Pi....But it's not without drawbacks of it's own, which I will point out later...
My initial thinking was using an upside down bucket with a funnel as the rain entrance. Water flowing out of that funnel then passes through a normally-open solenoid, drains into a PVC pipe, which has a normally-closed solenoid on it's bottom so that water is stored inside the PVC pipe. The PVC pipe is mounted against a piece of flat board with load cells connected. At a given time interval (say once per day) and/or at a certain rain amount (before the pipe fills), the system automates the emptying process by applying voltage to the 2 solenoids. This causes the bottom solenoid to open, draining the stored water out of the pipe, while the voltage closes the entrance funnel solenoid (in case it's still raining, that rain will be temporarily stored in the top funnel)...After a few seconds/minute (long enough to empty), the power cuts off to the solenoids, closing the bottom solenoid and opening the top solenoid.
Sketch:

Sketch while collecting and weighing rain:

Sketch During Emptying:

As alluded to earlier, there are some issues with the design...Most significant being "load cell creep" where the weight values drift over time when the cells are under constant load. There could also be drift due to temperature, humidity and other environmental changes.
A potential work around could be to automate the tare function frequently to zero the scale before any drifting occurs and use a script to log the values before each tare which it can add for calculating daily rain. It would also have to tare after each emptying phase completes.
The size I would need to make the gauge depends on the significance of this drifting. Example, I would prefer it to be accurate to the nearest 0.01" inch...If I use an 8 inch (~25cm) diameter collection funnel, that would be approximately 4 grams of water weight for each 0.01".....Larger diameter collection area would mean a greater weight in grams per 0.01" (thus the more weight error I could stand while maintaining the needed accuracy)...On the flip side, the larger the gauge, the harder it is to work with and the heavier your load (less precision from the load cell)...Not having worked with load cells under constant and changing loads, as well as subject to quick temperature changes, I'm not really sure what kind of drifting errors I should expect.
I would also need to figure some sort of switch that could activate by script to send voltage for emptying at the appropriate times.
Interested in hearing other's thoughts on how to make this work and any possible improvements.
This got me thinking of affordable ways to more-accurately automate the process by scrapping the tipping buckets for a weight-based approach using load cells and a Raspberry Pi....But it's not without drawbacks of it's own, which I will point out later...
My initial thinking was using an upside down bucket with a funnel as the rain entrance. Water flowing out of that funnel then passes through a normally-open solenoid, drains into a PVC pipe, which has a normally-closed solenoid on it's bottom so that water is stored inside the PVC pipe. The PVC pipe is mounted against a piece of flat board with load cells connected. At a given time interval (say once per day) and/or at a certain rain amount (before the pipe fills), the system automates the emptying process by applying voltage to the 2 solenoids. This causes the bottom solenoid to open, draining the stored water out of the pipe, while the voltage closes the entrance funnel solenoid (in case it's still raining, that rain will be temporarily stored in the top funnel)...After a few seconds/minute (long enough to empty), the power cuts off to the solenoids, closing the bottom solenoid and opening the top solenoid.
Sketch:

Sketch while collecting and weighing rain:

Sketch During Emptying:

As alluded to earlier, there are some issues with the design...Most significant being "load cell creep" where the weight values drift over time when the cells are under constant load. There could also be drift due to temperature, humidity and other environmental changes.
A potential work around could be to automate the tare function frequently to zero the scale before any drifting occurs and use a script to log the values before each tare which it can add for calculating daily rain. It would also have to tare after each emptying phase completes.
The size I would need to make the gauge depends on the significance of this drifting. Example, I would prefer it to be accurate to the nearest 0.01" inch...If I use an 8 inch (~25cm) diameter collection funnel, that would be approximately 4 grams of water weight for each 0.01".....Larger diameter collection area would mean a greater weight in grams per 0.01" (thus the more weight error I could stand while maintaining the needed accuracy)...On the flip side, the larger the gauge, the harder it is to work with and the heavier your load (less precision from the load cell)...Not having worked with load cells under constant and changing loads, as well as subject to quick temperature changes, I'm not really sure what kind of drifting errors I should expect.
I would also need to figure some sort of switch that could activate by script to send voltage for emptying at the appropriate times.
Interested in hearing other's thoughts on how to make this work and any possible improvements.
Last edited by a moderator:

