Beginnings and purpose
I created another soldering iron in the past and I've been improving the firmware ever since then.
This soldering station has the following sensors which I plan to keep on this new iteration and use in the new firmware algorithm: Tip temperature, PCB temp (and initial ambient temperature), Voltage measurement sensor, Internal timer.
So these pictures I uploaded into the gallery are the actual prototype I experiment with. It uses the PCB from the Hakko Revenge project and once I'll have some measurable results with the firmware I plan to move ahead and design a 2020 PCB version for this one.
Since I use a t12 (or Ts100) tip which can heat up really quick, I was able to achieve good heating times. This previous project of mine goes up from the room temperature (25*C) to the soldering temperature (above 320*C) in about 6 seconds. Also, when it heats up from the standby temperature (190*C) to the soldering temperature it only takes about 3 seconds. Of counrse, this can only happen if I power it at higher voltages between 24 and 29V.
Fast, fast, fast! I always wanted to be able to make it faster and smaller and since I am redesigning everything now, I thought this is a good time to come up with a new approach. As you can see from these recent pictures, I also added a 0.96'' OLED display to it and now looks way much better.
Why I cannot make it faster in the conventional way?
This type of t12 tip might be small and of a low mass, but it has the drawback of having the thermocouple connected in series with the heating element. This means that I have to power the heating element blindly for a while and then disconnect the power source and perform the temperature measurement on the same two wires. So this results in not being able to keep the heating element always on and it must be controlled through a PWM cycle that cannot be greater than 60 or 70% in some cases. So 30% of the time I have to read the tip, hence, I get to power the heating element less.
In order to make it even faster than it currently is, I tried to experiment with the PWM and with shrinking down the thermocouple reading times so I can expand the time frame for powering the tip.
It doesn't work. I cannot shrink down the sensor's reading window, since if I do the reading right after I apply power to the lines, I get all sorts of inductive noises bouncing off inside this circuit. So I really have to wait for some couple of ms for the line to quiet down before I can perform the reading of the thermocouple. I even tried to setup the PWM module to operate the heating element automatically at different frequencies and to only interrupt this PWM from time to time less often to perform the reading. I got the same thing and if I try to do the reading less often, then the tip's temperature becomes more bouncy and less accurate. So this was not a solution.
Solution: May the force be with you
The solution i'm thinking of is to power the heating element at 100% PWM blindly, for an undefined period of time at startup. <grin> so not only I have a sports car that can do 0 to 60 in 3 seconds, but the driver is also blindfold. How can I power the heating element for the right amount of time without reading the temperature sensor not a single time during this operation and still stop at the proper temperature? Moreover, how can I do that at different input voltages or at different room temperatures?
This is where the machine learning part comes in. I am planning to have the microcontroller sample different heating times at different input voltage values and then based on these dates, to work out a linear regression and estimate the necessary heating time. Then it should subtract the ambient temperature ∆⁰C variation from the nominal 25⁰C and add...Read more »