|
|
@ -77,13 +77,6 @@ static float __mf_get_ozone_power() { |
|
|
|
return powersum / 10; |
|
|
|
} |
|
|
|
|
|
|
|
static float mf_fan_get_power() { |
|
|
|
float fanpower = 0; |
|
|
|
for (size_t i = 0; i < 20; i++) { |
|
|
|
fanpower += port_adc_get_fan_power(); |
|
|
|
} |
|
|
|
return fanpower / 20; |
|
|
|
} |
|
|
|
|
|
|
|
static void mf_get_ozone_power_reset_filter() { KFPConfig.LastP = __mf_get_ozone_power(); } |
|
|
|
static float mf_get_ozone_power() { return kalmanFilter(&KFPConfig, __mf_get_ozone_power()); } |
|
|
@ -162,15 +155,15 @@ static state_machine_state_t* processWorkingState(state_machine_t* machine, stat |
|
|
|
printf("----------start working--------\n"); |
|
|
|
} else if (event == TIME_EVENT) { |
|
|
|
float nowpower = mf_get_ozone_power(); |
|
|
|
float fanpower = mf_fan_get_power(); |
|
|
|
// float fanpower = mf_fan_get_power(); |
|
|
|
if (s_workingstate.adjustedToTheProperPower) { |
|
|
|
/** |
|
|
|
* 检查当前功率是否在期望功率窗口之外时候([expertpower+window,expertpower-window]), |
|
|
|
*/ |
|
|
|
// printf("change freq [ no ],freq %d, ozonePower %f-->%f fanPower:%f\n", s_workingstate.nowfreq, nowpower, get_expect_power(), fanpower); |
|
|
|
if (nowpower < (get_expect_power() - EXPECT_POWER_WINDONWS) || // |
|
|
|
nowpower > (get_expect_power() + EXPECT_POWER_WINDONWS)) { |
|
|
|
s_workingstate.adjustedToTheProperPower = false; |
|
|
|
printf("change freq [ no ],freq %d, ozonePower %f-->%f fanPower:%f\n", s_workingstate.nowfreq, nowpower, get_expect_power(), fanpower); |
|
|
|
if (nowpower < get_expect_power()) { |
|
|
|
s_workingstate.changefreqdirection = true; |
|
|
|
} else { |
|
|
@ -185,7 +178,7 @@ static state_machine_state_t* processWorkingState(state_machine_t* machine, stat |
|
|
|
if (nowpower < get_expect_power()) { |
|
|
|
s_workingstate.nowfreq += 25; |
|
|
|
if (s_workingstate.nowfreq > MAX_FREQ) s_workingstate.nowfreq = MAX_FREQ; |
|
|
|
printf("change freq [ up ],freq %d, ozonePower %f-->%f fanPower:%f\n", s_workingstate.nowfreq, nowpower, get_expect_power(), fanpower); |
|
|
|
printf("change freq [ up ],freq %d, ozonePower %f-->%f\n", s_workingstate.nowfreq, nowpower, get_expect_power()); |
|
|
|
port_ozone_pwm_set_duty(s_workingstate.nowfreq, kconst_pwm_work_dutyns); |
|
|
|
} else { |
|
|
|
// printf("reach %f->%f\n", nowpower, get_expect_power()); |
|
|
@ -195,7 +188,7 @@ static state_machine_state_t* processWorkingState(state_machine_t* machine, stat |
|
|
|
if (nowpower > get_expect_power()) { |
|
|
|
s_workingstate.nowfreq -= 25; |
|
|
|
if (s_workingstate.nowfreq < s_workingstate.resonant_frequency) s_workingstate.nowfreq = s_workingstate.resonant_frequency; |
|
|
|
printf("change freq [down],freq %d, ozonePower %f-->%f fanPower:%f\n", s_workingstate.nowfreq, nowpower, get_expect_power(), fanpower); |
|
|
|
printf("change freq [down],freq %d, ozonePower %f-->%f\n", s_workingstate.nowfreq, nowpower, get_expect_power()); |
|
|
|
port_ozone_pwm_set_duty(s_workingstate.nowfreq, kconst_pwm_work_dutyns); |
|
|
|
} else { |
|
|
|
// printf("reach %f->%f\n", nowpower, get_expect_power()); |
|
|
@ -266,5 +259,4 @@ ozone_control_working_state_t* ozone_control_get_working_state() { return &s_wor |
|
|
|
float ozone_control_get_ozone_power() { return mf_get_ozone_power(); } |
|
|
|
|
|
|
|
float ozone_control_get_expect_power() { return get_expect_power(); } |
|
|
|
|
|
|
|
float ozone_control_get_fan_power() { return mf_fan_get_power(); } |
|
|
|
// float ozone_control_get_fan_power() { return mf_fan_get_power(); } |