On a chemsitry-chemical engineering coffee setup
- Soham Sinha
- Oct 29, 2020
- 7 min read
In the summer of 2018, a lot of labs were moving out of our building at Georgia Tech. One of those labs happened to be an organic chemistry synthesis lab, and they were throwing out their glass equipment. Me being the eternal collector, found the glass pieces too cool to throw away, and ended up collecting 4 boxes of chemical glassware. 2 and a half years later, they traveled with me to Stanford.
3 weeks ago, I was bored on a weekend, wondering what I should do. I opened up my chemistry glassware, and thought to myself that hey, I should make a coffee setup using these (sort of reminiscent of the Breakind Bad Gale Setup). I have always been kind of interested in these cool-looking coffee setups - such as the popular siphon setup in Japan - (vid here: https://www.youtube.com/watch?v=c2LjmkknaVA&ab_channel=CamanoIslandCoffeeRoasters)
I decided to make a hybrid siphon/drip coffee setup. Here is the end result:
It consists of a round-bottom flask, a soxhlet extractor (top-most piece of glassware), and a 3-opening storage glass-ware (bottom-most piece of glassware). I had to create a very heavy counterweight for the stand - with wood, aluminum, and two clamps to prevent the system from tipping over.
For a basic idea of how the system works - water is heated in the round-bottom flask via a double boiler, which goes up the silicon tubing to the soxhlet extractor, and drips through the coffee filter, is then extracted downwards into the storage glass-ware. Turning the blue socket tap at the end, allows pouring out.
The system has no pump, and the entire thing is powered by heat and gravity.
Here is a closeup view of the process, without coffee for clarity of how the fluids work:
Now for the engineering part - why does it work?
First of all, the round-bottom flask has a stopper on it with only the silicon tube coming out of the stopper. If you look closely the silicon tube sits below the water line on the round-bottom flask. By placing the stopper on the round-bottom flask, it creates a (semi) closed thermodynamic system.
When the water is heated, some of the liquid is turned to vapor via phase equilibrium. This vapor has a vapor pressure (p) which is a function of the temperature of the closed system - described via Antoine's Law, where A, B, an C are compound-specific constants, and T is the temperature in Kelvins.
Since the system is semi-closed due to the stopper on the round bottom flask, the vapor has nowhere to go out easily, so it forces on the liquid level in the flask. Since the opening of the tube is below the liquid level, the vapor pressure forces liquid into the silicon tube which makes it rise to the top of the system. The pressure at the opening of the tube is both the hydrostatic pressure of the liquid inside the round-bottom flask as well as the vapor pressure (for now discounting atmospheric pressure). In other words
The hydrostatic pressure is a function of the water level height (h), gravity (g), and density (rho).
However, how far can the liquid go?
Here we apply Bernoulli's equation to find out the speed at which the water will exit to the top of the soxhlet extractor
We denote point 1 as the bottom of the tube in the round-bottom flask and point 2 as the top of the opening at the soxhlet extractor. The frictional loss is represented by hf (calculated via the Darcy-Weisbach equation where L is the length of tubing, D is the inner diameter, and f is the Moody friction factor).
Since we are discounting atmospheric pressure, Pressure at point 2 is 0. We assume that there is no flow at the bottom of the tube in the round bottom flask, so velocity at point 1 is 0, and the height is discounted from the bottom of the silicone tube in the round bottom flask so height is also 0. This results in equation:
For simplicity, we assume that the length of the tube is 1.3 times the height of the opening from the round bottom flask to account for any bends and creaks that the tube is going through. The full equation is then
Furthermore, the friction factor is a function of the velocity in the tube. For simplicity, we will assume the flow is laminar so the friction factor is just 64/Re, where Re is Reynold's number.
where D is the diameter of flow, and u is the viscosity of liquid.
Finally, putting it together:
However, the water level in the round-bottom-flask is not a static number, it is changing as water is being pulled out of the system, so it is a function of velocity as well.
The volume of liquid as a function of height in a sphere is given as
Differentiating gives us volumetric flow dV/dt, which can be rewritten as Area of flow times the velocity of flow.
A differential equation, integrated to give
C can be found from the initial conditions of how much of the round bottom flask was initially filled. For an initial condition of h=R, where the round-bottom flask was filled halfway. The solution is
What this gives us is a time-dependent equation for the height of water level in the rbflask. In other terms, the height is dependent on the time, as well as the velocity of the fluid exiting the silicone tube.
Overall, the equation is
The entire equation has three unknowns - time, velocity exiting, and temperature. I coded a Matlab script to quickly give a sense of how the equation behaves, specifically how the exiting velocity is a function of both time and temperature.

Key takeaways from the graph - in order to get a faster exiting velocity, the temperature must go up (see Velocity vs Temperature Axis) Equivalently, to keep the exiting velocity constant over a period of time, the temperature must also go up (See Time vs Temperature axis). This behaves as expected, as a higher pressure is needed to force a higher exiting velocity. Over time, since the level of fluid is decreasing in the round bottom flask, more pressure is needed to maintain a constant flow. What is perhaps interesting is that this graph forces an interesting paradigm to land the coffee system - we do not want too much of a fast flow, as it would not only overflow the top chamber but produce quite dilute coffee, and an extremely sharp temperature rise would be needed. If we keep the outlet velocity too small, our coffee cools down rapidly due to heat loss to the environment, so we end up with cold coffee, but stronger coffee.
Note: I only calculated up to a velocity of 0.5 m/s, as that is the limit of where the Re number crosses 2300, switching from laminar to the mixed flow (i.e uncertain region). I would have to recalculate the friction factor for values above 0.5 m/s.
The system is non-ideal so it will behave somewhat erratically on the graph, but next stop - optimisation through trial and error of the coffee system. I would like some sort of a flow/temperature process control for the flow at the end, but that's another set of things, which I am not particularly keen to do (mainly because it takes away from the non-electricity part of the setup). However, I do have the control idea layed out - it would be a negative feedback control based on the measured variable of the flow of the silicone tube into the soxhlet valve, and that would feed into a PID controller which would manipulate the heating of the round-bottom flask. Pretty simple block diagram.

For the soxhlet extractor, it is akin to a Pythagoras cup. Once the water level reaches the height of the little tube to the side, the entire water amount is drained out. The water level in the little tube rises with the water level in the main area because of Pascal's Principle. Once it reaches the critical height in the little tube, gravity pulls down on the water, and a siphon is created which causes the entire liquid in the big chamber to be emptied out into the storage vessel below. It's a bit tricky to explain why once the siphon starts it goes to pull the entire liquid out, but a leading theory is that the intermolecular forces of the water molecules allow adjacent water molecules to be pulled out as well. Bernoulli's principle applies here once again.
I used a double boiler for the heating of the water for safety, a bunsen burner or alcohol burner would work fine and would result in even better control if I do decide to implement it.
The overall cost of construction for me: 12 dollars for clamps, 9 dollars for stoppers, and 12 dollars for piping - $33. Total time - 15 hours of thinking, construction, and calibration.
The individual cost of glassware/wood/aluminum -
$100 round-bottom flask (https://www.amazon.com/juler-Borosilicate-Temperature-Scientific-Laboratory/dp/B07RHLQTS6/ref=sr_1_3?crid=1Q2ZF4GPMTQYD&dchild=1&keywords=3000ml+round+bottom+flask&qid=1603954612&sprefix=round+bottom+flask+300%2Caps%2C200&sr=8-3 )
$120 soxhlet extractor (https://www.amazon.com/Laboy-HMK21043-Soxhlet-Extractor-Glassware/dp/B010BA3032/ref=sr_1_2?crid=U8IVT72UID8C&dchild=1&keywords=soxhlet+extractor+24%2F40&qid=1603954645&sprefix=soxhle%2Caps%2C198&sr=8-2)
$100 glass three-way storage - couldn't find the link.
$100 - remaining wood ($20), ($70 aluminum sheets) ($10 screws).
Total cost if built from scratch - $455.
Should I sell it for a profit? ;)
I think that this combines both chemical engineering fluid dynamics, and chemistry glassware for a cool, yet interesting enough coffee system. Once the coffee gets in, we are talking about separation systems! I think my Unit Operations instructor would be happy to see this, maybe change my grade from a B to an A?
Code for MatLab:
clear
clc
rho=1000;
g=9.81;
A=8;
B=1730;
C=233;
h2=0.85;
D=3/16*0.02564;
u=1*10^-3;
R=0.3;
v2result=[];
Tresult=[];
tresult=[];
vresult=[];
c=20;
for v = linspace(0.01,0.5,c)
for t=linspace(0.01,600,c)
syms h
eqn1 = R*h^2-1/3*h^3-2/3*R^3 - v*D^2*0.25*t == 0;
[h1r]=vpasolve(eqn1,h);
h1r=double(h1r);
if h1r(1)>0 && h1r(1)<=R
h1=h1r(1);
elseif h1r(2)>0 && h1r(2)<=R
h1=h1r(2);
else
h1=h1r(3);
end
syms Tf
eqn2= rho*g*h1+10^(A-B/(Tf+C))-0.5*rho*v^2-rho*g*h2-64*1.3*u*h2*v/(2*g*rho) == 0;
[Tv1]=vpasolve(eqn2,Tf);
Tv=double(Tv1);
Tresult=[Tresult Tv];
tresult=[tresult t];
vresult=[vresult v];
end
end
vresult=reshape(vresult,[c c]);
Tresult=reshape(Tresult,[c c]);
tresult=reshape(tresult, [c c]);
mesh(tresult,vresult,Tresult)
xlabel('Time (s)')
ylabel('Velocity (m/s)')
zlabel('Temperature (Celsius)')
コメント