New 27 Gal MoreBeer Conical & Arduino Based Temp Controller

HomeBrewTalk.com - Beer, Wine, Mead, & Cider Brewing Discussion Community.

Help Support Homebrew Talk:

WilderBill

Member
Joined
Jan 11, 2014
Messages
13
Reaction score
8
Greetings folks, I have not posted on any brewing forums for years and years but I’ve got a new project that I figure some people may be interested in.



Background:

I bought two MoreBeer 12 gal fermenters back in 2008. I then made an AC unit glycol chiller for them based on “Backyard Brewer’s” posts on the Morebeer forum. My original build pics can be found here.

The setup has worked great ever since but I’ve always wanted to have some automated control over temperature ramps, diacetyl rests, etc. I looked at OhmBrew & FermTroller but they never seemed to entirely fit the bill for one reason or another. (After I see everything posted here maybe I should have given BrewPi a closer look before jumping in) But up to this point I never ended up doing anything. I just ran downstairs multiple times a day to adjust the Ranco controllers when needed.

So last year I upgraded my brew system for 20 gal batch capacity and then on Cyber Monday MB sucked me in with a deal on their 27 gal conical fermentor . With this addition I finally felt the need to get off my duff and program / build the dream fermentation temp controller that I always wanted.



Here are the features/specifications:
-Controls the cooling of a window air conditioner converted to glycol chiller
-Controls heating and cooling to 1* on three different fermenters
-Heat provided by Fermwraps around the cone of each fermentor
-Cooling provided by chilled glycol being pumped through copper tubing cinched around the exterior top of the fermentors
-Fermentor manual mode allows you to set a temperature and the controller will maintain it.
-Fermentor ramp mode will increase temp from the current temp to a set temperature by a set number of degrees per day. (to be used towards the end of fermentation to help finish out the beer)
-Fermentor hold and ramp mode will hold at a set temperature for set number of hours, then ramp to a set temperature by a set number of degrees per day. (to be used at the beginning of a fermentation to let the yeast start slow and then ramp to the desired fermentation temp)
-Diacetyl rest mode will allow a fermentor to free rise to a set temperature, stay there for a set number of hours, then start chilling to a set temperature by a set number of degrees per day.
-Crash mode chills to a set temperature by a set number of degrees per day. (Used at the end of the fermentation to drop yeast and fine beers in the fermentor)
-Glycol chiller temp can be set manually or be set to automatically adjust to a set number of degrees below the lowest fermentation temperature. (logic has a floor that it won’t go below)
-Glycol outputs have anti short-cycle and delayed start settings built in.
-Logic exists to prevent setting ramp temps below current temp or d-rest temp above ambient temp.
-Error system will alarm for the above reasons, zones not being within their set temp for a set number of hours, or if set temperatures are somehow out of range.
-SD card for data logging
-Ethernet or WIFI networking is planned at a later date after I get the above all working correctly.

I just got everything installed today and it looks decent, the biggest issue I’m having is I apparently have some interference going on with my temp sensors when the 110V power is turned on. What used to be a steady signal will often jump .25 to .5 or even 1 degree. When it does that it will go from heat to off, to heat, to cool, to off, to heat, etc…

It is programmed with a deadband so that if set to 68* the heat will not kick on until 67.9 but it will kick off at 68.2, Cooling will turn on at 69.0 and will turn off at 68.7. Between 68.2 and 68.7 there will never be any heating or cooling. I didn’t get all fancy with PID control because I didn’t think it really needed it. I hadn’t needed it in the last 10 years anyway.

When the temperature is read I’m averaging 5 samples taken 10ms apart. I could do some more averaging but that is just masking the problem.

Here's the innards with the group of white and black wires in the foreground providing the signal and ground for the thermistors.



Arduino code here (v0.9):

YouTube intro video here:

Wiring diagram link
:

Let me know what you think or if you have any ideas for me.

Bill
 
OP
WilderBill

WilderBill

Member
Joined
Jan 11, 2014
Messages
13
Reaction score
8
I am finding vastly different standard deviations in the temperature values between zones where the thermistor wire is stretched out (like inserted into the fermentor thermowell) and those that are coiled up for storage. The ones that are stretched out see a 6x increase in standard deviation when the 110v power is on and the ones that are coiled do not change at all.

