They say you are only as good as your tools. This is a statement I can vouch for, as better tools can make the difference between a sleek and well designed prototype and a rats nest covered breadboard. Unfortunately as an electronic hobbyist you don't always have the budget of a big tech company at your disposal. But hey, that's what DIY projects are for!
Starting off as a hobbyist or even small tech company designing and building electronics you will soon learn that most of the fun IC or MCU chips are either cheaper in, or only available in, surface mount form, and fancy reflow ovens are expensive. But a soldering oven isn't much different from a toaster oven-- the only difference is the accuracy and temperature settings.
That is why I'm going to show you how to build your very own Soldering Reflow Oven for under $100 from an old/new standard toaster oven, thermocouple and a microcontroller.
Note: This project can be accomplished many different ways with many different MCU's and components. I wanted to use Freescale Processors and StickOS BASIC, but I look forward to see how other people do this.
Requirements:
-Basic Knowledge of AC wiring (eg: Black = hot, White = Neutral, Green = GND)
-Soldering experience
-Some Microcontroller experience
Bill Of Materials:
-Toaster oven new or old
-Fiberglass insulation or fiberglass pipewrap
- K Type Thermocouple
- Max6675 K Type Thermocouple to-Digital Converter
- SSRD-240D40R Solid State Relay (Mechanical ones will be too noisy), 40A
- Note: This relay is now obsolete but I had it lying around so I used it. You can use any SSR-- just make sure it is rated for double the current that you need, as it will be derated due to high temperature. If you're not sure how much current your toaster uses, calculate it from (Power = Voltage * Amperage). For example my toaster was 1500W at 120V, therefore I = 1500/120 = 12.5A
-All Round steel strapping
-16X4 Character LCD - White on Blue
-Adapt9S12DP512
-5 button joystick
-Wire
-Screws and nuts and standoffs
-Acrylic face plate
-Protoboard or prototyping card
-Dip to SO breakout board
Tools:
-Soldering Iron
-Solder
-Fume extractor (Optional)
-Laser cutter (optional)
-Screw driver
-Drill Press
-File/sand paper
-heat-shrink / marrettes
"StickOS® BASIC is an entirely MCU-resident patented interactive programming environment, which includes an easy-to-use editor, transparent line-by-line compiler, interactive debugger, performance profiler, and flash filesystem, all running entirely within the MCU and controlled thru an interactive command-line user interface. In StickOS, external MCU pins may be bound to “pin variables” for manipulation or examination, and internal MCU peripherals may be managed by BASIC control statements and interrupt handlers. A StickOS-capable MCU may be connected to a host computer via a variety of transports and may then be controlled by any terminal emulator program, with no additional software or hardware required on the host computer. Once program development is complete, the MCU may be configured to autorun its BASIC program autonomously." - http://cpustick.com/
I found this OS and though it was a refreshing change from the ubiquitous Arduino projects. Nothing personal Adrunio fanboys, I still play with my Duemilanove. Similar to the Arduino system where you have a bootloader code on an Atmel chip, StickOS is a resident OS that can be loaded on Freescale (S12, Coldfire, S08) and Microchip (Pic) MCUs. But unlike Arduino once the StickOS is loaded the chip now becomes a mini computer that can be interfaced with by any Terminal Program.
I used Puttyor TeraTerm to communicate with the MCU.
My Favorite part is that it doesn't matter what computer or operating system you use to connect to the MCU running StickOS, because Terminal programs all use the same protocols so it can be reprogrammed on the fly using anything with a terminal and serial port.
Step 1: First start by disassembling your toaster, you will need to remove the dials and timers as we won't be using them. Make sure to keep the wire as it is rated for high heat and we will be using that later. Also make sure its not plugged in while you disassemble it...
Step 2: Next line the inside of the toaster (the gap between the inner and outer shell) with fiberglass insulation, this will help keep the heat in and thus help maintain a steady temperature.
Step 3: Mount the SSR. The toaster i used had a convention fan so i used a two channel relay so I could control the heating elements separate from the fan.
Step 4: Drill a hole in the back/side of the toaster and mount the thermocouple. i made a brace out of steel strapping to hold the thermocouple in place. Ideally you want to mount the thermocouple as close to the level where your boards are located.
Step 5: Solder the Max6675 to the smt to dip breakout board then solder that to the protoboard. One thing that i noticed which threw me off a bit was that the yellow wire of the thermocouple is +ve and the red wire is -ve...not sure what colour code they were following.
Step 6: You're almost done! Wire the Thermocouple, LCD, Button Joystick to the Protoboard then connect that to the Adapt9S12DP512. I laser cut an acrylic faceplate and mounted all the pieces to that but you can mount them to a project box if you don't have access to lasers. SolderToasterConnections.pdf169 KB
10 dim nrsti as pin pm5 for digital output
20 dim ncs as pin pm3 for digital output
30 dim thermocouple as short, F as short
40 dim cnt, setpoint, temp, status
50 dim left as pin pp0 for digital input debounced
60 dim select as pin pp4 for digital input debounced
70 dim up as pin pp3 for digital input debounced
80 dim down as pin pp2 for digital input debounced
90 dim right as pin pp1 for digital input debounced
100 dim heater as pin pp5 for analog output
110 dim fan as pin pt0 for digital output
120 dim buzzer as pin pp6 for analog output
130 dim SPICTL as byte at address 0x000000d8
140 let SPICTL = SPICTL&0xfe
150 configure timer 0 for 750 ms
160 configure timer 1 for 500 ms
170 configure timer 2 for 1 s
180 configure timer 3 for 500 ms
190 on timer 0 do gosub qspi
200 on timer 1 do gosub exit
210 on timer 2 do gosub count
220 mask timer 2
230 on timer 3 do gosub adjust
240 mask timer 3
310 rem ----main menu----
320 rem gosub lcdclear
330 let cnt = 300, heater = 0, fan = 0, buzzer = 0
340 lcd 1, "ROHS || Lead"
350 lcd 2, " up || Down"
360 while 1 do
370 if !up then
380 let temp = 473
390 gosub main2
400 rem sleep 100 ms
410 elseif !down then
420 let temp = 428
430 rem sleep 100 ms
440 gosub main2
450 else
460 endif
470 endwhile
480 endsub
490 sub main2
500 gosub lcdclear
510 while 1 do
520 lcd 1, "Start", "|<- ->|", "Stop"
530 if !left then
540 lcd 3, "Press ->| to Exit"
550 gosub preheat
560 else
570 endif
580 endwhile
590 endsub
600 rem----QSPI----
610 sub qspi
620 let ncs = 0, nrsti = 1
630 qspi thermocouple
640 let ncs = 1
650 let thermocouple = thermocouple >> 3
660 let thermocouple = thermocouple * 1/4
670 let F = thermocouple*9/5+31
680 lcd 0,"Temp:", dec thermocouple, "C", dec F, "F"
690 print "Fan =", fan
700 endsub
710 rem ----End program----
720 sub exit
730 if !right then
740 let heater = 0, fan = 0
750 lcd 0, " "
760 lcd 1, "Goodbye"
770 lcd 2, " "
780 lcd 3, " "
790 end
800 else
810 endif
820 endsub
830 rem----Preheat----
840 sub preheat
850 while F < temp do
860 gosub lcdclear
870 lcd 1, "Preheating"
880 if F <= 349 then
890 let heater = 5000, fan = 1
900 elseif F <= temp then
910 let heater = setpoint - (F*5), fan = 1
920 print "heater Value =", heater
930 endif
940 rem until F >= temp
950 endwhile
960 gosub reflow
970 endsub
980 rem----Reflow----
990 sub reflow
1000 unmask timer 3
1010 gosub lcdclear
1020 let buzzer = 750
1030 sleep 500 ms
1040 let buzzer = 0
1050 while 1 do
1060 lcd 3, "Timer = ", cnt, "secs"
1070 lcd 1, "Press < to start"
1080 if !up then
1090 let cnt = cnt + 10
1100 elseif !down then
1110 let cnt = cnt - 10
1120 elseif !left then
1130 unmask timer 2
1140 else
1150 endif
1160 endwhile
1170 endsub
1180 sub reflow2
1190 lcd 3, "Reflow Done"
1200 let buzzer = 500
1210 sleep 500 ms
1220 let buzzer = 0
1230 sleep 500 ms
1240 let buzzer = 400
1250 sleep 500 ms
1260 let buzzer = 0, fan = 0, heater = 0
1270 mask timer 3
1280 gosub main
1290 endsub
1300 rem----Adjust----
1310 sub adjust
1320 if F < temp then
1330 let heater = 5000, fan = 1
1340 lcd 2, "Temp adjusting"
1350 print "Adj Temp up =", F
1360 else
1370 let heater = 0, fan = 1
1380 lcd 2, "Temp good"
1390 print "Adj Temp down=", F
1400 endif
1410 endsub
1420 rem----Count----
1430 sub count
1440 if cnt > 0 then
1450 rem
1460 let cnt = cnt - 1
1470 rem lcd 3, "Timer = ", cnt, "sec"
1480 else
1490 mask timer 2
1500 let cnt = 300
1510 gosub reflow2
1520 endif
1530 endsub
This project was accomplished with the help of Technological Arts who supplied the funding and parts for the project. 作者: robter 时间: 2015-10-27 22:46
感谢楼主提供这么好的交流平台