Introduction
I have always wanted a small reflow hotplate for my electronic projects. When I stumbled over this project, I knew I had to try it for myself.
The component list:
- Old iron
- ESP8266 (NodeMCU)
- SSD1306 OLED display
- I used the version where 1/4 of the screen is in yellow and the other 3/4 in blue
- Solid state relay (Make sure the voltage level of your MCU is sufficient for switching it on)
- Rotary encoder (with integrated push button)
- Thermocouple and amplifier (I used the MAX6675 module which interfaces over SPI)
These are the components that I chose for one reason or the other, mostly because they were already lying around.
The key component, the iron, isn't the prettiest anymore, but it should suffice.

I disassembled it and kept only the bottom part with the heating elements.

Which I then mounted on a plate:

I hid all of the electronics inside a plastic housing.

The plan was to first program a manual mode where you adjust the setpoint (target temperature) via the rotary encoder. In this mode I will keep adjusting the values of my regulation until I am happy with the result.
But first I want to see how the system (the iron) behaves.
For that we basically set the input to one e.g. turn on the solid state relay. Then we can see how long it takes for the temperature to begin rising and how fast the temperature rises. In theory, we could also see the maximum temperature the iron can reach. But the thing is I don't want to destroy the iron. So let's play it save and turn the switch off after some time.
The resulting curve can be seen here:
Well, we can definitely see that it takes long time to cool down. But let's zoom in on the important part:
The iron was actually on before the measurement so we can't say anything about the delay, but the maximum temperature rise is approximately 1.82 °C/s.
Controlling the iron
On-Off Controller
My first try was a simple On/Off controller, which failed miserably for reasons I will explain: The thermocouple is mounted at the bottom of the iron. there is a rather high delay until the MCU registers the rising temperature. This means upon rising, the actual temperature is much higher than the one read out of the sensor. Let's say the setpoint is 100°C, the iron is at room temperature which causes the solid state relay to be on.
Nothing will change for some minutes until the temperature starts climbing. Now it finally reaches the 100°C. The relay is turned off, but the actual temperature is much higher and the temperature readings are still climbing. The temperature increase eventually decreases until the maximum is reached and the board slowly cools down.
The problem: The difference between the setpoint and the overshoot is several tens of degrees celcius. A classical overshoot.
One solution: Reduce the delay until the reaction time is sufficient.
Well that would be great but I don't see how I could dramatically decrease the delay.
Proportional Controller
There is another way to decrease the overshoot: Let's decrease the temperature rise. This is done with PWM.
Instead of always turning the solid state relay on. It is only turned on for e.g. 10% of a second. This in turn reduces the temperature rise to around 10%.
Well, we still have a huge overshoot, but we actually reach the setpoint.
Let's try to find better values for the control.
Well this is much better. I even managed to make an egg.

Autonomous Mode
The last thing missing is the autonomous mode. In this mode we try to follow a predefined reflow temperature profile.
This was the first try:
With different control parameters it works much better:
Additionally you can see the duty cycle of the PWM signal in this plot:
I programmed the OLED display to show the current mode of operation, the setpoint and the measured temperature.

Practical Use
The reflow soldering iron is complete in its basic form. I am excited to solder an actual PCB with this project. So stay tuned for my next posts!