Sets ticks directly for heater test
Diff: Heater.h
- Revision:
- 23:65a9f9d85a3a
- Parent:
- 22:2d34a03ae57e
--- a/Heater.h Wed Aug 07 16:03:27 2019 +0000 +++ b/Heater.h Mon Aug 12 10:41:37 2019 +0000 @@ -16,13 +16,14 @@ #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.2f //proportional gain -#define Ti 0.5f //Integration time +#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 PWM_PERIOD 5 //Period of Pwm for the motor in us +#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 0.1 //Ratio of guard duty cycle to heater duty cycle + +#define GUARD_PWM_RATIO 21.0/82.0 //Ratio of guard duty cycle to heater duty cycle class Heater @@ -33,44 +34,27 @@ * @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 * corr_grad, the gradient of the linear relationship between resistance and temperature - * @param * corr_int, the intercept of the linear relationship between resistance and temperature + * @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 corr_grad, const float corr_int, float R_ref = 1); + 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 ramp_T(const int ramp_time, const float T_final, const float T_start); //Same as above but with T (T is in degrees celcius) void output() const; //Prints the current state of the heater - void turn_on(); //Turns the heater on void turn_off(); //Turns the heater off - - - //Linear conversions between temperature and resistance. Note that temperature is always in celcius - float R_to_T(const float R) const; - float T_to_R(const float T) const; - //Getters and setters - void Set_T_ref(float T); void Set_R_ref(float R); - void Set_D(float D); - int Get_i() const; - int Get_v() const; float Get_R() const; - float Get_T() const; - - - - protected: @@ -79,18 +63,18 @@ 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 - - //Heater correlations give temperature for a given resistance (assume linear relationship) - const float corr_grad; - const float corr_int; - }; #endif \ No newline at end of file