Hakko 907 based Soldering Station

A soldering station based on the easy to source Hakko 907 soldering iron, which is a 24V 50W soldering iron with integrated thermistor.

Similar projects worth following
After using a 110V 40W soldering iron based on the Hakko 907, I've noticed how a soldering iron makes a difference. I'm not saying these 110V clones are good, but they were certainly better than the traditional soldering irons around here.

There are lots of tips, cheap and easy to source from China, and these make difference when soldering.

Now, I want to make a soldering station, with a better quality than those 110V irons and with easy to replace soldering iron.

Project files: soldering station files

  • 1 × 10K Potentiometer Standard panel potentiometer
  • 1 × 0R3 1W Resistor
  • 1 × 100R Resistor
  • 1 × 150R Resistor
  • 1 × 1K Resistor

View all 26 components

  • Code update

    Kuro05/02/2015 at 06:46 4 comments

      I've updated the code in the soldering station files. There's new content and an attempt to fix a problem with the PID controlling the temperature around 10C above the setpoint.

      Other features:

      1. Auto turn-off with default time set to 45 minutes;
      2. If you reburn the frimware, it will use the Kp, Ki and Kd defined in the code instead of trying to load them from EEPROM, unless you run the autotune. This makes it possible to use the soldering station without autotuning.

      That's it.

  • Revising the amplifier

    Kuro04/02/2015 at 10:06 0 comments

      I've noticed that the temperature sensor amplification could be improved.

      Just follow these instructions:

      1. R3 of 10kohm
      2. R4 of 47kohm
      3. R5 of 1kohm

      If you want an explanation, keep reading.

      The equation for the op. amp. output voltage is given by:

      \color{White} \large Vo = GAIN * 5V * \frac{Rsens}{R3 + Rsens}The ideal value for Vo is just below 5V when Rsens is at it's greatest value. Assuming Rsens of 200ohm when hot, calculating for 48x gain and R3 of 10kohm:

      That means the max value at the output of the operational amplifier is 4.71V. We could increase this value and that would increase the precision in the temperature readings.

  • 3D printed case and finishing it off

    Kuro02/17/2015 at 17:26 0 comments

    The last project log guys, sorry for the delay.

    I've modeled a case and 3D printed it to house the electronics. The case was modeled in OpenSCAD.





    Button caps, for the tactile switches:

    With everything printed, I went to assembly. It became a real mess of wires. One thing to note is that the center cylinder with the bolt hole was too close to the LCD pins.

    I drilled a 5mm hole on both sides of the top part and fitted a M5 threaded rod to fix the rest for the iron.

    That's about it. All files are now available. If anyone feels like improving the project, please do it.

    Thanks for the ones who followed the (slow) progress of this project and I hope it can be of some use to someone out there.

    Files are in the projects main page.

  • Software!

    Kuro01/10/2015 at 07:21 0 comments

    It's been a long time since the last update, sorry guys. I've got rather busy, then came end year and I went to visit my family, without any contact with the project.

    Anyway, I was able to finish the project just before leaving, but had no time to post about it. In this post I'll talk about the software development and I'll try to finish the project as soon as possible.

    There were some problems, mainly with the PCB, as I noticed later. I didn't feel the problems were big enough to make me redo the PCB, so I'll just leave it as it is right now.

    The first problem was related to the LCD data bus. I didn't know that A6 and A7 pins on Arduino Nano were input only, and these two pins were used as D6 and D7 data lines to the LCD. This was fixed rather easily by using other available pins on the side of the board. I didn't even swap that vertical pin header to a right angle one after discovering that.

    Now, I had to do the software. I prepared a breadboard with the LCD, some tactile switches and a potentiometer. I also connected the soldering iron and attached a thermocouple to the heating element.

    As I had noticed before that the PTC resistance was almost linear over a wide temperature range, I chose to use a linear function to calculate the temperature. I measured two different temperatures and the corresponding analog value to calculate the equation.

    In the code you can uncomment the following lines to show the analog value read by the Arduino:

    lcd.setCursor(13, 1);
    uint16_t temp_analog = 0;
    temp_analog += analogRead(TEMP_PIN);
    temp_analog += analogRead(TEMP_PIN);
    temp_analog += analogRead(TEMP_PIN);

    I got the analog values with the iron at 30C and 450C, as measured in the thermocouple. These values were 228 and 590 respectively.

    The equation will look like:

    \color{White} \large Y = a \times X + b

    where Y is the temperature and X is the analog value read from the sensor. You will need the two analog values and the two temperatures to calculate "a" and "b".

    To find "a", subtract your higher value temperature from your lower value temperature and divide by the subtraction of their correspondent analog values. Using the values I got: (30C, 228) and (450C, 590) where 30C is 30 degree Celsius and 228 is the analog value.

    \color{White} \large a = \frac{450 - 30}{590 - 228}

    \color{White} \large a = 1.16

    Now, to find "b" use the the linear equation with "Y" as one of the values you found and X is it's analog value. The value of "a" is the one found just before. Using (30C, 228):

    \color{White} \large 30 = 1.16 \times 228 + b

    \color{White} \large b = 30 - 1.16 \times 228 = -234.48

    The values of "a" and "b" should then be set in the firmware:

    #define EQUATION_A    1.16
    #define EQUATION_B    -234.48

    Next in the code, I used PID to control the heating element and the code has a PID autotune that should be ran when turning the soldering station for the first time.

    To run the autotune, hold the autotune button and turn on the soldering station. The autotune will then save the values to the EEPROM and these will be loaded every time you use the soldering station. The values can be checked by pressing the autotune button while the soldering station is on.

    The only thing I think is still lacking is an auto turn off function.

    To finish this post, have some more pictures of the development setup:

    The code is available here.

  • Board assembly

    Kuro11/29/2014 at 04:01 0 comments

    I started the assembly with the jumpers, resistors and diodes first:

    Then, I went to finish the switching power supply. Power jack, power switch connections and capacitor.

    Notice that I soldered pins instead of the screw terminal to the power switch. Didn't want any wires going through the back of the board.

    Continuing with the power supply, I soldered the rest of the components necessary, and tested it.

    Everything working alright. I set the output voltage to 12V with the potentiometer. You want to set the output voltage now, because if you connect your Arduino without setting the voltage first, you could fry it.

    With the power supply working, I soldered the rest of the parts.

    The USB connector is over the LCD pin header. I was going to use 90 degree pin headers, but I had none right now. I'll swap the pin header later.

    With the power on:

    Everything seems to be working as expected. Next thing now is the program, but I'm rather tired after soldering the board.

    I'll do it next time.

  • Board etched

    Kuro11/29/2014 at 01:07 0 comments

    Went to college today and the projects room heat press was dead. Asked a professor and he let me use the heat press on his lab.

    Transferred the toner and etched it at college:

    At home, I applied kind of a solder mask. It's actually a UV paint for purposes other than protecting PCBs.

    I have already drilled it, and will start assembling it soon.

  • Schematics, board and resistance table

    Kuro11/27/2014 at 18:16 6 comments

    Made some tests during the week on a breadboard. Tested PWM on a MOSFET, the LCD, made a table with the PTC resistance in the 30C ~ 450C range, etc.

    After I decided how to build the hardware, went to Eagle and created the schematics and board.

    The chosen MCU is an Arduino Nano, and the operational amplifier a MCP6002, cause I have some laying around. Any op. amp. that works with 5V power supply, is rail-to-rail, and have the same pinout should work.



    The board fits in a 5x10cm copper board. As I made it to be easily toner transferred it was rather hard to route it after all the time doing two-sided boards with 8mil tracks.

    I'll probably etch one of these tomorrow at college. They have a good heat press I can use to transfer boards there.

  • Heater Resistance and Power

    Kuro11/27/2014 at 13:18 3 comments

    I've measured the heater resistance and noticed that it's smaller than the resistance for the rated Voltage/Wattage.

    The measured value is around 4Ohms. As the soldering iron is rated at 24V:

    P = U² / R

    P = 24² / 4 = 144W

    There it is. The soldering iron is rated at 24V 50W, but if you just connect a 24V supply, it will probably kill itself. You need to control the power delivered to the iron.

    There's no need, then, to use a 24V power supply. The unmodified 19V notebook power supply should do the trick.

    I've measured the resistance of the heater while hot, to how much it changes with temperature, but it raised to 7Ohms only at 450C.

    That said, I've moved the power supply project logs to a new project, and will move a little faster on this project, as I have some other projects on my backlog.

