HP45 Inkjet Printhead

HP45 nozzle closeup

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: https://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 matters 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 hot 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 Standalone Controller V4 is a universal controller for inkjet. It gives the user direct control over every nozzle. Together with special software it can be used to print anything.

Oasis 3DP printer is a powder and inkjet printer designed to be clean and simple to use. It uses the powerful HP45 to print high detail parts in any powder suitable for 3DP printing. The design of Oasis is modular, allowing for future upgrades.

HP45 breakout page block

(Deprecated) 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.

Additional pages

Refilling the HP45 printhead

HP45 printhead anatomy


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



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


    • It should work on a similar principle, and the connector seems the same, but I do not know if the pin mapping is the same, or if the nozzles are in similar places. It might be possible to convert the design, but that is not something for me to do.

  1. Hello

    Can someone explain to me what exactly happens to HP45 when placed in HP15 Cartridge Converter? (45215)
    I wanted some info about the conversion stage. also pros and cons if possible.

  2. Hey! I am a undergraduate student looking into using an HP45 for a 3D printer my team and I are building. I was wondering how you measured the values of the thermal sense resistors, like what kind of study plan you conducted?

    • I did try to determine the values of the TSR (as seen in the graph), but other than that, I did not conduct a full study of it. This is not an academic exercise, I do this as a hobby.

  3. Hey thanks for the great work. As the printhead is rather old I could not find it on a first research online. Any ideas where to get it? Which printers used it? Any printhead which are similar?

    Thank you so much

    • I have no issue finding the HP45 printhead on the internet. I have several Dutch webshops selling them. As for comparable printheads, there are a few, but I would have to look them up. I can currently only control the HP45 myself.

  4. Hi guys!

    Have any one know why this model of cartridge was choose?
    I would like to make the same printer and would like to understand why was choose this model of cartridge. As for me it’s old cartridge and maybe have sense use something newer. If any one or author has any info about that please share with us I guess this info will be interesting for many people.

    • It is a fairly easy to figure out printhead. Everything is wired directly to the nozzles. Newer heads have more and more electronics in them until a point where the signal can even be encrypted. HP45 had a lot of resources while I was hacking. There are newer heads though, and I do plan on looking further.

  5. Hello. I have read before but could not find it anymore that you can use HP45 instead of HP15 for your printer. The instruction was to put a 9V battery on two pinouts and the printer will accept HP45. Do you have any idea which pins are these? Thanks in advance.

  6. Hi, I don’t know if you’re still looking at this, but I can’t get a 0.4 A from the source I intent to use with the printhead, and the other option I have is a 12V 30A source which is plain overkill. Would 0.1A work, and if it did, would I have to leave the address on for longer as to allow the resistor in the primitive to heat up? It would take a little longer, and I’m not quite sure if it would damage the nozzles, as the temperature would still eventually become the same, it’s just that it may take a little longer.
    Any help would be great, Thanks!

    • Let me rephrase this because I myself don’t understand what I’ve just said. Would a current less than 0.4A achieve the same goal of heating up the resistor inside the primitive enough to the point it reaches the same temperature as if a 0.4A source were to be used? If the smaller current source did accomplish heating up the resistor, would extending the duration which the current passes through both pins damage the nozzle, or would it just not work effectively? Hope that’s a little clearer

      • You need 0.4А peak per 1 heater. But you have 14 primitives. To run them all you’ll need 5.6A of peak current.
        This peak current can be provided by the capacitors, because in average you’ll need much lower. Remember, 2us before, 2us on, and 3ms after? So in average you’ll need power source with 0.4*2/7 = 0.12A for one by one, or 1.6A for all 14 at once. If you’ll add extra delay, any power adapter with appropriate capacitor bank will suite.
        You don’t need to extend heating duration, you just need to add ceramic capacitor and extend timeout.

  7. 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:)

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

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

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

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

  12. 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 *

This site uses Akismet to reduce spam. Learn how your comment data is processed.