150 likes | 163 Views
Explore how EPICS enables building a computer-controlled beer brewing system for precise process control, larger batch sizes, and improved recipe development in a collaborative makerspace and science-driven environment.
E N D
Kegnote Address: EPICS, Brewing, and the Maker Ecosystem Ryan Pierce
So WHY does some someone spend thousands of dollars and hundreds of hours over two years to build a computer controlled beer brewing systemusing EPICS?
Because Beer! • Brewing depends on careful process control • Mash temperature and time control enzymes • Accurate water volume • Continuous recirculation means better clarity • Boil-off rate • Process control makes brewing repeatable • Better recipe development by reducing human error • Larger batch size • 10 gallons instead of 5
Because Hackerspace! • Hackerspaces / Makerspaces / Fab Labs provide: • Tools (MIG and TIG welders, manual and CNC machining…) • Community (people who like to teach what they know) • Ecosystem of Open Source, Open Hardware • Arduino, Raspberry Pi, BeagleBone • Software free to makers: • Fusion 360 (CAD/CAM), Eagle (PCB design) • Encourage the audacious! • I built this project at: • Pumping Station: One (location of brew club, welding, metal fabrication, assembly and testing) • University of Chicago PolskyExhange Fab Lab (software) • Analytics Lounge (waterjet)
Because EPICS! • EPICS provides much of what I need out of the box • Network protocol, code, and libraries • Tools to construct operator control panels without writing GUI code • Data archiving, web interface • EPICS lets me focus on my hardware interface and control algorithms
Because Science! • As a kid, I wanted to be a high energy physicist • Lectures and tours at Fermilab, Argonne, working summers at a science museum, intern at CDF • As an adult, I’m still fascinated by science • APS open house in 2012 introduced me to EPICS • EPICS community enabled access to BESSY II and BER II • Analytics Lounge – making science accessible • Scanning electron microscopy, gamma and alpha spectroscopy, ICP-MS, GFAAS • If EPICS can control synchrotron light sources, surely it can brew beer!
Because Cold War and Nuclear History! • My favorite vacation spots include Chernobyl and Hanford • I acquired panel indicator lights from two nuclear missile systems: • Thor IRBM • Minuteman I ICBM • Swords to Plowshares – repurposing for Beer!
System Overview – HERMS(Heat Exchange Recirculating Mash System)
EPICS System Design • Raspberry Pi running IOC • StreamDevice via USB serial • Arduino Mega • Interfaces to brewing hardware and sensors • Unlike Pi, uses 5 V logic and lots of GPIO and analog pins • Unlike Pi, tight timing (bit banging), hardware interrupts don’t require kernel drivers • Runs code derived from Pete Jemian’scmd_response • Implements critical control algorithms like firing gas burners without risk of Linux crashing • CSS BOY operator interface • Actuators: • 12 V actuated ball valves and solenoid valves for fluids • 24 VAC propane burner valves / pilot lights (furnace control) • 120 VAC pump • Stepper motor (for propane throttle) • Sensors: • Bus of DS18B20 OneWire temperature sensors • Analog pressure sensors for measuring fluid levels • Flow meters producing streams of pulses
EPICS Lessons Learned record(mbbo, "$(P)gas1:mode") { field(DESC, "Gas Mode") field(DTYP, "stream") field(OUT, "@cmd_response.protogas_mode(1) $(PORT)") field(VAL, "0") field(ZRVL,"0") field(ZRST,"Disabled") field(ONVL,"1") field(ONST,"Manual") field(TWVL,"2") field(TWST,"Automatic") field(PINI, "YES") field(VAL, "0") } record(bi, "$(P)gas1:state") { field(DESC, "Gas Burner State") field(DTYP, "stream") field(INP, "@cmd_response.protogas_state(1) $(PORT)") field(SCAN, ".5 second") field(ZNAM, "Burner Off") field(ONAM, "Burner On") } record(bo, "$(P)gas1:cmd") { field(DESC, "Gas Burner Command") field(DTYP, "stream") field(OUT, "@cmd_response.protogas_cmd(1) $(PORT)") field(ZNAM, "Turn Burner Off") field(ONAM, "Turn Burner On") field(PINI, "YES") field(VAL, "0") } record(calcout, "$(P)gas1:update") { field(INPA, "$(P)gas1:mode CP") field(INPB, "$(P)gas1:state CP") field(CALC, "A=2") field(OOPT, "When Non-zero") field(DOPT, "Use OCAL") field(OCAL, "B") field(OUT, "$(P)gas1:cmd PP") } • “in” and “out” datatypes mean what they say! • Overloading hardware state, operator command, control algorithm command in one pv doesn’t work! • Dividing operations into multiple pv’s is critical • Linking, calcout are very helpful! • Undocumented tips and tricks… • Using bo + HIGH and a short time interval to allow an operator to trigger an event • Using a second pv, linking with SDIS and MS to report a value and an error state with StreamDevice
Next Steps • MVP (Minimum Viable Porter!) • Experiment with control algorithms • Preventing overshoot • Controlling output of heat exchanger • Coding and wiring for critical valves, pump, emergency stop • Start brewing: IOC IPA, synApps Stout! • Future Enhancements • Support for SNL, implement ramp/soak • Web OPI and iPad control • CSS BOY on Pi with touch screen? • Archiver Appliance • Adding more hardware: • Automatic kettle fill via calibrated flow sensors • Level sensors • Grant with fluid level control • Stepper motor to throttle propane; control rate of boil via algorithm? • Designing a better boil kettle
EPICS and the Maker Ecosystem EPICS solves the same problems for makers and physicists, even if the hardware being controlled is vastly different Both communities strongly value open source, customizable ecosystems Considerable crossover (Pi, Arduino) with the common maker hardware / software stack Both communities compliment each other with different perspectives Physics and the maker movement strive to achieve the audacious!