View all 8 project logs

Enjoy this project?



dimitris wrote 02/14/2019 at 12:46 point

hi kuro again!

I am writing to make you a question about one modification i want to make to operate your project on a zd552 air suction desoldering tool the one used on the common zd915 station. Of course only to operate the heat control since air suction is operated by a separate trigger independently. The problem is its temp sensor is k-type thermocouple. According to your schematic if i remove r3 from 5v and connect directly the thermocouple feedback positive voltage to + input of mcp602 and amplify it by say ×100 i will have a voltage output of 0-2V (0-20mV without amplification) on a range 0-400V. Will this work ok? And pid control? Of course i will make the necessary changes on your code on equations that give the temperatures from analog inputs and the mapping from analog-digital conversion that on your projects refers to a thermistor. Thank you again.

  Are you sure? yes | no

Kuro wrote 02/14/2019 at 13:10 point

I would recommend against using the op. amp. for this application. Try using a dedicated thermocouple reader, such as MAX31855 or the old MAX6675.

Considering the heater is 24V rated and the MOSFET can handle it's rated current, the PID control should work.

  Are you sure? yes | no

dimitris wrote 02/14/2019 at 15:59 point

Thank you for your fast answer. Heater is specified for 24V AC 80W but i have tested it manually with 20V DC and heats fast and without problems. The problem is that it draws almost 6A when cold and drops to 4-4.5A after heating up. Mosfet i used on tests is our workhorse IRLZ44 as on your project here. Runs barely warm, at about 40-45C on full load. And im almost sure its a clone one!!!

