|
1 #ifndef _TASK_DRIVER_H |
|
2 #define _TASK_DRIVER_H |
|
3 |
|
4 /** |
|
5 * @file task_driver.h |
|
6 * @brief The interface to the FreeRTOS driver task. This task drives the Solid |
|
7 * State Relays (SSR) to power the Mash Lauter Tun (MLT) and the Hot |
|
8 * Liquer Tank (HLT) heating elements. It also controls the pump relay. |
|
9 * |
|
10 * It takes the temperature readings from the DS18B20 task. |
|
11 */ |
|
12 |
|
13 |
|
14 typedef enum { |
|
15 MLT_MODE_NONE = 0, ///< Not active |
|
16 MLT_MODE_BANG = 1, ///< Bang on/off mode |
|
17 MLT_MODE_PID = 2, ///< PID mode |
|
18 MLT_MODE_OFF = 3, ///< Off but show setpoint |
|
19 MLT_MODE_EXT = 4, ///< External regulation |
|
20 } MLT_MODE_TYPE; |
|
21 |
|
22 typedef enum { |
|
23 HLT_MODE_NONE = 0, ///< Not active |
|
24 HLT_MODE_BANG = 1, ///< Bang on/off mode |
|
25 HLT_MODE_OFF = 2, ///< Off but show setpoint |
|
26 HLT_MODE_ON = 3, ///< On if free |
|
27 } HLT_MODE_TYPE; |
|
28 |
|
29 |
|
30 /** |
|
31 * @brief Structure containing the information of the driver task. |
|
32 */ |
|
33 typedef struct { |
|
34 bool enable; ///< Enable outputs |
|
35 int mlt_gpio; ///< MLT SSR GPIO pin |
|
36 int mlt_mode; ///< MLT Mode: 0 = off, 1 = bang on/off, 2 = PID, 3 = cooling |
|
37 double mlt_sp; ///< Setpoint MLT temperature |
|
38 double mlt_pv; ///< Current MLT temperature |
|
39 int mlt_power; ///< Current MLT drive power % |
|
40 int hlt_gpio; ///< HLT SSR GPIO pin |
|
41 int hlt_mode; ///< HLT Mode: 0 = off, 1 = bang on/off, 2 = always on |
|
42 double hlt_sp; ///< Setpoint HLT temperature |
|
43 double hlt_pv; ///< Current HLT temperature |
|
44 int hlt_power; ///< Current HLT drive power % |
|
45 bool hlt_and_mlt; ///< True if both MLT and HLT are allowed at the same time. |
|
46 int pump_gpio; ///< Pump SSR GPIO pin |
|
47 int pump_run; ///< Pump on/off |
|
48 } DRIVER_State; |
|
49 |
|
50 |
|
51 /** |
|
52 * @brief FreeRTOS driver task. This task drives the Solid |
|
53 * State Relays (SSR) to power the Mash Lauter Tun (MLT) and the Hot |
|
54 * Liquer Tank (HLT) heating elements. It also controls the pump relay. |
|
55 */ |
|
56 void task_driver(void *); |
|
57 |
|
58 #endif |
|
59 |