Reflow oven controller

Thu, Aug 13, 2015 in Project using tags reflow , electronics , firmware

Overview

Designing a PCB with surface mount components opens up a lot of possibilities nowadays, but soldering the components down individually can be fiddly. A better way is to use a reflow oven. While it’s possible to go out and buy ovens specifically designed for reflow soldering, they are still not cheap. A rewarding project can be to adapt a tabletop oven intended for the kitchen.

The oven

I selected a tabletop halogen oven (sold on the high street as a low-fat fryer) and made a few modifications to it. I disconnected the thermostat and brought the cables out to a solid state relay. I partially bent the fan blades back to reduce the strength of the fan in order to avoid blowing components all over the place and I lined the inside of the oven with aluminium foil to increase the rate of heating.

The controller

There are other reflow controllers around which I could have bought or copied, but I fancied the challenge of making my own.

The job of an oven controller is in principle quite straightforward. It needs to measure the temperature of the oven and control the heating element in order to track the desired temperature over time. This particular oven doesn’t have any control over cooling so the control is a very simple single-channel on/off decision. This controller also has a display and some buttons for interaction with the user to configure the controller, edit and select a temperature profile, to start the process and to monitor progress.

The thermocouple interface is a MAX31856 precision thermocouple digital interface, a relatively new IC from Maxim which supports multiple types of thermocouple. It is connected by SPI to the microcontroller.

The display is a small 128x64 OLED module, interfaced with I2C. The four buttons mounted below the display provide user interaction and there is a buzzer for alerts. There are two control outputs, both of which are open collector outputs suitable for driving a solid state relay. Only one is used at present but the second one is available, with the right software, for more complex control if required.

The microcontroller is an ATtiny88 in a 32-pin TQFP package, which has 8KB of flash and 512 bytes of RAM.

The PCB was designed in KiCad and manufactured by Elecrow.

The software

The software was by far the biggest challenge in this project. User interfaces in particular take up space and if there is one thing that is short in this project, it is space.

There is a menu system which allows the user to configure the device operation and units as well as to edit and select temperature profiles. Temperature profiles can be saved (not yet implemented) and can be edited in any of the supported units. Once a temperature profile has been selected, it can be graphed and executed. While the profile is being executed, the actual temperature profile is superimposed on the target profile and a progress line shows the current time on the graph. The current temperature and time elapsed are also displayed.

The software is written in C and compiled with avr-gcc. The code is heavily optimised for space and compiler options including whole-program optimisation have been extensively used. Not all features have been implemented yet, in part due to the largely increasing effort required to cram the code into the space available. Nevertheless, the controller is capable of performing its primary function - reflowing PCBs in my oven.

Supported temperature scales

Similar projects

I took a lot of inspiration from this project, in particular with the modifications to the oven fan and the aluminium foil lining. It’s a very good write-up and I found it a very interesting project. The oven I bought was a slightly larger version of the one in this project.