Now on the thermocouple problem. I made some tests using a simple amplifier circuit using the common LM358 X100 GAIN (run out of MCP602 currently...)and some filtering capacitors and i think that i get a good linear output that the arduino could easily read from its analog input. If 99% accuracy of temperature measurement is not needed you think that it could work even if there is a small systematic error on the measuring temperatures? Of course i will make my tests and keep this question posted and not asking you more than i can find out myself. 

I want to mentione you that my original soldering station inspired from your project keeps working for a lot of years now and all i changed was once a fried mosfet. And i have made 2 more for my friends and they loved it.

  Are you sure? yes | no

Kuro wrote 02/15/2019 at 00:33 point

The IRLZ44 should handle 6A.

If it works with the op. amp. then try it? I would rather avoid doing so, as the signal is at the level or even lower than the input offset for most of the op. amps. and it would lack cold-junction compensation. Also, modules with MAX6675 are pretty cheap too.

Glad you liked it. I use still use the one I made, just had to swap the iron, as my first one was having problems with it's thermistor.

  Are you sure? yes | no

John wrote 08/12/2018 at 16:05 point

Dear Kuro,
I know it’s an old project but I could really use some help.
I’m trying to build a station using a nano board. I use 12V from an LM317 on the nano’s raw pin and I use the nano’s 5V regulator to supply power on the op-amp and the lcd.
I uploaded your sketch and it’s working but the iron’s temp is not consistent while it’s heating. When I stop heating the temp starts dropping gradually with no issues.
I added a 100n cap on the op-amp output and it got better but not fixed. 
Also I tried to enable heating with just “digitalWrite(9,HIGH)” and the temp increases gradually and consistently.

