dd
Dependencies: BufferedSerial FastAnalogIn FastPWM mbed SHT75
Diff: controlt.cpp
- Revision:
- 2:4c51394fb35b
- Parent:
- 1:5c42ec7f1aeb
- Child:
- 3:72644690e2e6
diff -r 5c42ec7f1aeb -r 4c51394fb35b controlt.cpp --- a/controlt.cpp Mon Feb 22 06:03:11 2016 +0000 +++ b/controlt.cpp Wed Mar 02 16:33:23 2016 +0000 @@ -12,7 +12,7 @@ } -control_t::control_t(temp_sensor_t* _temp_sensor, peltier_t* _peltier) +control_t::control_t(temp_sensor_t* _temp_sensor, peltier_t* _peltier,BufferedSerial *_pc) { log_count=0; @@ -23,6 +23,10 @@ temp_sensor=_temp_sensor; peltier=_peltier; + pc=_pc; + + table_count=0; + table_mode=0; } control_t::~control_t() { @@ -103,6 +107,10 @@ { control_temp(); } + else if(mode==3) + { + build_table(); + } } int control_t::get_mode() @@ -130,6 +138,11 @@ return PWM_value; } +int control_t::get_table_count() +{ + return table_count; +} + float control_t::calc_P() { return (target_temp-temp_sensor->get_temp())*P_value; @@ -140,7 +153,7 @@ float data=0; for(int i=0;i<10;i++) { - data+=temp_log[i]; + data+=PWM_log[i]; } return data*I_value; } @@ -155,4 +168,38 @@ log_count++; log_count=log_count%10; temp_log[log_count]=temp_sensor->get_temp(); + PWM_log[log_count]=target_temp-temp_sensor->get_temp(); +} + +void control_t::build_table() +{ + if(table_mode==0) + { + peltier->set_PWM(-1); + table_count++; + if(table_count>50) + { + table_mode=1; + table_count=0; + } + pc->printf("set initial temp %d/50 PWM is %f\n", table_count); + } + else + { + table[table_count]=temp_sensor->get_temp(); + table_count++; + peltier->set_PWM((float)-1+0.005*table_count); + if(table_count>=200) + mode=0; + pc->printf("build table %d/200, temp is %2.2f", table_count, temp_sensor->get_temp()); + } +} + +void control_t::print_table() +{ + int i; + for(i=0;i<201;i++) + { + pc->printf("PWM: %3.1f, temp is %2.2f\n", (-1+0.005*i), table[i]); + } } \ No newline at end of file