From 3e5d29c218622416e582fa4a3d8a2848c15e2612 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Lino?= Date: Thu, 13 Aug 2015 00:33:41 +0100 Subject: [PATCH] added pump speed control into the stages. --- brew.ino | 33 ++++++++++++++++++++++++++++++--- 1 file changed, 30 insertions(+), 3 deletions(-) diff --git a/brew.ino b/brew.ino index 74c0282..0220407 100644 --- a/brew.ino +++ b/brew.ino @@ -42,6 +42,14 @@ //#define MIXER_PIN 12 //#define MIXER_MAX_POSITION 255 +// ++++++++++++++++++++++++ Pump ++++++++++++++++++++++++ +#define PUMP_PIN 6 +#define PUMP_SPEED_STOP 0 +#define PUMP_SPEED_SLOW 64 +#define PUMP_SPEED_AVERAGE 128 +#define PUMP_SPEED_FAST 192 +#define PUMP_SPEED_MAX 255 + // ++++++++++++++++++++++++ Rotary Encoder ++++++++++++++++++++++++ #define ROTARY_ENCODER_INTERRUPT_NUMBER 1 // On Mega2560 boards, interrupt 1 is on pin 3 #define ROTARY_ENCODER_CLK_PIN 3 // Used for generating interrupts using CLK signal @@ -170,6 +178,9 @@ int iWindowSize; // Time frame to operate in unsigned long windowStartTime; double dWattPerPulse; +// ++++++++++++++++++++++++ Pump ++++++++++++++++++++++++ +int iPumpSpeed; // Time frame to operate in + // ######################### INITIALIZE ######################### // ++++++++++++++++++++++++ Library - LiquidCrystal_I2C ++++++++++++++++++++++++ LiquidCrystal_I2C lcd(LCD_I2C_ADDR, LCD_EN_PIN, LCD_RW_PIN, LCD_RS_PIN, LCD_D4_PIN, LCD_D5_PIN, LCD_D6_PIN, LCD_D7_PIN); @@ -279,6 +290,7 @@ void isr () { // Interrupt service routine is executed when a HIGH to LOW tr // ######################### START ######################### void xSafeHardwarePowerOff() { // analogWrite(MIXER_PIN, 0); // Turn mixer OFF for safety + analogWrite(PUMP_PIN, PUMP_SPEED_STOP); // analogWrite values from 0 to 255 digitalWrite(HEATING_ELEMENT_OUTPUT_PIN, LOW); // Turn heading element OFF for safety //basePT100.xSafeHardwarePowerOff(); // Turn temperature sensor OFF for safety } @@ -305,6 +317,11 @@ void setup() { // pinMode (MIXER_PIN, OUTPUT); // analogWrite (MIXER_PIN, 0); + // ++++++++++++++++++++++++ Pump ++++++++++++++++++++++++ + pinMode(PUMP_PIN, OUTPUT); // sets the pin as output + iPumpSpeed = PUMP_SPEED_STOP; // Time frame to operate in + analogWrite(PUMP_PIN, iPumpSpeed); // analogWrite values from 0 to 255 + // ++++++++++++++++++++++++ Temperature Sensor PT100 ++++++++++++++++++++++++ //basePT100.setup(); /* @@ -888,9 +905,9 @@ void MainMenu_Cooling() { } void MainMenu_Settings() { + iPumpSpeed = xSetGenericValue( iPumpSpeed, 0, 255, "Pump Speed", "PWM" ); backToStatus(); - } void MainMenu_Back() { @@ -982,11 +999,15 @@ bool xRegulateTemperature() { } } +bool xRegulatePumpSpeed() { + analogWrite(PUMP_PIN, iPumpSpeed); // analogWrite values from 0 to 255 +} + void xWarnClockEnded() { /// TODO } -void xStageFirstRun( int stageTime, int stageTemperature ) { +void xStageFirstRun( int stageTime, int stageTemperature, int stagePumpSpeed ) { // Set the clock cookTime = stageTime; @@ -996,6 +1017,9 @@ void xStageFirstRun( int stageTime, int stageTemperature ) { // Reset the clock clockStartTime = millis(); clockIgnore = 0; + + // Set the pump speed + iPumpSpeed = stagePumpSpeed; } void xTransitionIntoStage_GlobalVariables(eCookingStages nextStage) { @@ -1030,7 +1054,7 @@ void xBasicStageOperation( int iStageTime, int iStageTemperature, int iStageTemp return; } else { // Set the clock, target temperature and Reset the clock - xStageFirstRun( iStageTime, iStageTemperature ); + xStageFirstRun( iStageTime, iStageTemperature, PUMP_SPEED_SLOW ); } } else { // Account for time spent at the target temperature | Input 1: range in ÂșC within which the target temperature is considered to be reached @@ -1039,6 +1063,9 @@ void xBasicStageOperation( int iStageTime, int iStageTemperature, int iStageTemp if( isTimeLeft() ) { // Do temperature control xRegulateTemperature(); + + // Do flow control + xRegulatePumpSpeed(); } else { // Continue to the next stage -- 2.24.1