HP45 Inkjet Printhead

HP45 nozzle closeup

The HP45 printhead

The HP45 printhead is an inkjet printer cartridge designed by Hewlett-Packard. It is found in inkjet printers and plotters from the early 2000’s. The design consists of a large reservoir to hold ink, a set of contacts on the back and 2 rows of nozzles on the bottom. The ink reservoir holds 42ml of ink is held under slight vacuum using a spring. Even for today’s standards, the HP45 boasts a respectable set of features. It has 300 nozzles spaced at 600 dots per Inch (DPI). The whole printhead operates on 12V and  52 contacts on the back are used to control the printhead.

The HP 45 printhead can be used to print with ink on a varied amount of surfaces. This can be to mark object, or make a custom inkjet printer. It can be controlled with fast microcontrollers that have a lot of pins (such as the Arduino Mega or DUE). The printhead can be emptied and refilled with any volatile fluid that doesn’t react much. The heater has to be able to vaporize a droplet. This means that the printhead can print with liquids like alcohol and water. More aggressive solvents like white spirits and acetone might be possible, but this needs to be tested first.

On this page I hope to share all I know about the HP45 printhead so it may benefit others. All I know is through tests, experiments and through  information acquired from people and documentation. Expect the information on this page to change as more experiments refine values and more properties of the printhead are found.


A special thanks to:

A lot of information was taken from a patent that applies to the HP45: http://www.google.com/patents/US5946012. I thank HP for providing such a rich source of information.

Also a special thanks to Aad van der Geest @ Spitstec: http://www.spitstec.nl/. I do not think I could have hacked this printhead without your wisdom. (seriously click the link)

More information on the precise hacking process can be found here: http://ytec3d.com/forum/viewtopic.php?f=8&t=28. On the Ytec3D Forum.


How the HP45 works

The HP45 is what is called a bubblejet or thermal drop on demand printhead. Each nozzle on the printhead has a chamber with a tiny heater attached to it. When the nozzle needs to eject a droplet of ink, the heater is briefly powered, flash vaporizing a small bit of ink in the chamber. This vapor pushes out the rest of the ink in the chamber. After a droplet is ejected, the heater cools down and the chamber fills with ink again.  To give an idea of how fast this process can happen. In the HP45 it takes just 2 microseconds to eject a droplet.


As mentioned, each nozzle consists of a chamber with ink and a tiny heater. On the bottom of this chamber is a hole of roughly 28 microns through which the ink is expelled. The heater is a tiny resistor with a resistance of around 30Ω. Also on each nozzle is a Field Effect Transistor (FET). This is something to do with the manufacturing process and is used to multiplex the array of nozzles. Each address on the nozzle requires 12V to open the gate. The primitive requires 12V, though it is said that the voltage becomes lower as the printhead starts to warm up.

The nozzles are connected in a multiplexed array. This way 300 nozzles can be controlled with only 36 controlling pins. 14 of these pins are primitives, connected straight to the heating resistors. The primitives will run the actual current that will eject the ink. The other 22 are addresses and are connected to the gates of the FET’s. The addresses only need to open the gate and can so don’t need much current to activate. The grounds are drawn as separate lines, but in the printhead they are all connected through each other. Other components like the temperature sensor are also grounded through the ground pins.

HP45 mosfet array

A full schematic of the complete set of nozzles in the printhead

HP45 single nozzle

A schematic of a single nozzle heater circuit

Nozzle locations

On the bottom of the printhead are 300 nozzles. At 600 DPI, the 300 nozzles cover half an inch or about 12,7mm. The nozzles are divided in 2 rows of 150 nozzles each, 4mm apart and the full 12,7mm long. Each row has a resolution of 300 nozzles per inch. The 2 rows are staggered  1/600th of an inch so the 2 rows combined give the full 600DPI. Each row of nozzles is not perfectly straight, but actually sways a bit from left to right. There is no specific pattern to this, so the exact table with each exact nozzle location (according to the patent) if found in the downloads below.

HP45 nozzle die closeup

A closeup of the printing side of the HP45

HP45 hole locations

Schematic overview of how the nozzles are spaced and located under the printhead.

Nozzle Timing

To get droplets of ink out of the nozzles, a combination of pins need to be pulsed in order. First the address needs to be supplied with 12V. This opens the gate of the FET, and makes it so that the current can flow from primitive to ground. The time between the address opening and the primitive being powered and is around 2us (Tp-a). All the primitives that are on an address that need to be triggered open next. The voltage Vprim can vary depending on a few factors, but is usually between 9V and 12V. A primitive needs to be open for 2us (Tprim). After that, the primitive is closed. 3us (Tp-a) later the address is closed too. After this, the next address is opened and the process of triggering a nozzle is repeated. After the nozzles on the 22nd address have been triggered triggered, the 1st address opens again. This cascade repeats until the printhead is done.

A few warnings. If the address is closed before the primitive, the FET will be damaged or destroyed. The primitive should always be closed before the address. Triggering a primitive for more than 2us may damage the nozzle. If the nozzles are triggered while there is no ink, the nozzle can be damaged.

HP45 address timing

Address timing diagram. The addresses cascade from 1-22 and then return to 1.

HP45 nozzle timing

Nozzle timing diagram


The contacts on the back connect to all of the nozzles and some additional electronics. In total there are 52 contacts. Like with the nozzles themselves, the contacts are split into 2 groups. The left side is odd, the right side is even. Important here is that both odd and even addresses go to both rows of nozzles, but primitives only go to their own side. This means that all odd primitives are only connected to the odd nozzles, and all even primitives are only connected to even nozzles. Technically speaking the same goes for the grounds, but they are all connected, so it maters less.

HP45 contacts

