Best method of esimating viscosity?

I have one cooking-related project in mind, and need to estimate liquid viscosity.

Requirements:

  • Arduino-connectable
  • touchless is preferred (can SEN136B5B be used?)
  • low precision is ok. Even just 2-bit value (4 degrees) will suffice.

What could be a solution?

What is a "SEN136B5B"?

Paul

Paul_KD7HB:
What is a "SEN136B5B"?

Paul

SEN136B5B: Ultra Sonic range measurement module: Ultra Sonic range measurement module - Seeed Studio

I was thinking that maybe it can sense reflection from liquid differently based on viscosity.

This paper says that this is the case: http://www.sciencedirect.com.sci-hub.io/science/article/pii/S0041624X96000820

I would use a viscometer.

The paper you linked used custom equipment, not a cheap module from seeedstudio.com

jremington:
I would use a viscometer.

The paper you linked used custom equipment, not a cheap module from seeedstudio.com

You think, its low-endness will preclude it from sensing anything at all ...

I don't know what low-cost viscometers are available.

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).

That was my thought, using a small gearmotor to spin a paddle submerged in the liquid, like a paint stirrer and measure the current required.

It might also be possible to combine a vibrating motor (Vibrating Mini Motor Disc : ID 1201 : $1.95 : Adafruit Industries, Unique & fun DIY electronics and kits) with vibration sensor (Piezo Vibration Sensor - Small Vertical - SEN-09199 - SparkFun Electronics) in one case. When immersed in liquid, liquid will consume more of the vibration when viscosity is higher, so the sensor will sense less vibration.

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 %).

youtube How to test viscosity using a DIN 4 cup

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.

Stick a motor to a paddle and measure stall current or some such.

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.

An array of infrared detectors looking across a flow meter might work.

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.

Maybe these links will help:

Glass viscometer would be the best option. They aren't so pricey. Contact them https://www.psl-rheotek.com/ for more information.

Caveman way/ Marsh funnel (MF) time 1 qt of fluid thru a cone with a 3/16" orifice, water =28 sec.

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!