What could be the cause of my issues when I use your algorithm to heat the iron? Have you notice any similar issue?

  Are you sure? yes | no

Kuro wrote 08/13/2018 at 05:38 point

Sounds like a problem with the PID. Did you run the autotune?

  Are you sure? yes | no

John wrote 08/13/2018 at 09:58 point

I tried with both autotune p,i,d parameters and custom within the firmware.

I think something is messing the analog read values when the arduino is using PWM. What could that be?

I used an LM317 to supply voltage on the arduino and I tried to power it up on both raw pin(12v) and 5V pin with no difference.

  Are you sure? yes | no

redggy wrote 07/28/2017 at 00:02 point

I tried it many time build this project. Mosfet come very very hot and the leds always flash and instable when iron go on. I check many time all connection but i can't do any good result. I can't reach higher temp because mosfet  IRLZ44N come too hot and all stop to work... Anybody with this issue. Other hand, my temp at 30C read 230C on software... I use iron 24V 65 W and i can mesure temp with external device. i get around 56ohms cold and around 200ohms @ 400C.

  Are you sure? yes | no

Tiziano wrote 01/17/2017 at 12:32 point

How can I do to decrease the analog values, since I can not measure above 200 ° C, with the calculation of the gain resistance, the maximum temperature I get 4.86V, Thanks for the help

  Are you sure? yes | no

Tiziano wrote 01/16/2017 at 12:49 point

KURO Hello, I can not, figure out how to get the values to calculate A and B, if the values that I get from the station display is type 300 ° C, and my thermometer gives me 100 ° C, the analog value refers to value of 300 ° C or not?

  Are you sure? yes | no

4759sy wrote 11/18/2016 at 00:35 point

hello ,i am new bie in mikrokontroler,iam using atmega 328 in simulation in prosteus 8.1 but its cant work,just  lcd blik2 .what that wrong? thnaks

  Are you sure? yes | no

PyMiCo wrote 11/04/2016 at 21:54 point

ok... dont know if it is another mystery but i just cant get this thing to work. Calculated a and b, checked if i have lastest version of firmware and still nothing ...temp is stuck at ambient/startup temperature, setpoint is stuck at 100°C and PID values reads "nan" (autotune will get stuck every time i try it) and lastly heater just wont turn on. Do anyone have idea what else to check?

  Are you sure? yes | no

Kuro wrote 11/05/2016 at 13:06 point

Try setting up your P, I and D manually in the code and not running the autotune.

  Are you sure? yes | no

PyMiCo wrote 12/22/2016 at 02:22 point

Oki just figured it out... it was bad arduino board in combination with wery lazy op-amp at temperature measuring side.
Anyway everything is done and finished expect propper calibration and figuring out better PID values.

Yep and there is one nasty trap when using older regilated PSUs that can't react fast enough for sudden changes in load: if you loose power during autotune you vill most likely end up with "nan" PID values and your station wont even autotune out from this state... used small EEPROM eraser sketch to fix this problem. But yeah all done and seems to work well, so this is marks retirement for my old wall powered 25W Proskit iron (still works after 8 years.) :D

  Are you sure? yes | no

ekaggrat singh kalsi wrote 10/26/2016 at 06:48 point

what is the sensor used in the hakko? is it a thermister? i am thinking that it can be used directly with a ramps 1.4 board if the sensor amplification is not required. Will that work? 

Great project , i am going to build one but since i have a ramps board spare i thought i could use that instead!

also what is the power requierment of the psu required?

  Are you sure? yes | no

Kuro wrote 11/05/2016 at 13:16 point

It's a thermistor, but not the same type as used in 3D printers. You'll need an amplification circuit to read them, so I don't think a RAMPS would be a good choice.

It uses around 50W. A laptop charging brick is enough, you don't even need to modify it (like I did).

  Are you sure? yes | no

Fatih wrote 10/23/2016 at 18:21 point

