From RepRap
Jump to: navigation, search
Crystal Clear action run.png

Release status: Working

Inkshield in action.jpg
An Arduino shield for controlling the HP C6602x thermal inkjet cartridge.
Creative Commons Attribution-ShareAlike 3.0
CAD Models
External Link

The Inkshield is an Arduino shield that can be used for controlling the HP C6602 inkjet cartridge. The board provides the necessary circuitry to boost a 12v input to a 20v output to drive the nozzles. It also provides a multiplexer and darlington array to control each nozzle. Four input pins are used to address the nozzles and one pin is used to fire the nozzles.


Nicholas has posted a very through explaination of the operation theory and circuitry on his website.


The Inkshield can be purchased from Nicholas C. Lewis on his website.

Bill of Materials


It should be noted the initial libraries for controlling the InkShield are some what lacking. There is a detailed explanation here. The simplified functionality is explained in the aforementioned document, and demonstrated with a simplified implementation of the "I <3 InkShield" sketch here.

Hardware Modifications

The MC34063A on the board can be replaced with a MC34063EBN (if your MC34063A burns out), with the following modifications:

  • U1 - MC34063EBN
  • R1 - Replace with a 1 Ohm part
  • C2 - Replace with a 100pF part


This fork of Marlin provided provisions for controlling the InkShield. It will support up to 6 inkjet heads. The following is the Mcode used to control them.

M700 - P<head_number> S<nozzle_bits>

The argument to the 'S' parameter is a decimal number which is converted to a 16-bit binary number used to represent the nozzle firings. For example, sending "M700 P0 S3" would fire the first two nozzles simultaneously on the zeroth head because 3 is 11 in binary. Equally, "M700 P1 S64" would fire the 7th nozzle on the first head because 64 is 1000000 in binary. Also the firmware will handle all safety precautions with respects to timing when firing the nozzles.

Typical operation would be to use a G1 command to move the head, an M400 command to clear the move buffer, and an M700 command to fire the nozzles. This is a very inefficient way of operating the printer, however at slow speeds the delays are imperceptible.