Download PDF
        SAMOVAR 
×
Menu

Additive dosers (Beer and Cheese)

In Beer («Пиво») and Cheesemaking («Сыроварение») modes, additives must be added as the program runs: hops in beer (usually 2-4 times per boil), and starter culture, enzyme, calcium chloride, salt and spices in cheese. Samovar can do this itself or prompt you at the right moment. Below are four built-in ways to implement a doser, from the simplest to the most flexible, with what each needs and how it is set in the program, followed by an overview of homemade designs used by brewers around the world and how to connect them to Samovar.
General information about the programs is in the sections Mashing program and Cheesemaking program; the expansion board is described on the page I2CStepper; the scripts are in the section Lua.
 
Option 1. Manually, on a Samovar signal
No hardware is needed. At the right moment Samovar sounds the buzzer, shows a message on the display and in the web interface, and sends a push notification to the mobile app and the website. You add the additive yourself.
Pros: nothing to build. Cons: you must be nearby; in beer the exact timing depends on you.
 
Option 2. Carousel hop doser on a stepper motor (Beer)
This is the built-in automatic dry-additive doser for Beer mode. Together with the message "Add the hops!" Samovar turns the main stepper motor (the one that drives the take-off pump in other modes) by exactly 1/20 of a turn (18°). A disc with cells is mounted on the motor shaft, and below it is a fixed plate with a single hole above the boiler. After each turn the next cell is over the hole, and its contents fall into the wort.
What you need. A NEMA17 stepper motor (connected to the Samovar pump connector, no separate driver or settings required), a disc made of food-grade plastic or stainless steel 150-200 mm in diameter with 20 cells around the circle (or fewer, see below), a bottom plate with one hole, and a lid so the steam from the boiling wort does not dampen the hops. The disc is convenient to 3D-print. Hops are put into the cells in the order of rotation, starting with the cell next to the discharge window.
How it is set in the program. Nothing extra: each "B" line is one addition. The step is made at the end of the line, so the first portion (for example, "hops at 60 minutes") drops at the end of the first "B" line, which can be made short, for example 1 minute. The driver microstepping mode must be 1/16, as for the pump.
If there are not 20 cells. The angle of one step is set in the firmware in the HopStepperStep() function (file beer.h): TargetStepps = 360 / 1.8 * 16 / 20, where 20 is the number of cells in a full circle. For a 10-cell disc, replace 20 with 10 and reflash Samovar. Instead of a disc you can make a drum with longitudinal compartments on a horizontal shaft; the calculation is the same.
Pros: fully automatic brewing, no electronics beyond the standard. Cons: dry additives only; this step is not performed in Cheese mode (the motor is busy with the pump there).
 
Option 3. Peristaltic pump for liquids (Cheese)
In Cheesemaking mode, the main Samovar stepper motor works as a dosing pump. A "D" (dosing) program line with the "Local stepper motor" («Локальный шаговый двигатель») method delivers the set volume in milliliters at the set rate in ml/min: for example, 25 ml of calcium chloride solution in 1 minute or 50 ml of diluted enzyme in 2 minutes. When delivery ends, the program moves to the next line by itself; if the volume is not delivered within the "Timeout, min" («Тайм-аут, мин») time, cheesemaking stops with a message.
What you need. A peristaltic head for a NEMA17 stepper motor (the same as for take-off in rectification) and food-grade silicone tubing. The inlet end of the tube is lowered into the container with the solution, the outlet end is led into the cheese vat above the milk level. Prepare the solution in advance; starter culture and enzyme are diluted in boiled water, so that the volume is large enough for the pump to deliver it accurately.
Calibration. The volume is converted to steps using the "Pump step count" («Количество шагов насоса») value (steps per 1 ml). It is set on the Settings → Pump tab with the "Pump calibration" («Калибровка насоса») button (see Pump): the pump pushes liquid into a measuring container, you enter the actual volume, and Samovar saves the coefficient. Calibrate with the same tube and the same liquid you will dose, and fill the tube beforehand, otherwise the first portion goes to filling it.
Several components. One pump, one solution. If two or three different solutions must be added during a brew, put a "W" line "Add additive" («Внести добавку») between the "D" lines and move the inlet tube to another container (rinsing it), or use a second pump on the I2CStepper board (option 4).
Pros: exact volume and time, no manual work. Cons: liquids only; one component per pump.
 
