diff --git a/lambda/airgate.c b/lambda/airgate.c index 0df4769..8629518 100644 --- a/lambda/airgate.c +++ b/lambda/airgate.c @@ -111,7 +111,7 @@ return 0; } - return 100 / (AIRGATE_OPEN / getAirgate()); + return 100000 / ((AIRGATE_OPEN * 1000UL) / getAirgate()); } bool isAirgateBusy(void) { diff --git a/lambda/airgate.h b/lambda/airgate.h index 6838014..0dfa80b 100644 --- a/lambda/airgate.h +++ b/lambda/airgate.h @@ -9,14 +9,14 @@ #define AIRGATE_H_ /** Min value 1 */ -#define MIN_SPEED 50 +#define MIN_SPEED 200 /** Max value 255 for 8 bit timer and 65535 for 16 bit timer */ #define MAX_SPEED 250 #define AIRGATE_CLOSE 0 -#define AIRGATE_25 25 -#define AIRGATE_50 50 -#define AIRGATE_OPEN 100 +#define AIRGATE_25 15 +#define AIRGATE_50 30 +#define AIRGATE_OPEN 60 /** * 1 = full step, 2 = half step, 3 = 1/4 step, 4 = 8 microsteps, ... diff --git a/lambda/rules.c b/lambda/rules.c index 0448733..a019959 100644 --- a/lambda/rules.c +++ b/lambda/rules.c @@ -210,20 +210,14 @@ /** * Switches the heater off if it is on for a while and there does not seem - * to be a fire. + * to be a fire. Also closes the airgate. */ static void heaterTimeout(bool* const fired, Measurement const meas) { if (getHeaterState() == heaterStateOff || getHeaterState() == heaterStateFault) { return; } - uint32_t heaterUptime = getHeaterUptime(); - if (heaterUptime >= 1800 && meas.tempI < TEMP_FIRE_OUT && - meas.lambda >= LAMBDA_MAX) { - setHeaterState(heaterStateOff); - closeAirgateAndSleep(); - } - if (heaterUptime >= 10800 && meas.tempI < TEMP_AIRGATE_0 && + if (getHeaterUptime() >= 1800 && meas.tempI < TEMP_FIRE_OUT && meas.lambda >= LAMBDA_MAX) { setHeaterState(heaterStateOff); closeAirgateAndSleep();