Hello everyone, first time poster, long time creeper of the site. My name is Mike and I'd like to call myself a tinkerer/DIYer.
My goal is to create a solar-powered mobile nano-brewery and fermentation system. That way I don't need to pay for land/rent, taxes, ventilation, utility costs, etc. Kind of ambitious, I know, but I've done a lot of research and I know it's possible!! I just need to spend the money and take the time to put everything together. To establish initial street cred, I'll have you know that I've already modified a stainless steel half barrel keg into an electric mash tun outfitted with a 240v 3500w heating element, custom false bottom, and welded faucet for emptying. Outside I've got the heating element controlled by a PID with a relay. I wired it all myself by blending a couple YouTube projects together. I'm really excited about my achievements so far and I really need your help going forward. My roommate is much more familiar with Arduino than myself so he's willing to help, but he wanted me to get more info from this forum first. I can also provide pictures if people are interested. Anyway, I'll just jump right in then!
So, in brewing there's the "hot side", which I just described above. Grain is essentially steeped in hot water and then boiled to sterilize. Then the wort is cooled down to yeast pitching temperature (below about 90 degrees F) and then a chilling controller brings the fermenter down to 70s and 80s for wine/champagne, 60s and 70s for ales, 40s and 50s for lagers. I wanna make lagers... This is where the "cold side" comes in, where the wort is cooled so that the specific yeast you want to take hold can survive/thrive. This is where I need your help: I have a 9 gallon all-stainless steel conical hopper with sanitary fittings--one of which has a ds18b20 temp sensor on the inside of the vessel--and a copper coil I had welded on the outside so as to act like a "jacketed" fermenter cooled with a glycol chilling system by pumping cold glycol-water inside and through the copper tubing surrounding the outside of the fermenter, thereby, thermodynamically pulling out the heat from the inside of the fermenter and recirculating it back into the DIY glycol chilling system. The idea is to get as cold as possible for as cheap as possible hahah. I've seen online DIY glycol chillers using a window a/c unit's cold side in a cooler filled with water. The water get's cold and a submersible pump pumps the cold water inside and through the copper tubing, returning to the cooler to be cooled again repeating the process over again. It's not the most glamourous setup but it's at least half as expensive as an actual Glycol chilling system you might get from a manufacture. Here's a video of what I'm talking about, where a guy uses a Ranco controller: DIY Glycol Chiller - YouTube
If my concept is viable, (which based on some youtube videos, it is in theory!!), I want to be able to add more fermenters using the one DIY glycol chilling system, one Arduino. So, basically, a submergible pump (with constant flow) will be interrupted by a solenoid valve which controls the flow of glycol-water going to one of the 3+ fermenters. The Arduino will match temperature with solenoid valve "openness". So I'm imagining if I want the temp inside the fermenter to be 45 degrees, this will correspond to a solenoid valve openness of "25%", something like that.
I know I'll need some form of the code below which I ripped from this website: Guide for DS18B20 Temperature Sensor with Arduino | Random Nerd Tutorials
How would I prompt the Arduino to tell solenoid valve #1 to open or close depending on temperature sensor #1? How similar or dissimilar will the code be in comparison to the "Garduino" projects I've seen?
void setup(void) {
// start serial port
Serial.begin(9600);
// Start up the library
sensors.begin();
// Grab a count of devices on the wire
numberOfDevices = sensors.getDeviceCount();
// locate devices on the bus
Serial.print("Locating devices...");
Serial.print("Found ");
Serial.print(numberOfDevices, DEC);
Serial.println(" devices.");
// Loop through each device, print out address
for(int i=0;i<numberOfDevices; i++) {
// Search the wire for address
if(sensors.getAddress(tempDeviceAddress, i)) { // Finds the sensors' addresses
Serial.print("Found device ");
Serial.print(i, DEC);
Serial.print(" with address: ");
printAddress(tempDeviceAddress);
Serial.println();
} else {
Serial.print("Found ghost device at ");
Serial.print(i, DEC);
Serial.print(" but could not detect address. Check power and cabling");
}
}
}
void loop(void) {
sensors.requestTemperatures(); // Send the command to get temperatures
// Loop through each device, print out temperature data
for(int i=0;i<numberOfDevices; i++) {
// Search the wire for address
if(sensors.getAddress(tempDeviceAddress, i)){
// Output the device ID
Serial.print("Temperature for device: ");
Serial.println(i,DEC);
// Print the data
float tempC = sensors.getTempC(tempDeviceAddress); // Accepts as argument the device address from specific sensors
Serial.print("Temp C: ");
Serial.print(tempC);
Serial.print(" Temp F: ");
Serial.println(DallasTemperature::toFahrenheit(tempC)); // Converts tempC to Fahrenheit
}
}
delay(5000);
}
// function to print a device address
void printAddress(DeviceAddress deviceAddress) {
for (uint8_t i = 0; i < 8; i++) {
if (deviceAddress[i] < 16) Serial.print("0");
Serial.print(deviceAddress[i], HEX);
}
}