para el ventilador

Dependencies:   QEI FastPWM

Committer:
miguelangel_2511
Date:
Mon Apr 27 19:52:02 2020 +0000
Revision:
10:b2d87404309a
Parent:
9:95fdcdc0977e
Child:
11:5cb7ae8bd831
Ventilador ajustado al nuevo sistema mecanico (con mordaza) y con el sensor de flujo (espirometria) calibrado de forma aproximada. Tabien se ha configurado el baud rate a su maximo valor funcional (256000 bps).

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 0:9d0b9785d3d6 5 /* File inclusion */
miguelangel_2511 0:9d0b9785d3d6 6
miguelangel_2511 0:9d0b9785d3d6 7 /* Pin definition */
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 #define GAS_INPUT_SW_PIN PC_13
miguelangel_2511 0:9d0b9785d3d6 13
miguelangel_2511 0:9d0b9785d3d6 14 // Rotary encoder
miguelangel_2511 0:9d0b9785d3d6 15 #define ENCODER_A_SIGNAL PA_13
miguelangel_2511 0:9d0b9785d3d6 16 #define ENCODER_B_SIGNAL PA_14
miguelangel_2511 0:9d0b9785d3d6 17
miguelangel_2511 6:d38287621cca 18 //Nextion display
miguelangel_2511 7:f4e248182d31 19 #define NEXTION_DISPLAY_TX_PIN PC_10
miguelangel_2511 7:f4e248182d31 20 #define NEXTION_DISPLAY_RX_PIN PC_11
miguelangel_2511 7:f4e248182d31 21
miguelangel_2511 7:f4e248182d31 22 // Pressure sensors
miguelangel_2511 8:208d965a3bd2 23 #define PRESSURE_SENSOR_01_SCL_PIN PB_10
miguelangel_2511 8:208d965a3bd2 24 #define PRESSURE_SENSOR_01_SDA_PIN PB_11
miguelangel_2511 8:208d965a3bd2 25 #define PRESSURE_SENSOR_02_SCL_PIN PB_8
miguelangel_2511 8:208d965a3bd2 26 #define PRESSURE_SENSOR_02_SDA_PIN PB_9
miguelangel_2511 0:9d0b9785d3d6 27
miguelangel_2511 0:9d0b9785d3d6 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 0:9d0b9785d3d6 34
miguelangel_2511 0:9d0b9785d3d6 35 /* Constants and macros */
miguelangel_2511 0:9d0b9785d3d6 36
miguelangel_2511 0:9d0b9785d3d6 37 /* Defines for the switches and buttons */
miguelangel_2511 0:9d0b9785d3d6 38 #define ENTER_SW 0
miguelangel_2511 0:9d0b9785d3d6 39 #define LIMIT_SW_01 1
miguelangel_2511 0:9d0b9785d3d6 40 #define GAS_INPUT_SW 2
miguelangel_2511 0:9d0b9785d3d6 41
miguelangel_2511 8:208d965a3bd2 42 #define DEBOUNCE_PERIOD_MS 10
miguelangel_2511 8:208d965a3bd2 43
miguelangel_2511 0:9d0b9785d3d6 44 /* Defines for the encoder user interface */
miguelangel_2511 0:9d0b9785d3d6 45 #define ENCODER_THRESHOLD 8
miguelangel_2511 0:9d0b9785d3d6 46
miguelangel_2511 0:9d0b9785d3d6 47 #define PARAMETER_SELECTION_INDEX_LIMIT 3
miguelangel_2511 0:9d0b9785d3d6 48 #define VOLUME_SETPOINT_INDEX_LIMIT 11
miguelangel_2511 0:9d0b9785d3d6 49 #define RESP_FREQUENCY_INDEX_LIMIT 21
miguelangel_2511 0:9d0b9785d3d6 50 #define I_E_RATIO_INDEX_LIMIT 3
miguelangel_2511 0:9d0b9785d3d6 51
miguelangel_2511 0:9d0b9785d3d6 52 #define PARAMETER_SELECTION_INDEX_DEFAULT 0
miguelangel_2511 0:9d0b9785d3d6 53 #define VOLUME_SETPOINT_INDEX_DEFAULT 5
miguelangel_2511 0:9d0b9785d3d6 54 #define RESP_FREQUENCY_INDEX_DEFAULT 10
miguelangel_2511 0:9d0b9785d3d6 55 #define I_E_RATIO_INDEX_DEFAULT 0
miguelangel_2511 0:9d0b9785d3d6 56
miguelangel_2511 10:b2d87404309a 57 #define ENCODER_READ_PERIOD_MS 10
miguelangel_2511 8:208d965a3bd2 58
miguelangel_2511 6:d38287621cca 59 /* Defines for the Nextion user interface */
miguelangel_2511 7:f4e248182d31 60
miguelangel_2511 10:b2d87404309a 61 #define NEXTION_DISPLAY_BAUD_RATE 256000
miguelangel_2511 7:f4e248182d31 62
miguelangel_2511 7:f4e248182d31 63 #define BLACK 0
miguelangel_2511 7:f4e248182d31 64 #define BLUE 31
miguelangel_2511 7:f4e248182d31 65 #define BROWN 48192
miguelangel_2511 7:f4e248182d31 66 #define GREEN 2016
miguelangel_2511 7:f4e248182d31 67 #define YELLOW 65504
miguelangel_2511 7:f4e248182d31 68 #define RED 63488
miguelangel_2511 7:f4e248182d31 69 #define GRAY 33840
miguelangel_2511 7:f4e248182d31 70 #define WHITE 65535
miguelangel_2511 7:f4e248182d31 71
miguelangel_2511 8:208d965a3bd2 72 #define NORMAL_COLOR WHITE
miguelangel_2511 6:d38287621cca 73 #define SELECT_COLOR BLUE
miguelangel_2511 6:d38287621cca 74 #define ADJUST_COLOR GREEN
miguelangel_2511 6:d38287621cca 75
miguelangel_2511 0:9d0b9785d3d6 76 #define VOLUME_SETPOINT_VALUE_DEFAULT 500
miguelangel_2511 0:9d0b9785d3d6 77 #define RESP_FREQUENCY_VALUE_DEFAULT 20
miguelangel_2511 0:9d0b9785d3d6 78 #define INSPIRATION_TIME_VALUE_DEFAULT 1.0
miguelangel_2511 0:9d0b9785d3d6 79 #define EXPIRATION_TIME_VALUE_DEFAULT 2.0
miguelangel_2511 0:9d0b9785d3d6 80
miguelangel_2511 2:6f618b905d4f 81 #define VOLUME_SETPOINT_MINIMUM_VALUE 250
miguelangel_2511 6:d38287621cca 82 #define VOLUME_SETPOINT_STEP 50
miguelangel_2511 2:6f618b905d4f 83
miguelangel_2511 0:9d0b9785d3d6 84 #define AIR_INPUT 0
miguelangel_2511 0:9d0b9785d3d6 85 #define OXYGEN_INPUT 1
miguelangel_2511 0:9d0b9785d3d6 86
miguelangel_2511 8:208d965a3bd2 87 #define MAIN_SCREEN_DEFAULT_STATE Main_Screen_Cursor_Disable
miguelangel_2511 8:208d965a3bd2 88
miguelangel_2511 8:208d965a3bd2 89 #define VOLUME_WAVEFORM_X0 200
miguelangel_2511 8:208d965a3bd2 90 #define VOLUME_WAVEFORM_Y0 3
miguelangel_2511 8:208d965a3bd2 91 #define VOLUME_WAVEFORM_WIDTH 400
miguelangel_2511 8:208d965a3bd2 92 #define VOLUME_WAVEFORM_HEIGHT 157
miguelangel_2511 8:208d965a3bd2 93
miguelangel_2511 8:208d965a3bd2 94 #define FLOW_WAVEFORM_X0 200
miguelangel_2511 8:208d965a3bd2 95 #define FLOW_WAVEFORM_Y0 162
miguelangel_2511 8:208d965a3bd2 96 #define FLOW_WAVEFORM_WIDTH 400
miguelangel_2511 8:208d965a3bd2 97 #define FLOW_WAVEFORM_HEIGHT 157
miguelangel_2511 8:208d965a3bd2 98
miguelangel_2511 8:208d965a3bd2 99 #define PRESSURE_WAVEFORM_X0 200
miguelangel_2511 8:208d965a3bd2 100 #define PRESSURE_WAVEFORM_Y0 321
miguelangel_2511 8:208d965a3bd2 101 #define PRESSURE_WAVEFORM_WIDTH 400
miguelangel_2511 8:208d965a3bd2 102 #define PRESSURE_WAVEFORM_HEIGHT 157
miguelangel_2511 8:208d965a3bd2 103
miguelangel_2511 8:208d965a3bd2 104 #define SENSOR_WAVEFORM_PLOT_PERIOD_MS 25
miguelangel_2511 8:208d965a3bd2 105 #define SENSOR_DISPLAY_PERIOD_MS 100
miguelangel_2511 1:aa5df1878126 106
miguelangel_2511 7:f4e248182d31 107 /* Defines for the pressure sensors */
miguelangel_2511 7:f4e248182d31 108 #define PRESSURE_SENSOR_I2C_CLK_HZ 200000
miguelangel_2511 7:f4e248182d31 109 #define PRESSURE_SENSOR_01_SLAVE_ADDRESS 0x28
miguelangel_2511 7:f4e248182d31 110 #define PRESSURE_SENSOR_02_SLAVE_ADDRESS 0x28
miguelangel_2511 7:f4e248182d31 111 #define PRESSURE_SENSOR_01_SWA (PRESSURE_SENSOR_01_SLAVE_ADDRESS << 1)
miguelangel_2511 7:f4e248182d31 112 #define PRESSURE_SENSOR_02_SWA (PRESSURE_SENSOR_02_SLAVE_ADDRESS << 1)
miguelangel_2511 7:f4e248182d31 113 #define PRESSURE_SENSOR_01_SRA (PRESSURE_SENSOR_01_SWA | 1)
miguelangel_2511 7:f4e248182d31 114 #define PRESSURE_SENSOR_02_SRA (PRESSURE_SENSOR_02_SWA | 1)
miguelangel_2511 8:208d965a3bd2 115
miguelangel_2511 9:95fdcdc0977e 116 #define PRESSURE_SENSOR_OUTPUT_MAX 14745
miguelangel_2511 9:95fdcdc0977e 117 #define PRESSURE_SENSOR_OUTPUT_MIN 1638
miguelangel_2511 10:b2d87404309a 118 #define PRESSURE_SENSOR_PRESSURE_MAX 1.0f
miguelangel_2511 9:95fdcdc0977e 119 #define PRESSURE_SENSOR_PRESSURE_MIN 0.0f
miguelangel_2511 9:95fdcdc0977e 120 #define PRESSURE_SENSOR_OFFSET_PSI 0.0284467f
miguelangel_2511 9:95fdcdc0977e 121
miguelangel_2511 9:95fdcdc0977e 122 #define VOLUME_DISPLAY_THRESHOLD 0.1f
miguelangel_2511 8:208d965a3bd2 123 #define FLOW_DISPLAY_THRESHOLD 0.01f
miguelangel_2511 9:95fdcdc0977e 124 #define PRESSURE_DISPLAY_THRESHOLD 0.001f
miguelangel_2511 1:aa5df1878126 125
miguelangel_2511 9:95fdcdc0977e 126 #define PSI_TO_CMH2O_CONSTANT 70.306957829636f
miguelangel_2511 10:b2d87404309a 127 #define SPIROMETER_SENSOR_CONSTANT 476.9584277f
miguelangel_2511 8:208d965a3bd2 128
miguelangel_2511 8:208d965a3bd2 129 #define PRESSURE_SENSOR_READ_PERIOD_MS 1
miguelangel_2511 9:95fdcdc0977e 130 #define LPF_CUTOFF_FREQ_HZ 10.0f
miguelangel_2511 9:95fdcdc0977e 131 #define LPF_RC_CONSTANT_SEC (1/(6.2832*LPF_CUTOFF_FREQ_HZ))
miguelangel_2511 9:95fdcdc0977e 132
miguelangel_2511 8:208d965a3bd2 133
miguelangel_2511 1:aa5df1878126 134 /* Defines for the stepper motor control */
miguelangel_2511 1:aa5df1878126 135 #define TO_HOME 0
miguelangel_2511 1:aa5df1878126 136 #define TO_AIRBAG 1
miguelangel_2511 1:aa5df1878126 137 #define STEPPER_ENABLED 0
miguelangel_2511 1:aa5df1878126 138 #define STEPPER_DISABLED 1
miguelangel_2511 1:aa5df1878126 139
miguelangel_2511 1:aa5df1878126 140 #define STEPPER_DRIVER_PULSE_MIN_PERIOD_US 100
miguelangel_2511 1:aa5df1878126 141 #define STEPPER_DRIVER_PULSE_HOME_PERIOD_US 1000
miguelangel_2511 1:aa5df1878126 142 #define STEPPER_DRIVER_DEFAULT_PULSE_PERIOD_US 1000
miguelangel_2511 1:aa5df1878126 143
miguelangel_2511 10:b2d87404309a 144 #define STEPPER_DRIVER_MAX_PULSES 200 // Limite de pasos cuando no encuentra el sensor
miguelangel_2511 1:aa5df1878126 145 #define STEPPER_DRIVER_MIN_PULSES (2*RAMP_STEPS + 2)
miguelangel_2511 1:aa5df1878126 146 #define STEPPER_DRIVER_INSPIRATION_PULSES_DEFAULT 2000
miguelangel_2511 1:aa5df1878126 147
miguelangel_2511 1:aa5df1878126 148 #define STEPPER_DRIVER_DEFAULT_STATE Stepper_Driver_Home_Ramp
miguelangel_2511 1:aa5df1878126 149
miguelangel_2511 1:aa5df1878126 150 #define STEPPER_CALIBRATION_FREQUENCY_HZ 200
miguelangel_2511 6:d38287621cca 151
miguelangel_2511 1:aa5df1878126 152 // Number of steps used for the speed ramp, can be either 50 or 100
miguelangel_2511 1:aa5df1878126 153 #define RAMP_STEPS 50
miguelangel_2511 3:45299e7882b9 154
miguelangel_2511 6:d38287621cca 155 #if RAMP_STEPS == 50
miguelangel_2511 6:d38287621cca 156 #define STEPPER_START_BRAKE_FREQUENCY_HZ 300
miguelangel_2511 6:d38287621cca 157 #elif RAMP_STEPS == 100
miguelangel_2511 6:d38287621cca 158 #define STEPPER_START_BRAKE_FREQUENCY_HZ 500
miguelangel_2511 6:d38287621cca 159 #else
miguelangel_2511 6:d38287621cca 160 #error "Select a valid value for RAMP_STEPS: either 50 or 100"
miguelangel_2511 6:d38287621cca 161 #endif
miguelangel_2511 0:9d0b9785d3d6 162
miguelangel_2511 6:d38287621cca 163 #define STEPPER_MAX_FREQUENCY_HZ 3000
miguelangel_2511 6:d38287621cca 164
miguelangel_2511 6:d38287621cca 165 #define STEPPER_START_BRAKE_PERIOD_US (1000000.0/STEPPER_START_BRAKE_FREQUENCY_HZ)
miguelangel_2511 6:d38287621cca 166 #define SHORT_RAMP_STEPS 25
miguelangel_2511 6:d38287621cca 167
miguelangel_2511 8:208d965a3bd2 168 #define TUNING_FACTOR 1.2
miguelangel_2511 6:d38287621cca 169
miguelangel_2511 6:d38287621cca 170 #endif