para el ventilador

Dependencies:   QEI FastPWM

Committer:
miguelangelpachas
Date:
Fri May 15 20:40:44 2020 +0000
Revision:
13:e0a6033cb39d
Parent:
12:3bc2465b034a
para el ventilador

Who changed what in which revision?

UserRevisionLine numberNew contents of line
miguelangel_2511 0:9d0b9785d3d6 1
miguelangel_2511 0:9d0b9785d3d6 2 #ifndef PROJECT_DEFINES_H_
miguelangel_2511 0:9d0b9785d3d6 3 #define PROJECT_DEFINES_H_
miguelangel_2511 0:9d0b9785d3d6 4
miguelangel_2511 11:5cb7ae8bd831 5 /******************************************************************************/
miguelangel_2511 11:5cb7ae8bd831 6 /*************************** PIN DEFINITION ***********************************/
miguelangel_2511 11:5cb7ae8bd831 7 /******************************************************************************/
miguelangel_2511 0:9d0b9785d3d6 8
miguelangel_2511 12:3bc2465b034a 9 // Switches, buttons and digital sensors
miguelangel_2511 0:9d0b9785d3d6 10 #define ENTER_SW_PIN PA_15
miguelangel_2511 0:9d0b9785d3d6 11 #define LIMIT_SW_01_PIN PB_7
miguelangel_2511 12:3bc2465b034a 12 #define INSPIRATION_VALVE_HALL_01_PIN PA_10
miguelangel_2511 12:3bc2465b034a 13 #define INSPIRATION_VALVE_HALL_02_PIN PB_3
miguelangel_2511 12:3bc2465b034a 14 #define EXPIRATION_VALVE_HALL_01_PIN PA_9
miguelangel_2511 12:3bc2465b034a 15 #define EXPIRATION_VALVE_HALL_02_PIN PC_7
miguelangel_2511 0:9d0b9785d3d6 16
miguelangel_2511 0:9d0b9785d3d6 17 // Rotary encoder
miguelangel_2511 0:9d0b9785d3d6 18 #define ENCODER_A_SIGNAL PA_13
miguelangel_2511 0:9d0b9785d3d6 19 #define ENCODER_B_SIGNAL PA_14
miguelangel_2511 0:9d0b9785d3d6 20
miguelangel_2511 6:d38287621cca 21 //Nextion display
miguelangel_2511 7:f4e248182d31 22 #define NEXTION_DISPLAY_TX_PIN PC_10
miguelangel_2511 7:f4e248182d31 23 #define NEXTION_DISPLAY_RX_PIN PC_11
miguelangel_2511 7:f4e248182d31 24
miguelangel_2511 7:f4e248182d31 25 // Pressure sensors
miguelangel_2511 8:208d965a3bd2 26 #define PRESSURE_SENSOR_01_SCL_PIN PB_10
miguelangel_2511 8:208d965a3bd2 27 #define PRESSURE_SENSOR_01_SDA_PIN PB_11
miguelangel_2511 8:208d965a3bd2 28 #define PRESSURE_SENSOR_02_SCL_PIN PB_8
miguelangel_2511 8:208d965a3bd2 29 #define PRESSURE_SENSOR_02_SDA_PIN PB_9
miguelangel_2511 0:9d0b9785d3d6 30
miguelangel_2511 11:5cb7ae8bd831 31
miguelangel_2511 11:5cb7ae8bd831 32 // Stepper motor
miguelangel_2511 0:9d0b9785d3d6 33 #define STEPPER_PULSE_PIN PC_8
miguelangel_2511 0:9d0b9785d3d6 34 #define STEPPER_ENABLE_PIN PC_6
miguelangel_2511 0:9d0b9785d3d6 35 #define STEPPER_DIRECTION_PIN PC_5
miguelangel_2511 1:aa5df1878126 36 #define STEPPER_PULSE_FEEDBACK_PIN PA_12
miguelangel_2511 0:9d0b9785d3d6 37
miguelangel_2511 11:5cb7ae8bd831 38 // Electric valves
miguelangel_2511 12:3bc2465b034a 39 #define INSPIRATION_VALVE_IA_PIN PB_5
miguelangel_2511 12:3bc2465b034a 40 #define INSPIRATION_VALVE_IB_PIN PB_4
miguelangel_2511 12:3bc2465b034a 41 #define INSPIRATION_VALVE_EN_PIN PA_8
miguelangel_2511 12:3bc2465b034a 42 #define EXPIRATION_VALVE_IA_PIN PB_6
miguelangel_2511 12:3bc2465b034a 43 #define EXPIRATION_VALVE_IB_PIN PA_7
miguelangel_2511 12:3bc2465b034a 44 #define EXPIRATION_VALVE_EN_PIN PA_6
miguelangel_2511 12:3bc2465b034a 45
miguelangel_2511 0:9d0b9785d3d6 46
miguelangel_2511 11:5cb7ae8bd831 47 /******************************************************************************/
miguelangel_2511 11:5cb7ae8bd831 48 /************************* CONSTANTS AND MACROS *******************************/
miguelangel_2511 11:5cb7ae8bd831 49 /******************************************************************************/
miguelangel_2511 0:9d0b9785d3d6 50
miguelangel_2511 11:5cb7ae8bd831 51 // ------------------ Defines for the switches and buttons ---------------------
miguelangel_2511 11:5cb7ae8bd831 52
miguelangel_2511 0:9d0b9785d3d6 53 #define ENTER_SW 0
miguelangel_2511 0:9d0b9785d3d6 54 #define LIMIT_SW_01 1
miguelangel_2511 12:3bc2465b034a 55 #define INSPIRATION_VALVE_HALL_01 2
miguelangel_2511 12:3bc2465b034a 56 #define INSPIRATION_VALVE_HALL_02 3
miguelangel_2511 12:3bc2465b034a 57 #define EXPIRATION_VALVE_HALL_01 4
miguelangel_2511 12:3bc2465b034a 58 #define EXPIRATION_VALVE_HALL_02 5
miguelangel_2511 0:9d0b9785d3d6 59
miguelangel_2511 11:5cb7ae8bd831 60 // ----------------- Defines for the encoder user interface --------------------
miguelangel_2511 8:208d965a3bd2 61
miguelangel_2511 0:9d0b9785d3d6 62 #define ENCODER_THRESHOLD 8
miguelangel_2511 0:9d0b9785d3d6 63
miguelangel_2511 0:9d0b9785d3d6 64 #define PARAMETER_SELECTION_INDEX_LIMIT 3
miguelangel_2511 0:9d0b9785d3d6 65 #define VOLUME_SETPOINT_INDEX_LIMIT 11
miguelangel_2511 0:9d0b9785d3d6 66 #define RESP_FREQUENCY_INDEX_LIMIT 21
miguelangel_2511 12:3bc2465b034a 67 #define I_E_RATIO_INDEX_LIMIT 5
miguelangel_2511 0:9d0b9785d3d6 68
miguelangel_2511 0:9d0b9785d3d6 69 #define PARAMETER_SELECTION_INDEX_DEFAULT 0
miguelangel_2511 0:9d0b9785d3d6 70 #define VOLUME_SETPOINT_INDEX_DEFAULT 5
miguelangel_2511 0:9d0b9785d3d6 71 #define RESP_FREQUENCY_INDEX_DEFAULT 10
miguelangel_2511 12:3bc2465b034a 72 #define I_E_RATIO_INDEX_DEFAULT 2
miguelangel_2511 0:9d0b9785d3d6 73
miguelangel_2511 11:5cb7ae8bd831 74 // ------------- Defines for the Nextion display user interface ----------------
miguelangel_2511 8:208d965a3bd2 75
miguelangel_2511 11:5cb7ae8bd831 76 #define NEXTION_DISPLAY_BAUD_RATE 250000
miguelangel_2511 7:f4e248182d31 77
miguelangel_2511 11:5cb7ae8bd831 78 #define BLACK 0x0000
miguelangel_2511 11:5cb7ae8bd831 79 #define BLUE 0x001F
miguelangel_2511 11:5cb7ae8bd831 80 #define BROWN 0xBC40
miguelangel_2511 11:5cb7ae8bd831 81 #define GREEN 0x07E0
miguelangel_2511 11:5cb7ae8bd831 82 #define YELLOW 0xFFE0
miguelangel_2511 11:5cb7ae8bd831 83 #define RED 0xF800
miguelangel_2511 11:5cb7ae8bd831 84 #define GRAY 0x8430
miguelangel_2511 11:5cb7ae8bd831 85 #define WHITE 0xFFFF
miguelangel_2511 11:5cb7ae8bd831 86 #define DARK_BLUE 0x218F
miguelangel_2511 7:f4e248182d31 87
miguelangel_2511 8:208d965a3bd2 88 #define NORMAL_COLOR WHITE
miguelangel_2511 6:d38287621cca 89 #define SELECT_COLOR BLUE
miguelangel_2511 6:d38287621cca 90 #define ADJUST_COLOR GREEN
miguelangel_2511 11:5cb7ae8bd831 91 #define BACKGROUND_COLOR BLACK
miguelangel_2511 11:5cb7ae8bd831 92 #define WAVEFORM_BACKGROUND_COLOR DARK_BLUE
miguelangel_2511 6:d38287621cca 93
miguelangel_2511 0:9d0b9785d3d6 94 #define VOLUME_SETPOINT_VALUE_DEFAULT 500
miguelangel_2511 0:9d0b9785d3d6 95 #define RESP_FREQUENCY_VALUE_DEFAULT 20
miguelangel_2511 0:9d0b9785d3d6 96 #define INSPIRATION_TIME_VALUE_DEFAULT 1.0
miguelangel_2511 0:9d0b9785d3d6 97 #define EXPIRATION_TIME_VALUE_DEFAULT 2.0
miguelangel_2511 0:9d0b9785d3d6 98
miguelangel_2511 2:6f618b905d4f 99 #define VOLUME_SETPOINT_MINIMUM_VALUE 250
miguelangel_2511 6:d38287621cca 100 #define VOLUME_SETPOINT_STEP 50
miguelangel_2511 2:6f618b905d4f 101
miguelangel_2511 8:208d965a3bd2 102 #define MAIN_SCREEN_DEFAULT_STATE Main_Screen_Cursor_Disable
miguelangel_2511 8:208d965a3bd2 103
miguelangel_2511 8:208d965a3bd2 104 #define VOLUME_WAVEFORM_X0 200
miguelangel_2511 8:208d965a3bd2 105 #define VOLUME_WAVEFORM_Y0 3
miguelangel_2511 8:208d965a3bd2 106 #define VOLUME_WAVEFORM_WIDTH 400
miguelangel_2511 8:208d965a3bd2 107 #define VOLUME_WAVEFORM_HEIGHT 157
miguelangel_2511 11:5cb7ae8bd831 108 #define VOLUME_WAVEFORM_OFFSET 79
miguelangel_2511 11:5cb7ae8bd831 109 #define VOLUME_WAVEFORM_GAIN 0.5
miguelangel_2511 8:208d965a3bd2 110
miguelangel_2511 8:208d965a3bd2 111 #define FLOW_WAVEFORM_X0 200
miguelangel_2511 8:208d965a3bd2 112 #define FLOW_WAVEFORM_Y0 162
miguelangel_2511 8:208d965a3bd2 113 #define FLOW_WAVEFORM_WIDTH 400
miguelangel_2511 8:208d965a3bd2 114 #define FLOW_WAVEFORM_HEIGHT 157
miguelangel_2511 11:5cb7ae8bd831 115 #define FLOW_WAVEFORM_OFFSET 79
miguelangel_2511 11:5cb7ae8bd831 116 #define FLOW_WAVEFORM_GAIN 5.0
miguelangel_2511 8:208d965a3bd2 117
miguelangel_2511 8:208d965a3bd2 118 #define PRESSURE_WAVEFORM_X0 200
miguelangel_2511 8:208d965a3bd2 119 #define PRESSURE_WAVEFORM_Y0 321
miguelangel_2511 8:208d965a3bd2 120 #define PRESSURE_WAVEFORM_WIDTH 400
miguelangel_2511 8:208d965a3bd2 121 #define PRESSURE_WAVEFORM_HEIGHT 157
miguelangel_2511 11:5cb7ae8bd831 122 #define PRESSURE_WAVEFORM_OFFSET 0
miguelangel_2511 11:5cb7ae8bd831 123 #define PRESSURE_WAVEFORM_GAIN 157
miguelangel_2511 8:208d965a3bd2 124
miguelangel_2511 11:5cb7ae8bd831 125 // ---------------------- Defines for pressure sensors -------------------------
miguelangel_2511 1:aa5df1878126 126
miguelangel_2511 7:f4e248182d31 127 #define PRESSURE_SENSOR_I2C_CLK_HZ 200000
miguelangel_2511 11:5cb7ae8bd831 128
miguelangel_2511 7:f4e248182d31 129 #define PRESSURE_SENSOR_01_SLAVE_ADDRESS 0x28
miguelangel_2511 7:f4e248182d31 130 #define PRESSURE_SENSOR_01_SWA (PRESSURE_SENSOR_01_SLAVE_ADDRESS << 1)
miguelangel_2511 11:5cb7ae8bd831 131 #define PRESSURE_SENSOR_01_SRA (PRESSURE_SENSOR_01_SWA | 1)
miguelangel_2511 11:5cb7ae8bd831 132
miguelangel_2511 11:5cb7ae8bd831 133 #define PRESSURE_SENSOR_02_SLAVE_ADDRESS 0x28
miguelangel_2511 7:f4e248182d31 134 #define PRESSURE_SENSOR_02_SWA (PRESSURE_SENSOR_02_SLAVE_ADDRESS << 1)
miguelangel_2511 7:f4e248182d31 135 #define PRESSURE_SENSOR_02_SRA (PRESSURE_SENSOR_02_SWA | 1)
miguelangel_2511 8:208d965a3bd2 136
miguelangel_2511 9:95fdcdc0977e 137 #define PRESSURE_SENSOR_OUTPUT_MAX 14745
miguelangel_2511 9:95fdcdc0977e 138 #define PRESSURE_SENSOR_OUTPUT_MIN 1638
miguelangel_2511 10:b2d87404309a 139 #define PRESSURE_SENSOR_PRESSURE_MAX 1.0f
miguelangel_2511 9:95fdcdc0977e 140 #define PRESSURE_SENSOR_PRESSURE_MIN 0.0f
miguelangel_2511 11:5cb7ae8bd831 141
miguelangel_2511 11:5cb7ae8bd831 142 #define PRESSURE_SENSOR_01_OFFSET_PSI 0.0f
miguelangel_2511 11:5cb7ae8bd831 143 #define PRESSURE_SENSOR_02_OFFSET_PSI 0.0f
miguelangel_2511 9:95fdcdc0977e 144
miguelangel_2511 9:95fdcdc0977e 145 #define VOLUME_DISPLAY_THRESHOLD 0.1f
miguelangel_2511 8:208d965a3bd2 146 #define FLOW_DISPLAY_THRESHOLD 0.01f
miguelangel_2511 9:95fdcdc0977e 147 #define PRESSURE_DISPLAY_THRESHOLD 0.001f
miguelangel_2511 1:aa5df1878126 148
miguelangel_2511 9:95fdcdc0977e 149 #define PSI_TO_CMH2O_CONSTANT 70.306957829636f
miguelangel_2511 11:5cb7ae8bd831 150 #define SPIROMETER_SENSOR_CONSTANT_OXYGEN 36.1f
miguelangel_2511 11:5cb7ae8bd831 151 #define SPIROMETER_SENSOR_CONSTANT_AIR (SPIROMETER_SENSOR_CONSTANT_OXYGEN * 1.08006)
miguelangel_2511 12:3bc2465b034a 152 #define VOLUME_CORRECTION_FACTOR 34.4409727f
miguelangel_2511 11:5cb7ae8bd831 153
miguelangel_2511 11:5cb7ae8bd831 154 // ----------------------- Defines for digital filters -------------------------
miguelangel_2511 11:5cb7ae8bd831 155
miguelangel_2511 11:5cb7ae8bd831 156 #define P1_LPF_CUTOFF_FREQ_HZ 20.0f
miguelangel_2511 11:5cb7ae8bd831 157 #define P1_LPF_RC_CONSTANT_SEC (1/(6.2832*P1_LPF_CUTOFF_FREQ_HZ))
miguelangel_2511 11:5cb7ae8bd831 158
miguelangel_2511 11:5cb7ae8bd831 159 #define P2_LPF_CUTOFF_FREQ_HZ 20.0f
miguelangel_2511 11:5cb7ae8bd831 160 #define P2_LPF_RC_CONSTANT_SEC (1/(6.2832*P2_LPF_CUTOFF_FREQ_HZ))
miguelangel_2511 8:208d965a3bd2 161
miguelangel_2511 11:5cb7ae8bd831 162 #define F_HPF_CUTOFF_FREQ_HZ 0.01f
miguelangel_2511 11:5cb7ae8bd831 163 #define F_HPF_RC_CONSTANT_SEC (1/(6.2832*F_HPF_CUTOFF_FREQ_HZ))
miguelangel_2511 9:95fdcdc0977e 164
miguelangel_2511 11:5cb7ae8bd831 165 #define PRESSURE_01_LPF_N 4
miguelangel_2511 11:5cb7ae8bd831 166 #define PRESSURE_02_LPF_N 4
miguelangel_2511 11:5cb7ae8bd831 167 #define FLOW_HPF_N 3
miguelangel_2511 11:5cb7ae8bd831 168 #define FLOW_LPF_N 25
miguelangel_2511 8:208d965a3bd2 169
miguelangel_2511 11:5cb7ae8bd831 170 // -------------------- Defines for the stepper motor driver -------------------
miguelangel_2511 11:5cb7ae8bd831 171
miguelangel_2511 1:aa5df1878126 172 #define TO_HOME 0
miguelangel_2511 1:aa5df1878126 173 #define TO_AIRBAG 1
miguelangel_2511 1:aa5df1878126 174 #define STEPPER_ENABLED 0
miguelangel_2511 1:aa5df1878126 175 #define STEPPER_DISABLED 1
miguelangel_2511 1:aa5df1878126 176
miguelangel_2511 1:aa5df1878126 177 #define STEPPER_DRIVER_PULSE_MIN_PERIOD_US 100
miguelangel_2511 1:aa5df1878126 178 #define STEPPER_DRIVER_PULSE_HOME_PERIOD_US 1000
miguelangel_2511 1:aa5df1878126 179 #define STEPPER_DRIVER_DEFAULT_PULSE_PERIOD_US 1000
miguelangel_2511 1:aa5df1878126 180
miguelangel_2511 11:5cb7ae8bd831 181 #define STEPPER_DRIVER_MAX_PULSES 200
miguelangel_2511 1:aa5df1878126 182 #define STEPPER_DRIVER_INSPIRATION_PULSES_DEFAULT 2000
miguelangel_2511 1:aa5df1878126 183
miguelangel_2511 1:aa5df1878126 184 #define STEPPER_DRIVER_DEFAULT_STATE Stepper_Driver_Home_Ramp
miguelangel_2511 1:aa5df1878126 185
miguelangel_2511 1:aa5df1878126 186 #define STEPPER_CALIBRATION_FREQUENCY_HZ 200
miguelangel_2511 6:d38287621cca 187 #define STEPPER_MAX_FREQUENCY_HZ 3000
miguelangel_2511 6:d38287621cca 188
miguelangel_2511 12:3bc2465b034a 189
miguelangel_2511 12:3bc2465b034a 190 // -------------------- Defines for the electric valves ------------------------
miguelangel_2511 12:3bc2465b034a 191 #define INSPIRATION_VALVE_IA 0
miguelangel_2511 12:3bc2465b034a 192 #define INSPIRATION_VALVE_IB 1
miguelangel_2511 12:3bc2465b034a 193 #define INSPIRATION_VALVE_EN 2
miguelangel_2511 12:3bc2465b034a 194 #define EXPIRATION_VALVE_IA 3
miguelangel_2511 12:3bc2465b034a 195 #define EXPIRATION_VALVE_IB 4
miguelangel_2511 12:3bc2465b034a 196 #define EXPIRATION_VALVE_EN 5
miguelangel_2511 12:3bc2465b034a 197
miguelangel_2511 12:3bc2465b034a 198 #define INSPIRATION_VALVE_IS_OPEN (!(buttons & (1 << INSPIRATION_VALVE_HALL_02)))
miguelangel_2511 12:3bc2465b034a 199 #define INSPIRATION_VALVE_IS_CLOSED (!(buttons & (1 << INSPIRATION_VALVE_HALL_01)))
miguelangel_2511 12:3bc2465b034a 200 #define EXPIRATION_VALVE_IS_OPEN (!(buttons & (1 << EXPIRATION_VALVE_HALL_01)))
miguelangel_2511 12:3bc2465b034a 201 #define EXPIRATION_VALVE_IS_CLOSED (!(buttons & (1 << EXPIRATION_VALVE_HALL_02)))
miguelangel_2511 12:3bc2465b034a 202
miguelangel_2511 12:3bc2465b034a 203 #define INSPIRATION_VALVE_ENABLE() valve_control = valve_control | (1 << INSPIRATION_VALVE_EN)
miguelangel_2511 12:3bc2465b034a 204 #define INSPIRATION_VALVE_DISABLE() valve_control = valve_control & ~(1 << INSPIRATION_VALVE_EN)
miguelangel_2511 12:3bc2465b034a 205 #define INSPIRATION_VALVE_STOP() valve_control = valve_control & ~((1 << INSPIRATION_VALVE_IA) | (1 << INSPIRATION_VALVE_IB))
miguelangel_2511 12:3bc2465b034a 206 #define INSPIRATION_VALVE_OPEN() valve_control = valve_control | (1 << INSPIRATION_VALVE_IA)
miguelangel_2511 12:3bc2465b034a 207 #define INSPIRATION_VALVE_CLOSE() valve_control = valve_control | (1 << INSPIRATION_VALVE_IB)
miguelangel_2511 12:3bc2465b034a 208 #define EXPIRATION_VALVE_ENABLE() valve_control = valve_control | (1 << EXPIRATION_VALVE_EN)
miguelangel_2511 12:3bc2465b034a 209 #define EXPIRATION_VALVE_DISABLE() valve_control = valve_control & ~(1 << EXPIRATION_VALVE_EN)
miguelangel_2511 12:3bc2465b034a 210 #define EXPIRATION_VALVE_STOP() valve_control = valve_control & ~((1 << EXPIRATION_VALVE_IA) | (1 << EXPIRATION_VALVE_IB))
miguelangel_2511 12:3bc2465b034a 211 #define EXPIRATION_VALVE_OPEN() valve_control = valve_control | (1 << EXPIRATION_VALVE_IB)
miguelangel_2511 12:3bc2465b034a 212 #define EXPIRATION_VALVE_CLOSE() valve_control = valve_control | (1 << EXPIRATION_VALVE_IA)
miguelangel_2511 12:3bc2465b034a 213
miguelangel_2511 12:3bc2465b034a 214
miguelangel_2511 11:5cb7ae8bd831 215 // ---------------------- Time period for every action -------------------------
miguelangel_2511 6:d38287621cca 216
miguelangel_2511 11:5cb7ae8bd831 217 #define DEBOUNCE_PERIOD_MS 10
miguelangel_2511 11:5cb7ae8bd831 218 #define ENCODER_READ_PERIOD_MS 10
miguelangel_2511 11:5cb7ae8bd831 219 #define PRESSURE_SENSOR_READ_PERIOD_MS 10
miguelangel_2511 11:5cb7ae8bd831 220 #define SENSOR_WAVEFORM_PLOT_PERIOD_MS 25
miguelangel_2511 11:5cb7ae8bd831 221 #define SENSOR_DISPLAY_PERIOD_MS 500
miguelangel_2511 6:d38287621cca 222
miguelangel_2511 6:d38287621cca 223 #endif