One of the intentions behind the design is to replace the control board in the tested machine with Arduino control, to do this requires writing code to run the new machine. Thus, a high-level code strategy was created for the first prototype using a simple heater control method, with progression to a more advanced method (such as PID) if the temperature profile was not satisfactory.
Firstly, when the machine turns on, it needs to pre-heat the thermoblock and maintain around a temperature close to the desired brew temperature, indicating when a shot is ready to be extracted with a “ready” light.
The code will stay in this above loop until a desired temperature is reached. It will also stay in this loop if above a certain temperature, to prevent overheating.
When the temperature is between these thresholds, the code will move between the “ready” and “stand-by” functions until a button is pressed, whilst fluctuating about the target brew temperature.
Once a button is pressed, and a “mode” selected, that function will take over, with all three “modes” being similar in concept, but with different pumping timings.
The pre-heat mode runs two double shot cycles through the machine, which aids temperature stability for the brew cycles as it pre-heats all the components in the machine, improving taste as found in the research stage.
The brew cycles include a short pre-infusion stage, the difference between the single and double modes is simply the flow at each stage being twice as much in a double shot.
One of the main considerations for using this code is temperature sensor placement. If the sensor is submerged in the flow between the heater and group head, it will be exposed to air temperature between cycles, which may cause malfunction and overheating. Thus, a heater surface sensor will need to be used for the start-up/ready/stand-by steps. This could be used in conjunction with a submersed sensor which is used for the brew modes, or used alone, experimenting with the sensor to find a suitable target surface temperature which returns the desired target brew temperature.