[ Home | News | Contact | Links ]

Controller for Hakko FM-2023 Desoldering Tweezers

[Completed desoldering station]
Completed desoldering station.

I recently had the opportunity to use the Hakko FM-2023 SMD soldering/desoldering tweezers, and was impressed with the lightweight handset. I would have liked a a set for myself, but unfortunately they are quite expensive, especially considering that you must also buy the FM-203 station to power them. And, while the tweezers are undoubtedly good quality, I was less impressed with the FM-203 station that I had used - although it is a dual channel station, it cannot power the tweezers and a separate iron at the same time. And the four-button user interface for parameter setting is fairly horrible.

So, I decided on a compromise: I would shell out for a genuine handpiece, and build my own power supply. After all, how hard could it be: a transformer, a couple of op amps for the temperature control, and a triac or something? Little did I know...

When the handpiece arrived, I measured the resistance across various pin combinations of the 8-pin connector (this is different to the 5-pin connector used on other Hakko products), and identified two pairs of pins that measured about 8 ohms, and another two pairs that measured about 10k. Heating the tips with another soldering iron caused the 10k readings to decrease, so I assumed that I had identified the elements, and some NTC thermistors for temperature feedback. Based on this, I built up a simple controller, with the feedback loop implemented using a simple op-amp circuit.

However, performance of the circuit was disappointing, with severe overshoot, and the temperature setpoint drifting around considerably. Adjusting the controller gain did not seem to help. Graphing the response showed that the temperature indicated by the sensor lagged the actual tip temperature (measured with a thermocouple) considerably.

I then made the discovery that the temperature sensor was not actually part of the tips at all - the 10k resistance was still present, even with the tips removed! So how did the Hakko station control the temperature accurately then? I thought that they must have used some sort of elaborate PID algorithm, with an accurate thermal model of the tips and some sort of feedforward compensation. So, I rebuilt my controller to use an ATTiny85 microcontroller, and implemented a PID control loop in software.

But after many adjustments of the control loop coefficients, I still couldn't achieve acceptable performance. I therefore decided a different approach was required. I remembered seeing a circuit some time ago that measured the element resistance in a bridge circuit, which varies according to its temperature. I reconnected the element to a multimeter, and measured the resistance as I again heated the tip with another iron.

The resistance dropped quite rapidly from 8 ohms to about 5 - almost too good to be true! In a moment of suspicion, I reversed the connections to the meter, only to find that the resistance had now increased to about 12 ohms! Switching the meter to the millivolt range told the true story - the tip was generating a thermocouple voltage of about 5mV. So, could this voltage be used to provide the temperature feedback?

To cut a long story short, yes, this does appear to be feasible. The voltage cannot be measured when power is applied, so a short dwell interval is provided after every mains zero crossing to measure the temperature. Power is then set by a conventional phase control circuit. Fortunately, I was able to use the x20 differential inputs on the ATtiny85 I was using to measure the thermocouple voltage. There still appears to be a little bit of temperature variation with this new control method, but the tweezers are now quite usable.

I have since discovered that the inclusion of the thermocouple junction is deliberate, and this is the intended primary means of temperature control. The 10k thermistor is included for cold junction compensation. (It all seems so obvious now!)

The circuit that I used is shown below. I used a 20V transformer that I had available to power the heating elements. Although the tweezers are actually rated for 24V / 140W total, the feedback loop will automatically compensate, with the only effect being reduced maximum power. The circuit should still be able to provide around 100W, which should be plenty for the small tips used in the tweezers. (Note that power is proportional to the square of the applied voltage). IC1 provides a regulated 5V supply to the microcontroller.

[Circuit diagram.]
Circuit diagram.

The circuitry around Q1, Q2, and Q3 is a zero crossing detector. On the positive half cycle, Q1 is on, Q3 is off, and pin 5 of IC2 is high. Similarly, on the negative half cycle, Q2 is on, Q3 is off, and pin 5 is still high. Only at the zero crossing will both Q1 and Q2 be off. Then Q3 will be on and pin 5 will be low. This is used to synchronise the main loop of the control software with the mains supply.

Power to the elements is switched by Q4, via optocouplers to provide level shifting. When this TRIAC is off, the thermocouple voltage is fed to pin 2 of IC2 via R7. This pin is configured as a differential analogue input, with a gain of 20. When the TRIAC is on, the voltage to the microcontroller is limited by D6 and D7.

The temperature setpoint is controlled by RV1. LED1 is a power on indicator, and LED2 (in the handpiece) indicated the element duty cycle. Note that the metalwork of the tweezers (pin 2) is not connected to ground directly, but via a 10k resistor (R6). This is a feature that I copied from my Dick Smith T-2200 soldering station, which limits the damage when you accidentally (or deliberately) solder components in an energised circuit. However if this configuration is used, T1 should be "double insulated", with a split bobbin construction.

Although this circuit works well, it does have a couple of limitations. I have not provided cold junction compensation for the thermocouples, so the tip temperature will vary according to ambient temperature, and may drift a bit as the handle of the tweezers warms up. Also, there is only a single control channel, so only the average temperature of the two tips will be controlled. A second channel could be implemented fairly easily, but would require additional components. However, in typical usage, the thermal loads on each tip should be fairly similar anyway.

The control software is fairly simple in operation. The microcontroller first waits for a mains zero crossing, then turns off the elements. The half-cycle period, tip temperature, and setpoint potentiometer are all read. The last two signals are fed through simple digital filters. The required power output is then calculated using a proportional-derivative algorithm. Then, the TRIAC firing delay can be calculated from the demanded power and the mains half-cycle period.

Note that the ADC on the AVR chips does suffer from some offset error, particularly in high-gain differential mode. No attempt has been made to compensate for this, so it may be necessary to tweak the PROCESSVAR_OFFSET constant for the particular chip you are using.

The prototype unit was assembled on Veroboard. This proved to be a wise design choice, in view of the rather extensive modifications required during the development process. However, now that the circuit is debugged, there is no reason that a PCB could not be used. The circuit was housed in the case of an old car battery charger, with the front panel replaced with a new one made of aluminium.

[Internal view of desoldering station]
Internal view of desoldering station.

In conclusion, this circuit provides a way of acquiring a high-quality desoldering tool at an affordable price. Although the tweezers are primarily designed for desoldering, they are also very useful when assembling PCBs with SMT components. Just place the components on a heat resistant surface, and then they can be picked up, placed in position, and soldered, all in one operation.

Creative Commons License
This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.