1994 1995 1996 1997 1998 1999 2000 2001 2002 2003 2004 2005 2006 2007 2008 2009 2010 2011 2012 2013 2014 <2015> 2016 2017 2018 2019 2020 2021 2022 2023 2024 | Index | 1994 1995 1996 1997 1998 1999 2000 2001 2002 2003 2004 2005 2006 2007 2008 2009 2010 2011 2012 2013 2014 <2015> 2016 2017 2018 2019 2020 2021 2022 2023 2024 |
<== Date ==> | <== Thread ==> |
---|
Subject: | CSS BOY and Raspberry Pi? |
From: | Ryan Pierce <[email protected]> |
To: | "[email protected]" <[email protected]> |
Date: | Tue, 22 Dec 2015 23:12:48 -0600 |
Has anyone been able to run CSS BOY successfully on a Raspberry Pi?My original plans for an EPICS-based computer controlled beer brewing system involved a control box with no user input except for an e-stop button. The operator interface would either be a laptop running CSS BOY, or an iPad with a WebOPI backend. But with the significantly faster quad core Raspberry Pi 2, and the availability of inexpensive panel mount touchscreen displays that work with Pi, I'm wondering if I could take advantage of some spare panel space on my control box and run CSS BOY on the same Pi that runs my Soft IOC? I believe you can run Java and Eclipse on a Pi, so I'm wondering if CSS BOY would work, and if it would perform reasonably well? Has anyone had any experience with this?
In other news....I was quite fortunate to meet with Ralph Lange and Michael Davidsaver when they passed through Chicago on their way to an event at Argonne. They toured the makerspace where I was constructing this system, and we had a late night EPICS hacking session where they helped me fix some issues I'd been having with CSS BOY, a calcout record that wasn't updating like I thought it should, and they showed me some neat tricks with alarms. Thanks so much!
A friend and I did some redesign and fabrication to solve the problem of directing waste heat from the burner to keep it from damaging the frame or the actuated valves and sensors on the kegs. This past weekend I did my first test with the control box connected to the actual brewing hardware. I was using CSS BOY, a Soft IOC on the Pi, StreamDevice and asyn, and software I wrote on the Arduino Mega. For this test, I connected one propane burner, which heats one of the kegs, and a single DS18B20 temperature probe to the Arduino. While the test worked, I've now got a control algorithm question about preventing overshoot that is unrelated to EPICS.
For now, the system just has on/off control of the propane burner. (I do have a needle valve on each burner's propane supply, and I am considering putting stepper motors on them.) I didn't think PID would be terribly useful with a binary control output, so I coded an extremely simple thermostat algorithm: if temp < setpoint - deadband then turn on the burner; if temp > setpoint then turn off the burner. The results are here: http://elna.mackenziegems.com/20151220/20151220-2.png
I originally had a 70 F setpoint and 0.5 F deadband. Then I changed the setpoint to 120 F. The burner cut out at 120 F but the temperature overshot by 3 degrees F, and it took over 80 minutes to fall back down below 119.5 F which triggered the burner. That's more than I'd like. But from that point, everything happened as I expected. It took less than 30 seconds to heat the kettle by 0.5 F, it overshot by about 0.4 F, and took about 25 minutes to fall back to 119.5 F. Those numbers are perfectly acceptable.
I'm guessing the initial overshoot happened due to a number of reasons. (Residual heat in the stainless steel base of the keg needing time to transfer to the water? With 10+ gallons of water in the keg, convection to equalize temperature may not be efficient? Lag time in the thermal probe?) I'd think an ideal control algorithm should anticipate that with a large commanded temperature change, cutting off the burner early is necessary to prevent an overshoot, but that would be unnecessary with just a small 0.5 degree F change. I'm guessing this is a common control systems problem, so rather than reinvent the wheel, is there a standard algorithm that handles this? Or can PID be used in a situation like this?
Hopefully over the holidays I'll be able to make some blog posts with pictures of all this. Still, I'm glad I'm getting closer to being able to brew my first batch of beer with this system. (Would that be an IOC IPA? ;-)
Thanks, Ryan