Humidistat
Arduino firmware for a humidistat (humidity controller)
Loading...
Searching...
No Matches
config.h File Reference
#include <Arduino.h>
#include <etl/span.h>
#include "Point.h"
#include "config_assert.h"
Include dependency graph for config.h:

Go to the source code of this file.

Namespaces

namespace  config
 Define either HUMIDISTAT_CONTROLLER_SINGLE or HUMIDISTAT_CONTROLLER_CASCADE. In the latter case, flow sensors must be connected to PIN_F1 and PIN_F2.
 

Variables

const uint32_t config::serialRate = 115200
 Serial communication symbol rate (baud)
 
const bool config::overrideEEPROM = false
 Set to true to override the values stored in EEPROM and use the default PID parameters defined below.
 
const uint8_t config::EEPROMAddress = 0
 EEPROM address for storing the block.
 
const uint16_t config::dt = 500
 Global interval for PID/logger (based on polling rate of sensor, in millis)
 
const double config::S_lowValue = 0.75
 Minimum solenoid duty cycle (deadband)
 
const double config::HC_totalFlowrate = 2
 Total flowrate (for cascade controller) (L/min)
 
const double config::a = 0.75
 Smoothing factor of EMA filter for derivative.
 
Humidity controller PID parameters
const double config::HC_Kp = 0.01
 
const double config::HC_Ki = 0.001
 
const double config::HC_Kd = 0.01
 
const double config::HC_Kf = 0.01
 
Flow controller PID parameters
const double config::FC_Kp = 0.005
 
const double config::FC_Ki = 0.05
 
const double config::FC_Kd = 0
 
const double config::FC_Kf = 0
 
const uint16_t config::FC_dt = 100
 
Setpoint profiles

Here you can define setpoint profiles (arrays of Points, which are pairs of a time and setpoint value). The Point arrays must be sorted in time. Enter the profiles in profiles, which is an array of SPProfiles (which takes a pair of a label string and span of Points)

const uint8_t config::interval = 20
 
const Point config::profile_tuningtest []
 
const SPProfile config::profiles []
 Setpoint profile definitions.
 
UI
const uint16_t config::buttonDebounceInterval = 500
 For debouncing: interval the keypad state must be stable for (in micros)
 
const uint16_t config::inputInterval = 200
 Repeat interval for keypress events (in millis)
 
const uint16_t config::blinkInterval = 500
 Interval for blinking display elements (in millis)
 
const uint16_t config::splashDuration = 2000
 Duration for which to show the splash screen (in millis)
 
const uint16_t config::infoDuration = 0
 Duration for which to show the info screen (in millis)
 
const uint16_t config::refreshInterval = 100
 Interval for updating the display (in millis)
 
const uint8_t config::adjustStep = 10
 Step size by which to in-/de-crement for coarse adjustment.
 
const double config::tolerance = 0.01
 Tolerance in difference between process variable and setpoint outside which the setpoint blinks (in percentage points)
 
For GraphicalDisplayUI:
const uint16_t config::longPressDuration = 500
 Duration for counting a press as 'long' (in millis)
 
const uint8_t config::configSaveCooldown = 20 * 1000 / refreshInterval
 Cooldown on saving the config to EEPROM (in refresh cycles)