Introduction: Automatic SMD Reflow Oven From a Cheap Toaster Oven
Hobbyist PCB making has become much more accessible. Circuit boards that contain only through-hole components are easy to solder but the size of the board is ultimately limited by the component's size. As such, utilizing surface mount components enable a more compact PCB design but is much more difficult to solder by hand. Reflow ovens provide a method that makes SMD soldering significantly easier. They work by cycling through a temperature profile that provides a consistent escalation in temperature which melts the solder paste underneath the surface mount components. Professional reflow ovens can be expensive especially if they are used on an occasional basis. My goal was to create an automatic reflow oven from a $20 toaster oven.
My plan was to use a stepper motor to rotate the temperature dial in a programmed way that will slowly escalate the temperature to melt the solder paste. I will attempt to mimic a specific reflow profile based on the solder paste I am using. Once the oven reaches a maximum temperature (melting point of the solder), the temperature dial will rotate backwards to reduce the temperature in the oven. All of this will be controlled by an arduino and displayed on an OLED screen. The ultimate goal is to load the oven with PCBs and components, press a single button, and have all of the components soldered without any outside adjustments or monitoring.
Supplies
- Arduino 5V pro mini
- Stepper Motor
- A4988 Stepper Motor Driver
- MAX31855 Thermocouple
- 128x64 OLED display
- 2x 6mm push buttons
- Limit switch
- 3 NPN transistors
- 12V power supply
- 5 1K resistors
- 4 10K resistors
- M3 bolts and nuts
- machine screws
- hex coupling nut
Step 1: Toaster Oven Tear Down
The first step was to take apart the toaster oven and have a look inside. This particular toaster oven has a temperature control dial and a timer control dial. The wiring inside and to both of the dials was pretty unfamiliar to me so I decided it was going to be easier to work around what was already in place. I realized that a stepper motor could be used to turn the dial. A temperature probe or thermocouple could be fed inside of the oven to monitor the temperature. An OLED screen would be able to display real time data including the current temperature. All of these peripheral components can easily be controlled by an Arduino. There was a lot of open space so I decided to conceal all or most of these components inside the oven.
Depending on which toaster oven you have the tear down process may be variable. I had to first remove screws around the front panel. I then turned the oven upside down and removed screws from the bottom of the side panel. From there I was able to access the wiring inside of the oven.
Next I removed both knobs on each dial and unscrewed them from the faceplate.
Step 2: Prototype
Now that I know what I need to design around, its time to start building a circuit. I did this in an additive process. I got the thermocouple to work, then added the screen, then added the stepper motor. Once I had the main components working, I needed a way to interact with the Arduino. I decided to use a couple of push buttons. The temperature control dial on the oven which would be rotated by the stepper motor would only rotate about 300 degrees clockwise to reach the maximum temperature. So that limit would need to be hard coded into the program. I also needed a way to reliably get the dial back to 0 degrees rotating counterclockwise. I planned to use a limit switch to prevent the stepper motor from rotating passed 0 degrees and risk damaging the temperature control dial. I found that my 12-in-1 PCB multitool was very useful for troubleshooting as I put together this circuit.
Attachments
Step 3: Refine the Program
I now have a circuit that will read the temperature and turn the stepper motor based on the temperature. The next step is to write the program in such a way that the temperature will be adjusted according to a reflow profile.
This website goes over the important background information on reflow profiles. I tried to follow the profile listed above. In general a profile will go through multiple set points including preheat, soak, ramp up, melt, cool down. The temperatures I used for each transition point are listed in the table above.
The coordination of the stepper motor rotation to each specific temperature was a trial and error process and takes quite a bit of patience. Initially, I would manually turn the knob while reading the current oven temperature. I determined the amount of dial rotation for each temperature set point on the profile. Once I had a rough idea of how much the dial needed to be turned to achieve each temperature, I translated that into the appropriate stepper motor rotation.
Now that I had all of the set points marked, I added delays between each step to match the appropriate timing of each stage.
There are different reflow profiles depending on which type of solder you use. I decided to incorporate profiles for lead solder and lead-free solder and needed a way to select which one I wanted. I coded a "menu" and used the two buttons to navigate and select.
Additionally I wanted a way to restart the program if I selected the wrong profile. I chose to press both buttons simultaneously to reset the Arduino and turn the temperature dial back to zero. They are wired specifically to accomplish this. The two buttons are ANDed together using transistor logic and the output is inverted to pull the reset pin LOW on the Arduino. This resets the Arduino and the stepper will rotate in reverse until the limit switch is reached (and the dial is back at zero).
The final code is provided below.
The images of the OLED is what is displayed during reflow. The refresh rate of the OLED is similar with the camera shutter which is why some of the image is cut off.
Attachments
Step 4: Preparing the Oven
Now that I have a a working circuit that controls the oven, I needed a way to permanently fix all of the components in place.
This first required drilling multiple holes in the face plate to support the motor, buttons, and limit switch as you can see in the pictures above.
I also used a bent nail to secure the hex coupler onto the stepper motor shaft. The nail would double as the trigger for the limit switch. The other end of the coupler will fit into the temperature dial.
Step 5: Converting From Breadboard to Perfboard
Because I wanted to fit most of the electronics within the empty space of the oven, I needed to wire and solder things together on a piece of perfboard. You can see my process in the images above. I added each component and connected the correct pins by following the schematic.
I started with the Arduino, then added the thermocouple board, then the motor driver. Finally I added the peripheral buttons, switches, transistors, and wires for the OLED.
Once everything was soldered I trimmed down the excess perfboard and plugged everything in to test.
Step 6: Powering the Oven
Because I did not alter the wiring of the oven, it still was running off of 120V AC. The Arduino and its peripherals were running from 12V DC. Instead of adding a rectifier and additional circuitry to power everything from one plug, I just decided to power both separately.
I wanted to run the 12V DC power cable close to the oven power cable. I drilled a small hole in the rubber adapter as you can see in the picture above. This worked really well and both cables run together and can be plugged in separately.
Finally I soldered the end of the 12V DC cable to the perfboard circuit.
Step 7: Assembly
Now that everything was working correctly, I started putting everything together in the following steps. (At various steps I added some heat resistant silicone to protect the wires/solder joints from melting/shorting when the oven reaches its peak temperature. This step is optional as it is probably overkill).
- Screw the temperature dial back onto the faceplate with the extended machine screws
- Feed the wires for the stepper motor and OLED through the top hole in the face plate
- Fit the stepper motor and couple the dial to the motor shaft. Reinforce with super glue after ensuring that the bent nail(limit switch trigger) is facing up.
- Slide the M3 bolts through the stepper motor holes and secure to the back of the face plate with nuts.
- Secure the stepper and OLED wires with zip ties (from the last two drill holes on opposite sides of the motor) to ensure clearance of the spinning stepper motor drive shaft.
- Solder OLED to respective wires. Hot glue back of OLED to back of stepper motor
- Cut down a scrap piece of wood to secure push bottoms into respective holes. Secure with nut and bolt.
- Cut down small wooden spacer to support the limit switch in place. Make sure alignment is such that it will be triggered when the dial is in the off or zero position. Secure with nuts and bolts.
- Drill 2 additional screw holes into side of oven where perfboard will be secured.
- Use zip ties to secure excess wires to side panel
- Feed thermocouple through side into oven
- Screw down timer dial back to face plate
- Screw side panel back onto oven, reattach face plate, and your Finished!
Step 8: Start Reflowing and Final Thoughts
The reflow oven is finished! You have successfully converted a $20 toaster oven into an automated surface mount reflow oven. I have tried reflowing multiple boards at once and have had no issues with cold joints or unsoldered connections. Its awesome to be able to load up the oven tray, press a button and have all of the boards soldered within 5 minutes.
With everything in place you may have to make minor adjustments to the stepper motor rotation and timing but I have had great success (I fed FTDI wires from the Arduino to the outside of the oven to easily reprogram without taking the oven apart). I tried to match the reflow profile closely but it is not perfect. For hobbyists, an exact profile may not be completely necessary as long as the temperature reaches above the melting point for the solder. But, this was a great learning experience and it is is nice to have an automated tool that will be useful for many projects to come!

