para el ventilador

Dependencies:   QEI FastPWM

Committer:
miguelangel_2511
Date:
Sun Apr 19 05:38:41 2020 +0000
Revision:
5:bd5fc0510e7b
Parent:
3:45299e7882b9
Child:
6:d38287621cca
Los calculos hechos para incluir el tiempo de la rampa se encontraban errados, por lo cual dichos calculos fueron corregidos y simplificados. El sistema funciona correctamente hasta una frecuencia respiratoria de 22 RPM.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
miguelangel_2511 0:9d0b9785d3d6 1 #ifndef STEPPER_MOTOR_DRIVER_H_
miguelangel_2511 0:9d0b9785d3d6 2 #define STEPPER_MOTOR_DRIVER_H_
miguelangel_2511 0:9d0b9785d3d6 3
miguelangel_2511 0:9d0b9785d3d6 4 #include "mbed.h"
miguelangel_2511 1:aa5df1878126 5 #include "FastPWM.h"
miguelangel_2511 0:9d0b9785d3d6 6
miguelangel_2511 0:9d0b9785d3d6 7 #define STEPPER_PULSE_DUTY_CYCLE 0.5f
miguelangel_2511 0:9d0b9785d3d6 8 #define STEPPER_MOTOR_TOTAL_STEPS 6000
miguelangel_2511 0:9d0b9785d3d6 9
miguelangel_2511 0:9d0b9785d3d6 10 #define STEPPER_MOTOR_GO_HOME 0
miguelangel_2511 0:9d0b9785d3d6 11 #define STEPPER_MOTOR_GO_AHEAD 0
miguelangel_2511 0:9d0b9785d3d6 12
miguelangel_2511 0:9d0b9785d3d6 13
miguelangel_2511 1:aa5df1878126 14 /* Type definition */
miguelangel_2511 0:9d0b9785d3d6 15
miguelangel_2511 1:aa5df1878126 16 typedef enum{
miguelangel_2511 1:aa5df1878126 17 Stepper_Stand_By = 0,
miguelangel_2511 1:aa5df1878126 18 Stepper_Inspiration_Rising_Ramp,
miguelangel_2511 1:aa5df1878126 19 Stepper_Inspiration,
miguelangel_2511 1:aa5df1878126 20 Stepper_Inspiration_Falling_Ramp,
miguelangel_2511 1:aa5df1878126 21 Stepper_Inspiration_Finish,
miguelangel_2511 1:aa5df1878126 22 Stepper_Expiration_Rising_Ramp,
miguelangel_2511 1:aa5df1878126 23 Stepper_Expiration,
miguelangel_2511 1:aa5df1878126 24 Stepper_Expiration_Falling_Ramp,
miguelangel_2511 1:aa5df1878126 25 Stepper_Expiration_Finish,
miguelangel_2511 1:aa5df1878126 26 Stepper_Limit_Sensor_Error
miguelangel_2511 1:aa5df1878126 27 }Stepper_Driver_State_t;
miguelangel_2511 0:9d0b9785d3d6 28
miguelangel_2511 0:9d0b9785d3d6 29
miguelangel_2511 1:aa5df1878126 30 /* Object declaration */
miguelangel_2511 1:aa5df1878126 31 extern InterruptIn stepper_pulse_feedback;
miguelangel_2511 1:aa5df1878126 32 extern FastPWM stepper_pulse;
miguelangel_2511 1:aa5df1878126 33 extern DigitalOut stepper_en;
miguelangel_2511 1:aa5df1878126 34 extern DigitalOut stepper_dir;
miguelangel_2511 1:aa5df1878126 35
miguelangel_2511 3:45299e7882b9 36 // For testing purposes only
miguelangel_2511 3:45299e7882b9 37 extern Serial pc;
miguelangel_2511 3:45299e7882b9 38
miguelangel_2511 1:aa5df1878126 39 /* Variable declaration */
miguelangel_2511 1:aa5df1878126 40
miguelangel_2511 3:45299e7882b9 41 extern volatile uint8_t stepper_parameters_update_flag;
miguelangel_2511 3:45299e7882b9 42
miguelangel_2511 1:aa5df1878126 43 // Tables for calculations
miguelangel_2511 1:aa5df1878126 44 extern const float sigma_ramp[RAMP_STEPS];
miguelangel_2511 3:45299e7882b9 45 extern const float short_sigma_ramp[SHORT_RAMP_STEPS];
miguelangel_2511 1:aa5df1878126 46 extern uint32_t calibration_period_rise_ramp_us[RAMP_STEPS];
miguelangel_2511 1:aa5df1878126 47 extern uint32_t inspiration_period_rise_ramp_us[RAMP_STEPS];
miguelangel_2511 1:aa5df1878126 48 extern uint32_t expiration_period_rise_ramp_us[RAMP_STEPS];
miguelangel_2511 3:45299e7882b9 49 extern uint32_t expiration_period_short_rise_ramp_us[SHORT_RAMP_STEPS];
miguelangel_2511 1:aa5df1878126 50
miguelangel_2511 1:aa5df1878126 51 // These parameters are configurer through the graphic interface */
miguelangel_2511 1:aa5df1878126 52 extern uint32_t inspiration_stepper_pulses_setpoint;
miguelangel_2511 1:aa5df1878126 53 //uint32_t expiration_stepper_pulses_setpoint; // Not used in this version
miguelangel_2511 1:aa5df1878126 54 extern uint32_t inspiration_stepper_pulse_period_us;
miguelangel_2511 1:aa5df1878126 55 extern uint32_t expiration_stepper_pulse_period_us;
miguelangel_2511 1:aa5df1878126 56 extern uint32_t calibration_stepper_pulse_period_us;
miguelangel_2511 5:bd5fc0510e7b 57 //extern uint32_t min_inspiration_ramp_period_us;
miguelangel_2511 5:bd5fc0510e7b 58 //extern uint32_t min_expiration_ramp_period_us;
miguelangel_2511 1:aa5df1878126 59 extern uint32_t volume_in_steps[VOLUME_SETPOINT_INDEX_LIMIT];
miguelangel_2511 1:aa5df1878126 60
miguelangel_2511 1:aa5df1878126 61 // Variables used in every state of the stepper motor driver */
miguelangel_2511 1:aa5df1878126 62 extern volatile uint32_t stepper_pulse_counter;
miguelangel_2511 1:aa5df1878126 63 extern volatile uint32_t stepper_ramp_pulse_counter;
miguelangel_2511 1:aa5df1878126 64
miguelangel_2511 1:aa5df1878126 65 extern volatile Stepper_Driver_State_t stepper_driver_state;
miguelangel_2511 1:aa5df1878126 66
miguelangel_2511 1:aa5df1878126 67 /* Function declaration */
miguelangel_2511 1:aa5df1878126 68 void Stepper_Driver_Init(void);
miguelangel_2511 5:bd5fc0510e7b 69 //void Stepper_Calculate_Period_Ramp(void);
miguelangel_2511 5:bd5fc0510e7b 70 float Stepper_Calculate_Insp_Period_Ramp(float max_freq);
miguelangel_2511 5:bd5fc0510e7b 71 float Stepper_Calculate_Exp_Period_Ramp(float max_freq);
miguelangel_2511 5:bd5fc0510e7b 72 float Stepper_Calculate_Exp_Short_Period_Ramp(float max_freq);
miguelangel_2511 1:aa5df1878126 73 void Stepper_Go_Home_Position(void);
miguelangel_2511 1:aa5df1878126 74 void Stepper_Driver_State_Machine(void);
miguelangel_2511 1:aa5df1878126 75 void Stepper_Driver_Pulse_Signal_Update(void);
miguelangel_2511 1:aa5df1878126 76
miguelangel_2511 0:9d0b9785d3d6 77 #endif