pachas

Dependencies:   mbed QEI FastPWM

Committer:
miguelangel_2511
Date:
Thu May 07 03:52:31 2020 +0000
Revision:
11:5cb7ae8bd831
Parent:
10:b2d87404309a
Child:
12:3bc2465b034a
Se implemento un filtro IIIR tipo Chebyshev 2 Pasa-bajos de 30 Hz para cada sensor de presion.  Asimismo, se implemento un filtro IIR Chebyshev 2 Pasa-altos de 0.01 Hz y un filtro FIR pasa-bajos de 40 Hz para la senial de flujo.

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 0:9d0b9785d3d6 9 // Switches and buttons
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 0:9d0b9785d3d6 12
miguelangel_2511 0:9d0b9785d3d6 13 // Rotary encoder
miguelangel_2511 0:9d0b9785d3d6 14 #define ENCODER_A_SIGNAL PA_13
miguelangel_2511 0:9d0b9785d3d6 15 #define ENCODER_B_SIGNAL PA_14
miguelangel_2511 0:9d0b9785d3d6 16
miguelangel_2511 6:d38287621cca 17 //Nextion display
miguelangel_2511 7:f4e248182d31 18 #define NEXTION_DISPLAY_TX_PIN PC_10
miguelangel_2511 7:f4e248182d31 19 #define NEXTION_DISPLAY_RX_PIN PC_11
miguelangel_2511 7:f4e248182d31 20
miguelangel_2511 7:f4e248182d31 21 // Pressure sensors
miguelangel_2511 8:208d965a3bd2 22 #define PRESSURE_SENSOR_01_SCL_PIN PB_10
miguelangel_2511 8:208d965a3bd2 23 #define PRESSURE_SENSOR_01_SDA_PIN PB_11
miguelangel_2511 8:208d965a3bd2 24 #define PRESSURE_SENSOR_02_SCL_PIN PB_8
miguelangel_2511 8:208d965a3bd2 25 #define PRESSURE_SENSOR_02_SDA_PIN PB_9
miguelangel_2511 0:9d0b9785d3d6 26
miguelangel_2511 11:5cb7ae8bd831 27
miguelangel_2511 11:5cb7ae8bd831 28 // Stepper motor
miguelangel_2511 0:9d0b9785d3d6 29 #define STEPPER_PULSE_PIN PC_8
miguelangel_2511 0:9d0b9785d3d6 30 #define STEPPER_ENABLE_PIN PC_6
miguelangel_2511 0:9d0b9785d3d6 31 #define STEPPER_DIRECTION_PIN PC_5
miguelangel_2511 1:aa5df1878126 32 #define STEPPER_PULSE_FEEDBACK_PIN PA_12
miguelangel_2511 0:9d0b9785d3d6 33
miguelangel_2511 11:5cb7ae8bd831 34 // Electric valves
miguelangel_2511 11:5cb7ae8bd831 35 #define INSPIRATION_VALVE_PIN PF_0
miguelangel_2511 11:5cb7ae8bd831 36 #define EXPIRATION_VALVE_PIN PF_1
miguelangel_2511 0:9d0b9785d3d6 37
miguelangel_2511 11:5cb7ae8bd831 38 /******************************************************************************/
miguelangel_2511 11:5cb7ae8bd831 39 /************************* CONSTANTS AND MACROS *******************************/
miguelangel_2511 11:5cb7ae8bd831 40 /******************************************************************************/
miguelangel_2511 0:9d0b9785d3d6 41
miguelangel_2511 11:5cb7ae8bd831 42 // ------------------ Defines for the switches and buttons ---------------------
miguelangel_2511 11:5cb7ae8bd831 43
miguelangel_2511 0:9d0b9785d3d6 44 #define ENTER_SW 0
miguelangel_2511 0:9d0b9785d3d6 45 #define LIMIT_SW_01 1
miguelangel_2511 0:9d0b9785d3d6 46
miguelangel_2511 11:5cb7ae8bd831 47 // ----------------- Defines for the encoder user interface --------------------
miguelangel_2511 8:208d965a3bd2 48
miguelangel_2511 0:9d0b9785d3d6 49 #define ENCODER_THRESHOLD 8
miguelangel_2511 0:9d0b9785d3d6 50
miguelangel_2511 0:9d0b9785d3d6 51 #define PARAMETER_SELECTION_INDEX_LIMIT 3
miguelangel_2511 0:9d0b9785d3d6 52 #define VOLUME_SETPOINT_INDEX_LIMIT 11
miguelangel_2511 0:9d0b9785d3d6 53 #define RESP_FREQUENCY_INDEX_LIMIT 21
miguelangel_2511 0:9d0b9785d3d6 54 #define I_E_RATIO_INDEX_LIMIT 3
miguelangel_2511 0:9d0b9785d3d6 55
miguelangel_2511 0:9d0b9785d3d6 56 #define PARAMETER_SELECTION_INDEX_DEFAULT 0
miguelangel_2511 0:9d0b9785d3d6 57 #define VOLUME_SETPOINT_INDEX_DEFAULT 5
miguelangel_2511 0:9d0b9785d3d6 58 #define RESP_FREQUENCY_INDEX_DEFAULT 10
miguelangel_2511 0:9d0b9785d3d6 59 #define I_E_RATIO_INDEX_DEFAULT 0
miguelangel_2511 0:9d0b9785d3d6 60
miguelangel_2511 11:5cb7ae8bd831 61 // ------------- Defines for the Nextion display user interface ----------------
miguelangel_2511 8:208d965a3bd2 62
miguelangel_2511 11:5cb7ae8bd831 63 #define NEXTION_DISPLAY_BAUD_RATE 250000
miguelangel_2511 7:f4e248182d31 64
miguelangel_2511 11:5cb7ae8bd831 65 #define BLACK 0x0000
miguelangel_2511 11:5cb7ae8bd831 66 #define BLUE 0x001F
miguelangel_2511 11:5cb7ae8bd831 67 #define BROWN 0xBC40
miguelangel_2511 11:5cb7ae8bd831 68 #define GREEN 0x07E0
miguelangel_2511 11:5cb7ae8bd831 69 #define YELLOW 0xFFE0
miguelangel_2511 11:5cb7ae8bd831 70 #define RED 0xF800
miguelangel_2511 11:5cb7ae8bd831 71 #define GRAY 0x8430
miguelangel_2511 11:5cb7ae8bd831 72 #define WHITE 0xFFFF
miguelangel_2511 11:5cb7ae8bd831 73 #define DARK_BLUE 0x218F
miguelangel_2511 7:f4e248182d31 74
miguelangel_2511 8:208d965a3bd2 75 #define NORMAL_COLOR WHITE
miguelangel_2511 6:d38287621cca 76 #define SELECT_COLOR BLUE
miguelangel_2511 6:d38287621cca 77 #define ADJUST_COLOR GREEN
miguelangel_2511 11:5cb7ae8bd831 78 #define BACKGROUND_COLOR BLACK
miguelangel_2511 11:5cb7ae8bd831 79 #define WAVEFORM_BACKGROUND_COLOR DARK_BLUE
miguelangel_2511 6:d38287621cca 80
miguelangel_2511 0:9d0b9785d3d6 81 #define VOLUME_SETPOINT_VALUE_DEFAULT 500
miguelangel_2511 0:9d0b9785d3d6 82 #define RESP_FREQUENCY_VALUE_DEFAULT 20
miguelangel_2511 0:9d0b9785d3d6 83 #define INSPIRATION_TIME_VALUE_DEFAULT 1.0
miguelangel_2511 0:9d0b9785d3d6 84 #define EXPIRATION_TIME_VALUE_DEFAULT 2.0
miguelangel_2511 0:9d0b9785d3d6 85
miguelangel_2511 2:6f618b905d4f 86 #define VOLUME_SETPOINT_MINIMUM_VALUE 250
miguelangel_2511 6:d38287621cca 87 #define VOLUME_SETPOINT_STEP 50
miguelangel_2511 2:6f618b905d4f 88
miguelangel_2511 8:208d965a3bd2 89 #define MAIN_SCREEN_DEFAULT_STATE Main_Screen_Cursor_Disable
miguelangel_2511 8:208d965a3bd2 90
miguelangel_2511 8:208d965a3bd2 91 #define VOLUME_WAVEFORM_X0 200
miguelangel_2511 8:208d965a3bd2 92 #define VOLUME_WAVEFORM_Y0 3
miguelangel_2511 8:208d965a3bd2 93 #define VOLUME_WAVEFORM_WIDTH 400
miguelangel_2511 8:208d965a3bd2 94 #define VOLUME_WAVEFORM_HEIGHT 157
miguelangel_2511 11:5cb7ae8bd831 95 #define VOLUME_WAVEFORM_OFFSET 79
miguelangel_2511 11:5cb7ae8bd831 96 #define VOLUME_WAVEFORM_GAIN 0.5
miguelangel_2511 8:208d965a3bd2 97
miguelangel_2511 8:208d965a3bd2 98 #define FLOW_WAVEFORM_X0 200
miguelangel_2511 8:208d965a3bd2 99 #define FLOW_WAVEFORM_Y0 162
miguelangel_2511 8:208d965a3bd2 100 #define FLOW_WAVEFORM_WIDTH 400
miguelangel_2511 8:208d965a3bd2 101 #define FLOW_WAVEFORM_HEIGHT 157
miguelangel_2511 11:5cb7ae8bd831 102 #define FLOW_WAVEFORM_OFFSET 79
miguelangel_2511 11:5cb7ae8bd831 103 #define FLOW_WAVEFORM_GAIN 5.0
miguelangel_2511 8:208d965a3bd2 104
miguelangel_2511 8:208d965a3bd2 105 #define PRESSURE_WAVEFORM_X0 200
miguelangel_2511 8:208d965a3bd2 106 #define PRESSURE_WAVEFORM_Y0 321
miguelangel_2511 8:208d965a3bd2 107 #define PRESSURE_WAVEFORM_WIDTH 400
miguelangel_2511 8:208d965a3bd2 108 #define PRESSURE_WAVEFORM_HEIGHT 157
miguelangel_2511 11:5cb7ae8bd831 109 #define PRESSURE_WAVEFORM_OFFSET 0
miguelangel_2511 11:5cb7ae8bd831 110 #define PRESSURE_WAVEFORM_GAIN 157
miguelangel_2511 8:208d965a3bd2 111
miguelangel_2511 11:5cb7ae8bd831 112 // ---------------------- Defines for pressure sensors -------------------------
miguelangel_2511 1:aa5df1878126 113
miguelangel_2511 7:f4e248182d31 114 #define PRESSURE_SENSOR_I2C_CLK_HZ 200000
miguelangel_2511 11:5cb7ae8bd831 115
miguelangel_2511 7:f4e248182d31 116 #define PRESSURE_SENSOR_01_SLAVE_ADDRESS 0x28
miguelangel_2511 7:f4e248182d31 117 #define PRESSURE_SENSOR_01_SWA (PRESSURE_SENSOR_01_SLAVE_ADDRESS << 1)
miguelangel_2511 11:5cb7ae8bd831 118 #define PRESSURE_SENSOR_01_SRA (PRESSURE_SENSOR_01_SWA | 1)
miguelangel_2511 11:5cb7ae8bd831 119
miguelangel_2511 11:5cb7ae8bd831 120 #define PRESSURE_SENSOR_02_SLAVE_ADDRESS 0x28
miguelangel_2511 7:f4e248182d31 121 #define PRESSURE_SENSOR_02_SWA (PRESSURE_SENSOR_02_SLAVE_ADDRESS << 1)
miguelangel_2511 7:f4e248182d31 122 #define PRESSURE_SENSOR_02_SRA (PRESSURE_SENSOR_02_SWA | 1)
miguelangel_2511 8:208d965a3bd2 123
miguelangel_2511 9:95fdcdc0977e 124 #define PRESSURE_SENSOR_OUTPUT_MAX 14745
miguelangel_2511 9:95fdcdc0977e 125 #define PRESSURE_SENSOR_OUTPUT_MIN 1638
miguelangel_2511 10:b2d87404309a 126 #define PRESSURE_SENSOR_PRESSURE_MAX 1.0f
miguelangel_2511 9:95fdcdc0977e 127 #define PRESSURE_SENSOR_PRESSURE_MIN 0.0f
miguelangel_2511 11:5cb7ae8bd831 128
miguelangel_2511 11:5cb7ae8bd831 129 #define PRESSURE_SENSOR_01_OFFSET_PSI 0.0f
miguelangel_2511 11:5cb7ae8bd831 130 #define PRESSURE_SENSOR_02_OFFSET_PSI 0.0f
miguelangel_2511 9:95fdcdc0977e 131
miguelangel_2511 9:95fdcdc0977e 132 #define VOLUME_DISPLAY_THRESHOLD 0.1f
miguelangel_2511 8:208d965a3bd2 133 #define FLOW_DISPLAY_THRESHOLD 0.01f
miguelangel_2511 9:95fdcdc0977e 134 #define PRESSURE_DISPLAY_THRESHOLD 0.001f
miguelangel_2511 1:aa5df1878126 135
miguelangel_2511 9:95fdcdc0977e 136 #define PSI_TO_CMH2O_CONSTANT 70.306957829636f
miguelangel_2511 11:5cb7ae8bd831 137 #define SPIROMETER_SENSOR_CONSTANT_OXYGEN 36.1f
miguelangel_2511 11:5cb7ae8bd831 138 #define SPIROMETER_SENSOR_CONSTANT_AIR (SPIROMETER_SENSOR_CONSTANT_OXYGEN * 1.08006)
miguelangel_2511 11:5cb7ae8bd831 139
miguelangel_2511 11:5cb7ae8bd831 140 // ----------------------- Defines for digital filters -------------------------
miguelangel_2511 11:5cb7ae8bd831 141
miguelangel_2511 11:5cb7ae8bd831 142 #define P1_LPF_CUTOFF_FREQ_HZ 20.0f
miguelangel_2511 11:5cb7ae8bd831 143 #define P1_LPF_RC_CONSTANT_SEC (1/(6.2832*P1_LPF_CUTOFF_FREQ_HZ))
miguelangel_2511 11:5cb7ae8bd831 144
miguelangel_2511 11:5cb7ae8bd831 145 #define P2_LPF_CUTOFF_FREQ_HZ 20.0f
miguelangel_2511 11:5cb7ae8bd831 146 #define P2_LPF_RC_CONSTANT_SEC (1/(6.2832*P2_LPF_CUTOFF_FREQ_HZ))
miguelangel_2511 8:208d965a3bd2 147
miguelangel_2511 11:5cb7ae8bd831 148 #define F_HPF_CUTOFF_FREQ_HZ 0.01f
miguelangel_2511 11:5cb7ae8bd831 149 #define F_HPF_RC_CONSTANT_SEC (1/(6.2832*F_HPF_CUTOFF_FREQ_HZ))
miguelangel_2511 9:95fdcdc0977e 150
miguelangel_2511 11:5cb7ae8bd831 151 #define PRESSURE_01_LPF_N 4
miguelangel_2511 11:5cb7ae8bd831 152 #define PRESSURE_02_LPF_N 4
miguelangel_2511 11:5cb7ae8bd831 153 #define FLOW_HPF_N 3
miguelangel_2511 11:5cb7ae8bd831 154 #define FLOW_LPF_N 25
miguelangel_2511 8:208d965a3bd2 155
miguelangel_2511 11:5cb7ae8bd831 156 // -------------------- Defines for the stepper motor driver -------------------
miguelangel_2511 11:5cb7ae8bd831 157
miguelangel_2511 1:aa5df1878126 158 #define TO_HOME 0
miguelangel_2511 1:aa5df1878126 159 #define TO_AIRBAG 1
miguelangel_2511 1:aa5df1878126 160 #define STEPPER_ENABLED 0
miguelangel_2511 1:aa5df1878126 161 #define STEPPER_DISABLED 1
miguelangel_2511 1:aa5df1878126 162
miguelangel_2511 1:aa5df1878126 163 #define STEPPER_DRIVER_PULSE_MIN_PERIOD_US 100
miguelangel_2511 1:aa5df1878126 164 #define STEPPER_DRIVER_PULSE_HOME_PERIOD_US 1000
miguelangel_2511 1:aa5df1878126 165 #define STEPPER_DRIVER_DEFAULT_PULSE_PERIOD_US 1000
miguelangel_2511 1:aa5df1878126 166
miguelangel_2511 11:5cb7ae8bd831 167 #define STEPPER_DRIVER_MAX_PULSES 200
miguelangel_2511 1:aa5df1878126 168 #define STEPPER_DRIVER_INSPIRATION_PULSES_DEFAULT 2000
miguelangel_2511 1:aa5df1878126 169
miguelangel_2511 1:aa5df1878126 170 #define STEPPER_DRIVER_DEFAULT_STATE Stepper_Driver_Home_Ramp
miguelangel_2511 1:aa5df1878126 171
miguelangel_2511 1:aa5df1878126 172 #define STEPPER_CALIBRATION_FREQUENCY_HZ 200
miguelangel_2511 6:d38287621cca 173 #define STEPPER_MAX_FREQUENCY_HZ 3000
miguelangel_2511 6:d38287621cca 174
miguelangel_2511 11:5cb7ae8bd831 175 // ---------------------- Time period for every action -------------------------
miguelangel_2511 6:d38287621cca 176
miguelangel_2511 11:5cb7ae8bd831 177 #define DEBOUNCE_PERIOD_MS 10
miguelangel_2511 11:5cb7ae8bd831 178 #define ENCODER_READ_PERIOD_MS 10
miguelangel_2511 11:5cb7ae8bd831 179 #define PRESSURE_SENSOR_READ_PERIOD_MS 10
miguelangel_2511 11:5cb7ae8bd831 180 #define SENSOR_WAVEFORM_PLOT_PERIOD_MS 25
miguelangel_2511 11:5cb7ae8bd831 181 #define SENSOR_DISPLAY_PERIOD_MS 500
miguelangel_2511 6:d38287621cca 182
miguelangel_2511 6:d38287621cca 183 #endif