DIY Inkjet Head

This is my attempt to build a simple inkjet head that everyone can build at home.

Similar projects worth following
This is a toolhead for printing many sorts of fluids like binder, ink and almost all fluids with low viscosity. In this configuration you can print ink on paper with your Ender 3, but the printhead should also be suitable for other applications like binder jetting or labeling.

Here is a test of the Toolhead.

This is my attempt to build an open source inkjet printhead by myself. I started this project because I wanted to build a binder jetting 3D printer but could not find any open source inkjet printhead for this. So I started trying to build one.

The toolhead is a DIY Piezo Printhead inspired by,52959,page=1 and

It's controlled via a L298N H-Bridge and PWM from the 3D printer. The printhead runs on 36V DC and the puls is created by an Arduino Uno.

The first test was engraving / printing the rose made with Estlcam. The second test was Bob Marley as dot matrix with Pixels to Gcode on 80g/m² paper which seems to be too thin. Today I tryed with 120g/m² paper and it works way better. Pictures and more tests with dot matrix will follow.

Standard Tesselated Geometry - 121.18 kB - 09/03/2019 at 01:13


Standard Tesselated Geometry - 79.18 kB - 09/03/2019 at 01:13


Standard Tesselated Geometry - 50.67 kB - 09/03/2019 at 01:13


Standard Tesselated Geometry - 45.98 kB - 09/03/2019 at 01:13


Standard Tesselated Geometry - 50.38 kB - 09/03/2019 at 01:13


View all 7 files

  • 1 × Acrylic Block 40x40x20mm
  • 1 × 27mm Piezo Disc
  • 22 × M5x8 Screws
  • 10 × 2020 Corner Bracket
  • 4 × M3x30 Screws

View all 34 components

  • Further Plans

    Dominik Meffert09/09/2019 at 00:04 0 comments

    The next thing I want to try is a new toolhead with 8 nozzles and 8 piezo discs.

    With that I want to test printing with 8 nozzles at once at different locations of the picture and maybe CMYK printing.

    I think, it will take a while until I can test printing with multiple printheads, because I will need a different printer assemby and a software for creating the gcode.

  • Testing

    Dominik Meffert09/08/2019 at 22:26 0 comments

    The first test was printing a vector graphic with Estlcam. 

    In this test I started the piezo, printed the line and turned off the piezo.

    In the next tests I tried printing dot matrices with Pixels to Gcode by Matthew Rayfield on 80g/m² paper.

    It seems that 80g/m² paper is too thin for the drop size, so I switched to 120g/m² paper.

    I think, I will stay on the dot matrix methode, but try to improve the printing speed.

  • Ender 3 Mod

    Dominik Meffert09/08/2019 at 17:55 0 comments

    After I got the printhead to work, I bought a Ender 3 Pro because it's not expensive and can be easily modified to test controlling the printhead by gcode and working with it. So I removed all parts which were not needed, like the Z axis, the hotend and the extruder motor. To get a free pin for pwm control on the Ender 3 the Pin 27 Board is needed. With the 3D printed parts the printhead and printhead electronics are mounted. Also the Z axis is locked in place with 3D printed parts. The printhead electronics are powered by a 36V DC power supply. 36V goes to the L298N and LM2596 which converts it down to 5V which powers the Arduino and the logic side of the L298N (The jumper must be removed if the voltage exceed 12V). Digital pin6 and pin7 of the Arduino are connected to the logic input of output B on the L298N. The GND pin of the Pin27 Board is connected to the GND Wago 221 and Pin27 is connected to enable B on the L298N. The piezo disc is connected to output B of the L298N. The Arduino continous switches the "direction" of the piezo "forwards" and "backwards". In the Arduino sketch the time between the direction changes can be set. It seems like one pulse must be longer than the other e.g. pulse1 = 50ms  pulse2 = 2ms. I flashed the latest Marlin firmware on the Ender 3 and added the pin27 as fan 1 like here Then the piezo can be started with M106 P1 S255 and stopped with M106 P1 S0. 

  • How it started

    Dominik Meffert09/08/2019 at 12:36 0 comments

    I started this project because I wanted to build a binder jetting 3D printer like, but with a selfbuild printhead. So I started building my printhead based on,52959,page=1 and

    First I build the Reprapple-Inkjet design, but with an acrylic block for the "fluid chamber" instead of a 3D printed part.

    Later I changed from the transformer to a H-bridge and added the upper connection for flushing the air out.

    After that I tryied to build a pressure control system based on load cells to keep the pressure stable when the fluid level in the tank gets lower, but I figured out that it was not precise enought to work.

    In the future I will test pressure sensors to see if these work for controlling the pressure. Until then the systen with the stand works reliable for hours bevore the fluid level is too low.

View all 4 project logs

Enjoy this project?



PropellerGraph wrote 09/12/2019 at 03:48 point

I like how this has gone full-circle--using a 3D printer to make a 2D printer! The dot-matrix prints almost look like pointillist paintings!

  Are you sure? yes | no

Dan Maloney wrote 09/06/2019 at 17:50 point

Reminds me a little of the inkjet heads used to print on packaging as it goes down a conveyor. Even sounds a little like it.

  Are you sure? yes | no

Krzysztof wrote 09/03/2019 at 17:40 point

Nice! Have you considered using mobile phone speakers?

  Are you sure? yes | no

Dominik Meffert wrote 09/03/2019 at 20:34 point

Thank you. 

Not yet, maybe in the future for a smaller toolhead.

  Are you sure? yes | no

Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates