DIY Soldering Station with Hakko FX-888 Iron – Part 2

SS_FinalIn Part 1 we looked at the design and hardware for the Soldering Station. This part covers the software, assembly and calibration of the system to provide accurate and reliable temperature control.

Software Design

The source code can be found at my library site.

The controller has several modes of operation, with the rotary encoder used to select between the different modes according to the transition diagram below. The operating modes are:

  • Idle Mode. This mode is the default mode on power up, with the soldering iron turned off. The temperature setpoint can be changed by rotating the encoder.
  • Temperature Control Mode. The main working mode for the iron started with a single press of the rotary encoder. Exit this mode with a second press. Rotating the encoder sets the require temperature.
  • Power Control Mode. A long press from Temperature Control mode starts this mode, in which the power to the iron can be controlled directly (ie, it operates like a ‘simple’ iron). Exit this mode by a second long press and set the power output by rotating the encoder.
  • Calibration Mode. This mode is run to set the temperature vs sensor calibration, as described in the section below. This mode is started by a double press of the encoder switch when in Temperature Control mode and automatically exits when the last calibration parameter is set. The new calibration parameters are saved to EEPROM.
  • Error Mode. This mode is used to display error messages whenever they occur. Clear the message and return to Idle mode by pressing the rotary encoder.

SS_Menu_StructureIn the code the operating modes are encapsulated in dedicated classes. These classes interact with separate classes that drive the display and control the iron, so that the user interface and iron control are managed in a consistent way.

SS_Display_DesignThe layouts of the two kinds of displays are shown on the left. The Controlling Display is used for Idle, Temperature and Power modes; Calibration mode uses the Calibration display. The Controlling Display has specific fields that can be used in different ways, summarized below.

The Current Temperature and Power Applied fields (yellow in both displays) show double height digits using the method used is described in this previous blog.

Similarly, the Bar Gauge implementation was separately described in this blog and represents the amount of iron residual heat in Idle mode, or the percentage of full power applied in Temperature and Power Control mode.

The Temperature Units displayed (Celcius or Farenheit) depends on the compile time setting to select the units, defined in the code. Control Mode is blank in Idle mode, ‘T’ in for Temperature control and ‘P’ for Power control.

The Set Point field displays the current set point that can be changed by the rotary encoder. For Idle and Temperature Control modes it shows the set point in degrees, for Power Control mode, it is the power setting.

Status is a short message that reflects what is currently happening with the iron. ‘Ready’ denotes the iron is idle or at temperature, ‘Heat’ that the iron is heating up, and ‘Cool’ that the iron is cooling down in idle mode.


NOTE: Depending on your power supply, assembly may require working with mains AC voltages. Please ensure you have the appropriate knowledge and implement appropriate safety precautions.

Assembly of the project is mostly about putting all the components in a box. I found a plastic box with the right dimensions on eBay. A metal box would have been better for heat dissipation, but they were all either too big or too small.

SS_Hakko_FX888D_PinoutsThe soldering iron socket needs to be wired correctly for the soldering iron. A search of the internet produced the required information, reproduced on the left (click to enlarge).

The photos below shows the general arrangement of the components in the box and the layout for the front panel.



Calibrating the system is about creating the correct relationship between the measured variable (iron sensor) and the temperature of the iron. By obtaining two points on the line (one at high and the other at low temperature), all the other temperatures can be interpotlated. To do this you need an external thermometer to measure the actual temperature of the iron – there are many Hakko FG-100 thermometer clones/copies on eBay and other sites at very reasonable prices.

Calibration takes a few easy steps:

  1. From the starting menu, double press the rotary encoder. This will start the calibration process.
  2. Use the rotary encoder to apply direct power to the iron to make it reach the temperature shown in the calibration message. By default this is set at 400°C (or equivalent in F). The power setting is controlled by the rotary encoder and the sensor value is shown under the calibration message.
  3. Once the temperature reaches the required value, adjust the sensor amplifier trimpot (R2) so that the readings are around 700. This will allow over temperature readings to be accomodated.
  4. Simple press the rotary encoder to move to the lower bound value and use the same process to drop the temperature to the value shown. By default this is set at 180°C (or equivalent in F).
  5. Once the lower temperature is reached, simple press the rotary encoder again to save the calibration values to EEPROM and restart the controller.

Calibration should only need to be done once unless the soldering iron is changed, in which case the replacement temperature sensor should be recalibrated using the same procedure.

Once the controller is calibrated it is ready for use, although I found that some tuning was needed to get the best out of the setup.

Part 3 – Tuning


Leave a Reply

Please log in using one of these methods to post your comment: Logo

You are commenting using your account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s