PCB Lullaby: Iron perchloride mixer

If you're into electronics and PCB design, you know that the etching process can be a bit of a hassle. It's time-consuming, messy, and requires constant agitation of the etching solution to ensure a uniform result. But what if there was a way to automate this process and make it faster and easier? That's where PCB Lullaby comes in.

PCB Lullaby is a project that uses a 3D printer as a moving bed to mix the etching fluid, speeding up the process and achieving better results. The project is designed to work with an Ender 3 Pro 3D printer and a few additional components, making it accessible to makers and hobbyists who want to produce high-quality PCBs with less time and effort.

How it Works

The PCB Lullaby tool works by mixing the etching fluid in an etching tank placed on the bed of the 3D printer. The tool uses G-code commands to control the movement of the bed, which moves back and forth to agitate the etching fluid. This helps to speed up the etching process and achieve better results. Additionally, the tool can be used to preheat the etching fluid, enhancing the chemical process.


The PCB Lullaby tool includes several features that make it easy to use and customize, including:

Getting Started

To get started with the PCB Lullaby project, you will need an Ender 3 Pro 3D printer and an etching tank. Once you have the necessary components, you can download the pcb-lullaby code from the project's GitHub page and run the Python script with customizable parameters. To use the pcb-lullaby code, follow these steps:

$ git clone https://github.com/azerty-labs/PCB-Lullaby.git
$ cd pcb-lullaby

Then you can directly run the python code as the script depends on no external library. To use this Python script with argparse, you need to open a terminal and type:

python ./src/perchlo_mixer_gcode.py FILE [--bedtemp BEDTEMP] [--timemix TIMEMIX] [--numwait NUMWAIT] [--speed SPEED] [--zposition ZPOSITION] [--frontposition FRONTPOSITION] [--backposition BACKPOSITION]

Note that the default value are for an Ender-3 Pro 3D-printer:

$ python ./src/perchlo_mixer_generator.py -h
usage: perchlo_mixer_generator.py [-h] [--bedtemp BEDTEMP]  [--timemix TIMEMIX][--numwait NUMWAIT] [--speed SPEED] [--zposition ZPOSITION] [--frontposition FRONTPOSITION]   [--backposition BACKPOSITION] FILE

Here's an example of how to use this script:

python ./src/perchlo_mixer_gcode.py my_circuit.gcode --bedtemp 30 --timemix 2 --numwait 3 --speed 1500 --zposition 150 --frontposition 120 --backposition 145

This will create a new G-code file called my_circuit.gcode with the given parameters. Note that if you omit any of the optional arguments, the script will use the default values.


The PCB Lullaby project is an open-source project, and contributions are always welcome. If you would like to contribute to the project, you can do so by submitting a pull request or by creating an issue on the project's GitHub page.


If you're curious to see the PCB Lullaby tool in action, check out this my demo below :


In conclusion, if you're looking for a way to make the PCB etching process faster and easier, PCB Lullaby might be just what you need. With its customizable parameters, preheating capabilities, and 3D printer integration, this project is a great tool for makers and hobbyists who want to produce high-quality PCBs with less time and effort.