To measure evaporation from a pond I built an Archimedes level sensor like this one using a load cell
http://instrupedia.blogspot.com.au/2012/03/buoyancy-indirect-level-measurement.html
This appears to be the only practical method of measuring +-1mm changes in water level over the course of a day in a reliable fashion in an outdoor environment complete with wind blown leaves, waves and rain. The beauty of this is that there are no moving parts, other than the flex of the load cell, the tiny stretch of the cable and thermal expansion of the float/water etc, which hopefully can be compensated for by recording the temperature. As the system is essentially rigid it means the inertia is low and therefore the frequency response is only limited by the electronics and the viscosity of the water.
I'm filtering out the 50Hz mains pickup from the load cell, amplifier and wiring by integrating multiple reading over a mains cycle. This works great. (http://www.yokogawa.com/ns/support/tips/ns-tips_13.htm)
Now I can just about see the wind induced waves on a oscilloscope trace, but it's tricky as scopes are poor for visualising signals in the low Hz range (0.5 to 2Hz I'm guessing here) and they are sometimes down in the noise level.
Is using an FFT a sensible way of extracting the amplitude whilst rejecting noise under 50Hz or are there better ways given that hopefully processing power isn't a limiting factor given the low frequency nature of the signals, but memory is limited (Arduino Nano)? My knowledge about this stuff is close to zero so any pointers would be useful.
Thanks
Mike
Hi Mike
If I understand, you want to detect as little as a 1mm drop in level due to evaporation? And your sensor is being read by an Arduino which is doing ADC to capture the data?
Couple of thoughts. If typically the 1mm of evaporation takes much longer than the 2 second period of a 0.5 Hz wave, maybe the Arduino could take many readings over a longer period and average them, taking the median value?
Or you could use the Arduino to capture raw data, transfer the data onto a PC (or a cloud-based service like plot.ly) and then use "best fit" type software tools to plot the water level from the noisy data.
Alternatively, maybe there is a way to add mechanical damping to your sensor.
Regards
Ray
Do you really want to measure the amplitude of water waves? That could be very large, in a storm.
If you just want accurate measurements of the water level, I agree with Hackscribble, averaging over long periods will work -- the zero frequency term of the FFT is just the DC average over the entire sample.
A common approach to reducing the effect of wave action on water level sensors is to put the sensor in a "stilling well", which is just a wide, vertically suspended and partially submerged tube open at both ends. The tube has to be rigidly suspended so that waves don't knock it around.
To clarify, I'm interested in the relationship between the amplitude of the waves and the evaporation rate. The measurement range of the sensor is 250mm which is plenty for the kind of waves l'm expecting. I can get an accurate level reading by averaging measurents over several minutes. The float is inside a 50mm plastic pipe for mechanical protection from the wind and people.
Mike
I think for waves magnitude measurements you should use separate sensor. With current "heavy weight" (btw, how many kg?) one, most of the freq. range already suppressed, as load by it's nature very good LPF filter, and there is no way to recover information of the signals above cut-of freq.
This sounds like an interesting experiment. But I'm curious: the flow rate of air over water surface is a major factor affecting the rate of evaporation and as air flow increases, so does wave action. If you suspect that wave amplitude affects the rate of evaporation, how will you separate the two contributions?
How certain are you that a displacement sensor will record the wave shape, such that you can measure amplitude? Displacement is not a dynamic variable. You may get a component of the instantaneous wave shape, depending on where you sample the pond water, but you'll also lose some due to flow resistance and inertia.
If I were doing this exercise, I think I'd use the displacement sensor to track long term changes in mean level, and include a low pass fluid filter to intentionally remove the wave signal. Then I'd use a different method, perhaps an opto-electronic method, to measure the wave amplitude.
A fluid filter can be constructed from a small bore resistive tube connecting your pond feed to a vessel, (acting as a capacitor), in which your float is submerged. The filter time constant is proportional to small-bore tube length and horizontal sectional area of the float chamber.
Using LEDs and photodiodes, it is very easy to measure instantaneous wave height to a resolution of 5mm, and with some ingenuity to 1-2mm.
But nothing I've said helps you with the Arduino implementation. :~
jremington:
This sounds like an interesting experiment. But I'm curious: the flow rate of air over water surface is a major factor affecting the rate of evaporation and as air flow increases, so does wave action. If you suspect that wave amplitude affects the rate of evaporation, how will you separate the two contributions?
I'm using the wave amplitude as an indirect measurement of the wind speed. Using one sensor to do two measurements seemed like a good idea. At this stage I don't know how linear the wave height/wind speed relationship is going to be at the mm scale. Published data is mostly for large bodies of water where wave height is measured in meters, not mm.
Magician:
I think for waves magnitude measurements you should use separate sensor. With current "heavy weight" (btw, how many kg?) one, most of the freq. range already suppressed, as load by it's nature very good LPF filter, and there is no way to recover information of the signals above cut-of freq.
The float doesn't actually move (or isn't supposed to) , only its measured weight changes so any LPF effects due to inertia are swamped by other effects such as the viscous effect of the water sliding against the surface of the float as it rises and falls. In water it's frequency response is probably in the order of 10Hz.
Billysugger:
How certain are you that a displacement sensor will record the wave shape, such that you can measure amplitude? Displacement is not a dynamic variable. You may get a component of the instantaneous wave shape, depending on where you sample the pond water, but you'll also lose some due to flow resistance and inertia.
I can see waves down to about 2mm in amplitude on an oscilloscope. Anything bigger than that is clearly visible. I have no idea how linear the measurement are going to be. Currently the float is inside a plastic tube for mechanical protection so there are already low pass filtering effects due to viscous drag against the wall of the tube and float. I may need to replace the tube with a coarse mesh screen and perhaps add a torpedo shaped extension to the end of the float so that the water doesn't have to turn 90 deg as it rises around the float.
At this stage I don't know how linear the wave height/wind speed relationship is going to be at the mm scale.
Have you tried looking it up? The relationship seems to have been studied for pretty extensively, especially for wave amplitudes < 0.1 m (capillary waves) which can easily be generated in the lab. Google pulls up a bunch of examples -- a couple of random selections:
http://www.ifm.zmaw.de/research/remote-sensing-assimilation/research-in-the-lab/bound-and-free-gravity-capillary-waves/
If you want to repeat the work, obviously you will have to directly measure the wind velocity anyway. Much easier to measure than water wave amplitude.
A chemistry professor I know says he often reminds his students that "two weeks in the lab can save you an hour in the library".