|
|
|
@ -82,8 +82,8 @@ void set_heater_power(int percent) {
|
|
|
|
/**
|
|
|
|
/**
|
|
|
|
* heater power calc
|
|
|
|
* heater power calc
|
|
|
|
*/
|
|
|
|
*/
|
|
|
|
int calc_hp(float t_t, float t_c, float Error_calc, int p_hb, float pid_hp, float pid_hi) {
|
|
|
|
int calc_hp(float delta_t, float Error_calc, int p_hb, float pid_hp, float pid_hi) {
|
|
|
|
int p_h = p_hb + pid_hp * (t_t - t_c) + pid_hi * Error_calc;
|
|
|
|
int p_h = p_hb + pid_hp * delta_t + pid_hi * Error_calc;
|
|
|
|
if (p_h > 100) {
|
|
|
|
if (p_h > 100) {
|
|
|
|
return 100;
|
|
|
|
return 100;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
@ -96,8 +96,8 @@ int calc_hp(float t_t, float t_c, float Error_calc, int p_hb, float pid_hp, floa
|
|
|
|
/**
|
|
|
|
/**
|
|
|
|
* compressor power percent calc
|
|
|
|
* compressor power percent calc
|
|
|
|
*/
|
|
|
|
*/
|
|
|
|
int calc_cp(float t_t, float t_c, int p_cb, float pid_cp) {
|
|
|
|
int calc_cp(float delta_t, int p_cb, float pid_cp) {
|
|
|
|
int percent = p_cb + pid_cp * (t_c - t_t);
|
|
|
|
int percent = p_cb - pid_cp * delta_t;
|
|
|
|
if (percent > 100) {
|
|
|
|
if (percent > 100) {
|
|
|
|
return 100;
|
|
|
|
return 100;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
@ -123,12 +123,13 @@ int calc_compressor_speed(int percent, int v_min, int v_max) {
|
|
|
|
|
|
|
|
|
|
|
|
void PID_Calc() // pid calc
|
|
|
|
void PID_Calc() // pid calc
|
|
|
|
{
|
|
|
|
{
|
|
|
|
int min_speed_count = 1500;
|
|
|
|
int min_speed_count = 1800;
|
|
|
|
int max_speed_count = 4500;
|
|
|
|
int max_speed_count = 4800;
|
|
|
|
float pid_hp = 19.2;
|
|
|
|
float pid_hp = 9.6;
|
|
|
|
float pid_cp = 14.4;
|
|
|
|
float pid_cp = 9.6;
|
|
|
|
float pid_hi = 0.08;
|
|
|
|
float pid_hi = 0.08;
|
|
|
|
int p_hb = 52;
|
|
|
|
int p_hb = 52;
|
|
|
|
|
|
|
|
int p_cb = 33;
|
|
|
|
float DelEk; // The difference between the last two deviations
|
|
|
|
float DelEk; // The difference between the last two deviations
|
|
|
|
// float td;
|
|
|
|
// float td;
|
|
|
|
float out;
|
|
|
|
float out;
|
|
|
|
@ -140,7 +141,7 @@ void PID_Calc() // pid calc
|
|
|
|
|
|
|
|
|
|
|
|
float delta_t = pid.set_tem - pid.now_tem;
|
|
|
|
float delta_t = pid.set_tem - pid.now_tem;
|
|
|
|
|
|
|
|
|
|
|
|
int p_c = calc_cp(pid.set_tem, pid.now_tem, 32, pid_cp);
|
|
|
|
int p_c = calc_cp(delta_t, p_cb, pid_cp);
|
|
|
|
int speed_count = calc_compressor_speed(p_c, min_speed_count, max_speed_count);
|
|
|
|
int speed_count = calc_compressor_speed(p_c, min_speed_count, max_speed_count);
|
|
|
|
|
|
|
|
|
|
|
|
pid.Ek = pid.set_tem - pid.now_tem;
|
|
|
|
pid.Ek = pid.set_tem - pid.now_tem;
|
|
|
|
@ -198,7 +199,7 @@ void PID_Calc() // pid calc
|
|
|
|
pid.C1ms = 0;
|
|
|
|
pid.C1ms = 0;
|
|
|
|
|
|
|
|
|
|
|
|
// heater percent
|
|
|
|
// heater percent
|
|
|
|
int heater_percent = calc_hp(pid.set_tem, pid.now_tem, Error_calc, p_hb, pid_hp, pid_hi);
|
|
|
|
int heater_percent = calc_hp(delta_t, Error_calc, p_hb, pid_hp, pid_hi);
|
|
|
|
// close heater when compressor is running in full state
|
|
|
|
// close heater when compressor is running in full state
|
|
|
|
if (speed_count == max_speed_count) {
|
|
|
|
if (speed_count == max_speed_count) {
|
|
|
|
heater_percent = 0;
|
|
|
|
heater_percent = 0;
|
|
|
|
|