dd

Dependencies:   BufferedSerial FastAnalogIn FastPWM mbed SHT75

Files at this revision

API Documentation at this revision

Comitter:
sbh9428
Date:
Mon Jul 11 01:05:52 2016 +0000
Parent:
9:6ef12ac2ddc3
Commit message:
fff;

Changed in this revision

commandt.cpp Show annotated file Show diff for this revision Revisions of this file
controlt.cpp Show annotated file Show diff for this revision Revisions of this file
controlt.h Show annotated file Show diff for this revision Revisions of this file
main.cpp Show annotated file Show diff for this revision Revisions of this file
peltiert.cpp Show annotated file Show diff for this revision Revisions of this file
tempsensort.cpp Show annotated file Show diff for this revision Revisions of this file
--- a/commandt.cpp	Thu Mar 31 14:01:49 2016 +0000
+++ b/commandt.cpp	Mon Jul 11 01:05:52 2016 +0000
@@ -67,6 +67,26 @@
 				case 'e':
 					control->set_period((int)asci_to_bin(data+2));
 					printf("set period %d\n", (int)asci_to_bin(data+2));
+				break;
+				case 'h':
+					control->highTemp=asci_to_bin(data+2);
+					printf("set high temp %2.2f\n", asci_to_bin(data+2));
+				break;
+				case 'l':
+					control->lowTemp=asci_to_bin(data+2);
+					printf("set low temp %2.2f\n", asci_to_bin(data+2));
+				break;
+				case 'a':
+					control->highTempTime=(int)asci_to_bin(data+2);
+					printf("set high temp time%d\n", (int)asci_to_bin(data+2));
+				break;
+				case 'b':
+					control->lowTempTime=(int)asci_to_bin(data+2);
+					printf("set low temp %d\n", (int)asci_to_bin(data+2));
+				break;
+				case 'o':
+					control->periodNumber=(int)asci_to_bin(data+2);
+					printf("set period repeat number %d \n", (int)asci_to_bin(data+2));
 					break;
 				default:
 				pc->printf("command error");
--- a/controlt.cpp	Thu Mar 31 14:01:49 2016 +0000
+++ b/controlt.cpp	Mon Jul 11 01:05:52 2016 +0000
@@ -28,6 +28,10 @@
 	
 	table_count=0;
 	table_mode=0;
+	
+	repeatTime=0;
+	repeatCount=0;
+	repeatSide=0;
 }
 
 control_t::~control_t() {
@@ -111,8 +115,8 @@
 void control_t::refresh_PWM()
 {
 	write_log();
-	time+=3;
-	printf("\n%1.4f, %1.4f, %1.4f, %1.4f, %2.2f, %d, %d, %d, %2.2f, %2.2f", P_value, I_value, D_value, PWM_value, start_temp, period, time, mode, target_temp, temp_sensor->get_temp());
+	time+=10;
+	printf("\n%1.4f, %d, %d, %d, %d, %d, %d, %d, %2.2f, %2.2f, %2.2f, %2.2f", P_value, time, mode, repeatTime, repeatCount, repeatSide, highTempTime, lowTempTime, highTemp, lowTemp, target_temp, temp_sensor->get_temp());
 	if(mode==0)
 	{
 		PWM_value=0;
@@ -133,6 +137,10 @@
 	{
 		follow_table();
 	}
+	else if(mode==5)
+	{
+		repeatPeriod();	
+	}
 }
 
 int control_t::get_mode()
@@ -283,4 +291,38 @@
 		printf(",remain step: %d",period-step);
 		step++;
 	}
-}	
\ No newline at end of file
+}	
+
+void control_t::repeatPeriod()
+{
+	repeatTime+=10;
+	if(repeatSide==0)
+	{
+		target_temp=lowTemp;
+		if(repeatTime>lowTempTime)
+		{
+			repeatSide=1;
+			repeatTime=0;
+		}
+	}
+	else
+	{
+		target_temp=highTemp;
+		if(repeatTime>highTempTime)
+		{	
+			repeatSide=0;
+			repeatTime=0;
+			repeatCount++;
+			if(repeatCount>=periodNumber)
+			{
+				repeatSide=0;
+				repeatTime=0;
+				repeatCount=0;
+				mode=0;	
+			}
+		}
+			
+	}
+	control_temp();
+	
+}
\ No newline at end of file
--- a/controlt.h	Thu Mar 31 14:01:49 2016 +0000
+++ b/controlt.h	Mon Jul 11 01:05:52 2016 +0000
@@ -48,6 +48,19 @@
 	void print_table();
 	void follow_table();
 	
+	float highTemp;
+	float lowTemp;
+	
+	int highTempTime;
+	int lowTempTime;
+	int periodNumber;
+	
+	void repeatPeriod();
+	
+	int repeatTime;
+	int repeatCount;
+	int repeatSide;
+	
 	control_t();
 	control_t(temp_sensor_t* _temp_sensor, peltier_t* _peltier,BufferedSerial* _pc);
 	virtual ~control_t();
--- a/main.cpp	Thu Mar 31 14:01:49 2016 +0000
+++ b/main.cpp	Mon Jul 11 01:05:52 2016 +0000
@@ -11,7 +11,7 @@
 
 Ticker controltick;
 
-AnalogIn temp_sensor_pin(p19);
+AnalogIn temp_sensor_pin(p20);
 
 temp_sensor_t temp_sensor(&temp_sensor_pin);
 
@@ -45,7 +45,7 @@
     
     pc.printf("temperature start \n");
     
-    controltick.attach(&peltier_control, 3);// sampling time
+    controltick.attach(&peltier_control, 10);// sampling time
     
     wait(10);
     
--- a/peltiert.cpp	Thu Mar 31 14:01:49 2016 +0000
+++ b/peltiert.cpp	Mon Jul 11 01:05:52 2016 +0000
@@ -26,8 +26,8 @@
 void peltier_t::set_PWM(float duty_ratio)
 {
 	if(duty_ratio>0)
-		*direction_pin=1;
+		*direction_pin=0;
 	else
-		*direction_pin=0;
+		*direction_pin=1;
 	peltier_pin->pulsewidth_us(1000*abs(duty_ratio));
 }
\ No newline at end of file
--- a/tempsensort.cpp	Thu Mar 31 14:01:49 2016 +0000
+++ b/tempsensort.cpp	Mon Jul 11 01:05:52 2016 +0000
@@ -24,5 +24,5 @@
 
 float temp_sensor_t::get_temp()
 {
-	return (double)temperature_sensor->read_u16()/1024/64*165-40;
+	return (float)temperature_sensor->read_u16()/1024/64*165-40;
 }