mille feuille
/
TechshopReflow
TechshopReflow
Fork of max31855Sample by
Embed:
(wiki syntax)
Show/hide line numbers
main.cpp
00001 #include "mbed.h" 00002 #include "max31855.h" 00003 00004 DigitalOut myled(LED1); 00005 00006 //---------------------------------------------------------- 00007 //SPI Interfaces 00008 //SPI testSPI(p11,p12,p13);//MOSI MISO SCK for LPC1768 00009 SPI testSPI(P0_26,P0_25,P0_24);//MOSI MISO SCK for LPC824MAX 00010 //---------------------------------------------------------- 00011 00012 //---------------------------------------------------------- 00013 //Thermocouples 00014 //max31855 max1(testSPI,p21); 00015 max31855 max1(testSPI,P0_15);//Digital Out LPC824MAX 00016 //---------------------------------------------------------- 00017 00018 //---------------------------------------------------------- 00019 //Reflow Oven 00020 DigitalOut oOven(P0_27); 00021 //FUN 00022 DigitalOut oFan(P0_13); 00023 00024 //---------------------------------------------------------- 00025 00026 float getTemp(void){ 00027 float fvalue = 0.0; 00028 if (max1.ready()==1){ 00029 //Get the reading 00030 fvalue = max1.read_temp(); 00031 //fvalue = fvalu; 00032 //fvalue = fvalue *2 -160.0; //calibration here 00033 //fvalue = fvalue; //calibration here 00034 if((fvalue >= 2000)&&(fvalue <= 2010)){ 00035 printf("Plobe error : maybe wire is cut. stop all\r\n"); 00036 oOven = 0; 00037 oFan = 0; 00038 }else{ 00039 printf("Temp: %4.2f\n\r", fvalue); 00040 myled = !myled; 00041 return fvalue; 00042 } 00043 }else{ 00044 printf("Can not get Temp\n\r"); 00045 return -1;//error can not get temp 00046 00047 } 00048 } 00049 00050 void keepCool(void){ 00051 oOven = 0; 00052 oFan = 1; 00053 00054 for(int i=0;i<60;++i){ 00055 printf("cooling t:%d ",i); 00056 getTemp(); 00057 wait(1); 00058 00059 }//1 min wait for cool 00060 } 00061 00062 int stage1(void){ //upto 150 degree Celsius 00063 float nowTemp = 0; 00064 00065 oOven = 1; 00066 oFan = 0; 00067 00068 while(1){ 00069 printf("stage1 "); 00070 nowTemp = getTemp(); 00071 if(nowTemp >= 150){ 00072 oOven = 0;//stop oven 00073 return 1; 00074 } 00075 wait(0.5); 00076 } 00077 } 00078 00079 int stage2(void){ //keep 180 degree Celsius for 100 sec 00080 int time = 0; 00081 float nowTemp = 0; 00082 00083 oOven = 0; 00084 oFan = 1; 00085 00086 for(time = 0; time < (100.0 / 0.3); ++time){ 00087 printf("stage2 time=%4.2lf",(time*0.3)); 00088 nowTemp = getTemp(); 00089 00090 if(nowTemp > 180.0){ 00091 oOven = 0; 00092 oFan = 0; 00093 wait(0.05);; 00094 oOven = 0; 00095 oFan = 1; 00096 wait(0.1); 00097 oOven = 0; 00098 oFan = 0; 00099 wait(0.05);; 00100 oOven = 0; 00101 oFan = 1; 00102 wait(0.1); 00103 }else{ 00104 oOven = 1; 00105 oFan = 1; 00106 wait(0.05); 00107 oOven = 1; 00108 oFan = 0; 00109 wait(0.1); 00110 oOven = 1; 00111 oFan = 1; 00112 wait(0.05); 00113 oOven = 1; 00114 oFan = 0; 00115 wait(0.1); 00116 } 00117 } 00118 00119 return 1; 00120 } 00121 00122 00123 int stage3(void){ //Go to 260 degree Celsius! 00124 int time = 0; 00125 float nowTemp = 0; 00126 00127 00128 oOven = 0; 00129 oFan = 1; 00130 while(1){ 00131 printf("stage3 "); 00132 nowTemp = getTemp(); 00133 00134 if(nowTemp >= 260.0){ 00135 return 1; 00136 }else{ 00137 oOven = 1; 00138 oFan = 1; 00139 wait(0.05); 00140 oOven = 1; 00141 oFan = 0; 00142 wait(0.75); 00143 00144 } 00145 } 00146 return -1;//error 00147 } 00148 00149 int main() { 00150 //Initialise chip (starts internal timer) 00151 max1.initialise(); 00152 00153 //Float value to hold temperature returned 00154 float fvalue = 0; 00155 00156 //keepCool(); 00157 stage1(); 00158 stage1(); 00159 stage1(); 00160 stage2(); 00161 stage3(); 00162 stage3(); 00163 stage3(); 00164 keepCool(); 00165 keepCool(); 00166 keepCool(); 00167 printf("end of Process! Thank you for Using Techshop Reflow.\r\n"); 00168 00169 }
Generated on Sun Jul 17 2022 15:03:53 by 1.7.2