Option 4. I2CStepper board: pump and relays from a Lua script (Beer and Cheese)
The I2CStepper board gives Samovar a second stepper motor (address 2 - the pump) and four relays. The firmware does not dose with them by itself, but all of it is available from a Lua script started by the "L" program line: in the line you choose a .lua file and give it parameters (for example, a relay number and a volume), so one script serves all additions. The script switches on the pump or relay, waits for it to finish and calls setNextProgram() to move to the next line.
Liquids - the I2C pump. The i2cpump_start(rate, volume) function pumps volume ml at rate l/h; the steps per 1 ml are taken from the "I2C pump step count" («Количество шагов I2C насоса») field (Settings → Pump), calibration is on the "I2CStepper" page. An example script dose_pump.lua that adds the volume from the first parameter of the line (in the program: file dose_pump.lua, parameter 20) at 6 l/h:
-- dose_pump.lua: add arg[1] ml of solution with the I2CStepper pump
if i2cpump_start(6, tonumber(arg[1])) == 1 then
  while i2cpump_get_running() == 1 do delay(500) end
  sendMsg("Solution added", 2)
else
  sendMsg("I2CStepper pump is not responding", 1)
end
setNextProgram()
Dry additives - relays and hoppers with a gate. For each portion of hops (or salt, spices) a small hopper is made above the boiler, whose bottom is closed by a gate on a 12 V electromagnet (solenoid). The board relay powers the electromagnet, the gate opens, and the portion falls into the boiler. Four relays, four portions; each is measured out in advance, when loading. An example script dose_rele.lua that opens the hopper gate on the relay whose number is in the line parameter (in the program: file dose_rele.lua, parameter 3) for one and a half seconds:
-- dose_rele.lua: drop a portion from the hopper on relay arg[1]
set_i2c_rele_state(tonumber(arg[1]), 1)
delay(1500)
set_i2c_rele_state(tonumber(arg[1]), 0)
sendMsg("Hops added", 2)
setNextProgram()
For each addition the program gets its own "L" line with the same file and its own parameter (relay number or volume); the line timeout is set in seconds.
Which relays are free. In Beer mode the first board relay is taken by the wort transfer pump (see the "I2CStepper" page); the firmware does not use the other three. In Cheesemaking mode the firmware does not occupy the board relays (the stirrer and the drain valve sit on Samovar's own relays 2 and 4). You can check that the board responds with the check_I2C_device(2) function.
A peculiarity in Beer. The "L" line is a separate program line, and boiling is not automatically maintained on it, so make it short (a few seconds); the next "B" line detects boiling again - the wort is still boiling by then, so this is quick. If you only need hops on a schedule, option 2 is simpler: it needs neither a board nor a script.
Pros: any number of components, liquid and dry, complete freedom in logic. Cons: you need an I2CStepper board, firmware with Lua support and a script.
 
Option 5. Homemade designs: what else brewers do
Commercial automatic breweries solve the same task in different ways: Brewie and PicoBrew Zymatic keep hops in four baskets and at the right moment run wort through the next basket; MiniBrew puts a carousel with six cylinders on the lid; Grainfather and Braumeister do not add hops, they only send a notification (like option 1). In home workshops (Homebrew Talk forums, projects for CraftBeerPi and BrewTroller, Brew Your Own articles) the designs below are the most common. All of them connect to Samovar in one of the ways already described: a step of the main stepper motor on a "B" line, a "D" line in cheese, or an I2CStepper board relay or motor from Lua.
Sector doser: cups or jars on a shaft. N cups (plastic cups, cut-off bottles, small jars with a hinged lid) are rigidly fixed on the horizontal shaft of a stepper motor in a fan, every 360°/N. While a cup is in the upper half of the circle, it stands open side up; a turn to the next sector moves the next cup past the horizontal, and the portion falls into the boiler. A jar with a hinged lid is more convenient than an open cup: until it tips, the lid protects the hops from steam, and when it tips it opens under its own weight. The advantage is simplicity: no precise cells and no bottom plate are needed. For Samovar: the motor goes on the pump connector, in HopStepperStep() substitute the number of cups N for 20 (for 4 cups one step is 90°), and each "B" line tips one cup. The shaft must be above the boiler rim and, if possible, to the side of the steam column; put a shield above the cups.
Disc with tubes ("Lazy Susan"). The most common homemade design on Homebrew Talk: a disc 150 mm in diameter with 6-8 vertical tubes (⌀25-30 mm, height 100-150 mm, holding about 30 g of pellets), with a fixed plate with one hole under it; the drive is a high-torque servo or an inexpensive 28BYJ-48 stepper with a ULN2003 driver, and for an exact stop a microswitch or an optical sensor on a cam is installed. It is the same carousel as in option 2, only with tall straight tubes instead of small cells. The authors' experience: pellets hang up in tubes with a conical bottom, so the walls must be straight and smooth; powdered and wet hops do not pour, dry pellets are needed; a shield or steam outlet above the boiler is a must, otherwise after 20-30 minutes of boiling the pellets get damp and clump. With Samovar it is used as option 2, the number of tubes is substituted in HopStepperStep(); if desired, the disc can be put on an I2CStepper board motor and turned from Lua with the set_stepper_by_time function.
Auger (screw) doser. A design from automatic fish and cat feeders (see projects on Instructables and GitHub): a hopper above a horizontal tube, with an auger on a stepper motor shaft inside the tube; the dose volume is set by the number of turns. The parts are 3D-printed, the auger is 20-30 mm in diameter. It doses any free-flowing product from one hopper in portions of any size: salt, sugar, spices, hop pellets. For Samovar such a doser is the same "pump": in Cheese mode it goes on the pump connector, is calibrated with the "Pump calibration" («Калибровка насоса») button (the product is poured into a measuring cup and its volume in ml is entered) and is dosed with a "D" line with the "Local stepper motor" («Локальный шаговый двигатель») method. A second identical doser can be hung on the I2CStepper board (address 2) and started from Lua with the i2cpump_start(rate, volume) function. Con: one hopper, one product; for 3-4 different hop varieties you need 3-4 augers or a carousel.
Continuous hop feeding. For varieties with "continuous hopping" (hops added in a thin stream throughout the boil), Brew Your Own describes a doser made of a piece of ⌀100 mm pipe 60 cm long, with a perforated disc rotating at the bottom end driven by a 1 rpm motor; the pellets fall at an average rate of about 8 g per 10 minutes, and pins on the disc keep them from forming an arch. With Samovar the motor is switched on by an I2CStepper board relay (set_i2c_rele_state) for the whole "B" line, or turned by the board stepper motor (set_stepper_by_time).
Gate on a servo or gear motor. In CraftBeerPi projects (the HopDropper plugin) a tray with sections is moved by a slow 12 V gear motor through a pair of gears, and the controller only supplies power for a set time; another popular scheme is a cup on a servo arm hung on the boiler wall away from the steam. The servo connects to the Samovar SERVO_PIN output (the same one that switches containers in rectification) and turns from Lua with the setServoAngle(angle) function: for example, setServoAngle(90) opens the gate, delay(1500), setServoAngle(0) closes it. Power a high-torque servo from a separate 5-6 V source, not from the board. A 12 V gear motor mechanism is switched on by an I2CStepper board relay for 1-3 seconds (the time a turn to the stop or to a cam with a microswitch takes). Control is as in option 4. An example script tip_cup.lua with a cup on a servo arm (in the program, an "L" line with this file):
-- tip_cup.lua: tip the cup on the servo arm
setServoAngle(150)
delay(1500)
setServoAngle(0)
sendMsg("Hops added", 2)
setNextProgram()
Baskets rinsed with wort. The Brewie/Zymatic principle: hops lie in mesh baskets outside the boiler, and the wort transfer pump directs the flow through the next basket at the right moment. At home this is the most complicated way (you need a pump, several solenoid valves on I2CStepper relays and plumbing), but the hops are guaranteed to be protected from steam and nothing has to be poured above the boiler. For Samovar the valves are switched from Lua with the set_i2c_rele_state function, and the pump by the first board relay (in Beer mode it already controls the wort transfer pump).
General lessons from others' designs.
Sources of ideas:
Lazy Susan hop dropper (Homebrew Talk), Automatic pellet hop dropper (Homebrew Talk), 3D printed hop carousel (Homebrew Talk), Automated hop addition (Homebrew Talk), HopDropper for CraftBeerPi (GitHub), Continuous wort hopper (Brew Your Own), Auger micro-doser (Instructables), MiniBrew Hop Carousel, overview of automatic breweries (Brew Your Own).
 
What to choose
General tips: keep additives under a lid (steam and condensation are the main enemy of dry dosers), test the doser beforehand on water and in test mode, and make liquid volumes no less than 10-20 ml, so the pump error is not noticeable.