TechshopReflow

Dependencies:   MAX31855 mbed

Fork of max31855Sample by Joe Staton

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers main.cpp Source File

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 }