pachas
Dependencies: mbed QEI FastPWM
project_defines.h@11:5cb7ae8bd831, 2020-05-07 (annotated)
- 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?
User | Revision | Line number | New 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 |