Hello dear,

i ordered 2 clones: 50W 24V Hakko 907 irons and saw too late that your's are 110V irons. So i cannot use your project with my irons?

  Are you sure? yes | no

Kuro wrote 10/23/2016 at 18:38 point

Mine are 24V irons, you can use them.

  Are you sure? yes | no

duong_duc_hoang wrote 10/19/2016 at 06:00 point

I can not download the code. please see the link. tks.

  Are you sure? yes | no

Kuro wrote 10/19/2016 at 14:25 point

The links are working fine. Try going to and downloading it.

  Are you sure? yes | no

simas pudziuvelis wrote 10/12/2016 at 18:02 point

I have a question about the project if it is still supported. I built a breadboard prototype of your project (wanted to try it out before building it). I used a cheap iron with thermocouple not PTC. The temperature readings are OK (after adjusting), but when i turn the heater on, nothing happens. no signal comes out the digital pin. What am I doing wrong? I'm using an arduino UNO and compiling everything with IDE 1.6.12 please help!

  Are you sure? yes | no

Kuro wrote 10/12/2016 at 18:18 point

Sorry, but I'll need more info than that to help you.

Are you trying to use the op amp circuit to measure the thermocouple?

Did you modify the code in any way? If yes, paste it in pastebin or something like that.

Also, the current through the mosfet and iron is a little too high for a breadboard. That part of the circuit should be done at least on a perfboard or something like that.

  Are you sure? yes | no

simas pudziuvelis wrote 10/12/2016 at 18:29 point

Yes, i'm using an op-amp circuit. i removed R3, I used 200K for R4, and 1K for R5. I made no other changes in circuit. Almost nothing was changed in software. the pins were changed so the arduino uno would work and the A and B values were changed. If you want, this is my code

  Are you sure? yes | no

Kuro wrote 10/12/2016 at 18:41 point

It seems you need to set the heater pin to 9 or 10, as these are the only PWM supported pins for the Timer 1.

Can you test it?

It would be nice if you used a real thermocouple sensor instead of my circuit. Try a MAX6675 or a MAX31855. You'll need to modify the measurement of the temperature, but it's not hard to do it.

  Are you sure? yes | no

simas pudziuvelis wrote 10/12/2016 at 18:45 point

It finaly works! Thank you, helped a lot!

  Are you sure? yes | no

simas pudziuvelis wrote 10/13/2016 at 19:27 point

So now everything works, but the heater heats up very slowly, it draws around 0.5Amps when heating up, but if you turn the mosfet on by applying 5V to the gate it draws 1.1A. I think this is some kind of software problem. Do you have any idea? no software changes were made.

  Are you sure? yes | no

simas pudziuvelis wrote 10/14/2016 at 08:43 point

I can only get a temperature of 300°C. What is wrong? 

  Are you sure? yes | no

Kuro wrote 10/13/2016 at 20:26 point

Did you configure the PID? There's a PID Autotune function, try running it one time and see if it helps.

  Are you sure? yes | no

Kuro wrote 10/14/2016 at 08:51 point

I don't know. Your build is too different from mine, so I can't really help you much.

Why can't it go over 300C? Are the temperature measurement circuit and code working?

  Are you sure? yes | no

simas pudziuvelis wrote 10/14/2016 at 08:57 point

I compared my multimeter thermocouple probe readings with arduino readings, they are almost identical. And yes, I did PID autotune. I connected an oscilloscope to heater pin when the iron was cold and started it, it seems that it does around 50% duty PWM even while the iron is cold. My  PWM max is set to 1023.

  Are you sure? yes | no

Kuro wrote 10/14/2016 at 09:08 point

Sounds like a problem with the PID library. I didn't code it, so I don't know if I can help much.

Try setting the PID values by hand and see what happens. Set I and D to 0 and change the P value.

  Are you sure? yes | no

simas pudziuvelis wrote 10/14/2016 at 09:24 point