I tried using some ferrite cores on the temp sensor wires both inside and outside of the box. They made no difference. My next thought is to swap out the supplied wire for shielded wire.
 
OP
WilderBill

WilderBill

Member
Joined
Jan 11, 2014
Messages
13
Reaction score
8
I ended up answering my own question tonight. I wrapped a thermistor wire in aluminum foil and the standard deviation went up 17x from the baseline with the 110v power off.

Then I grounded the aluminum foil shielding and it went down to 1/2 the baseline standard deviation.
GOLDEN!!!

Standard Deviation Values:
.05 with the wire stretched out and 110v off
.25 with wire stretched out and 110v on
.07 with wire coiled and 110v on
.84 with wire stretched, shielded, ungrounded with 110v on
.02 with wire stretched, shielded, grounded with 110v on.
.01 with wire stretched, shielded, grounded with 110v on.

Time to order some shielded 2 conductor.

Note: An updated Wiring diagram is in the linked photos (can't update the original post)
 
Last edited:

3 Dog Brew

Well-Known Member
Lifetime Supporter
Joined
Oct 13, 2006
Messages
295
Reaction score
10
Location
Houston
Dear WilderBill,

This is awesomeness at its most awesome. I have used a BCS-460 with SSR's as a fermentation temp controller for number of years now, but my DIY-maker mentality has forced me to look into making improvements and Arduino is at the top of my list since I can write my own code. I plan to review your code and wiring diagram to give me a starting point for my project.

I would love to hear about any updates or improvements you make to your system.

Did you purchase any add-on modules for your the Arduino? I was looking at the Diymore Thermocouple adapter and the Diymall OLED Display. Any thoughts?

For ethernet connectivity I was planning on using the Sunfounder Ethernet Shield adapter.

I haven't started this project yet and haven't purchased an Arduino project board yet. I would love to hear more about how you came up with this design.
 
Last edited by a moderator:
OP
WilderBill

WilderBill

Member
Joined
Jan 11, 2014
Messages
13
Reaction score
8
Thank you for the compliments. This is really my first foray into the Arduino world so I’m learning a lot as I go. The posted code has been revised, broken, fixed, trialed, and more bugs have been identified… So you can take a look but it is not final by any means. I will post code again when I get something that I trust to start using on some beer.

Major changes since my last post are that I purchased shielded 22 ga 2 conductor twisted pair with ground, some MF51E103F3950 thermistors from Digikey and made some new temp sensors with the shielded wire. I soldered a connector on one end with ground tied to negative and the thermistor onto the other. Then I made a little mold out of ¼” press to fit air line to pot the thermistor in urethane to make it waterproof.


Along with that physical change I modified my code to use exponential filtering rather than averaging to get a better signal. I utilized the Responsive Analog Reads library to achieve this and I’m very happy with the results.

I would have liked to have worked on this more since my post but due to schedules I haven’t. I did get a couple of major bugs fixed earlier this week, did some longer term testing and subsequently found some new bugs that I need to work on. I want to brew next weekend so hopefully by the end of this weekend…

Here is a datalog of a crash cool changing temp by 1 degree every 2 hours. That worked great but I won't post the F2 ramp datalog, need to figure out where my logic broke down there;-)


The beauty of DIY is that you can use the components that you feel work best for your experience level and application. I used a Reprap controller for the fact that it has the 4 line LCD, rotary encoder, SD, and pezio all mounted together, though I wish I could control the LCD backlight independent of the power. There is an appeal to going with a graphical display of some sort because you can customize it a lot more to probably display more information. That additional complexity seemed daunting for me and I had the Reprap controller I removed from my 3D printer during an upgrade so, free = good.

I just have the thermistors wired into the Arduino with a 10k resistor tied into the 3.3v line. No breakout boards here but I wonder if an external analog board would have more than 1024 steps. I am getting about 8 steps per degree so the Arduino is probably sufficient, but it is an idea for more precise measurement.

I have a W5500 ethernet module and a ESP8266 Wifi module to play with once I get to that point. That is still a ways off in my mind. My first priority is to get the core functionality working

As far as the design went I just kind of knew how I tend to adjust temps when I ferment, then I planned out the basic logic that would be required to make that happen. One thing I was not prepared for was the ratio of core temp control logic to UI/other programming. If I had to guess 90%+ of my code is for the UI and other functionality. I was naive in not knowing how much other code it took to get this thing off the ground. It’s OK though, I have learned a ton and am enjoying it. Just wish we had 30 hour days is all.

FYI, I believe the wiring diagram has been updated. I can’t edit my first post but if you go to the Flickr link in my signature you can find more information included with each picture’s description.

The forum is not allowing me to post any more hyperlinks. Probably too few posts and they are afraid I'm a spammer.:no:
 
Last edited:
OP
WilderBill

WilderBill

Member
Joined
Jan 11, 2014
Messages
13
Reaction score
8
It looks like I have a stable version with all required temp control functionality. I needed to get this finished up before next weekend because I'll be putting everything to the test. Brewing two 20 gallon batches on Sunday.

Here's the plan for my Irish Red recipe:
10 gal fermented with WLP004 Irish Ale: Hold @ 62 for 24 hr, ramp to 68 @ 3* per day. When fermentation starts slowing ramp to 72 @ 2* per day. Hold till finished + 2 days. Crash to 38* and fine.
10 gal fermented with WLP565 Saison1: Start @ 62, ramp to 86 @ 4* per day. Hold till finished + 2 days. Crash to 38* and fine (manual temp mode).

Here's the plan for the Kolsch recipe:
Hold @ 58 for 24 hours, ramp to 60 @ 2* per day. When fermentation starts to slow ramp to 65* @ 2* per day. Hold till finished + 2 days. Crash to 38* @ 4* / day.

Some datalogs of tests done this past weekend.






Link to the 1.0 G stable version of code.

I checked last night and I have about 2500 lines of code, of which about 250 are for core temp control logic. So I was spot on with my 90% assessment for UI/other code.
 
OP
WilderBill

WilderBill

Member
Joined
Jan 11, 2014
Messages
13
Reaction score
8
Well, last night was a late night and I got the ESP8266 wifi module installed and working. It took me a lot of searching to do this. Most tutorials are how to use JUST the ESP8266 connected to some IOT thing, not using it as a wifi module for an Arduino. Those that did use the ESP8266, I coud not get to work for some reason. So after some digging I found Blynk. It was simple to set up and starts writing your code for you. So it had the easy part down pat!

The down side is you are stuck with a black box API that is dependent on some vendor that may disappear at any time, and the true techie nerds will look down on me. Well that and I had to pay a little bit of money to add all the functionality I wanted. But in the end I figure it was a one time purchase that was under $20 and was worth it to have a solution.

Did I happen to mention that it was easy!

So this is a one-way street the way I implemented it. The Arduino is pushing data out to Blynk. If you wanted you could implement the changing of fermentor settings from the app on your phone. I really don't intend to go that route. The program modes should offer me enough flexibility to not require me re-writing a ton of code for that convenience. If I were starting from scratch then maybe.


The top of the screen shows the zone status of the fermentors + the actual and set temps. (F3 is off)


As you scroll down further you get the graphs of actual and set temps for each fermentor and the glycol chiller. There are a fair number of options they provide for customization. I may try to set it up as a dropdown that will display the graph for the selected zone. But this works for now.

Web connectivity was always just a bonus item for me. I had planned on using Google forms & Google Sheets to more or less do an online datalog. The Blynk app makes the information so much easier to access and read at a glance. I was truly blown away with how easy the implementation was given how nice it looks.

me=happy
 

Renslip99

New Member
Joined
Mar 25, 2017
Messages
1
Reaction score
0
This is an amazing setup! Well done! I am just looking at getting a conical fermenter and building an ac/glycol chiller and wanted to control it with Arduino so this couldn’t have been better timing for me. Hope to start sourcing some parts soon to start my build, and I’m sure I’ll have lots to learn during assembly.
 
OP
WilderBill

WilderBill

Member
Joined
Jan 11, 2014
Messages
13
Reaction score
8
Thanks, I'll be kegging everything in the 3 fermentors this weekend. Then I can get back at it and hopefully eradicate the remaining bugs.

After that I want to add bubble counters to the program. Then I can see the inputs (temperatures) and outputs (fermentation activity) real time on a graph. I'm thinking that the ramps later in fermentation can be triggered by logic coming from the bubble counter. Say at 60% of max fermentation activity start ramping from ferm temp to 72* at 2* per day.

The system works well, you'll be pleased. I'm really happy that a 5200 btu AC unit can keep the three fermentors at 40*f for weeks and only turn on 12 or 13 times a day.
 
Top