Sets ticks directly for heater test
Heater.h
- Committer:
- seoirsem
- Date:
- 2019-08-12
- Revision:
- 23:65a9f9d85a3a
- Parent:
- 22:2d34a03ae57e
File content as of revision 23:65a9f9d85a3a:
/*------------------------------------------------------------------------------ Library header file for heater operations Date: 16/07/2018 ------------------------------------------------------------------------------*/ #ifndef Heater_H #define Heater_H #include "mbed.h" #include "ADS8568_ADC.h" #include "FastPWM.h" #define MEAS_DELAY 60 // measurement delay for ADC in us #define WAIT_DELAY 3 // wait delay for ADC in ms #define N_ROLL_AVG 1 // rolling average for R values #define ALL_CH 15 //value of convst bus to read all chanels simultaneosly #define Kp 0.1f //proportional gain #define Ti 0.2f //Integration time #define Kd 0.1f //Differentiator gain #define WIND_UP_LIMIT 0.1f //The change in error which turns off the integral term #define TICK_CYCLE 1000 //the number of tics per duty cycle #define LOG_LIM 30 //Number of reads before the result is logged #define GUARD_PWM_RATIO 21.0/82.0 //Ratio of guard duty cycle to heater duty cycle class Heater { //This class provides the interface through which each heater can be controlled public: /** Constructor * @param i_port, the current port in the ADC * @param v_port, the voltage port in the ADC * @param * drive, a pointer to the heater drive * @param * guard, a pointer to the guard * @param * intercept, the gradient of the linear relationship between resistance and temperature * @param * slope, the intercept of the linear relationship between resistance and temperature * @param R_ref (default value 1), optional parameter sets the target value for R **/ Heater(const int i_port, const int v_port, FastPWM * drive, FastPWM * guard, const float intercept, const float slope, float R_ref = 1); //Public member functions void read(); //Updates the resistance and error values for the heater void hold(const int hold_time); //Holds R_ref for hold_time miliseconds void ramp_R(const int ramp_time, const float R_final, const float R_start); //Ramps for ramp_time miliseconds from R_start to R_final void output() const; //Prints the current state of the heater void turn_off(); //Turns the heater off //Getters and setters void Set_R_ref(float R); float Get_R() const; protected: int curr; //Latest current reading from ADC int v; //Latest voltage reading from ADC float R; //Latest resistance calculated from ADC current and voltage float R_ref; //Current referance for resistance float error; //R_ref - R //float error_diff; //Differential error float error_integrated; //Integrated error const int i_port; //ADC port which corresponds to current measurements const int v_port; //ADC port which corresponds to voltage measurements const float intercept; const float slope; FastPWM * drive; //Pointer to the driver FastPWM * guard; //Pointer to the guard }; #endif