dd

Dependencies:   BufferedSerial FastAnalogIn FastPWM mbed SHT75

Revision:
2:4c51394fb35b
Parent:
1:5c42ec7f1aeb
Child:
3:72644690e2e6
--- 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