This article talks about how I hack a UYue 946 preheater and convert it into a solder reflow hot-plate.
UYue 946 Preheater
UYue 946 preheater is a small preheater that is often marketed as a tool for separating the layers of mobile phone display during mobile phone repairing, or for replacing the faulty LED on SMD LED plates. There are several size of UYue preheaters that can be purchased from AliExpress, I bought the smaller version which has a heating platform of 100mm x 100mm for about US$25. It costs another US$20 shipping cost for shipping from China to Singapore by air in about 10 days.
Dealing with high voltage is a very dangerous act! Please make sure you know what you are dealing with and have proper knowledge before hand. Your use of any information or materials on this Tiny Reflow Controller is entirely at your own risk, for which we shall not be liable.
The UYue 946-1010 preheater is a quite simple machine, it has a microcontroller board that consists of a Nuvoton's N76E0003AT20 chip which is an 8051-based 8-bit MCU, a FOTEK SSR-25DA Solid State Relay(SSR), a thermocouple and three 100-W heating elements. The controller has an on-board AC/DC converter and a 7805 5V regulator.
I get the inspiration from Digicool who published a 3-episode youtube videos of his teardown and modification. He uses an off-the-shelf reflow controller for his modification. I don't want to purchase a reflow controller, I want to use whatever parts I already had with minimum purchase, which means that I have to design my own circuit and write my own code for the solder reflow. Most part of the UYue preheater can be re-used, such as the casing, the heating platform (which is the whole reason why buying it and hacking it), the thermocoupler and the Solid State Relay. What need to be replaced is the controller.
My idea is to mount all the components on a 60x70mm prototyping board which can then be mounted on the casing to cover the hole due to the removing of the original controller. The prototyping board will like a front panel with an OLED display as well as buttons for the control, the screw terminals for connecting the thermocouple and SSR, plus other connectivity will be hidden behind the board. I started by using an ATTiny3217 board that I developed a while back as MCU because I had plenty of it, but I realised that the size of the prototype board is just slightly bigger than an Arduino Leonardo board, and I had an Arduino Leonardo board which I hardly used for the past several years, so I changed the design by making the the prototype board acts as an Leonardo shield that can be mounted on top of Leonardo. This turns out to be quite well. For the front of the prototype board, I try to make it cleaner and simple, the wiring behind the board is mess but that will be covered by the Leonardo. One thing that I purchased (cost about $3.5 including shipment from AliExpress) and mounted behind the prototype board is an I2C MAX31855 thermocoupler breakout board. I removed the Power Jack of the Leonardo as it height and size blocking the MAX31855 breakout board a little bit.
The link to the schematic can be found at the References section below. The schematic for my DIY solder reflow controller consists of the Arduino Leonardo as the MCU, an 1.3" SH1106-based OLED display, two push buttons, the MAX31855 breakout board, an LED, and three 2N3904 transistor driving circuits for driving a SSR, a buzzer and a fan, although the schematic include a driver for controlling a fan but eventually I didn't install any fan. MCU get the temperature reading from the thermocouple via SPI, information is sent to the OLED display via I2C.
One button is used to select the profile of Lead or Lead-free reflow profile, as Lead-based solder has lower reflow temperature than Lead-free temperature. Another button is used to for start/stop of the reflow process.
Rocket Scream from Malaysia has been selling Tiny Reflow Controller that it produced for many years. It published its software used for the TinyRelfowController under the Creative Common license in its github, my software is largely based on Rocket Scream's work, but it is not just a clone of its repository or a simple fork, as I did quite some major re-write, and therefore I named my code as TinyReflowControllerV3, the link to the source code can be found at References below.
There are several reasons that I did not use Rocket Scream's code directly. For one, Rocket Scream's TinyReflowController is using a 0.96" SSD1306-based dual-Color OLED display, while I only has a monochrome SH1106-based 1.3" OLED display. The Adafruit_SSD1306 library doesn't work with my SH-1106-based display. I could modified the library to make it works for my display, but personally I don't like Adafruit's library as it is often bloated and has dependency of other libraries. I opts to use a different library and wrote two extra functions to support the printing of degree symbol "˚", and drawing pixel on the display.
Rocket Scream's code consists a state machine for handling the debouncing and the states of the two buttons, which is overly complicated and difficult to follow the logic, I replace it with my own button library which only require a one-liner for debouncing.
When I was testing the MAX31855 break out board, I wrote my own code to testing it and realized that I basically created my own MAX31855 library so I just use that instead of using the Adafruit library for MAX31856 (and my breakout board is MAX31855, not MAX31856) that Rocket Scream is using.
The core algorithm of the code which is a state machine with PID algorithm (implemented with Arduino PID library for managing the reflow process remain very much the same (with some minor changes and improvements) as Rocket Scream's code.
The Reflow Controller is basically a state machine that going through 7 states of reflow process that are defined as:
REFLOW_STATE_IDLE, REFLOW_STATE_PREHEAT, REFLOW_STATE_SOAK, REFLOW_STATE_REFLOW, REFLOW_STATE_COOL, REFLOW_STATE_COMPLETE, REFLOW_STATE_TOO_HOT
When the program is in Idle, the word "Ready" is shown on the OLED display, it is ready and waiting for user input, user can press the "LF/PB" button to select Lead-Free/Lead profile, or press "Start/Stop" button to start the reflow process.
Once the user pressed the "Start" button, it entered the PreHeat state which set up the Setpoint temperature as 150 degree Celsius. The program read the thermocouple temperature at fix interval to see if it has reached to the Seppoint temperature.
When the temperature reach to 150 degree Celsius, it moves to the next Soak state, which set a more aggressive temperature ramp up at every 5-degree temperature step and apply the PID algorithm to accelerate the heating process.
The program will start the Reflow once it reach to the Reflow temperature, the Reflow temperature is different between Lead and Lead-Free solder paste, it is 180 degree Celsius for Lead-based solder paste, and 200 degree Celsius for Lead-Free solder paste. Reflow state is fairly short, lasting only about 30-45 seconds.
Once the temperature shot up to maximum reflow temperature of 224 degree Celsius (Lead) or 250 degree Celsius (Lead-Free), the program will enter the Cooldown state. For a true Reflow oven, the Cooldown state would cool down quickly in according to the reflow profile that you normally see in component datasheet. But the Cooldown state for the hot-plate last quite long until the hot-plate temperature is dropped to 100 degree Celsius. If you had a fan connect to the controller, the fan will be turn on when the program enter the Cooldown state.
The entire reflow process is consider to be complted when the temperature is dropped to 100 degree Celsius, and the program enter the Complete state, which will turn the buzzer on for 1 second as an audio notification. Since hot-plate is still quite hot at 100 degree Celsius, you will likely see that the program immediately enter the Too Hot state, warning the user from touching the hot-plate, until the temperature drop to 50 degree Celsius which bring the program back to Idel state.
I run the test a few times to confirm if the algorithm works as planned for both Lead/Lead-Free profiles. If I uncomment out the line
// #define SERIAL_PRINTOUT near the beginning of the Arduino sketch, it will print out values in the form of
Time, Setpoint, Temperature, Output
on Serial Monitor, which I can copy and save as a csv file, and use the series of
Temperature values to create an Excel chart for visualising the entire reflow process.
Here are the actual charts plotted based on the tests that I run for Lead and Lead-free profile.
As you can see from the chart, although the temperature has reached to the pre-set maximum reflow temperature, the temperature of the hot-plate will continue to go up and over-shot by about 5 to 10 degrees, what I did is to change the algorithm to cut down the SSR earlier.
Another issue is that, unlike an oven where it is easier to control the cool down period, it take quite long time for the temperature of the hot-plate to go down once it is reach to the peak of the reflow temperature, adding a fan might be helpful, but I simply take the PCB board off the hot plant once it reach the ColdDown state.
Other than that, everything works like a charm. I've done a few reflows even before I assembling everything together!
During my development and testing, I power my hot-plate shield and Arduino Leonardo through the USB port on the Leonardo board form my PC, this is great for powering the board and for testing, it also allows me to do diagnostic and observe the reflow process via Serial Monitor. It is however not practical to have a USB connection just for powering the controller for the final assembly. I need to have a small AC-DC converter for powering the controller.
I purchase a tiny AC-DC module with an output voltage of 5V 700mA from AliExpress, it costs about US$3 including shipment. The module came without any casing, I wrapped it with isolation tape and hot-glued it on the plastic cover of the SSR. The buzzer is hot-glued at the back of the Arduino Leonardo. The AC input for the AC-DC converter is connected to the Line and Neutral as shown in the picture.
I drill 4 holes on the front casing based on the position of 4 mounting holes on the prototpye board, and mounted the hot-plate shield with four 2mm separators and screws.
Many hobbyists convert household ovens into a Reflow oven, but I personally like this Reflow Hot-plate, as it is very compact and easy to be put on my tool shelf and do not need large storage space.
With slightly over US$50 that I spent on the hot-plate, the MAX31855 breakout board and the AC-DC converter, this hack turn out to be exactly what I expected and I'm very happy about the result. I might want to build a bigger one in future and make an all-in-one PCB board for the controller, like Rocket Scream did.