Introduction: DIY Digital Soldering Station (Hakko 907)

Build an affordable Homebrew Hakko 907 Digital Soldering Station! Enjoy the variable and constant temperatures that can reach up to 525°C. The project only requires few components and roughly costs around $7 (excluding the repurposed power supply). Barely could I find detailed tutorials on one so I decided to make a video and Instructable about it.

Project Specifications:

  • Designed for Hakko 907 handles
  • Compatible with similar handles
  • Temperature Range: 27°C-525°C
  • Warmup Time: 25s - 37s (325°C)
  • Recommended Supply: 24V, 3A
  • Power: 50W (Average)

Full Video Tutorial:

Schematic, PCB Layout, Code & STL Files: Download Link


- The MOSFET used is an IRLZ44N not an IRFZ44N (IRLB4132 works best, barely without heat-up issue)

- Codes for connecting to a non I2C 16X2 LCD was uploaded

- Printable PCB trace errors were corrected (gerber unaffected)

Step 1: Regular Vs. Digital Soldering Irons

Regular Soldering Irons:

Just like any other hobbyist, I started with a regular soldering iron. They're great but they do come with several cons. Any hobbyist who have tried one knows the struggle that these irons take around 7-15 minutes to warm up before being able to solder. Once warmed up, these irons will remain operating at their maximum temperature range. In some cases, these irons can potentially damage electronic components when contact is prolonged. From experience, the intense heat sometimes knocks off the dotted copper pads when dealing with perfboards. There are ways and techniques to overcome this but once you have tried a digital soldering station, you'll never have the urge to go back.

Regular Soldering Irons With Variable Dimmers:

There's a simple and common way to control the heat from regular irons, this is by connecting a dimmer circuit to limit the power going to the heating element. These are also present in some products, I once owned a Weller soldering station that had these. They're really good! The only disadvantage is that there is no closed loop temperature feedback. In some instances, you won't be getting the temps marked on the dimmer knob, as the temps would drop when you are soldering components that absorb heat. You can turn up the knob to compensate for the thermal temp drops but once you stop soldering the temps would increase again. You can ramp up the warm-up times by turning the dimmer knob all the way up then turning it down once it's hot.

Digital Soldering Station:

This is my favorite among the three. It's very similar to the variable dimmer irons but everything is automated with a PID system. In simple terms, the automated electronic control system of your soldering station, constantly adjusts that "dimmer knob" for you. When the system detects that your iron's tip temperatures are lower than your set temperature, the system will ramp up the power required to generate heat on your iron's tip. When the iron temperature is higher than your set temperature, power is cut from the iron causing a drop in temperature. The system does this process really fast, constantly turning the heating element of your iron On and Off to maintain a constant temperature at your tip. This is why warm-up times are significantly faster with digital soldering stations.

Step 2: Parts & Materials

Prices would vary depending on where you get your components (Alixpress is the cheapest). I will be updating this step with links once I source out the cheapest online components. I bought my components locally at E-Gizmo Mechatronics Manila's shop.

