DIY Digital Soldering Station (Hakko 907)




Introduction: DIY Digital Soldering Station (Hakko 907)

About: Hi! I am Angelo, others know me as TechBuilder. I am an Electronics & Communications Engineering major. Instructables has been my home ever since I was 10. Hope yall enjoy my projects!

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

18 People Made This Project!


  • Science Fair Challenge

    Science Fair Challenge
  • Tinkercad to Fusion 360 Challenge

    Tinkercad to Fusion 360 Challenge
  • Home and Garden Contest

    Home and Garden Contest



8 hours ago


After reviewing the code, I don't quite understand the desire to calculate the average temperature of both the knob and the sensor.

I haven't built the project yet because I'm waiting for the PCBs I ordered.

Anyway I have made a slight modification in the code, and I hope to receive feedback, to know your opinion, and above all to know if I'm screwing it up, because I'm newbye.

The modifications are:

1. I have removed the calculations of the temperature averages, as I don't understand the advantage of. Due i assume in each loop of the program a real reading of the knobRAW and tempRAW values is made, they are mapped, and therefore we have an instantaneous and reliable reading of each instant in time.

2. Another modification I have made is (assuming that the power supply is adequate and there is no undervoltage) to adapt the PWM of the MOSFET's activation signal to the situation between the selected temperature and the actual temperature. In other words, when greater the difference between the two, greater the duty cycle, and viceversa. I also apply variable PWM to the LED, taking advantage of the fact that pin A3 is PWM.

It is possible that with this constant variation of the PWM, the heating will not be so fast as original code, because as the temperature difference between the actual and the selected temperature decreases, the duty cycle assigned to the PWM will decrease in a downward curve, as well as the heating curve. However, I believe that with this moded algorithm the iron will be smoother when we are at working temperature, and the temperature has to be adjusted when we are soldering and the temperature drops slightly when we touch the elements to be soldered and also apply the tin).

I leave attached the modified code for your opinion.




Question 2 days ago


I have a few questions about the wiring of the hakko terminal.

1. The connection of terminals 1 and 2 of the hakko terminal (corresponding to the sensor), as well as the connection of terminals 4 and 5 (corresponding to the heater) to the PCB can be in any order (i.e. no polarity)?
2. Terminal 3 (earth) of the hakko connector can be connected to the 220v mains earth?

Thank you very much in advance.

Best regards



10 days ago

Hello again,

Regarding the Hakko handle's DIN connector, the handle uses the 6-pin DIN format, but without the centre pin. You could fit a 6-pin female socket without having to change the connector on the handle.


4 months ago on Step 17

Variables lcdInterval and previousMillis are too short and overflows after some seconds. Better would be long.



Reply 4 months ago

previousMillis only, sorrrrrrrrry, my fault

David Mangnall
David Mangnall

Question 4 months ago

Thankyou so very much for your most brilliant solder station. Just what I need to re-invent my electronicsness.
I am sending off for the circuit board(s min of 5)
and will look online for all the different parts. But how do I get the case printed?
I havent been an active electronics person for decades, so a lot is new. Could I somehow use your Google Drive files to be made at pcb people at the same time.
A quick heads-up for these nut-n-bolt blank spaces will be a huge help.


Question 4 months ago

Any plans for a soldering / hot air combo.


4 months ago on Step 2

Very nice, I’m putting this to my todo list. I like to add that if your enclosure is made from ABS filament, for the finish you could hang it in a acetone vapor chamber also. I’ve done this to improve its strength.


4 months ago

Saw this on an Instructables email Newsletter (today) and the reason I clicked was because of that beautiful case. I am so impressed by the quality of the finish - did you do anything else or was it just sand and paint? Can you provide more detail, e.g. did you move through the grits, or just sand with a single grit? What grit? What exact paint model did you use? (Probably won't have the same brand here in the UK, but I can research and find something similar!) I 3D print a lot of different boxes for different projects, but I have never bothered to sand and paint. This looks so good, almost like it has a tactile rubbery finish. Any more info you can give would be great. Thanks!


4 months ago

Oh wow...excellent!


5 months ago

Hi, Few days ago I try make your station and i have litle problem wtih the code(i think the problem is there). When I turn on a power (24v) lcd screen was turn on and stop. Zero digit, led diode dosent light and iron is hot. Can someone help me?


Reply 5 months ago

Sorry a make mistake iron is cold no hot


5 months ago

I have just been testing a tweezer dual tip device. Same sensors.
I had 2 different multimeters on ohms and was observing 2 different resistances at the same temperature.
This gave the clue there was some voltage present, and when I swapped meters over they still read the same, and different.
I set meters to mV DC range and 25mV is about 250°C. Measure the voltage, not
the resistance, and see what happens. They both read the same on the 2
meters now!


Question 8 months ago

Is there any way to add a hot air gun to this soldering station?
The ones that has built in blower fan


6 months ago

Will Weller LR21 work with this project? It also has a PTC sensor with resistance as in the table. Edit. I made calculations according to the formulas you provided, and....Tmin(27deg)-->Vout=0.233V / Tmax(450deg)-->Vout=0.531V. Target Vout=2,06V. Behind the amplifier Tmax Vout=1, little.I changed Rf to 4k7 and Ri to 1k and now i have Tmax Vout=3,08V. Is it enough or do I have to change the code?EDIT: I connected an accurate multiturn potentiometer in place of the sensor and the ADC value was displayed on the LCD. According to the table, I set the minimum and maximum resistance on the potentiometer and noted the ADC values. I entered the noted values into the program and everything works as it should. Now the housing and I have an electronic weller station!


Question 6 months ago

How much money were you able to save


6 months ago

I am wondering, only because I have several left over. Can is use fqp30n06l?

science ath
science ath

11 months ago

I made it but there's a problem. I can't order an original element for now and I tried working with the element that came with the clone and here are some of its specs:
1) it has no hakko marking on element itself so it's a clone
2) as I turn it on, it start at off and as I rotate the knob to 30C only , it's heats at the full power.
3) With help of a multimeter, I found that the element had polarity.
4) it measure about 2 ohm in cold state so I assume it's a thermocouple type.
So, for now atleast, how can I change the values in the code or resistor on op amp to make it work for this clone thermocouple type element?


Reply 7 months ago

I Have same Clone you find any solution please help me i want to build this