The 52 contacts on the back of an HP45

HP45 contacts 5

The actual pin mapping on the HP45 printhead

Thermal sense and 10x resistor

The thermal sense resistor and 10x resistor are 2 additional resistors in the printhead to get better information during printing. Not much is disclosed about their exact properties, so this is where the information gets a bit more vague, but this is what I know so far. The 10x resistor is installed as a reference. It has a resistance of around  300Ω. It is 10x as high a resistance as the printhead heater resistors. It can be used to measure the resistance from the controller all the way to the printhead, so all other systems can be adjusted accordingly. The 10x resistors resistance remains stable as the printhead temperature rises.

The thermal sense resistor is a temperature sensor. It has a resistance in the neighborhood of 300Ω, but the resistance goes up as the temperature rises. Values were measured on 2 printheads using how water and a multimeter. The resistance for each temperature seems to be dependent on the resistance of the 10x resistor. If the 10x has a higher resistance, the temperature sensor also has a higher resistance. Because of this, the table for what temperature is what value will be given in (temperature sense resistor) – (10X resistor).  At 20°C this value is around 10Ω and rises with 11Ω every 10°C. At 80°C the resistance will be around 76Ω.


HP45 temperature sense values

A table with the relation between temperature and the resistance of the 10x and thermal sense resistor for the HP45


Projects with the HP45

HP45 breakout page block

The HP45 breakout board with carrier can be used to interface with the Hp45 printhead. It is designed to give a 1 to 1 connection with every single of the 52 contacts on the HP45. Two 26 wire ribbon cables with cable headers can be used to connect the breakout to any circuit. The carrier has a latch mechanism so the HP45 can easily be swapped.


There are a bunch of files I have made so far for the HP45. This includes an accurate CAD models of the HP45, drawings with dimensions of the contacts and an Excel file with all nozzle information.

HP45 imformation download button


If you downloaded the files from this site and liked it, please consider going to the Donations page. This will help the development of more free designs and plans.



The project described on this page is licensed under the Creative commons - Attribution  - ShareAlike license.


  1. We have a printer that runs with the HP45 cartridges. Now we are in an area were voltage at times can drop below 100V which is the minimum for the printer to run. Especially during cold month the voltage drops to around anything from 90-98V. We get this issue with nozzles of brand new cartridges not firing and the nozzle test print looking terrible. We tried over 20 cartridges over the last couple of month and none of them produced a good result. I`m beginning to wonder if this could be due to the low Voltage.
    Maybe someone who knows about this stuff likes to answer:)

  2. Hi,

    I know the post is 6 months old but if you’re still here? can you tell us how to estimate the ink level in cartridge, It’d really helpful.

    • Simple answer, no.

      The head has no way of measuring it’s own fluid level and there is no on board chip registering how much ink is deposited. The only thing you can do is measure that the head is completely empty. If this is the case, the head will heat up rapidly because most of the heat is not going to the ink but to the head.

  3. Thanks again. I read all the forums, and I realized that the topic is particularly complicated, well beyond my knowledge of electronics. I guess I’ll have to be patient …
    Congratulations on your skills and especially want to share your achievements.
    Best regards.

  4. Thank you, surely I will be patient. In the meantime I’d like to experience something and so I ask you a little help that you have given a great job and have a great experience.
    I can produce a signal of 9/12 V 2 ms. After all, a PWM, a square wave with high signal 9 / 12V and high duration of 2ms. First question the low time, how many ms? Second question: the FET is on the head? Therefore the signal that arrives on ADDRES is able to drive the FET and let current flow in the nozzle termal?

    Alternatively I would much use piezo printheads, such as Epson, very versatile and able to handle different liquids. It ‘easy to find old printers from which to take the heads. I will try in the forum but my English is not very good and you spare me a great job if you can tell me if someone has studied those heads, making a mapping or even know what type of signal accepted in terms of voltage, amperage and timing .. ..
    I know that is hard work (and I do not have a very sophisticated equipment) but complicate things fascinate me a lot.
    I apologize if I’m boring.
    Best regards.

    • If you are talking about the HP45, 2ms is WAY too slow. You will need pulses of 2 microseconds, a thousand times as short. The address needs an on time of about 10 microseconds. While the address is high, the primitive needs a pulse of around 2us. The primitive requires quite a bit of current (around 0.4A). The low time for single nozzles is around 200 microseconds (0.2ms) minimal. If you drive all nozzles, there is always a nozzle firing. There is a FET in the head, connected to the address, but it is used to control signals. It is not capable of actually switching while a primitive is powered. First the address is opened with 12V. The the primitive is turned on for 2us. After the primitive is closed, the address is closed again.

      There is someone on the forum working on the Xaar 128. This is a piezo head. He has had results, but he has not shared much so far.

  5. You’ll have to be a bit patient. On the forum I am currently working on a controller. With that and some simple electronics, you could make what you want. It still needs some time though. Also if your CNC is messy or dusty the head might get clogged. It may not be a deal breaker, but it is something to keep in mind.

    • Hello,
      I’m developing a printer for learning and I’m looking for information and I wonder if you could do something.
      Thank you very much

  6. I am very happy to have found this site. I’m not experienced enough in electronics in order to help, but I get along well with the mechanics to build CNC machines etc.
    I would like to be able to use the HP45 even just simply on-off (shoot drops – does not shoot drops) for every nozzle, while the head moves. I need to send impulses which could be an idle circuit to produce the right impulses? I would like to be able to start as if the head were simply a pen (also of only one nozzle) of an old pen plotter. Does anyone know or could design a circuit diagram of the genre?
    Many greetings and encouragement.
    Danilo, Italy.

Leave a Reply

Your email address will not be published. Required fields are marked *