![](/media/cache/img/default_profile.jpg.50x50_q85.jpg)
para el ventilador
Diff: stepper_motor_driver.h
- Revision:
- 1:aa5df1878126
- Parent:
- 0:9d0b9785d3d6
- Child:
- 2:6f618b905d4f
--- a/stepper_motor_driver.h Sat Apr 11 22:53:05 2020 +0000 +++ b/stepper_motor_driver.h Thu Apr 16 13:02:36 2020 +0000 @@ -2,9 +2,8 @@ #define STEPPER_MOTOR_DRIVER_H_ #include "mbed.h" - +#include "FastPWM.h" -#define STEPPER_PULSE_PERIOD 0.0002f #define STEPPER_PULSE_DUTY_CYCLE 0.5f #define STEPPER_MOTOR_TOTAL_STEPS 6000 @@ -12,15 +11,56 @@ #define STEPPER_MOTOR_GO_AHEAD 0 -/* Object declaration */ -extern PwmOut stepper_pulse; -extern DigitalOut stepper_en; -extern DigitalOut stepper_dir; +/* Type definition */ -extern uint8_t stepper_motor_state; - -void Stepper_Motor_Go_Home(void); -void Stepper_Motor_Go_Ahead(void); +typedef enum{ + Stepper_Stand_By = 0, + Stepper_Inspiration_Rising_Ramp, + Stepper_Inspiration, + Stepper_Inspiration_Falling_Ramp, + Stepper_Inspiration_Finish, + Stepper_Expiration_Rising_Ramp, + Stepper_Expiration, + Stepper_Expiration_Falling_Ramp, + Stepper_Expiration_Finish, + Stepper_Limit_Sensor_Error +}Stepper_Driver_State_t; +/* Object declaration */ +extern InterruptIn stepper_pulse_feedback; +extern FastPWM stepper_pulse; +extern DigitalOut stepper_en; +extern DigitalOut stepper_dir; + +/* Variable declaration */ + +// Tables for calculations +extern const float sigma_ramp[RAMP_STEPS]; +extern const float i_e_ratio_stepper_table[I_E_RATIO_INDEX_LIMIT][2]; +extern uint32_t calibration_period_rise_ramp_us[RAMP_STEPS]; +extern uint32_t inspiration_period_rise_ramp_us[RAMP_STEPS]; +extern uint32_t expiration_period_rise_ramp_us[RAMP_STEPS]; + +// These parameters are configurer through the graphic interface */ +extern uint32_t inspiration_stepper_pulses_setpoint; +//uint32_t expiration_stepper_pulses_setpoint; // Not used in this version +extern uint32_t inspiration_stepper_pulse_period_us; +extern uint32_t expiration_stepper_pulse_period_us; +extern uint32_t calibration_stepper_pulse_period_us; +extern uint32_t volume_in_steps[VOLUME_SETPOINT_INDEX_LIMIT]; + +// Variables used in every state of the stepper motor driver */ +extern volatile uint32_t stepper_pulse_counter; +extern volatile uint32_t stepper_ramp_pulse_counter; + +extern volatile Stepper_Driver_State_t stepper_driver_state; + +/* Function declaration */ +void Stepper_Driver_Init(void); +void Stepper_Calculate_Period_Ramp(void); +void Stepper_Go_Home_Position(void); +void Stepper_Driver_State_Machine(void); +void Stepper_Driver_Pulse_Signal_Update(void); + #endif \ No newline at end of file