Materials Needed:

  • Hakko 907 Handle ($3 Clone)
  • Arduino Nano
  • Buck Converter (MP2303 by D-SUN)
  • 5 Pin DIN Female Connector
  • DC Jack (2.1mm)
  • 24V 3A Power Supply
  • 16X2 I2C LCD
  • LM358 Op-Amp IC
  • IRLZ44N MOSFET (I used an IRLB4132, it's better)
  • 1N4007 Diode
  • 470uF 25V Electrolytic Capacitor
  • 470Ω 1/4W Resistor
  • 2.7kΩ 1/4W Resistor
  • 3.3kΩ 1/4W Resistor
  • 10kΩ 1/4W Resistor
  • 10k Potentiometer

NOTE: The IRFZ44N label on the schematic and PCB of the video was a typo. Use the IRLZ44N, it is the logic level version of the IRFZ44N. I used an IRLB4132 on mine since it was more available in my area. Other MOSFETS would work as long as it has the specs below. My older version of this Iron uses an IRLZ44N.

Recommended MOSFET Specs:

  • Logic Level N-Channel MOSFET- Logic level MOSFETs can be directly connected to a logic pin (digital pin of and Arduino). Since the saturating gate voltage is below the usual Vgs of regular MOSFETs, a logic level MOSFET has a gate to source saturation voltages of 5V or 3.3V (Vgs). When viewing datasheets, some manufacturers omit specifying this in text. You can refer to the Vgs vs. Id curve of the datasheet.
  • Vds of atleast 30V (or Higher)- This is the voltage limit of the MOSFET, we are operating at 24V, a Vgs of 24V should do, but it is a common practice to add some margin for stability. The typical Vgs for most MOSFETs is 30V. There is no harm in using MOSFETs with higher Vgs voltages, as long as the other specs are within the range.
  • Rds(on) of 0.022Ω (22mΩ), the lower the better- Rds(on) is the resistance formed across the Drain and Source pins of the MOSFET when it is saturated. To simplify everything, the lower your Rds(on), the cooler your MOSFET would be. If you have a high Rds(on), your MOSFET would run warmer since power is dissipated through the minute resistive nature of a MOSFET even when it is conducting.
  • Id of at least 3A or higher (I suggest above 20A) - This is the maximum current your MOSFET can handle.

Step 3: Design Process

Inside the Hakko 907 handle is a heating element with a temperature sensor close to it. Both are enclosed on a ceramic material. The heating element is simply a coil that produces heat when power is applied. The temperature sensor on the other hand is a thermistor. A thermistor is like a resistor, when the temperature changes, the resistance of the thermistor changes as well.

The Mystery Hakko Thermistor:

Sadly Hakko, does not provide enough data on the thermistor inside of their heating element units. It remained a mystery to me for years. So back in 2017, I conducted a tiny bench test to gather thermal characteristics of the mysterious thermistor inside. I added a temperature sensor to my iron's tip, connected an ohmmeter to my iron's thermistor pins and connected the heating element to my variable bench power supply. I then increased iron's temps and recorded the corresponding resistances of the thermistor. I eventually arrived with data plot that was useful for designing the circuit. I then found out it probably has a PTC thermistor, having a positive thermal coefficient. This means, as the temperature around the thermistor increases, the resistance of the thermistor increases as well.

(For the following steps, kindly refer to the third picture for the computation)

Voltage Divider For The Sensor:

In order to acquire a usable output from the thermistor temp sensor. I had to wire it up with a voltage divider. Then again, there is no datasheet for the mystery sensor, so I had set the top resistor on the voltage divider to limit the maximum power that is dissipated at the sensor (setting it to 50mW max). Now that I have acquired the top resistor of the voltage divider, I then computed for the maximum output voltage at the maximum operating temperature condition. The output of the voltage divider yielded around 1.6V. I then solved for the ADC compatibility for the Arduino Nano's 10 bit ADC and eventually found out that I cannot connect the voltage divider sensor setup directly as the values are too small for it to pick up accurately. In simple words, if I were to connect the voltage divider sensor directly to the analog pin there will be gaps between the temperature readings (Ex: 325°C, 326°C, 328°C..... 327°C is missing)

The Op-Amp:

In order to prevent the potential problem of having gaps between the temperature readout, an op-amp was used to upscale or amplify the low 1.6V peak output voltage of the voltage divider. The following computations from the third picture shows the minimum required gain and the gain I have selected on the implementation. I did not maximize the gain to scale the 1.6V output of the voltage divider to the Arduino's 5V ADC reference voltage since I wanted to add some margin in case other hakko handles connected to the voltage divider could yield voltages above 1.6V (which could lead to clipping). A gain of 2.22 should give a margin large enough for the project design to work with other iron handle models as well.

Step 4: The Schematic Diagram

The project uses a simple logic level N-channel MOSFET as a switching device for PWM control. This serves as a digital switch for providing power to the heating element. The non inverting op-amp (LM358) is used to amplify or upscale the tiny voltages that the voltage divider thermistor combo. The 10k potentiometer is used as the variable temperature control knob and LED is simply an indicator that I have wired and programmed in the project to display whether the heating element is active. For this specific project I'm using a 16X2 LCD with an I2C backpack driver since it is more user-friendly to the newbies in electronics.

Step 5: The PCB

I have designed the PCB layout in Proteus. I made it into a single sided PCB design so that it would be easy for everyone to fabricate this on a homebrew PCB. Take note one jumper is required if this were to be fabricated on a single sided PCB. The printable PDF file can be downloaded from the google drive link below.

If you wish to avail online PCB fabrication, the Gerber files can be downloaded from the google drive link below. You can also order my design directly on without having to input the Gerber files manually (Buy My PCB Link)

PCB Files (Proteus, Gerber & Printables):

Step 6: Calibrating the Buck Converter

Since most Arduino Nano clones can only take in 15V max without blowing the AMS1117 5V regulator while the heating element requires 24V to operate optimally, I buck converter bused be used for both to work together. The AMS1117 5V regulator found in most Arduino Nano clones has a dropout voltage of 1.5V, this mean the input voltage from the VIN pin of the Arduino Nano must be 6.5V (5V+1.5V).


  1. Set your power supply to 24V
  2. Connect the power supply to your buck converter's input
  3. Monitor the output voltage of your buck converter using your multimeter
  4. Adjust the trimmer resistor until you get an output voltage of 6.5V
  5. You can go with 7V for better stability.

Step 7: Circuit Assembly

Use the schematic diagram or parts placement diagram from the previous steps for assembling the circuit.

Step 8: 3D Printed Enclosure

You may chose to build your project on a cheap plastic enclosure or use my 3D Printed design. I'm including the Solidworks file for editing purposes. If you want to print ahead, the STL files are available from the google drive link below.

My 3D Printer Settings:

  • Printed on a Creality CR-10
  • 0.3mm Layer Height
  • 0.5mm Nozzle
  • 30% Infill
  • No Supports Needed

3D Printing Files (Solidworks & STLs):

Step 9: Enclosure Refinements (Paintjob & Sanding)

When your done printing, you can sand the 3D printed enclosure for a smoother finish. I painted mine mat black to make it look sleek and elegant.

Step 10: Mount the External Components

Screw the LCD, 10k Potentiometer, DC Jack and Driver Board in place. Then superglue the DIN connector and LED to the enclosure.

Step 11: Hakko 907 Connector

You might have trouble finding the proprietary 5 pin din connector of the Hakko handle like I did. You can snip of the male connector from the iron and replace it with a 4 pin male connector that you have. Ironically I have a 5 pin DIN connector pair but not one used on the Hakko. The 3rd pin is simply the ground, you can omit it if you are not particular to grounding standards and ESD protection.

Step 12: Wire the External Components

You can base your connection from the schematic diagram from the previous steps. I suggest adding a fuse across the DC jack and the assembled driver board for extra protection. I omitted the fuse as my power supply already has a fuse on the DC side.

Step 13: Programming


  1. Connect your Arduino to your computer
  2. Download my program sketch
  3. Tweak it if you must
  4. I made the values standardized for Hakko 907 handles
  5. I'll be updating this step soon for the fine tune calibration process.
  6. Be sure that the Wire.h and LiquidCrystal_I2C.h libraries are installed
  7. Tools > Boards > Select Arduino Nano
  8. Tools > Port > Select port where Arduino is connected
  9. Upload the sketch/ program

How The Code Works:

When the system detects that your iron's tip temperatures are lower than your set temperature, the system will ramp up the power required to generate heat on your iron's tip. When the iron temperature is higher than your set temperature, power is cut from the iron causing a drop in temperature. The system does this process really fast, constantly turning the heating element of your iron On and Off to maintain a constant temperature at your tip. This is why warm-up times are significantly faster with digital soldering stations.

PID Control:

No the code does not use a PID technique. My version one uses my old PID code but they perform almost the same with the comparator version of the code (the on this tutorial). I chose the simple version since it's easier to modify. You can email me for the PID version but it makes very little difference.

Arduino Code (V1.0):

Step 14: Adjust LCD Contrast & Potentiometer Add Knob

If you're new to Arduinos and 16x2 LCDs, you must tune the contrast trimmer resistor of your LCD for it to display properly. Once you are all set, you can finally add a plastic knob for your potentiometer for temperature control.

Step 15: Close the Enclosure & Power It Up!

Once you are confident that your soldering station is well calibrated, you can now close and screw the rear panel. You can use batteries or any AC to DC power supply from my power supply recommendation chart. If you want to get the best performance out of your station use a 24V 3A power supply. It can those metal case SMPS power supplies or perhaps repurpose a laptop charger for your soldering station. Junk shops and surplus shops have tons of them if you want to save money from buying a power supply. Laptop chargers typically rated at 18V 2.5A works well too but your iron's warm-up time could reach around 37s.

Step 16: Bonus: Better Heat Conduction

Quick tip. Here's a little trick off my sleeve that I usually do. You can add thermal paste in your Hakko 907 soldering tip for better thermal conductivity. It works and significantly improves the heat transfer! Just be sure to vent it out for the first 30 minutes of operation as the grease would start to boil and emit fumes. After the 30 minute period, it turns to this chalk like material. Just a warning, when times comes and you have to replace the tip, the dried out paste would adhere to the tip and heating element. Use a mallet on the tip to loosen the chalky material.

Step 17: Enjoy!

Enjoy your soldering station! I've been using this station for nearly 5 years now, the one on this tutorial is a make over of my refined version of my original station. I took my time to perfect the design as an open source kits for everyone to modify and enjoy. Let me know how your DIY Hakko Station goes!

Microcontroller Contest

First Prize in the
Microcontroller Contest