Automated herms system

Hello everyone!

I am Alex, last year chemical engineering student. I am currently working on a project on brewing. It consists in measuring the influence of process parameters on grain fermented beverages.

To do so, we (my chemical engineering association and me) have been developing a brewing pilot plant for 50 liters (or 13.2 gal) of final product for the last two years. The plant works well so far, but the temperature control just doesn't exist.

So I'm in charge of developing a system for that purpose.

The process to control is the mashing. It consists in mixing the grain with hot water and waiting for one hour. At our level, we just add water slightly above the target mashing temperature so after mixing with the grain it will reach the target mashing temperature. We then hope that this temperature remains constant, but it is just not possible (it decreases about 4 degrees in an hour).

I intend to use an Arduino Uno board (we have it in my association already) to implement a Herms system (Heat Exchanged Recirculating Mash System)

This system consists in recirculating the wort with a pump trough a spiral heather exchanger located in the water heating tank, which will always have a higher temperature than the mashing.

My idea is to read te temperature with a two wired PT1000 temperature sensor (link) and when the temperature is below a certain set point, just turn on the pump (220V AC).

The thing is, I don't know much about electronic or control systems. Or Arduino...

So I have some questions:

Could you please tell me if this could work? Would I need any other equipment? Is it ok to use a PT1000 sensor, or is it better a three wired PT100, or another one? Do I need to get a LCD display, or can I use my computer?

If this could work, would you be able to give me some advice? I would be very thankful if you could send me some bibliography you think I should use to develop this system.

I would need to learn how to connect the PT1000 (or other temperature sensor) and the pump to the Arduino Uno, and how to code the application I just described (so mainly everything).

Thank you very much for reading,

Alex

This is certainly possible. With a relay you can turn on and off the pump. I used a 10k thermistor as temperature sensor.

I converted my freezer into a fridge this way. When the temperature rises to 8 degrees the relay closes and turns on the freezer. The temperature goes down, when it reaches 4 degrees it turns off again.

Hello, Bringamosa!

Thank you for your reply! I will keep this post alive as I advance on the project.

Hello!

have been working now for a couple of days and here are my advances:

I have managed to understand a bit of electronics and Arduino language. I am proud to say that I have been able to turn on a LED when the room temperature is below a certain set point, and turn it off when the temperature is above the certain point. This imitates what I would like to implement later, using a pump instead of the LED.

What lasts is only he hardware: I need to get a 5V - 240V relay and just connect it to the Arduino electronic output that I have set now for the LED.

On the other hand, I have one slight problem that I'd love you to help me with. I wanted to go a step further and allow the user to be able to change the set point in real time. I have managed to write the following code:

#define SERIESRESISTOR 10000    // value of known resistor
#define THERMISTORPIN A0 // set the input for reading the resistance of the thermistor 

void setup(void) {
  Serial.begin(9600);
  pinMode(LED_BUILTIN, OUTPUT) ; //output 13 is now working for the LED
 }
 
void loop(void) {
  float reading;
  float convert;
  float r;
  float set;
  reading = analogRead(THERMISTORPIN);
   r = SERIESRESISTOR / ((1023 / reading)  - 1);  // Formula to convert input to temperature
  Serial.print("Thermistor resistance "); 
  Serial.println(r);
  float t;
  t=(0.666)*(511-reading); //emprical equation (not final, I need to calibrate better)
    if (Serial.available())  { // If I write a number on the Series Monitor it gets stored in 'set'
  set = Serial.read();     
 }
  Serial.print("Temperatura: ");
  Serial.println(t);
  Serial.print("Set point: ");
  Serial.print(set);
 
  if(t>=set)//if temperature above set point
    {
      digitalWrite(LED_BUILTIN, LOW);
           
    }
    else if(t<=set)//if temperature below set point
    {
      digitalWrite(LED_BUILTIN, HIGH);
    }
  
  delay(1000);
}

I have written directly on the code the way I think it should work. However, the set point part is not working as described. No mater what number I send trough the serial monitor, the set point goes to 10 after a couple of loops, instead of waiting for another number.

I bet this has to do with the set point being read inside the loop, but I don't know where else to put it.

Could you please check the code and tell me if you are able to find a solution? Also, is the code correct for what I intended? (please note that this is my first time with Arduino)

Thank you very much!

P.S. If you have any trouble in understanding any of this post, just tell me and I'll try to explain better. English is not my mother language so I may have several grammar errors.

Move the declaration of set out of loop, i.e. make it a global.