One of the projects I really wanted to get back to when I joined the Austin TechShop was my Reflow Oven based on a Toaster Oven.  The first prototype I made was a mess of AC wiring boxes with an Arduino sitting on the side.  While the oven did work, it was far from pretty.  Making use of the laser cutter, large workspaces, and friendly members at TS Austin, I was finally able to put together my 2nd prototype.
  The advantage of this oven design is that it doesn’t require any modifications to an existing toaster oven.  So you could, in theory, plug in any oven you can find.  In my case, I went to Goodwill and found a suitable oven. The board used in this video is the latest revision of my Accurate RTC Arduino Shield based on the Maxim DS3231.  The second revision is entirely self contained and only requires USB for power.   When connected, USB serial ouptut does provide some data about the reflow process.
Temperature tracked with Processing (peak is 250°C)
Temperature tracked with Processing (peak is 250°C)
The project is far form complete.  There’s a number of changes I want to make include:
  • Incorporating a keypad (or rotary encoder) on the front panel, to enable changes to the reflow profile
  • A 4×20 LCD Panel
  • Power Switch *grin*
  • Move DC power jack to the back and disable “power by USB”
  • Custom PCB based on the ATmega32u4 instead of the Arduino Uno ATmega328
  • An all acrylic enclosure
If you are interested, this is the processing code I used to track the incoming serial stream.  Keep in mind the image above has been flipped (the code draws the curve “upside down.”)

// Simple Reflow Graphing sketch
// James Lewis
// [email protected]
// Created 06 JAN 2013

// This example code is in the public domain.

import processing.serial.*;

Serial myPort; // The serial port
int xPos = 1; // horizontal position of the graph

void setup () {
// set the window size:
size(1000, 350);

// List all the available serial ports
// In this case, 11 was the Arduino I used for the Reflow Oven, on my Mac.
myPort = new Serial(this, Serial.list()[11], 9600);
// don't generate a serialEvent() unless you get a newline character:
void draw () {
// everything happens in the serialEvent()

void serialEvent (Serial myPort) {
// get the ASCII string:
String inString = myPort.readStringUntil('n');

if (inString != null) {
// trim off any whitespace:
inString = trim(inString);
String[] list = split(inString, ',');

/* Output from Oven Code
Time Setpoint Input Output
1 150.00 22.00 2000.00
2 150.00 21.75 2000.00
3 150.00 22.00 2000.00
4 150.00 22.00 2000.00
5 150.00 21.75 2000.00
6 150.00 22.00 2000.00

// convert current temp to float
float currentTemp = float(list[2]);

// draw the point
point(float(list[0]), currentTemp);


Fan of making things beep, blink and fly. Created AddOhms. Writer for News. Freelance electronics content creator for hire! KN6FGY and, of course, bald.


Write A Comment

This site uses Akismet to reduce spam. Learn how your comment data is processed.