TechshopReflow

Dependencies:   MAX31855 mbed

Fork of max31855Sample by Joe Staton

Committer:
Info
Date:
Wed Feb 22 15:02:37 2017 +0000
Revision:
3:adc7ee7569d2
Parent:
2:d3e63bd08832
????????????????;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Stavlin 0:c50a2801c243 1 #include "mbed.h"
Stavlin 0:c50a2801c243 2 #include "max31855.h"
Stavlin 0:c50a2801c243 3
Stavlin 0:c50a2801c243 4 DigitalOut myled(LED1);
Stavlin 0:c50a2801c243 5
Stavlin 0:c50a2801c243 6 //----------------------------------------------------------
Stavlin 0:c50a2801c243 7 //SPI Interfaces
Info 2:d3e63bd08832 8 //SPI testSPI(p11,p12,p13);//MOSI MISO SCK for LPC1768
Info 2:d3e63bd08832 9 SPI testSPI(P0_26,P0_25,P0_24);//MOSI MISO SCK for LPC824MAX
Stavlin 0:c50a2801c243 10 //----------------------------------------------------------
Stavlin 0:c50a2801c243 11
Stavlin 0:c50a2801c243 12 //----------------------------------------------------------
Stavlin 0:c50a2801c243 13 //Thermocouples
Info 2:d3e63bd08832 14 //max31855 max1(testSPI,p21);
Info 2:d3e63bd08832 15 max31855 max1(testSPI,P0_15);//Digital Out LPC824MAX
Info 2:d3e63bd08832 16 //----------------------------------------------------------
Info 2:d3e63bd08832 17
Info 2:d3e63bd08832 18 //----------------------------------------------------------
Info 2:d3e63bd08832 19 //Reflow Oven
Info 2:d3e63bd08832 20 DigitalOut oOven(P0_27);
Info 2:d3e63bd08832 21 //FUN
Info 2:d3e63bd08832 22 DigitalOut oFan(P0_13);
Info 2:d3e63bd08832 23
Stavlin 0:c50a2801c243 24 //----------------------------------------------------------
Stavlin 0:c50a2801c243 25
Info 2:d3e63bd08832 26 float getTemp(void){
Info 2:d3e63bd08832 27 float fvalue = 0.0;
Info 2:d3e63bd08832 28 if (max1.ready()==1){
Info 2:d3e63bd08832 29 //Get the reading
Info 2:d3e63bd08832 30 fvalue = max1.read_temp();
Info 2:d3e63bd08832 31 //fvalue = fvalu;
Info 2:d3e63bd08832 32 //fvalue = fvalue *2 -160.0; //calibration here
Info 2:d3e63bd08832 33 //fvalue = fvalue; //calibration here
Info 2:d3e63bd08832 34 if((fvalue >= 2000)&&(fvalue <= 2010)){
Info 3:adc7ee7569d2 35 printf("Plobe error : maybe wire is cut. stop all\r\n");
Info 3:adc7ee7569d2 36 oOven = 0;
Info 3:adc7ee7569d2 37 oFan = 0;
Info 2:d3e63bd08832 38 }else{
Info 2:d3e63bd08832 39 printf("Temp: %4.2f\n\r", fvalue);
Info 2:d3e63bd08832 40 myled = !myled;
Info 2:d3e63bd08832 41 return fvalue;
Info 2:d3e63bd08832 42 }
Info 2:d3e63bd08832 43 }else{
Info 2:d3e63bd08832 44 printf("Can not get Temp\n\r");
Info 2:d3e63bd08832 45 return -1;//error can not get temp
Info 2:d3e63bd08832 46
Info 2:d3e63bd08832 47 }
Info 2:d3e63bd08832 48 }
Info 2:d3e63bd08832 49
Info 2:d3e63bd08832 50 void keepCool(void){
Info 2:d3e63bd08832 51 oOven = 0;
Info 2:d3e63bd08832 52 oFan = 1;
Info 2:d3e63bd08832 53
Info 2:d3e63bd08832 54 for(int i=0;i<60;++i){
Info 2:d3e63bd08832 55 printf("cooling t:%d ",i);
Info 2:d3e63bd08832 56 getTemp();
Info 2:d3e63bd08832 57 wait(1);
Info 2:d3e63bd08832 58
Info 2:d3e63bd08832 59 }//1 min wait for cool
Info 2:d3e63bd08832 60 }
Info 2:d3e63bd08832 61
Info 2:d3e63bd08832 62 int stage1(void){ //upto 150 degree Celsius
Info 2:d3e63bd08832 63 float nowTemp = 0;
Info 2:d3e63bd08832 64
Info 2:d3e63bd08832 65 oOven = 1;
Info 2:d3e63bd08832 66 oFan = 0;
Info 2:d3e63bd08832 67
Info 2:d3e63bd08832 68 while(1){
Info 2:d3e63bd08832 69 printf("stage1 ");
Info 2:d3e63bd08832 70 nowTemp = getTemp();
Info 2:d3e63bd08832 71 if(nowTemp >= 150){
Info 2:d3e63bd08832 72 oOven = 0;//stop oven
Info 2:d3e63bd08832 73 return 1;
Info 2:d3e63bd08832 74 }
Info 2:d3e63bd08832 75 wait(0.5);
Info 2:d3e63bd08832 76 }
Info 2:d3e63bd08832 77 }
Info 2:d3e63bd08832 78
Info 2:d3e63bd08832 79 int stage2(void){ //keep 180 degree Celsius for 100 sec
Info 2:d3e63bd08832 80 int time = 0;
Info 2:d3e63bd08832 81 float nowTemp = 0;
Info 2:d3e63bd08832 82
Info 2:d3e63bd08832 83 oOven = 0;
Info 2:d3e63bd08832 84 oFan = 1;
Info 2:d3e63bd08832 85
Info 2:d3e63bd08832 86 for(time = 0; time < (100.0 / 0.3); ++time){
Info 2:d3e63bd08832 87 printf("stage2 time=%4.2lf",(time*0.3));
Info 2:d3e63bd08832 88 nowTemp = getTemp();
Info 2:d3e63bd08832 89
Info 2:d3e63bd08832 90 if(nowTemp > 180.0){
Info 2:d3e63bd08832 91 oOven = 0;
Info 2:d3e63bd08832 92 oFan = 0;
Info 2:d3e63bd08832 93 wait(0.05);;
Info 2:d3e63bd08832 94 oOven = 0;
Info 2:d3e63bd08832 95 oFan = 1;
Info 2:d3e63bd08832 96 wait(0.1);
Info 2:d3e63bd08832 97 oOven = 0;
Info 2:d3e63bd08832 98 oFan = 0;
Info 2:d3e63bd08832 99 wait(0.05);;
Info 2:d3e63bd08832 100 oOven = 0;
Info 2:d3e63bd08832 101 oFan = 1;
Info 2:d3e63bd08832 102 wait(0.1);
Info 2:d3e63bd08832 103 }else{
Info 2:d3e63bd08832 104 oOven = 1;
Info 2:d3e63bd08832 105 oFan = 1;
Info 2:d3e63bd08832 106 wait(0.05);
Info 2:d3e63bd08832 107 oOven = 1;
Info 2:d3e63bd08832 108 oFan = 0;
Info 2:d3e63bd08832 109 wait(0.1);
Info 2:d3e63bd08832 110 oOven = 1;
Info 2:d3e63bd08832 111 oFan = 1;
Info 2:d3e63bd08832 112 wait(0.05);
Info 2:d3e63bd08832 113 oOven = 1;
Info 2:d3e63bd08832 114 oFan = 0;
Info 2:d3e63bd08832 115 wait(0.1);
Info 2:d3e63bd08832 116 }
Info 2:d3e63bd08832 117 }
Info 2:d3e63bd08832 118
Info 2:d3e63bd08832 119 return 1;
Info 2:d3e63bd08832 120 }
Info 2:d3e63bd08832 121
Info 2:d3e63bd08832 122
Info 2:d3e63bd08832 123 int stage3(void){ //Go to 260 degree Celsius!
Info 2:d3e63bd08832 124 int time = 0;
Info 2:d3e63bd08832 125 float nowTemp = 0;
Info 2:d3e63bd08832 126
Info 2:d3e63bd08832 127
Info 2:d3e63bd08832 128 oOven = 0;
Info 2:d3e63bd08832 129 oFan = 1;
Info 2:d3e63bd08832 130 while(1){
Info 2:d3e63bd08832 131 printf("stage3 ");
Info 2:d3e63bd08832 132 nowTemp = getTemp();
Info 2:d3e63bd08832 133
Info 2:d3e63bd08832 134 if(nowTemp >= 260.0){
Info 2:d3e63bd08832 135 return 1;
Info 2:d3e63bd08832 136 }else{
Info 2:d3e63bd08832 137 oOven = 1;
Info 2:d3e63bd08832 138 oFan = 1;
Info 2:d3e63bd08832 139 wait(0.05);
Info 2:d3e63bd08832 140 oOven = 1;
Info 2:d3e63bd08832 141 oFan = 0;
Info 2:d3e63bd08832 142 wait(0.75);
Info 2:d3e63bd08832 143
Info 2:d3e63bd08832 144 }
Info 2:d3e63bd08832 145 }
Info 2:d3e63bd08832 146 return -1;//error
Info 2:d3e63bd08832 147 }
Info 2:d3e63bd08832 148
Stavlin 0:c50a2801c243 149 int main() {
Stavlin 0:c50a2801c243 150 //Initialise chip (starts internal timer)
Stavlin 0:c50a2801c243 151 max1.initialise();
Stavlin 0:c50a2801c243 152
Stavlin 0:c50a2801c243 153 //Float value to hold temperature returned
Stavlin 0:c50a2801c243 154 float fvalue = 0;
Stavlin 0:c50a2801c243 155
Info 2:d3e63bd08832 156 //keepCool();
Info 2:d3e63bd08832 157 stage1();
Info 2:d3e63bd08832 158 stage1();
Info 2:d3e63bd08832 159 stage1();
Info 2:d3e63bd08832 160 stage2();
Info 2:d3e63bd08832 161 stage3();
Info 2:d3e63bd08832 162 stage3();
Info 2:d3e63bd08832 163 stage3();
Info 2:d3e63bd08832 164 keepCool();
Info 2:d3e63bd08832 165 keepCool();
Info 2:d3e63bd08832 166 keepCool();
Info 2:d3e63bd08832 167 printf("end of Process! Thank you for Using Techshop Reflow.\r\n");
Info 2:d3e63bd08832 168
Stavlin 0:c50a2801c243 169 }