Heater for threaded program

Dependents:   LEX_Threaded_Programming

Heater.h

Committer:
omatthews
Date:
2019-07-24
Revision:
16:cd837b230b09
Parent:
15:e7838491c104
Child:
17:0bfed0e96927

File content as of revision 16:cd837b230b09:

/*------------------------------------------------------------------------------
Library header file for heater operations
Date: 16/07/2018


------------------------------------------------------------------------------*/

#ifndef Heater_H
#define Heater_H
#include "mbed.h"
#include "ADS8568_ADC.h"

#define MEAS_DELAY          80     // measurement delay for ADC
#define WAIT_DELAY          5      // wait delay for ADC

#define N_ROLL_AVG          1      // rolling average for R values
#define ALL_CH              15     //value of convst bus to read all chanels simultaneosly
#define Kd                  0.5f   //proportional gain
#define Ki                  1.0f   //Integrator gain

class Heater
{
    //This class provides the interface through which each heater can be controlled
    public:
        /** Constructor
                 * @param i_port, the port for the current in the ADC
                 * @param v_port, the port for the voltage in the ADC
                 * @param drive, the motor drive
                 * @param R_ref, the target value for R
                 */
        Heater(int i_port, int v_port, PwmOut * drive, float corr_grad, float corr_int, float R_ref = 1);
        
        //Public member functions

        void read();
        void hold(int hold_time);
        void ramp_R(int ramp_time, float R_final, float R_start);
        void ramp_T(int ramp_time, float T_final, float T_start);
        void output();
        
        //Conversions between temperature and resistance
        float R_to_T(float R);
        float T_to_R(float T);

        
        
        //Getters and setters
        void Set_T_ref(float T);
        void Set_R_ref(float R);
        void Set_D(float D);
        int Get_i();
        int Get_v();
        float Get_R();
        float Get_T();
        
        
        void turn_on();
        void turn_off();

        
    
    protected:
        

        int curr;
        int v;
        float R;
        float R_ref;
        float error;
        float error_integrated;
        
        int i_port;
        int v_port;
        PwmOut * drive;

        //Heater correlations give temperature for a given resistance (assume linear relationship)
        float corr_grad;
        float corr_int;
      
};
    
#endif