para el ventilador

Dependencies:   QEI FastPWM

Committer:
miguelangel_2511
Date:
Sun Apr 26 08:50:12 2020 +0000
Revision:
9:95fdcdc0977e
Parent:
8:208d965a3bd2
Child:
10:b2d87404309a
Prueba del ventilador con las graficas de volumen, flujo y presion. Aun no se ha tomado en cuenta la influencia del tiempo de impresion sobre la frecuencia de muestreo eficaz.

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 8:208d965a3bd2 57 #define ENCODER_READ_PERIOD_MS 50
miguelangel_2511 8:208d965a3bd2 58
miguelangel_2511 6:d38287621cca 59 /* Defines for the Nextion user interface */
miguelangel_2511 7:f4e248182d31 60
miguelangel_2511 8:208d965a3bd2 61 #define NEXTION_DISPLAY_BAUD_RATE 115200
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 9:95fdcdc0977e 118 #define PRESSURE_SENSOR_PRESSURE_MAX 5.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 8:208d965a3bd2 127 #define SPIROMETER_SENSOR_CONSTANT 1.0f
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 1:aa5df1878126 144 #define STEPPER_DRIVER_MAX_PULSES 6000 // 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