164 lines
3.1 KiB
C++
164 lines
3.1 KiB
C++
/****************************************************************************************************
|
|
|
|
RepRapFirmware - Heat
|
|
|
|
This is all the code to deal with heat and temperature.
|
|
|
|
-----------------------------------------------------------------------------------------------------
|
|
|
|
Version 0.1
|
|
|
|
18 November 2012
|
|
|
|
Adrian Bowyer
|
|
RepRap Professional Ltd
|
|
http://reprappro.com
|
|
|
|
Licence: GPL
|
|
|
|
****************************************************************************************************/
|
|
|
|
#ifndef HEAT_H
|
|
#define HEAT_H
|
|
|
|
class PID
|
|
{
|
|
public:
|
|
|
|
PID(Platform* p, int8_t h);
|
|
void Init();
|
|
void Spin();
|
|
void SetActiveTemperature(const float& t);
|
|
float GetActiveTemperature();
|
|
void SetStandbyTemperature(const float& t);
|
|
float GetStandbyTemperature();
|
|
void Activate();
|
|
void Standby();
|
|
bool Active();
|
|
float GetTemperature();
|
|
|
|
private:
|
|
|
|
Platform* platform;
|
|
float activeTemperature;
|
|
float standbyTemperature;
|
|
float temperature;
|
|
float lastTemperature;
|
|
float temp_iState;
|
|
float temp_dState;
|
|
bool active;
|
|
int8_t heater;
|
|
int8_t badTemperatureCount;
|
|
bool temperatureFault;
|
|
};
|
|
|
|
class Heat
|
|
{
|
|
|
|
public:
|
|
|
|
Heat(Platform* p, GCodes* g);
|
|
void Spin();
|
|
void Init();
|
|
void Exit();
|
|
void SetActiveTemperature(int8_t heater, const float& t);
|
|
float GetActiveTemperature(int8_t heater);
|
|
void SetStandbyTemperature(int8_t heater, const float& t);
|
|
float GetStandbyTemperature(int8_t heater);
|
|
void Activate(int8_t heater);
|
|
void Standby(int8_t heater);
|
|
float GetTemperature(int8_t heater);
|
|
bool AllHeatersAtSetTemperatures();
|
|
void Diagnostics();
|
|
|
|
private:
|
|
|
|
Platform* platform;
|
|
GCodes* gCodes;
|
|
bool active;
|
|
PID* pids[HEATERS];
|
|
float lastTime;
|
|
float longWait;
|
|
};
|
|
|
|
|
|
//***********************************************************************************************************
|
|
|
|
inline bool PID::Active()
|
|
{
|
|
return active;
|
|
}
|
|
|
|
inline void PID::SetActiveTemperature(const float& t)
|
|
{
|
|
activeTemperature = t;
|
|
}
|
|
|
|
inline float PID::GetActiveTemperature()
|
|
{
|
|
return activeTemperature;
|
|
}
|
|
|
|
inline void PID::SetStandbyTemperature(const float& t)
|
|
{
|
|
standbyTemperature = t;
|
|
}
|
|
|
|
inline float PID::GetStandbyTemperature()
|
|
{
|
|
return standbyTemperature;
|
|
}
|
|
|
|
inline float PID::GetTemperature()
|
|
{
|
|
return temperature;
|
|
}
|
|
|
|
inline void PID::Activate()
|
|
{
|
|
active = true;
|
|
}
|
|
|
|
inline void PID::Standby()
|
|
{
|
|
active = false;
|
|
}
|
|
|
|
|
|
inline void Heat::SetActiveTemperature(int8_t heater, const float& t)
|
|
{
|
|
pids[heater]->SetActiveTemperature(t);
|
|
}
|
|
|
|
inline float Heat::GetActiveTemperature(int8_t heater)
|
|
{
|
|
return pids[heater]->GetActiveTemperature();
|
|
}
|
|
|
|
inline void Heat::SetStandbyTemperature(int8_t heater, const float& t)
|
|
{
|
|
pids[heater]->SetStandbyTemperature(t);
|
|
}
|
|
|
|
inline float Heat::GetStandbyTemperature(int8_t heater)
|
|
{
|
|
return pids[heater]->GetStandbyTemperature();
|
|
}
|
|
|
|
inline float Heat::GetTemperature(int8_t heater)
|
|
{
|
|
return pids[heater]->GetTemperature();
|
|
}
|
|
|
|
inline void Heat::Activate(int8_t heater)
|
|
{
|
|
pids[heater]->Activate();
|
|
}
|
|
|
|
inline void Heat::Standby(int8_t heater)
|
|
{
|
|
pids[heater]->Standby();
|
|
}
|
|
|
|
|
|
#endif
|