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.

This software runs on legacy LF-1600 in through-hole board design and modern LF-1600 in SMD board design.

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
=smd
The hardware platform (board type). Can be either legacy or smd.
Default is smd.
DEV =m88
=m88p
=m328p
Select microcontroller device type AtMega88, AtMega88p or AtMega328p. Can be either m88, m88p or m328p.
Legacy boards have an m88 chip and modern SMD boards have an m88p chip.
Use m88p if you don't know what to select.
Default is m88p.
CONF_IDLE =0
=1
Enable/disable idle switch support. Can be either 1 or 0.
Default is 1.
CONF_IDLETOGGLE =0
=1
If 1, the idle button acts as a toggling push button. If 0, the idle button acts as a switch.
Default is 1 for HW=legacy and 0 for HW=smd.
CONF_BOOST =0
=1
Enable/disable boost button support. Can be either 1 or 0.
Default is 0.
CONF_PRESETS =0
=1
Enable/disable support for temperature presets. Can be either 1 or 0.
Default is 1.
CONF_ADJ =0
=1
Enable/disable temperature compensation adjustment. This allows adjustment of the controlled temperature to the real temperature on the iron tip. Can be either 1 or 0.
Default is 1.
CONF_EERING =0
=1
Enable/disable support for EEPROM ring memory to reduce EEPROM wear. Can be either 1 or 0.
Default is 1.
CONF_KCONF =0
=1
Enable/disable temperature PID controller parameter menu. Can be either 1 or 0.
Default is 0 for m88(p) and 1 for m328p.
CONF_DEBUG =0
=1
Enable/disable debugging menu and UART interface. Can be either 1 or 0.
Default is 0 for m88(p) and 1 for m328p.
CONF_CURRCUTOFF Don't touch.
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=smd DEV=m88p CONF_DEBUG=0
make HW=smd DEV=m88p CONF_DEBUG=0 write_fuses
make HW=smd DEV=m88p 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.

xytronic-lf is stable/production quality software.
That means its features are well tested and the remaining amount of bugs probably is minor. The documentation is not complete.

The development source code of xytronic-lf can be downloaded using the Git version control system as follows:

git clone https://git.bues.ch/git/xytronic-lf.git

To browse the Git repository online, go to the repository web interface.
Or download the compressed snapshot.
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.

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 20 May 2024 13:27 (UTC)
xhtml / css