Heater for threaded program

Dependents:   LEX_Threaded_Programming

Heater.h

Committer:
omatthews
Date:
2019-07-23
Revision:
13:8629d78fd93b
Parent:
11:785a0329f802

File content as of revision 13:8629d78fd93b:

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

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);
        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;
        
        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