So you've no doubt seen DIY soldering iron drivers/controllers out there. The most prominent one seems to be the SID driver
([url]http://dangerousprototypes.com/forum/viewtopic.php?f=56&t=2457]http://dangerousprototypes.com/forum/viewtopic.php?f=56&t=2457]([url]http://dangerousprototypes.com/forum/viewtopic.php?f=56&t=2457[/url]). But seeing as I'm going to be a real engineer one day, I wanted to try my hand at designing a driver myself.
The results are somewhat mixed. I think the design is overall simpler in concept but with the drawback of being much less accurate and versatile. This thread will detail some of the design, analysis, and test results of the project, as well as possible areas for improvement (that's where you guys come in the most - helping understand things a bit better and possible ways to make improvements. So here we go:
1) The DriverAs the thread title implies, the controller uses a bang-bang control scheme with a Hakko 907 wand. The heart of the circuit is given by Figure 1 (attached). The power source is a ~36 V transformer (25 V under load, 40 V at no load) which is not regulated at its input to the soldering iron, but is regulated with a 7812 and 7805 for the op amps and logic. The zener diode is used to step the voltage down a bit to reduce the thermal load on the linear regulators. The two legs of the wheatstone bridge are the temperature set pot (left) and the thermistor (right). The set pot voltage is sent to a buffer (lm741) then to a comparator (2301bda) with an adjustable hysteresis loop. The other input of the comparator is fed in from the thermistor.
The output of the comparator is sent to a MOSFET (IRF510 or IRF640) through a low-pass filter(?). The MOSFET is connected directly to the the iron heating element. The purpose of the aforementioned hysteresis loop is to prevent the inevitable situation where the comparator switches on/off at a frequency that causes the MOSFET to effectively be in the triode region. The MOSFET will burn up if it's sitting in the triode region (and a lot of power will be wasted) so this is obviously something that should be prevented. However, what I found in practice was that the hysteresis loop itself wasn't enough to prevent the MOSFET from getting stuck in the triode region - the low-pass filter I mentioned also had to be added. I don't understand why though. I can speculate and I am going to do a bit of analysis to try to figure it out but if anyone can see the answer, please speak up!
Another strange thing is that when they system doesn't have its negative line grounded to earth ground, the MOSFET gets stuck in the triode region without fail. It gets really, really hot (I think it started to melt solder at one point when I wasn't paying attention). This is most bewildering to me - any ideas as to why this is?
This setup works quite well. The iron heats up to a decent operating temperature in about 20 seconds which is comparable to much more expensive irons. I've been using it for months to do some pretty complex circuits and so far I can say it's awesome for amateur use.
2) The DisplayThe next question is how hot it gets. I recently (as in the last week or so) tried to answer the question by implementing a temperature display. What I did to determine the temperature revealed a few things.
To get a temperature, my approach was to use amplifiers to convert the thermistor and potentiometer voltages at the comparator to something that roughly goes through the ADC voltage range to maximize the use of the ADC. I was using an atmega328 to do the ADC conversion, transfer function, and display so my working range was 0-5V. I used the TL072 dual op amp to implement an amplifier that shifts and amplifies the voltage.
The microcontroller and display implementation is pretty inconsequential. At some point before soldering the post-amplifier circuit to the protoboard I ran a few tests to correlate the output voltage to a temperature. To get the temperature reading, I used a K-type thermocouple with an amplifier similar to that used in Figure 3. The thermocouple was put on the tip of the soldering iron but I did not have any thermal adhesive so I just used wire to wrap the thermocouple to the tip of the iron as shown by image 833. I also wrapped the tip of the iron with aluminum foil so the tip of the iron/thermocouple would be much closer to the same temperature than the they otherwise would be. I set up an Arduino Uno to take conversions from the thermocouple and thermistor roughly every 100 ms (the time between samples was slightly higher because I was just using delays and wasn't accounting for function run time, but close enough). The result can be seen by the Ftemperature_data4_plot_big attached image. The red lines represent the ADC readings and the blue lines represent temperatures. The plot has some post-processing applied. The thermocouple transfer function was assumed to be known but the thermistor transfer function was not yet known. I found the thermistor transfer function by taking the value of the thermistor ADC reading and the computed temperature of the thermocouple at the same point in time. To ensure the temperatures were essentially the same, I set a target value using the potentiometer on the driver itself and waited a few minutes, assuming the two would reach steady state by then. I then increased the potentiometer value and waited a few more minutes. The result was a stair-step like increase in temperature and values, with the thermocouple slowly reaching a steady temperature after each temperature jump.
After I did this a few times, I took the data points just before each time I ramped up the temperature and used excel to fit a 2nd order polynomial through them. The result is seen in Ftemperature_data4b_plot with the blue clumps being the data points and the red line being the line fit through them.
After doing all this I got a transfer function I was happy with. So I proceeded to solder everything to the board. However in my sloppiness I believe some resistor values may have changed slightly (same "value" but different resistor, so different actual value). So, I may have to do this temperature corellation again. Or come up with a better way of calibrating the system.
Issues With The SystemFor display purposes, the values for the potentiometer and soldering iron both used the same transfer function, even though they used slightly different resistors and other hardware. The result is a set temperature that will always be displayed as a different value than the iron temperature. I think I should be able to fix this through some sort of calibration scheme. I just haven't worked that part out yet (ideas welcome).
Another issue is that I'm effectively getting the temperature of the thermistor, not the tip of the soldering iron. I don't know how I can get around this. I could take the temperature of the tip of the iron at a bunch of different temperatures and do another corellation with no effort going into insulating the system. However, there will always be some drop in temperature at the tip that cannot be easily compensated for because the difference in temperature between the thermistor and tip of the iron depends on time as well as how much heat is transferred from the tip of the iron to something else. For example, using a huge amount of solder at once or heating up a huge copper mass will result in a much less consistent temperature at the tip than using tiny amount of solder at a time on small components.
Part of this drawback is the soldering wand/handpiece itself - I believe I paid about $6 for it shipped so it's just not going to be the same as a $200 wand. But what I really want to know is, given that I will have to compromise somehow, what is the best compromise to make in terms of temperature compensation?
Another point that I'd like to make is that even though the controller is very much a "bang-bang" controller, it achieves and maintains a target temperature within 3-5 degrees C except for when it just is hitting its target temp. At the point where it initially hits its target temp it overshoots as much as 10 degrees C but it reaches equilibrium after a few seconds. Once it reaches equilibrium though, it turns off for about 1 second, then on for about 1/2 second and continues blipping like that until the set temperature is changed. I've never done any soldering where I know for a fact that I need a very precise, very consistent temperature. 10-20 C is plenty adequate for me. What applications require much better temperature control? It would be nice to get really accurate, precise, consistent control but how good is practical? I have used Weller soldering stations like this one (
http://www.ebay.com/itm/Weller-WES51-Analog-Soldering-Station-110-120-Volt-50-Watt-Iron-Output-Power-/161250545833?hash=item258b4810a9:g:VA0AAOxy~dNTJMd~) and it "blips" on 2-4 times more rapidly than mine. I have no idea what kind of control scheme it uses, but I suspect that it is a "bang-bang" scheme because of the way it blips. It also over-shoots the target temperature for a couple seconds once it initially reaches it.
Conclusion and Ideas For ImprovementSo when it's all said and done I am somewhat proud of the design but it's by no means finished, just good enough to use. And use it I do - it's been worlds better than my 35 watt Weller single-temperature iron. It heats up quicker than the aforementioned adjustable Weller and otherwise I don't notice the difference between using mine and using it. And now I've got a readout to give me an idea of what temperature I'm at.
I've attached a couple images of the project in its current state. The power wiring looks like it will hold up for a good while but this project really needs to move to a dedicated PCB. The protoboard is over-populated (trust me, you don't want to see the bottom) and it's a spaghetti mess. I've made multiple mistakes and have had to do some reworking. Sometimes the display goes wonky and sometimes wierd things happen if I don't wiggle the wires just right.
Finally, here's what I can think of in terms of improvements:
-PCB (I said that already)
-Create calibration procedure (maybe using resistors of known values that plug in where the thermistor would)
-Correctly corellate temperature between the thermistor and the tip of the iron
-Possibly switch some of the control over to the microcontroller to reduce number of required components and increase functionality
-Protect ADC inputs of microcontroller from over-voltage (These atmegas have some great built-in protection, but right now I have op amp outputs directly connected to the ADC inputs:O)
-Improve temperature stability (the question is, how?)
-Create switching power supply (this is the one thing DIY controllers never have, but it would allow for a more stand-alone design. It may or may not be cheaper than buying a separate PSU.)
Thanks for taking a look!
Edit: I also have to give credit to the designer of this driver: (
http://www.edn.com/design/analog/4420659/Soldering-iron-driver-bridge-controls-temperature). I heavily referenced this design for my own.