After many years persevering with a ‘simple’ soldering iron, I acquired a temperature controlled iron and was amazed at the difference it made to the quality of my work. Recently the iron failed and, although I managed to find the fault and repair it (the temperature sensor wire had broken off), it made me realize that I should keep one as a spare. It is actually quite difficult to repair an iron without an iron!
As I can’t afford to buy an expensive piece of equipment ‘just in case’, I decided to use this as an excuse for a hardware and software project based around a Hakko-FX888 soldering handpiece that I had already purchased.
I had a few requirements for what I wanted to make:
- Temperature Controlled. The iron needs to provide good temperature regulation, preferably using the PID control algorithm.
- Compact and light. This iron will spend most of its time stored away and will become the transportable option should I need to use an iron away from my bench.
- A small character based LCD Display to show current values, settings and to set parameters.
- Simple User Interface and menu system to access
- Uncomplicated Controller Circuit that could be controlled from an Arduino Pro Mini.
As with most projects, I started with a search of the internet so that I could ‘stand on the shoulders’ of others. DIY soldering irons are a popular project and I soon settled on a number that were likely candidates. The final design I implemented was mainly based on this design, which met most of my criteria.
Basic Soldering Iron Design
A temperature controlled soldering iron is basically just a heating element and a temperature sensor for feedback. To control the temperature, the system is continuously monitoring the error difference between the set point (the target temperature) and the current value (the actual temperature). This error is used to decide how to adjust the heating applied by the iron, in our case using an Arduino micro controller via PWM.
A common method for doing this is to use PID (Proportional-Integral-Derivative) control algorithm to do this. There is a lot of information about PID on the internet – one of the best explanations I have read for micro controllers is this series of blogs. The PID algorithm is based on the formula
The three K parameters have the following meaning
- Kp is proportional to the error at the present time.
- Ki accounts for errors that have accumulated (integrated) over time.
- Kd is a prediction of future error based on the trend (slope) of the current value. Kd is often not used during aggressive PID, especially when initially driving to the set point, at which time a more conservative control regime using Kd can take effect.
Controller Hardware Design
- Arduino Pro Mini to manage the system.
- Temperature sensor amplifier for the relatively small analog signal read from the iron.
- Power control for the resistive heating element
- Character based LCD display (1602 in this case).
- Rotary encoder with built-in switch.
- A switching power supply (24V 6A, like this one on eBay)
The Schematic and PCB design in Eagle CAD format are available here.
The circuit schematic is straightforward and is mostly described in the source design. The power control elements center around the IRFZ44N MOSFET connected to a PWM pin on the Arduino Pro Mini. The output from the PID calculation (0-255) directly drives the PWM output.
An LM358 OpAmp is used to amplify the signal from the sensor. The trimpot R2 is used to set a reasonable value for the analog input during calibration (more on that in Part 2).
The Arduino Pro Mini, amplifier and LCD require a +5V interface. During the design I assumed this voltage would be supplied externally, as I was concerned that the usual LM705 based power supply would be really inefficient and create too much heat dropping 24V to 5V. It was only after the PCB was made that I found a tiny buck converter on eBay that would do the job really efficiently. The DSN-Mini360 buck converter is specified with input 4.75V to 24V and adjusted output 1V to 17V at 1A. You can just see it mounted to the back of the PCB, poking out from the edge of the fully populated board below. The output of the buck converter needs to be adjusted to 5V before it is connected to the board to avoid damaging the Pro Mini and LM358.
The LCD interface is for a two-wire SR piggyback board (details here). This can be easily changed to a more common I2C interface if required.
The PCB was designed to be single sided so that it could be made easily on my CNC setup.
Once populated, the board was complete and ready for calibration, and testing with the software, which will be covered in Part 2.