Here you go Sham (from the Decent manual)
How Water Temperature Is Controlled When A Shot Is Poured On The Decent
When an espresso is requested, the machine powers the water heater thermocoil at 100% power, and starts pumping water slowly through the heater and manifold, and back into the water tank via the group and return valves. It does this until the heater temperature shoots past the required temperature. (It keeps on going, too, due to thermal lag in the heater metal).
Then, the machine switches to another phase where it starts water mixing to reach a target temperature just a little bit higher than the target, and routes that water through the group valve and return valve. This is to pre-heat the manifold and group valve.
This is why we have the bizarre configuration where a three-way valve leads into a two-way valve that returns to the tank. We found that not preheating the 3-way valve to the group was worth up to a 5°C drop (that lasted half the shot) if the valve was cold. This pretty much ruined the first shot of the day, and meant that the temperature of a shot was dependent on how long the valve had had to cool.
Then, we switch to the “real” start of the shot. The mix water temperature is intentionally a little high. Water in the tubes between the manifold and group enters the group, and it’s usually a little cool. There is a stretch of PTFE tubing from the group back to the main manifold that is the only part of the machine not under heat control. If that tube cools down, then the water in it will be a bit cooler. But, there is supposed to be a layer of insulation inside the group head so that the variation is not too bad, and the group is itself heated to deal with little excursions like this in the inlet temperature. The group itself will heat or cool the water for a few seconds, before the water temp starts overwhelming the metal temp.
At this point, the machine starts monitoring the shower head temperature, and adjusts the mix temperature to heat or cool the water heading to the group, to try to make up for any temperature deviation. However, it does limit the range of output temperatures, as deviating the water temperature too much affects the flavour.
Then, this water wends its way from the mixer to the main manifold to the group. The tubes used are quite thin, but at low flow rates this can take a while. As a result, the temperature control PIDs all use the flow rate to adjust their speed. If the flow rate is super slow, it can take tens of seconds for the mixed water to hit the puck, and a PID would go into oscillation if it tried to adjust temperatures faster than that.
An ideal water path would have no length. We’d mix water directly in the group, and the mixed water would directly enter the basket a fraction of a second later. For many reasons, we couldn’t do this for the current machine. I live in hope that one day we can do better.
For very slow flow rates, the 250W group heater is actually a pretty good way to control the temperature. As the flow rates increase, we end up in a situation where the water mixer and group controller can fight each other, and I haven’t found a way around this yet. This is one of the reasons why the group heater is turned off for faster shots.
How the group temperature is measured/controlled
The DE1 has temperature sensors coming out of its ears, and there are three sensors in the group, alone. One measures the metal temperature, one measures the water inlet temperature, and one measures the temperature at the puck. I call these the “metal”, “inlet” and “shower head” sensors.
It is not unusual for these sensors to report values that a very different from each other. The shower sensor can be 20°C below the metal temperature, if it’s picking up the cool air beneath the shower screen. On the other hand, if there is some residual water sitting above the screen, bubbling down from the inlet chamber, it can be a degree or so away from the metal temperature, as there is water giving it contact to the brass, but no water in contact with the shower screen.
The metal temperature can be surprisingly low during an initial heat-up period, because heat is being leached into the chassis and the group head carrier (the tow hitch shaped thing). In this case, the inlet sensor is actually the best guess of what the final water temperature would be.
That’s our priority: get the group to a temperature where the water temperature entering the puck is near our target.
There is also a temperature difference between the top and bottom of the group. With insulation in the group, the top of the group is usually a bit hotter than the bottom. This is because most of the heat is escaping to the air under the group and into any portafilter connected. With no insulation in the group cover, the middle of the group was hotter than either the top or bottom.
What I settled on, is that the group head controller (when not doing a shot), actually looks at the maximum of all three sensors, and controls that. In tests, if I suddenly sent water through the group, the highest temperature sensor recorded was the best predictor of the water temperature.
When the shot starts, the group controller is turned off unless the flow is really slow.
Shot temperature control
During the shot, there are multiple PIDs. One PID controls the water mixer to meet its target temperature (which controls other PIDs for each pump). Another looks at the inlet sensor and controls the water mixer target temperature. Another looks at the shower sensor and controls the setpoint for the inlet sensor PID. Each PID looks at the flow and takes flow delays into account.
I’ve done thousands of shots through our group heads, watching the internal sensors and the output from a Scace. I am comfortable that we provide pretty good temperature control for reasonable flow rates, and that what you see in the app is representative of reality. Of course, all four temperature sensors in the middle of such a test shot disagree with each other a bit, because none of this is actually simple. During manufacture, we adjust the global temperature calibration so that the average temperature on the Scace for the second half a the shot matches the target temperature for the shot.