We’ve been following Arhi’s work on an open source soldering station for a while now. Now that the latest version is working, he documented the complete process of designing the Soldering Iron Driver project. See his initial ideas and how they developed over 3 generations of into a final “works for me” version.
Soldering Iron Driver (SID) is finally in the “works for me” phase so I think it is time to write a short resume of what happened during the design / short history of the project.
Below you can read the original article, quoted with permission.
Generation 1 of this project was based on PIC16F690 soldered on a stripboard (pertinax with holes) and a 1602 lcd was attached to it with some flat cable. 2 buttons (plus, minus and “both” were “ok”) and one op-amp amplifying the output of a voltage divider between Gordak soldering iron sensor and 10 K resistor. The idea was to have second soldering station parallel to my main soldering station so that when I need to work with 2 different tips I do not need to pause for iron to cool down in order to change them. I ended up with classic chisel tip in the Gordak while my main soldering station had BC tip that is great for drag soldering. Firmware was super simple, display was showing raw ADC values for sensor input and same for the target value. There was no conversion from ADC values to degrees Celsius but that actually didn’t make the station any less useful. I knew for e.g. that for SMD soldering perfect value of ADC was 620, I had no clue what temperature that was but I didn’t really care as it worked flawlessly. Generation 1 used simple hysteresis based on/off temperature control mimicking mechanical thermostat. No fancy PID control was used nor it seamed necessary.
While talking to some people some “genius” told me (and me, moron, believed without testing it) that HAKKO clones use thermocouple as sensor. Since it’s fairly simple to read thermocouple (as it is documented compared to actual HAKKO sensor) I decided to go and make generation 2 so that I can have “accurate” display of the temperature.
Generation 2 of this project started with a very bad theory – I believed that HAKKO clones use thermocouple type sensor. On the other hand, this project started with a very good decision, and that was to create a project log hence I have a history of how project grows and why some decisions are made. Forum DangerousPrototypes.com at the time seamed like a best place to do so (I still believe that was a great decision). International membership, ppl with experience not being afraid to share knowledge … convinced me to do it there instead of logging it on my own blog or some local, Serbian, forum. I was considering also ElectroTechOnline.com but I finally decided to go with DangerousPrototypes.com for reasons I’ll keep for myself :D
Schematic and PCB for generation 2 were done very fast and I sent gerber’s to be manufactured before I actually tested it at home. It is first time in my life that I believed something “works” without testing it first. I did make some tests at home, for e.g. I tested the analog part, but I tested it by attaching external Ktype thermocouple, I never tested it with real HAKKO sensor. When PCB’s arrived from SEEEDSTUDIO, after I assembled them, I connected the Gordak soldering iron and – puf, nothing happened, it didn’t work. The signal on the ADC input was going crazy and made no sense at all. After 10 minutes of debugging I figured out that my initial design with generation 1 was more/less correct and that HAKKO clones use RTD/PTC and not thermocouple. I was freaking out but it was too late. In order to try to save the day I created a small voltage divider on the input to the thermocouple amplifier and it partially worked. The signal made sense but it was incredibly noisy.
I managed to clear up the noise in software implementing a simple low pass filter in firmware but it’s not really what I hoped to accomplish. In order to properly read RTD/PTC you have to push some constant current trough it. I found that 1mA works like a charm and when I did that the signal was as clear as I hoped for.
In order to at least partially solved the doomed project (I had 10 PCB’s) I decided to check out if there are some soldering irons with TC sensor and I found that local store sells Solomon HQ30 soldering iron that is exactly what I need, 50W iron with TC sensor. I purchased it and tested it with generation 2 electronics and it worked like a charm.
Generation 2 used same PIC16F690 as generation 1 with same temperature control simulating mechanical thermostat. Since I had some free space in flash I decided to try to fit PID implementation inside. Reorganizing the firmware and moving some tables and strings from flash to eeprom I managed to squeeze PID implementation in firmware.
Generation 2 had another serious design flaw; 7805 was supposed to secure 5V required for the mcu, op-amp and lcd but it was unable to do so. 35V on the input was just too much for it to handle even with huge actively cooled heat sink. After few seconds the 7805 would shutdown because it overheats. The solution – DCDC converter on a separate board converting that 35V to 5V connected instead of 7805. This was my first DCDC circuit design so I needed a lot of help, and a lot of ppl on forum jumped in to help. A friend also made one DCDC for me so I can continue testing the SID.
As I like HAKKO irons way better then Solomon ones and since I have bunch of tips for HAKKO irons I wanted to have soldering station that support HAKKO soldering irons. This made me go forward and fix all this problems by designing generation 3 soldering iron driver.
Generation 3 of the soldering iron driver is continuation of the development of the same project leaning on the generation 2 design. It is logged on the same thread on the DangerousPrototypes forum. This time I decided to do it smart and think before I order and consult more with colleagues. Ian Lesnet, owner of DangerousPrototypes, had the idea that new generation be USB enabled (easier debugging, easier firmware upgrades..). I checked my drawers and I found PIC18F2550, great little USB enabled microcontroller with proper hardware to run generation 3 driver. It has USB, UART and enough pins for all functionality I wanted to implement. Before the PCB’s are made generation 3 schematic was tested on breadboard so this time I expected no surprises. PCB design on the other hand was not something I payed too much attention to.
I designed the PCB “for myself”, so you can find some parts to be SMD, because I had them as SMD, some other parts are PTH/DIP, again because that’s what I had in my “drawers”. Most of the PCB I routed blindfolded and the rest of it is done by auto router. It works, it’s not ideal, but works so I didn’t care much, especially after everything worked from the first try when the pcb’s arrived from manufacturer (ITead this time). Everything worked from first go, HAKKO 907ESD, Gordak 907, Solomon HQ30, Weller PES51… it does not look good, but it works great :)
DangerousPrototypes version of the SID was designed in parallel with the generation 3. Ian liked the idea from day one so he gave Filip Dulić (Arakis), young student from Belgrade, DP employee, to work on a DP version of SID. His idea was to produce a 100% trough hole version of the SID that anyone with el cheapo soldering iron can assemble and provide himself with a good and cheap soldering station.
Filip made the PCB in Eagle and he managed to put the whole darn thing on a 8x8cm PCB without a single SMD component. That is a huge success as I was sure there’s no way to put this many parts on a board that small :D (original generation 3 uses bunch of SMD and is on 10x10cm board). Schematic of the DP version of the SID is 90% same as generation 3. Basically they only removed the part of the schematic that allow you to drive heater with DC input trough a FET.
This version is available on the DangerousPrototypes forum. I expect DP to soon start selling the pcb’s so if you want one check out the DP site. Note that the “support” for the project will be provided by the persons selling you the boards (or maybe KIT if someone decide to make it) and not by me; I will of course always try to help as much as I can but I do not need any obligations wrt this, I brought it to “Works for me” stage :)
Article written by Bogdan Kecman (arhi).