This is second release of the controller software. Some bugs was fixed, new menu implemented. This controller is no longer supported. For whom who are going to build own new soldering controller from the scratch, it is highly recommended to build another version of the soldering controller available here. If you have built the controller according to the first release of this article, please upgrade the controller firmware. It is necessary to perform tuning procedure one more time after the firmware upgrade.
When I surfing the Internet for interesting projects, the hand made soldering station project touched me very much. The project at the same time was not really complicated, well documented and very useful. I used the generic soldering iron without any controller and could not imagine the difference between generic iron and this one. So it was brilliant idea to create own controller to try it out.
First problem i faced, was the connector, built on the soldering iron. It was so rarely used, i could not find the socket for it, so i used another pair of connectors that suit the characteristics of the soldering iron. This connector is aviation plug GX16-5, mentioned in the components list below. When all the components have been delivered by mail, I could built the own soldering controller.
The key features of my controller are:
- The PID method is implemented to keep the temperature of the soldering iron. The iron raises the temperature in about 30 seconds and keep it inside 3 degrees of Celsius.
- The controller keeps the temperature in case of heavy usage because the PID algorithm is very sensitive and can quickly increase the supplied power.
- The controller supports two working mode: keep the temperature and keep the power supplied.
- The controller implements accelerated rotary encoder. When the encoder is rotated slowly, the temperature setting is changed by 1 degree. When the encoder rotated quickly, the temperature setting is changed by 5 degrees.
- The temperature is stored in arduino EEPROM after the soldering iron was used in case the temperature settings was changed.
- The controller saves in EEPROM two customization settings: the display brightness and units used for the displayed temperature (Celsius or Farenheit)
- The controller implements the ring buffer to save parameters in the arduino EEPROM, this increase the resource of the EEPROM usage i hope.
- The controller has calibration mode to help tune the variable resistor (see the schema and description later on) and calibrate temperature settings. This mode providing the help during setup procedure of controller.
As i mention before, the controller has several modes:
- standby mode
- main working mode (keep the temperature)
- power mode (keep the supplied power)
- setup mode
- tune mode (soldering controller calibration)
When the controller is just powered on, the standby mode is activated. In this mode the soldering iron is powered off and the message 'OFF' is displayed on the main screen. The temperature settings sometimes displayed on the main screen in this mode ('t.' symbol in the left segment). The required temperature can be adjusted by rotating the encoder handle. If the soldering iron was previously used, the indicator in the standby mode is animated the 'cooling process' and the led bar indicates how hot the iron is. When the iron become cold, the 'C0Ld' message is displayed on the main screen.
To power on the soldering iron, push the encoder handle lightly. The controller will be switched to the main mode. Now the controller keeps the soldering iron temperature near the required temperature. By rotating the encoder it is possible to change the required temperature. The main screen displayed the set temperature (symbol 't.' in the left digit) or current soldering iron temperature. The led bar indicator shows the supplied power. To return to the standby mode, press the encoder handle lightly.
The power mode can be switched on by long press the encoder while it is in the main mode. In the power mode, you can directly adjust the power supplied to the soldering iron manually by rotating encoder. The main screen shows the iron temperature, the led bar displays the supplied power. Long press of rotary encoder handle will return the controller from power mode to the main mode.
To get to the setup mode, long press the encoder in standby mode. In the setup mode the configuration parameters can be adjusted. There are 5 menu entries in this mode:
- temperature units ('Un. C/F')
- display brightness ('br. [0-15]')
- the iron calibration ('tunE')
- save changes ('APLy')
- cancel changes ('CACL')
Rotating the handle select the menu item. To change the selected item, press lightly the encoder handle. After adjusting the parameter, press the handle again to return to the setup menu. Long press of the encoder handle can be used to return back to standby mode and save the parameters in the EEPROM. It is possible to save the parameters by lightly press the encoder on the item 'Apply'. To return from the menu to the main mode discarding any changes, you can wait 30 seconds or select the item 'cancel'.
The electrical schema of this controller has minor changes of the original one. First, my iron handle, hakko 907, use the thermo resistor, not the thermocouple to measure the temperature. This means that the schema used to read the temperature should be changed like shown on the picture below.
The hakko 907 handle has different resistance of the sensor: about 50 ohm when it is cold and the resistance is rising to about 200 ohm when the temperature of the soldering iron becomes 400 degrees of Celsius. Probably other iron handle can have the different parameters, so i decided to use a variable resistor to tune the amplifier LM358N. This variable resistor should be tuned the following way: when the iron is hot, the output voltage should become about 4 volts (reading of A0 pin in the arduino is 700).
Note to the second release: The amplifier LM358N is not very accurate. The temperature readings have some fluctuations with this amplifier. If you are going to build new controller, it is recommended to use another version of the hardware or replace the amplifier with more accurate one. For example ad822, lt1013 or lmc6462.
To simplify the calibrate procedure the tune mode is implemented inside the controller. The tune mode can be run from the settings menu.
The calibration procedure has two goals: adjust the variable register and to calculate the formulae that convert internal temperature readings to Celsius or Farenheit degrees. The soldering iron temperature is measured in internal units 0-1024 by reading the A0 pin of arduino. It is not convenient to use the internal temperature units, so we need to translate this units to human readable values.
You need external thermometer to calibrate the controller.
In the tune mode you can adjust variable resistor and calibrate the temperature readings of the controller. In the program sketch it is assumed that the temperature interval of soldering iron is 180 - 400 degrees of Celsius. It is possible to change this interval by editing constants inside the program.
The tune menu have the following 5 items:
- Tune the upper temperature (up square in the left segment).
- Tune the lower temperature (low square in the left segment).
- Write the default values to the EEPROM ('dEFt').
- Save the calibration data ('APLy').
- Return to the previous menu without the changes ('CACL')
The numbers in the first two menu items indicating the sensor readings of the upper and the lower temperatures. At the beginning the values are equal to zero.
When the tune mode activated, you need to setup the maximum and the minimum temperatures. First, setup the maximum temperature. The controller displays the temperature readings in internal units in this mode. Rotating the encoder adjust the power to keep the 400 degrees of Celsius (use external thermometer). At the beginning you can increase the power to the maximum value to speed up the iron heating, then decrease the power to keep the temperature at the 400 degrees.
Now rotate the variable resistor handle to get the readings about of 700 or so. Ensure that this readings is not the maximum one, rotate the variable register and get 730-750, then return back to 700. It is important because the controller should be able to measure the temperature greater than maximum value.
When the variable register adjusted, press the encoder lightly. Now it is time to adjust the minimum temperature, 180 degrees. Rotate the encoder to decrease the power to keep the temperature of 180 degrees then long press the handle to save the changes or select 'APLy' item from the menu. The controller saves the internal temperature readings for 400 and 180 degrees of Celsius. This data will be used to convert internal temperature readings to the Celsius (or Farenheit) degrees.
My friend advised another schema change to save the resource of the power supply capacitors. As you can see on the picture below, the schema implements some iductivity to limit the power peak when the PWM activates the MOSFET transistor.
The L1 inductivity is a ferrit core about 2 cm in diameter with 12 rounds of 1 mm wire. The diode 1N5408 removes the power from the L1 inductivity when the MOSFET is closed. I hope this advice can save the power supply resource. This inductivity can be replaced by straight wire if you do not like to make it.
It is the great pleasure to use controlled soldering iron. It is heating quickly and keeps the temperature suitable for the situation.