Now turning the heater on, dims the display, but does not reset the microcontroller and the mosfet does not latch. weird. I think i have hardware problems. So I'm going to try to solve them. Thank you for your help!

  Are you sure? yes | no

Alan Gonzalez wrote 07/26/2016 at 04:12 point

Huh, sorry to bother you one more time :/

I've analyzed the schematic and as i can't find the mc34063 and the mcp602p (now you understand why i hate live here?) to solve the mc34063, I can use a 12v linear regulator with heatsink directly to arduino VIN? (an 7812 or LM317)

Really, thanks a bunch, if i can finish this (my first project) i will pay you a coffee.

  Are you sure? yes | no

Kuro wrote 07/26/2016 at 04:31 point

Yes, you can replace the mc34063 with a 7812 or LM317.

About the MCP602, you can use any general purpose op. amp. with rail to rail output. Or you can  use other op. amp. like LM324 and make sure it doesn't saturate. It's going to sacrifice some range on the AD converter of the Arduino. Also, you'll have to adapt the code accordingly.

  Are you sure? yes | no

Alan Gonzalez wrote 07/25/2016 at 17:36 point

Hi! I'm back (hehe).

I've got 90% of components but i have a problem with the transistor, 20 days waiting and doesn't come (from ebay).

There is any replacement or a separate board with a bc557 and a irf? (for example)

Thanks ^-^

  Are you sure? yes | no

Kuro wrote 07/25/2016 at 19:57 point


Any mosfet with low Rds with 5V gate voltage should work.

If you can't find any in Uruguay, you can use other mosfets with a transistor on the gate, like you said. You will probably need to invert the logic of the output on the code.

You could try the IRFZ44N directly, and see if the iron gets hot and the transistor doesn't overheat.

  Are you sure? yes | no

Alan Gonzalez wrote 06/04/2016 at 19:11 point


Congrats for this excellent project!

You or anyone knows a trusted eBay seller for buying all components?

Its because here in Uruguay we have 4 buys/year :c

Sorry for my bad english.

  Are you sure? yes | no

Kuro wrote 06/05/2016 at 17:51 point

Everything should be available on eBay or Aliexpress, but I doubt you can find everything on a single store.

I don't know about the component stores on Uruguay, but most of the components are pretty common and you should be able to find them locally.

  Are you sure? yes | no

Alan Gonzalez wrote 06/06/2016 at 01:35 point

There is two stores here, but all is overpriced, 10 (same value) resistors at 1 usd

The arduino 40usd :/

Thank you anyway...

  Are you sure? yes | no

vdanhp wrote 05/12/2016 at 17:27 point

verify error:

C:\Users\ADMINI~1\AppData\Local\Temp\buildf6a9848bd5e4007e7c2b14603983b2ca.tmp\sketch\PID_v1.cpp:14:20: fatal error: PID_v1.h: No such file or directory



compilation terminated.

Using library LiquidCrystal at version 1.0.5 in folder: C:\arduino-1.6.9\libraries\LiquidCrystal 
exit status 1
Error compiling for board Arduino Nano.

  Are you sure? yes | no

Kuro wrote 05/12/2016 at 17:35 point

It's compiling alright here with Arduino 1.6.7.

Copy all the libraries to your libraries folder and remove them from the sketch folder.

  Are you sure? yes | no

vdanhp wrote 05/13/2016 at 17:43 point

are you can send me the file .hex?

  Are you sure? yes | no

niels wrote 04/08/2016 at 09:53 point


I found this project a few days ago and I'm so impressed that I decided to try making it myself.
When I open it in the Arduino IDE and try to upload it to an Arduino Nano V3 get me of all those errors
I copied all the libraries into my library folder and see them in the Arduino IDE and the the IDE would update EEPROMEx & PID libraries.
The errors is there both before and after updating these libraries.

Can it be because I am using IDE version 1.6.7 ??

