Skip to content

Commit

Permalink
remove more SW Brew detection and cleanup
Browse files Browse the repository at this point in the history
remove more SW brew detection stuff
Rename brewtimesoftware to brewPidTime to clarify its function

clang formated
  • Loading branch information
LoQue90 committed Sep 7, 2024
1 parent 8776d8a commit eeb4861
Show file tree
Hide file tree
Showing 6 changed files with 56 additions and 86 deletions.
3 changes: 1 addition & 2 deletions src/brewHandler.h
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ uint8_t currBrewSwitchStateMomentary = LOW;
int brewSwitchState = kBrewSwitchIdle;
boolean brewSwitchWasOff = false;

int brewOn = 0; // flag is set if brew was detected
int brewOn = 0; // flag is set if brew was detected
double totalBrewTime = 0; // total brewtime set in software
double timeBrewed = 0; // total brewed time
double lastBrewTimeMillis = 0; // for shottimer delay after disarmed button
Expand Down Expand Up @@ -263,7 +263,6 @@ void brewTimer() {
}
#endif


#if (FEATURE_BREWCONTROL == 1)
/**
* @brief Time base brew mode
Expand Down
9 changes: 3 additions & 6 deletions src/defaults.h
Original file line number Diff line number Diff line change
Expand Up @@ -37,9 +37,8 @@ int writeSysParamsToStorage(void);
#define AGGBTN 0 // PID Tn (brew detection phase)
#define AGGBTV 20 // PID Tv (brew detection phase)
#define BREW_TIME 25 // brew time in seconds (only used if pump is being controlled)
#define BREW_SW_TIME 25 // keep brew PID params for this many seconds after detection (only for software BD)
#define BREW_PID_TIME 25 // keep brew PID params for this many seconds after detection
#define BREW_PID_DELAY 10 // delay until enabling PID controller during brew (no heating during this time)
#define BD_SENSITIVITY 120 // brew detection sensitivity, be careful: if too low, then there is the risk of wrong brew detection and rising temperature
#define PRE_INFUSION_TIME 2 // pre-infusion time in seconds
#define PRE_INFUSION_PAUSE_TIME 5 // pre-infusion pause time in seconds
#define SCALE_WEIGHTSETPOINT 30 // Target weight in grams
Expand Down Expand Up @@ -77,10 +76,8 @@ int writeSysParamsToStorage(void);
#define BREW_TIME_MAX 180
#define BREW_PID_DELAY_MIN 0
#define BREW_PID_DELAY_MAX 60
#define BREW_SW_TIME_MIN 1
#define BREW_SW_TIME_MAX 180
#define BD_THRESHOLD_MIN 0
#define BD_THRESHOLD_MAX 999
#define BREW_PID_TIME_MIN 1
#define BREW_PID_TIME_MAX 180
#define PRE_INFUSION_TIME_MIN 0
#define PRE_INFUSION_TIME_MAX 60
#define PRE_INFUSION_PAUSE_MIN 0
Expand Down
2 changes: 1 addition & 1 deletion src/embeddedWebserver.h
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,7 @@ void serverSetup();
void setEepromWriteFcn(int (*fcnPtr)(void));

// editable vars are specified in main.cpp
#define EDITABLE_VARS_LEN 33
#define EDITABLE_VARS_LEN 31
extern std::map<String, editable_t> editableVars;

// EEPROM
Expand Down
68 changes: 24 additions & 44 deletions src/main.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -215,9 +215,8 @@ double aggbKi = aggbKp / aggbTn;
#endif

double aggbKd = aggbTv * aggbKp;
double brewtimesoftware = BREW_SW_TIME; // use userConfig time until disabling BD PID
double brewSensitivity = BD_SENSITIVITY; // use userConfig brew detection sensitivity
double brewPIDDelay = BREW_PID_DELAY; // use userConfig brew detection PID delay
double brewPidTime = BREW_PID_TIME; // Time while Brew PID is running
double brewPIDDelay = BREW_PID_DELAY; // Time PID will be disabled after brew started

uint8_t standbyModeOn = 0;
double standbyModeTime = STANDBY_MODE_TIME;
Expand All @@ -241,8 +240,7 @@ SysPara<double> sysParaTempOffset(&brewTempOffset, BREW_TEMP_OFFSET_MIN, BREW_TE
SysPara<double> sysParaBrewPIDDelay(&brewPIDDelay, BREW_PID_DELAY_MIN, BREW_PID_DELAY_MAX, STO_ITEM_BREW_PID_DELAY);
SysPara<uint8_t> sysParaUseBDPID(&useBDPID, 0, 1, STO_ITEM_USE_BD_PID);
SysPara<double> sysParaBrewTime(&brewTime, BREW_TIME_MIN, BREW_TIME_MAX, STO_ITEM_BREW_TIME);
SysPara<double> sysParaBrewSwTime(&brewtimesoftware, BREW_SW_TIME_MIN, BREW_SW_TIME_MAX, STO_ITEM_BREW_SW_TIME);
SysPara<double> sysParaBrewThresh(&brewSensitivity, BD_THRESHOLD_MIN, BD_THRESHOLD_MAX, STO_ITEM_BD_THRESHOLD);
SysPara<double> sysParaBrewSwTime(&brewPidTime, BREW_PID_TIME_MIN, BREW_PID_TIME_MAX, STO_ITEM_BREW_PID_TIME);
SysPara<uint8_t> sysParaWifiCredentialsSaved(&wifiCredentialsSaved, 0, 1, STO_ITEM_WIFI_CREDENTIALS_SAVED);
SysPara<double> sysParaPreInfTime(&preinfusion, PRE_INFUSION_TIME_MIN, PRE_INFUSION_TIME_MAX, STO_ITEM_PRE_INFUSION_TIME);
SysPara<double> sysParaPreInfPause(&preinfusionPause, PRE_INFUSION_PAUSE_MIN, PRE_INFUSION_PAUSE_MAX, STO_ITEM_PRE_INFUSION_PAUSE);
Expand Down Expand Up @@ -606,11 +604,10 @@ void handleMachineState() {

case kBrew:

if (currBrewState == kBrewIdle || currBrewState == kWaitBrewOff)
{
if (currBrewState == kBrewIdle || currBrewState == kWaitBrewOff) {
// delay shot timer display for voltage sensor or hw brew toggle switch (brew counter)
machineState = kShotTimerAfterBrew;
lastBrewTimeMillis = millis(); // for delay
lastBrewTimeMillis = millis(); // for delay
}

if (steamON == 1) {
Expand Down Expand Up @@ -1203,37 +1200,22 @@ void setup() {
.section = sBDSection,
.position = 23,
.show = [] { return true && FEATURE_BREWSWITCH == 1 && useBDPID; },
.minValue = BREW_SW_TIME_MIN,
.maxValue = BREW_SW_TIME_MAX,
.ptr = (void*)&brewtimesoftware};

editableVars["STEAM_MODE"] = {.displayName = F("Steam Mode"),
.hasHelpText = false,
.helpText = "",
.type = kUInt8,
.section = sOtherSection,
.position = 25, .show = [] { return false; },
.minValue = 0,
.maxValue = 1,
.ptr = (void*)&steamON};

editableVars["BACKFLUSH_ON"] = {.displayName = F("Backflush"),
.hasHelpText = false,
.helpText = "",
.type = kUInt8,
.section = sOtherSection,
.position = 26,
.show = [] { return false; },
.minValue = 0,
.maxValue = 1,
.ptr = (void*)&backflushOn};
.minValue = BREW_PID_TIME_MIN,
.maxValue = BREW_PID_TIME_MAX,
.ptr = (void*)&brewPidTime};

editableVars["STEAM_MODE"] = {
.displayName = F("Steam Mode"), .hasHelpText = false, .helpText = "", .type = kUInt8, .section = sOtherSection, .position = 24, .show = [] { return false; }, .minValue = 0, .maxValue = 1, .ptr = (void*)&steamON};

editableVars["BACKFLUSH_ON"] = {
.displayName = F("Backflush"), .hasHelpText = false, .helpText = "", .type = kUInt8, .section = sOtherSection, .position = 25, .show = [] { return false; }, .minValue = 0, .maxValue = 1, .ptr = (void*)&backflushOn};

editableVars["STANDBY_MODE_ON"] = {.displayName = F("Enable Standby Timer"),
.hasHelpText = true,
.helpText = F("Turn heater off after standby time has elapsed."),
.type = kUInt8,
.section = sPowerSection,
.position = 27,
.position = 26,
.show = [] { return true; },
.minValue = 0,
.maxValue = 1,
Expand All @@ -1244,7 +1226,7 @@ void setup() {
.helpText = F("Time in minutes until the heater is turned off. Timer is reset by brew detection."),
.type = kDouble,
.section = sPowerSection,
.position = 28,
.position = 27,
.show = [] { return true; },
.minValue = STANDBY_MODE_TIME_MIN,
.maxValue = STANDBY_MODE_TIME_MAX,
Expand All @@ -1259,7 +1241,7 @@ void setup() {
.helpText = "",
.type = kUInt8,
.section = sScaleSection,
.position = 30,
.position = 28,
.show = [] { return false; },
.minValue = 0,
.maxValue = 1,
Expand All @@ -1270,7 +1252,7 @@ void setup() {
.helpText = "",
.type = kFloat,
.section = sScaleSection,
.position = 31,
.position = 29,
.show = [] { return true; },
.minValue = 0,
.maxValue = 2000,
Expand All @@ -1281,7 +1263,7 @@ void setup() {
.helpText = "",
.type = kFloat,
.section = sScaleSection,
.position = 32,
.position = 30,
.show = [] { return true; },
.minValue = -100000,
.maxValue = 100000,
Expand All @@ -1292,7 +1274,7 @@ void setup() {
.helpText = "",
.type = kFloat,
.section = sScaleSection,
.position = 32,
.position = 31,
.show = [] { return SCALE_TYPE == 0; },
.minValue = -100000,
.maxValue = 100000,
Expand Down Expand Up @@ -1578,7 +1560,7 @@ void looppid() {
LOGF(TRACE, "Current PID Output: %f", pidOutput);
LOGF(TRACE, "Current Machinestate: %s", machinestateEnumToString(machineState));
LOGF(TRACE, "timeBrewed %f", timeBrewed);
LOGF(TRACE, "brewtimesoftware %f", brewtimesoftware);
LOGF(TRACE, "Brew PID time %f", brewPidTime);
LOGF(TRACE, "Brew detected %i", brewOn);
}
}
Expand All @@ -1589,11 +1571,11 @@ void looppid() {
#endif

#if (FEATURE_BREWSWITCH == 1)
#if (FEATURE_BREWCONTROLL == 0)
#if (FEATURE_BREWCONTROLL == 0)
brewTimer();
#elif
#elif
brew();
#endif
#endif
#endif

#if (FEATURE_PRESSURESENSOR == 1)
Expand Down Expand Up @@ -1833,7 +1815,6 @@ int readSysParamsFromStorage(void) {
if (sysParaPidTvBd.getStorage() != 0) return -1;
if (sysParaBrewTime.getStorage() != 0) return -1;
if (sysParaBrewSwTime.getStorage() != 0) return -1;
if (sysParaBrewThresh.getStorage() != 0) return -1;
if (sysParaPreInfTime.getStorage() != 0) return -1;
if (sysParaPreInfPause.getStorage() != 0) return -1;
if (sysParaPidKpSteam.getStorage() != 0) return -1;
Expand Down Expand Up @@ -1872,7 +1853,6 @@ int writeSysParamsToStorage(void) {
if (sysParaPidTvBd.setStorage() != 0) return -1;
if (sysParaBrewTime.setStorage() != 0) return -1;
if (sysParaBrewSwTime.setStorage() != 0) return -1;
if (sysParaBrewThresh.setStorage() != 0) return -1;
if (sysParaPreInfTime.setStorage() != 0) return -1;
if (sysParaPreInfPause.setStorage() != 0) return -1;
if (sysParaPidKpSteam.setStorage() != 0) return -1;
Expand Down
20 changes: 7 additions & 13 deletions src/storage.h
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,6 @@ typedef enum {
STO_ITEM_BREW_TIME, // brew time
STO_ITEM_BREW_SW_TIME, // brew software time
STO_ITEM_BREW_PID_DELAY, // brew PID delay
STO_ITEM_BD_THRESHOLD, // brew detection limit
STO_ITEM_WIFI_CREDENTIALS_SAVED, // flag for wifisetup
STO_ITEM_PRE_INFUSION_TIME, // pre-infusion time
STO_ITEM_PRE_INFUSION_PAUSE, // pre-infusion pause
Expand Down Expand Up @@ -91,10 +90,10 @@ typedef struct __attribute__((packed)) {
uint8_t freeToUse8[2];
double pidTvBd;
uint8_t freeToUse9[2];
double brewSwTimeSec;
double brewPidTimeSec;
double brewPIDDelaySec;
uint8_t freeToUse10;
double brewDetectionThreshold;
double freeToUse11;
uint8_t wifiCredentialsSaved;
uint8_t useStartPonM;
double pidKpStart;
Expand Down Expand Up @@ -138,10 +137,10 @@ static const sto_data_t itemDefaults PROGMEM = {
{0xFF, 0xFF}, // free to use
AGGBTV, // STO_ITEM_PID_TV_BD
{0xFF, 0xFF}, // free to use
BREW_SW_TIME, // STO_ITEM_BREW_SW_TIME
BREW_PID_TIME, // STO_ITEM_BREW_PID_TIME
BREW_PID_DELAY, // STO_ITEM_BREW_PID_DELAY
0xFF, // free to use
BD_SENSITIVITY, // STO_ITEM_BD_THRESHOLD
0xFF, // free to use
WIFI_CREDENTIALS_SAVED, // STO_ITEM_WIFI_CREDENTIALS_SAVED
0, // STO_ITEM_USE_START_PON_M
STARTKP, // STO_ITEM_PID_KP_START
Expand Down Expand Up @@ -244,14 +243,9 @@ static inline int32_t getItemAddr(sto_item_id_t itemId, uint16_t* maxItemSize =
size = STRUCT_MEMBER_SIZE(sto_data_t, pidTvBd);
break;

case STO_ITEM_BREW_SW_TIME:
addr = offsetof(sto_data_t, brewSwTimeSec);
size = STRUCT_MEMBER_SIZE(sto_data_t, brewSwTimeSec);
break;

case STO_ITEM_BD_THRESHOLD:
addr = offsetof(sto_data_t, brewDetectionThreshold);
size = STRUCT_MEMBER_SIZE(sto_data_t, brewDetectionThreshold);
case STO_ITEM_BREW_PID_TIME:
addr = offsetof(sto_data_t, brewPidTimeSec);
size = STRUCT_MEMBER_SIZE(sto_data_t, brewPidTimeSec);
break;

case STO_ITEM_WIFI_CREDENTIALS_SAVED:
Expand Down
40 changes: 20 additions & 20 deletions src/userConfig_sample.h
Original file line number Diff line number Diff line change
Expand Up @@ -50,26 +50,26 @@ enum MACHINE {
#define WIFICONNECTIONDELAY 10000 // delay between reconnects in ms

// PID & Hardware
#define FEATURE_BREWCONTROL 0 // 0 = deactivated, 1 = activated
#define FEATURE_POWERSWITCH 0 // 0 = deactivated, 1 = activated
#define POWERSWITCH_TYPE Switch::TOGGLE // Switch::TOGGLE or Switch::MOMENTARY (trigger)
#define POWERSWITCH_MODE Switch::NORMALLY_OPEN // Switch::NORMALLY_OPEN or Switch::NORMALLY_CLOSED
#define FEATURE_BREWSWITCH 0 // 0 = deactivated, 1 = activated
#define BREWSWITCH_TYPE Switch::TOGGLE // Switch::TOGGLE or Switch::MOMENTARY (trigger)
#define BREWSWITCH_MODE Switch::NORMALLY_OPEN // Switch::NORMALLY_OPEN or Switch::NORMALLY_CLOSED
#define FEATURE_STEAMSWITCH 0 // 0 = deactivated, 1 = activated
#define STEAMSWITCH_TYPE Switch::TOGGLE // Switch::TOGGLE or Switch::MOMENTARY (trigger)
#define OPTOCOUPLER_TYPE HIGH // BREWDETECTION 3 configuration; HIGH or LOW trigger optocoupler
#define STEAMSWITCH_MODE Switch::NORMALLY_OPEN // Switch::NORMALLY_OPEN or Switch::NORMALLY_CLOSED
#define HEATER_SSR_TYPE Relay::HIGH_TRIGGER // HIGH_TRIGGER = relay switches when input is HIGH, vice versa for LOW_TRIGGER
#define PUMP_VALVE_SSR_TYPE Relay::HIGH_TRIGGER // HIGH_TRIGGER = relay switches when input is HIGH, vice versa for LOW_TRIGGER
#define FEATURE_STATUS_LED 0 // Blink status LED when temp is in range, 0 = deactivated, 1 = activated
#define FEATURE_BREW_LED 0 // Turn on brew LED when brew is started, 0 = deactivated, 1 = activated
#define LED_TYPE LED::STANDARD // STANDARD_LED for an LED connected to a GPIO pin, WS2812 for adressable LEDs
#define FEATURE_WATER_SENS 0 // 0 = deactivated, 1 = activated
#define WATER_SENS_TYPE Switch::NORMALLY_CLOSED // Switch::NORMALLY_CLOSED for sensor XKC-Y25-NPN or Switch::NORMALLY_OPEN for XKC-Y25-PNP

#define FEATURE_PRESSURESENSOR 0 // 0 = deactivated, 1 = activated
#define FEATURE_BREWCONTROL 0 // 0 = deactivated, 1 = activated
#define FEATURE_POWERSWITCH 0 // 0 = deactivated, 1 = activated
#define POWERSWITCH_TYPE Switch::TOGGLE // Switch::TOGGLE or Switch::MOMENTARY (trigger)
#define POWERSWITCH_MODE Switch::NORMALLY_OPEN // Switch::NORMALLY_OPEN or Switch::NORMALLY_CLOSED
#define FEATURE_BREWSWITCH 0 // 0 = deactivated, 1 = activated
#define BREWSWITCH_TYPE Switch::TOGGLE // Switch::TOGGLE or Switch::MOMENTARY (trigger)
#define BREWSWITCH_MODE Switch::NORMALLY_OPEN // Switch::NORMALLY_OPEN or Switch::NORMALLY_CLOSED
#define FEATURE_STEAMSWITCH 0 // 0 = deactivated, 1 = activated
#define STEAMSWITCH_TYPE Switch::TOGGLE // Switch::TOGGLE or Switch::MOMENTARY (trigger)
#define OPTOCOUPLER_TYPE HIGH // BREWDETECTION 3 configuration; HIGH or LOW trigger optocoupler
#define STEAMSWITCH_MODE Switch::NORMALLY_OPEN // Switch::NORMALLY_OPEN or Switch::NORMALLY_CLOSED
#define HEATER_SSR_TYPE Relay::HIGH_TRIGGER // HIGH_TRIGGER = relay switches when input is HIGH, vice versa for LOW_TRIGGER
#define PUMP_VALVE_SSR_TYPE Relay::HIGH_TRIGGER // HIGH_TRIGGER = relay switches when input is HIGH, vice versa for LOW_TRIGGER
#define FEATURE_STATUS_LED 0 // Blink status LED when temp is in range, 0 = deactivated, 1 = activated
#define FEATURE_BREW_LED 0 // Turn on brew LED when brew is started, 0 = deactivated, 1 = activated
#define LED_TYPE LED::STANDARD // STANDARD_LED for an LED connected to a GPIO pin, WS2812 for adressable LEDs
#define FEATURE_WATER_SENS 0 // 0 = deactivated, 1 = activated
#define WATER_SENS_TYPE Switch::NORMALLY_CLOSED // Switch::NORMALLY_CLOSED for sensor XKC-Y25-NPN or Switch::NORMALLY_OPEN for XKC-Y25-PNP

#define FEATURE_PRESSURESENSOR 0 // 0 = deactivated, 1 = activated

// Brew Scale
#define FEATURE_SCALE 0 // 0 = deactivated, 1 = activated
Expand Down

0 comments on commit eeb4861

Please sign in to comment.