DIY Inkjet Printer

A piezo inkjet printer built from scratch

Public Chat
Similar projects worth following
This is my attempt to build an open source inkjet printer by myself without industrial manufacturing.
The printhead can later be used as add-on for CNC machines eg. for part labeling, binder jetting 3D printing or other applications where an inkjet printhead could be useful.
The printhead is controlled by an Arduino which can be controlled directly via I2C or via GCODE (M260) if you use RAMPS or another board which supports I2C.

At the moment there is no "GCODE Creator" software for it and I'm not good at programming yet. So it will take me a while to write one.

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

The first toolhead design is a 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 next design will increase the printing speed by the use of multiple printheads.

Standard Tesselated Geometry - 28.50 kB - 11/08/2019 at 14:31


Standard Tesselated Geometry - 166.68 kB - 11/08/2019 at 14:31


Standard Tesselated Geometry - 58.09 kB - 11/08/2019 at 14:31


Standard Tesselated Geometry - 58.09 kB - 11/08/2019 at 14:31


Standard Tesselated Geometry - 41.68 kB - 11/08/2019 at 14:31


View all 28 files

  • Short Test

    Dominik Meffert2 days ago 0 comments

    A short test of my DIY Inkjet Printer to test the function of the printer, software and toolhead.

    Nozzle 9 and 10 are offline in this test because I ran out of pins on the Arduino UNO .
    The Nozzles are 0.4mm 3D printer nozzles which are maybe too big. I will later test smaller ones.

  • Ready for Testing

    Dominik Meffert7 days ago 0 comments

    YES, the printer and all 10 printheads are working. Now it's time to work on the software.

    I have almost no coding experience besides of Arduino and the python script I wrote. So maybe it could take some time...

  • New Toolhead

    Dominik Meffert11/03/2019 at 01:42 0 comments

    Here is a new 10 nozzle toolhead based on the new SLA 3D printed design. The dimensions are 105*55*50mm + nozzles and push-in fitting. The nozzle to nozzle distance is 8mm and at its back is a 4020 aluminium profile for easy attachment.

  • New SLA 3D Printed Toolhead

    Dominik Meffert10/29/2019 at 04:37 0 comments

    My new Elegoo Mars

    In the last weeks I've tried to design a 3D printed toolhead to get the size and complexity down and here is my latest (successful) test:

    2 Printheads (The SLA parts in the picture were not cured and so they bend at the sides I think when they are cured they should no longer bend that much)

    Inner channels to prevent the buildup of air in the ink chamber

    Features of the new toolhead:

    - Dupont Connectors

    - Smaller Size 30*50*8mm

    - Nozzle to Nozzle Distance 8mm

    - Extendable (You can stack as many as you want)

    - No more venting (No build up of air in the ink chamber because in and output are at the top)

    - Only One Ink Connection (The ink flows from one printhead to the next and venting is no longer needed)

    The only problem that remains is controlling the pressure...

    I've ordered pressure sensors for further testing.

  • Pressure Control Unit and further plans

    Dominik Meffert10/19/2019 at 19:44 0 comments

    I've built a pressure control unit to keep the right pressure during printing.

    I also ordered check valves to flush every printhead which should be delivered by Monday.

    When I have everything together I will test the whole system and see whether it works but I think this attempt will be too complicated and expensive to be more than a prototype...

    So the next thing I will test will be a printhead printed with a resin 3D printer to utilise the capillary effect and maybe smaller piezo discs.

    Today I've ordered an Elegoo Mars so I can start working on 3d printed parts with small channels inside by next week.

  • CoreXY Printer

    Dominik Meffert10/14/2019 at 19:33 0 comments

    In the last few weeks I have built a CoreXY Printer for the toolhead.  For the axes I used the same 2020 wheel system like on the Ender 3 to keep the design as easy as possible.

    The printer is controlled by an Arduino Mega 2560 + RAMPS 1.4, which controlles an Arduino UNO via I2C, which controlles five L298N H-bridges, which drive the piezos.

    The toolhead is made of 40*40*20mm POM blocks, which are individually assembled and later mounted from the backside with a M6 scew on a 3mm steel plate.

    For flushing the toolhead I have added a sink where the toolhead can be parked and flushed. 

    The mechanical and electrical parts are working fine but for pressurizing the toolhead I must find another solution.

    Maybe something with check valves or so...

  • Driver Electronics

    Dominik Meffert09/24/2019 at 17:40 0 comments

    This is the driver electronics which I use for 9 piezo discs.

    5x L298N H-bridge

    12x WAGO 221 - 415

    1x LM2596 DC DC converter

    1x Arduino UNO

    Jumper wires

    1.5mm² wires

    0.75mm² wires

    3D printed spacers

    3D printed WAGO mounts

    M3x20 screws & nuts

    M5x10 screws & nuts

    Zip ties

    Everything is mounted on a plasma-cutted 2mm aluminium plate which can later be attached to the finished printer.

  • Testing the controller

    Dominik Meffert09/21/2019 at 03:10 0 comments

    For the 9 nozzle printhead I want to use the Ramps 1.4 + Arduino Mega 2560 as controller too but the M106 command supports only 3 "fans" at the moment.

    So I used the I2C connection to connect an Arduino UNO which drives the LEDs and later the L298N H-bridges. The same UNO can create the H-bridge direction change too.

  • Toolhead with 9 Nozzles and Python Script

    Dominik Meffert09/20/2019 at 01:50 0 comments

    I think it should be better to start with multiple printheads in a row instead of a matrix. So I printed 9 separate printheads which are individually assembled and then bolted together. The 3D printed parts are only for fit checks.

    With the new toolhead the printing process should be faster because with 9 nozzles in a row every printhead must only print the space between two nozzles.

    I have written a Python Script for post processing the gcode from Matthew Rayfields Pixels to Gcode.

    The gray stripes show the printhead area.

    The red dots show the xy coordinates on the paper.

    The blue dots show the gcode coordinates which are executed by the printer.

    The graphic is created by the matplotlib - library.

    The next step will be testing the electronics for 9 printheads.

  • 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.

View all 13 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