Xytronic LF-1600 Open Source Firmware
Image preview of xytronic-lf1600.jpg

This is an alternative free firmware for the low-cost Xytronic LF-1600 soldering station.

The station is based on an AVR AtMega88. No hardware changes are required for running the free firmware on that device. However if you have got a legacy non-SMD device a few changes are recommended. See the schematics for details.

The firmware is PID-controller based for both the temperature and current control.

The hardware can be extended to have an idle button or a boost button. The button can be placed at the iron itself or on the iron holder base. The center pin of the iron connector can be used to connect the button/switch. The iron cable doesn't have a free wire though, so at least one separate wire or a new iron cable has to be used.

The Open Source firmware does support this button via the microcontroller pin PORTB/PB0. This port is already routed to the third unused pin on the temperature sensor header on the original board layout. So the board does not have to be changed.
Connecting this pin to GND will trigger an ON state.
See the circuitry diagram for details.

The software supports an idle-switch or idle-button that switches the iron into a low power / low temperature mode during being idle. This switch or button typically is located at the iron or at the iron holder base.

In the default build the idle button functionality is enabled and the button will act as a toggling push button.

The boost button can be useful when soldering big ground planes to avoid a massive drop in temperature. With the boost functionality more aggressive temperature controller parameters can be used.

In the default build the boost button functionality is disabled.

Image preview of xytronic-menu.png

The user can navigate through the menu structure using the three UP/DOWN/SET buttons. For each menu state different information is displayed on the 4-digit display. The information can be modified using the UP/DOWN buttons.

The firmware is built using the make tool. Various variables can be set to control what parts of the firmware and how the firmware is being built.

Build option Values Description
HW =legacy
The hardware platform (board type). Can be either legacy or smd.
Default is legacy.
DEV =m88
Select microcontroller device type AtMega88 or AtMega328p. Can be either m88 or m328p.
Use m88 if you don't know what to select.
Default is m88.
Enable/disable idle switch support. Can be either 1 or 0.
Default is 1.
If 1, the idle button acts as a toggling push button. If 0, the idle button acts as a switch.
Default is 1.
Enable/disable boost button support. Can be either 1 or 0.
Default is 0.
Enable/disable support for temperature presets. Can be either 1 or 0.
Default is 1.
Enable/disable temperature PID controller parameter menu. Can be either 1 or 0.
Default is 0 for m88 and 1 for m328p.
Enable/disable debugging menu and UART interface. Can be either 1 or 0.
Default is 1.
Enable/disable calibration menu. Can be either 1 or 0.
Default is 0.
CONF_CURRCUTOFFHYST Don't touch either. :)

Example to compile the firmware without debugging support and flash the firmware fuses, flash and eeprom using avrdude:

make HW=legacy DEV=m88 CONF_DEBUG=0
make HW=legacy DEV=m88 CONF_DEBUG=0 write_fuses
make HW=legacy DEV=m88 CONF_DEBUG=0 write_mem

The controller architecture basically looks like this (Click to enlarge):

Image preview of xytronic-controller.png

This picture is simplified, though. The current controller for instance is constrained by some serious hardware bugs in the feedback circuitry.

Latest bleeding edge xytronic-lf can be downloaded using the Git version control system as follows:

via https:
git clone https://git.bues.ch/git/xytronic-lf.git
or via http:
git clone http://git.bues.ch/git/xytronic-lf.git
or via git:
git clone git://git.bues.ch/xytronic-lf.git

or by downloading the xytronic-lf snapshot archive.
To browse the Git repository online, go to the git web interface.
A mirror of the repository is available on GitHub, GitLab, Bitbucket and on NotABug.org.
If you want to contribute to xytronic-lf, please read the contribution guidelines first.

The temperature measurement circuitry changed on SMD boards. This requires a change of the measurement factors in measure_temp.c. Currently these factors are wrong for SMD boards and thus the iron won't physically reach the temperature that is shown on the display.
Note that there is almost no risk of damaging something, because the controllers will lock at a physically lower temperature. So you can try the firmware on SMD boards anyway (people already did this).
If you have an SMD based device and want to help fixing this, please get in contact with me.

If you find any bugs in xytronic-lf or if you have any suggestion for new features, we would like to hear from you.
Your help is greatly appreciated and will help to create better software and improve the overall experience for everybody. So don't hesitate to report anything that that limits your xytronic-lf usage.

If you have got any code improvements or other improvements that should be merged into the project, please send such enhancements to the xytronic-lf maintainer.

Please read the contribution guidelines first.

Copyright (C) Michael Büsch
Licensed under the terms of the GNU General Public License version 2 or (at your option) any later version. See the sourcecode for details.

Updated: Monday 13 March 2017 20:42 (UTC)
xhtml / css