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.
Teachers! Did you use this instructable in your classroom?
Add a Teacher Note to share how you incorporated it into your lesson.
Step 1: What You Need: BOM and Tools
-Basic Knowledge of AC wiring (eg: Black = hot, White = Neutral, Green = GND)
-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 with resident BASIC
-5 button joystick
-Screws and nuts and standoffs
-Acrylic face plate
-Protoboard or prototyping card
-Dip to SO breakout board
-Fume extractor (Optional)
-Laser cutter (optional)
-heat-shrink / marrettes
Step 2: StickOS: What Is That?
"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/
StickOS programs can be downloaded from http://cpustick.com/downloads.htm
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 Putty or 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 3: Where to Start
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.
Step 4: The Program:
Project: Reflow Toaster
For: MC9S12DP512 | MAX6675 | K-Type Thermocouple | NHD-0420DZ-NSW-BBW
> pins (Must be designated by typing "pins <Statement>")
for k type thermocouple yellow/green wire = +ve, red wire = -ve
rem //LCD - see page 94 in basic users guide
rem // 5 button joystick used for user input
rem ----Program Starts Here----
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
250 let setpoint = 5000
260 sub main
270 lcd 0, "Tech Arts"
280 lcd 1, "Reflow Toaster"
290 sleep 1 s
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
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
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
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, " "
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
940 rem until F >= temp
960 gosub 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
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
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
1370 let heater = 0, fan = 1
1380 lcd 2, "Temp good"
1390 print "Adj Temp down=", F
1430 sub count
1440 if cnt > 0 then
1460 let cnt = cnt - 1
1470 rem lcd 3, "Timer = ", cnt, "sec"
1490 mask timer 2
1500 let cnt = 300
1510 gosub reflow2
1540 rem ----Clear LCD----
1550 sub lcdclear
1560 lcd 1, " "
1570 lcd 2, " "
1580 lcd 3, " "
Step 5: Special Thanks
This project was accomplished with the help of Technological Arts who supplied the funding and parts for the project.