Heater for threaded program

Dependents:   LEX_Threaded_Programming

Heater.h

Committer:
omatthews
Date:
2019-07-19
Revision:
9:405e86b02d63
Parent:
8:5da71ae16115

File content as of revision 9:405e86b02d63:

/*------------------------------------------------------------------------------
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          500     // measurement delay for ADC
#define N_ROLL_AVG          10      // rolling average for R values
#define ALL_CH              15     //value of convst bus to read all chanels simultaneosly
#define Gain                47*10^-6

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);
        
        //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);
        int Get_i();
        int Get_v();
        float Get_R();
        float Get_T();
        
        
        void turn_on();
        void turn_off();
        PwmOut drive;

        
    
    protected:
        

        int curr;
        int v;
        float R;
        float R_ref;
        
        int i_port;
        int v_port;
        
        //Heater correlations give temperature for a given resistance (assume linear relationship)
        float corr_grad;
        float corr_int;
      
};
    
#endif