Second Prize in the
Build a Tool Contest
27 Comments
2 years ago
Interesting idea with the stepper motor control.
Having attempted to make a few toaster ovens (using an off-the-shelf mains SSR for heating element control), the only type that I've found to heat up quickly enough (> 1 deg C per second) during the reflow phase to be successful, without adding heating elements, uses quartz infrared elements, the same as in this article. Smaller ovens with quartz elements are often available at very low cost. It can help to wrap some insulation around the unit to increase the heating rate. Cool down I've found tends to be too slow without gradually open the oven door, manually (an 'open the door' alarm can help), or by fabricating an automatic door opener using another motor. A PID temperature control algorithm is best used to control the heat to track the solder flow profile.
Reply 2 years ago
Thanks for the info! I may add some insulation if I find the heating rate becomes inadequate. I do usually open the door to speed up the cool down and I really like the idea of adding a door alarm. It would be simple with the arduino already in place.
Question 2 years ago
I understand that using the existing temp control made things easier/simpler. I wondered, however, what that temperature control actually consisted of - was it some electro mechanical device?
I was curious, what with all the electronics and programming you did, why some digital temp control did not make more sense than an electro- mechanical device with unknown tolerances adjusted mechanically by a digital-controlled motor.
Hey, it works and the work is as impressive as your results (and I know nothing about reflow, or surface mounting components) just curious as to why you didn't control the heating element(s) digitally.
Answer 2 years ago
Thanks for the question! I agree it is not the most elegant design. And yes my initial thought/hope was to be able to control it digitally however, when I got inside the oven, I realized it was an electromechanical device. I did some digging and found very little documentation on that control device especially in terms of the wiring and function. I did not feel comfortable messing with AC current and the wiring to reverse engineer it. Thats how I stumbled upon controlling it mechanically by a stepper motor especially because I had the parts handy.
2 years ago
This looks awesome and I really appreciate the work that went into it! Great ingenuity on the mechanical workings. There are a few safety, complexity, and nit picks I'd like to point out:
Safety: NEVER run DC and AC through the same box much less the same grommet. I would suggest powering the DC side via a project box with an isolated power port where cut wires will not touch. Routing of wires should probably have additional isolation especially through machined edges of sheet metal around moving components.
Complexity: as MarcoB176 mentioned, Solid State relays would be easier. They would also be safer and could be done in a way that would allow the oven to work with the original knob as well. Downside: you'll need to figure out the wiring to the elements.
Nit Picks from a software engineer: never use goto. Use functions. Code readability can go to zero very quickly with goto.
Questions:
Q1: based on the code, it looks like you're cycling the elements on and off for 0.5 seconds each state every second until desired temp is reached. Is that correct?
Q2: Have you considered PID algorithms? I'm working on a digital controller for my oven (my kid broke the post on the temp knob) using SSRs and am probably going to start with a manual guess and check approach but if it gets frustrating I'll switch to a PID aglorigthms.
Reply 2 years ago
As for the safety, I appreciate the concerns and will make the appropriate changes before consistent use.
I agree using an SSR would have been a better option. I think I would have taken that approach if the internal wiring to the elements was more familiar to me. But I figured I could get a similar result with the motor even though it added some complexity.
I know the goto function is very poor form. I used it initially to make sure I could get things working and meant to rewrite the code. I will plan to upload a more refined version to this instructable.
Q1: The 0.5 seconds is the delay necessary to get the stepper to move 1 step forward. There are additional delays in between each step of the motor which control the "rate of temperature change" or how fast I am turning the knob. The heating elements are are still controlled by the knob which are essentially always on after the program is started.
Q2: I did consider PID algorithms and was in the same boat...I figured I would start with a guess and check method then move on if I wasn't making progress. It turned out that method worked pretty well. I am planning on just using this as a hobbyist tool for occasional use, but if I were to use this in more of a professional/consistent setting I would have taken a much more systematic approach.
Reply 2 years ago
You won't need a PID for something generating heat. It's just too slow to make any difference for the D part to make any difference. Also a swing of a degree does not change anything in this application. So a simple P controller is all you need. Measure current temperature subtract it from the set Temperatur multiply the result with the P factor and drive that value into the pwm to drive the SSR over some optocoupler for galvanic isolation.
Reply 2 years ago
Look up tuning closed feedback loop controllers.
For P controller as far as I remember increase the multiplier value till the temperature starts to swing. Than take half of that value. Remember to set limits as the value you send to the pwm will overrun when the error (set temp minus current temp) is big at the beginning
Reply 2 years ago
If that is not exact enough than you can introduce the I part to make a PI controller
Reply 2 years ago
thanks! that's really helpful especially your experience on the guess and check method. Will start with that if for no other reason than I tinker because I like to tinker.
2 years ago
I love this. I made something similar several years ago, but used a cheap programmable temperature controller. It worked very well for making polymer films, was repurposed as a solder reflow oven and ended its life heat treating mechanical stuff. Unfortunately it cooked itself as there was insufficient insulation around the controller (which replaced the original thermostat), and 350°C proved to be a step too far! I suspect you'll be absolutely fine the way you've approached it though, but I suggest thinking about adding a heat shield around the stepper motor.
Nice job.
Reply 2 years ago
Or, a longer (7 inch?) shaft on the stepper motor - think out side the oven box!
Reply 2 years ago
Thanks for your comment! I will definitely consider adding a heat shield around the stepper especially if I end up needing higher temperatures.
2 years ago
I used s similar set up where I worked. I ran A Summit 1100 BGA machine
but it would not do some small boards or high density boards. I used
a toaster oven but just kept track of the board temp and oven temp. I
would run test board to get oven temp and ramp up dwell timing set
up. I did not adjust temp during ramp up. I would then turn on the
oven watch temps and then when temps were met, turn off oven and let
cool with door open. I did several two sided boards. Had several
company's QA the process most approved it but not for “flight“
items.
2 years ago
For hobbyists I've found that a good toaster oven with an accurate thermostat works best, and no modifications needed. Just set the thermostat to five degrees above the melting point of your solder paste. Keep an eye on it and after all the paste melts then shut the heat off.
2 years ago
I don't have need for a reflow oven, but I'd totally use this if I needed one.
Great idea using the stepper to "turn the knob" and control the heat instead of replacing it all together. Instant fav.
2 years ago
Nice project :-) I think to get the stepper motor to select the right temperature, you could maybe write a sketch for the Arduino which turns the stepper in stages and monitors the temperature with the thermistor, outputting by serial at each point, thereby creating a step/temp profile for the oven which you could use in your control sketch.... maybe?
Reply 2 years ago
Thanks! My control sketch does step the motor based on the current temperature but I think what you're suggesting would make the make my control sketch more accurate. Definitely something to consider implementing in the future! It would be much easier to run a sketch like that now with all of the hardware in place.
2 years ago
Very nice. Very useful.
2 years ago
I get the desired behaviour, however I find you don't explain what you would plan to do before doing.
I had to read the whole article to be able to know what was going on.
Maybe a preface to explain the how and why at the beginning of the articl