Also can you point me to a compatible iron from ebay ??
A search on ebay returs both version of the 907 that appears to have a ptc thermistor, k type thermocouple an som that don't specife what type og temperatur sensor is installed 

Regards Niels

  Are you sure? yes | no

Kuro wrote 04/08/2016 at 10:04 point

It looks like you have the libraries both in your libraries folder and the sketch folder. If so, try removing the libraries from the sketch folder.

About the 907, I bought two of them at different time from the same vendor at Aliexpress and they have different sensing resistors. You can't really expect to get the exact same one even from the same vendor. Both of them have a PTC thermistor at least, so it's just a matter of calibration.

Here's the one I bought:

  Are you sure? yes | no

niels wrote 04/11/2016 at 13:57 point

Your right, Stupid me !!

After removing the libraries folders from the sketch folder it worked.

Thanks for the link.

  Are you sure? yes | no

tuccer wrote 12/15/2015 at 14:28 point


I have did the calculations and it seems if i use a 3Kohm for R3 the reading will be around 4,71 V.

like this: Vo=48*5*60/3000+60= 4,705V 
It is correct, or should i change another resistor value as well (R4, R5)???

By changing the R3 value it is possible to kill the ptc sensor??

My iron is driven by 24V AC! I think if i replace the mosfet with a solid state relay i can safely drive the heating circiut right??

Thanks :D

  Are you sure? yes | no

Kuro wrote 12/15/2015 at 14:52 point

Changing R4 and R5 will affect the value of R3.

You won't kill the PTC by changing R3, unless it's too small, but 3kohms is alright.

About your iron being 24V AC, there should be no problem driving it with 24V DC, but yes, you could replace the MOSFET with a SSR and use a 24V transformer to power the iron.

You'll need a pretty beefy transformer (24V 3.5A). Switching supplies are cheaper.

  Are you sure? yes | no

tuccer wrote 12/15/2015 at 16:21 point

I want to built a complete soldering station for myself, so i have a beefy transformer (24V, 10A), and two soldering irons, one of them is a DSX120  (Weller desoldering Iron 120W) and a WSP 80 (regular soldering iron 80W) and i will add a vacuum pump  (24V 25W) for supply the desoldering iron. 

  Are you sure? yes | no

Kuro wrote 12/15/2015 at 16:28 point

You should have no problems, then. Just take care, as some SSRs are zero-cross switching, to check the PWM frequency to make the most use of it.

  Are you sure? yes | no

tuccer wrote 12/14/2015 at 18:52 point

It is possible to use a different type of soldering iron ( Weller DSX80)?

It has the same PTC system for sensing the temp, and the heating element is also 24V (80W).

As far as i have noticed the only difference is the PTC's temp range. It is  23 Ohms at 25°C and it is 55 Ohms at 450°C.

How should i modify your hardware (or software) to drive this iron correctly??? 

Thanks in advance. :D 

  Are you sure? yes | no

Kuro wrote 12/14/2015 at 19:03 point

Yes, you should be able o modify the soldering station to use your soldering iron.

The IRLZ44N mosfet should be able to handle your heating element. You'll just need to make sure the PTC amplifier circuit has the correct values for your PTC.

I encourage you calculating the resistors values for your PTC. Have a look at

About the software, check if your PTC's temperature vs resistance values are linear. If not, you'll have to change the temperature measurement software. If yes, the calibration should take care of handling the temperatures.

  Are you sure? yes | no

tuccer wrote 12/14/2015 at 19:07 point

I will check the link :D 

Here is the map for the linearity :

Thank you. 

  Are you sure? yes | no

Kuro wrote 12/14/2015 at 19:09 point

That's pretty linear. You should have no problem with the software.

Just follow the calibration procedures, as described on the code.

  Are you sure? yes | no

John wrote 10/13/2015 at 17:59 point

Hello again,

The PTC resistance is about 50Ω at room temperature and exceeds 100Ω when the iron heats. I used a 10K on V-divider and 47K+1K on MCP602 (48 gain) to keep the analog input voltage below 5V, even if the PTC resistance reaches 200Ω.

