You think, its low-endness will preclude it from sensing anything at all
It should report the distance from the sensor to the surface of the liquid!
You could probably put together something that would give low resolution data. For example, just moving a soup spoon or flat paddle through a liquid requires force -- the higher the viscosity, the higher the force.
Calibrate the force using various liquids of known viscosity, like water, cooking oil, etc. which you can look up (here for example).
Fill an open container, 50 mm high, 50 mm long and 300 mm wide, with 25 mm liquid. measure continuously the level at one end of the 300 mm. Have a servo or solenoid tilt the container to let the liquid flow to the other end. Your readings will tell something about the viscosity.
Do you need to measure the viscosity in known units, as an absolute value, or is it ok to say that one fluid is less or more viscous than another?
You could have a container of fluid of known volume, and tip it over into another container and detect when the lower container holds say 90% of the upper container's volume. Or if not tip it, just open a trap in the bottom. (It might take hours for the last drops to drip out hence my thought of some arbitrary but constant %).
It is essential a time measurement under controlled conditions.
You could make a lookup timing table with a number of fluids you have at hand.
example table (not real values but to get the idea)
1-2 sec ==> water
3-8 sec ==> olive oil
10-20 sec ==> paint
20-40 sec ==> low fat yoghurt
50-100 sec ==> thick fat yoghurt
you should get the idea.
Note that viscosity is temperature dependant - see Viscosity - Wikipedia -
so you should add heating/cooling and stirring + a temp sensor to bring the liquid to 25C (77F) before the time measurement starts.
An arduino could automate the temperature control and start the flow + time measurement and come up with a result when flow stops.
yurivict:
I was thinking that maybe it can sense reflection from liquid differently based on viscosity.
How might that work? Sounds very complex to me involving dynamic spectral analysis of changing
reflection waveforms (if its possible).
You need to measure mechanical resistance to motion, I would think just measuring current
into a DC motor that's powering a stirrer would give a good indication of viscous resistance to
flow.
Johan_Ha:
Fill an open container, 50 mm high, 50 mm long and 300 mm wide, with 25 mm liquid. measure continuously the level at one end of the 300 mm. Have a servo or solenoid tilt the container to let the liquid flow to the other end. Your readings will tell something about the viscosity.
Tilt? Why not have a hole at the bottom that lets the fluid flow out through a known restriction? Then you can put an ultrasonic distance sensor at the top and measure how quickly the level goes down.
Sure. Whatever feels convenient. My idea was to keep the fluid in one container, which might be less messy than having it flow from one container to another. But your idea might give more accuracy.
Most liquids in cooking will not have a single viscosity as they will be non-linear (thixotropic).
So you need to chose the timescale regime of the measurement, and stick to it - a standard
speed of stiring and measure the torque seems as reasonable as any, and you need to stir
anyway!