Lily and I've been kicking around different ways to digitally sense flow for the last week, including making our own little propeller/turbine sensor. Today as we cranked on finishing a proposal we're working on with NCED and Winona State, I glanced at a little propeller I keep on my desk and thought "the Em2's pump has a propeller in it."
Yes, people, all that junk is to inspire things like this. Really.
And of course the rotational rate of that little propeller (technically an impeller), when driven by a pulse-width-modulated (PWM) output, is closely related to the pump's volumetric output of water.
So after the proposal was done (hardest part was the budget, is it always like that?) we ran into the shop and simply hooked a PWM unit and voltmeter up to a pump. Measuring flow volumetrically (stopwatch and graduated cylinder) we produced this beautiful curve. It's even straight!
PWM units output a square wave, which in this case has a 12 volt max. The tops of the "plateaus" are varied in width; the volt meter reads this as an average voltage (the frequency is quite high).
A little Arduino board can output the PWM with both transistors tied behind its back, and also monitor the voltage, and provide a visual readout.
And we have completely eliminated our flow sensor! Another part gone, actually several, because those need a fine filter. The pump already has one, and isn't much affected by small particles anyway.
Of course the pump's output is going to be sensitive to how much media is on its intake filter, and any changes in the tubing system, but if we keep those things steady, the relationship should be reliable. And the Arduino is smart--if the calibration changes, variables in the unit can be adjusted.
Looks very promising. And very open-source adaptable because no sensor is required, and the electronics, both hardware and theory, are pretty simple.