I connected a thermistor on my board that was touching the iron tip and used a sketch I found to get temperatures using a  voltage divider circuit. I uploaded a sketch that was heating the iron while printing the read value of the PTC and the calculated temperature of the thermistor every 5°C rising. Here is a graph of two tests. The Y axis is the value of the PTC and the X axis is the calculated temperature from the thermistor.

The graph is almost linear after some point and I found the A and B values from the equation Y=AX+B. I uploaded your sketch with my measurements and pins configuration and run the autotune algorithm.

The problem I came up with was that on room temperature the calculated temperature (with equation y=ax+b) was negative since the graph is not linear at low temperatures. The "uint16_t temp" variable cannot accepts negative values and was printing on screen something like 65220°C. I fixed this with this code:

Hope it helps someone with the same issue. The only problem is I get 0°C while the tip is still hot. I will probably write a new sketch that will show the temp only after it reaches a minimum point.

note: I took measurements with a thermistor and made some calculations to convert them to temperature, but I'm pretty sure they are not corresponding to real temperature values. I set it to imaginary temperature points and I will fix that later if I find a way to take accurate measurements. That would be easier if the tip temperature was steady.

So far so good. I turned on the heater but it struggles to maintain the temperature steady. It's always above the setpoint. While it heats up, the analog read value rising, and when I turn it off it drops down gradually, so it's able to read the "imaginary temperature" from the PTC. Any thought on this?

How did you measured the actual temperature of the tip? I'm thinking to get a multimeter with temp probe. Will this be accurate?

Watch the video


The EQUATION_A and EQUATION_B I calculated were 1.711 and -688,86. I calculated them using a low temp of "100 °C" and high temp of "200 °C" for the analog readings I had. These temps were not corresponding to reality. The "200 °C" were actually a lot more. So small  changes on the analog readings were giving big changes on the calculated temp (The result is the video I posted). I used your parameters for EQUATION_A and EQUATION_B and the temp I get from the iron is a lot more stable. Have you uploaded a video of your controller in action? I'd like to see how stable is the temp of the iron.

  Are you sure? yes | no

Kuro wrote 10/15/2015 at 09:32 point

Sorry for the late reply.

I've measured the temperature with a multimeter thermocouple. You should always heat up to max temp and make the readings with the heater off, as the temperature goes down. You'll get better values like this.

While watching your video, I could notice the temperature was higher than what it said, as you were melting solder at only 150C.

Also, don't forget to run PID Auto Tune once. It will auto calibrate your PID to some good values.

Here's a video of it. It takes a while and has some overshoot, but then keeps it at +-5C of the setpoint. I could probably fiddle with the PID parameters to make it more stable, but it's good enough for me already.

And here's a picture of the temperature at the tip, measured by the multimeter thermocouple.

  Are you sure? yes | no

John wrote 10/18/2015 at 17:25 point

What is char string[17]; in your code?

I made a few modifications for my station since I had more than +-5˚C error. I print the temp rounded to the nearest multiple of 5. I did the same for the setpoint. Also I use an RGB led and a progress bar to visualize how far from the setpoint the temperature is. I have uploaded a video here.

  Are you sure? yes | no

Kuro wrote 10/19/2015 at 06:31 point

That string is probably useless, must have forgot to remove after I didn't need anymore.

Also, nice build. It seems very compact. Doesn't it move around when you use it? Mine is pretty heavy and it still moves around when I'm using it.

  Are you sure? yes | no

almo_01 wrote 10/06/2015 at 15:15 point

i will ask what power supply did you used ? 
24v AC ?

  Are you sure? yes | no

Kuro wrote 10/07/2015 at 16:14 point

I used a 24V DC power supply.

Have a look:

  Are you sure? yes | no

almo_01 wrote 10/18/2015 at 11:16 point

thanks :)

  Are you sure? yes | no

Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates