Hello dear co-hackers
I have been following this forum for a few months now. I found this topic quite useful so I decided to give you something useful in return. Attached below is a ZIP file, which contains a library for HP45 head. All pins are marked according to the excel file that Dragonator provided. If you find any mistake in annotations or anything please message me, so I can correct them.
Hacking the HP45
Re: Hacking the HP45
- Attachments
-
- Hp 45 eagle library.zip
- (2.26 KiB) Downloaded 1192 times
- dragonator
- Site Admin
- Posts: 597
- Joined: Fri Aug 14, 2015 4:48 pm
- Location: The Nethelands
- Contact:
Re: Hacking the HP45
@ Jurif: I currently do not use eagle, so I cannot check whether the library is correct, but I will see if I can get a version so I can check it.
@Bigbomber:
@Bigbomber:
Actually, there are 22 addresses and the 12kHz relates to how often the entire head is triggered. This means that in 83us each primitive needs to pulsed not once but 22 times. I do like the idea of the 555 monostable circuit though. I will look into that.As mentioned by Dragonator, the high level pulse width for Fet of each nozzle is about 2 us. To ensure the duration of pulse, I've used a 555 at monostable mode, and just triggering it by each 150 us (actually for 12 kHz we must triggering it by 81 us but best result for me was 150 us).
Very curious to see what you have designed.I've also designed my own Head Holder and connector Pins (can't find your accessories in my location) and I will post some photos as they arrived.
The voltages and timing came from someone I know how has been working on these heads for a long time. He got them from the original printers. They seem to be right, so I won't doubt him. Also some information came from the patent. I don't know enough about your setup to understand why the heads sometimes fire and sometimes do not. Do you have all unused addresses tied to the ground?And some questions from Dear Dragonator, as you get successfully drive the head, can you exactly guide me about timing pulses and voltage levels?
At my tries, some nozzles work for a while and after a time stop working, and then get work again. And some never works.
That is likely due to an unclean head when you start. If there is muck on the head when you start, ink will stick to that and once ink starts sticking to the head, only more will come.Also on some tests, a big drop of ink stick to head outlet and disturb ink jetting. what is the reason?
It is mostly as you said. 2us pulses on the primitive side. 3us before the primitive pulses I open the addresses, and 3us after the primitive is done pulsing, I close the address. I do not switch the primitive on the HP45 address Fet. The patent strictly forbids this and I while it might work for a while, it will not yield a long life. Especially considering the maximum trigger frequency of these heads.I need to know the exact possible driving timing. I do not want to lose my next Ink Head.
Mostly designer because I don't think I did much inventing, but yes.and for last, Dear Dragonator, are you designer and inventor of Plan B?
- dragonator
- Site Admin
- Posts: 597
- Joined: Fri Aug 14, 2015 4:48 pm
- Location: The Nethelands
- Contact:
Re: Hacking the HP45
2 announcements, no new progress.
1: I have seen the future. THIS: http://hackaday.com/2016/08/17/introduc ... 5-and-3-6/. I had preferred the Teensy over the Arduino DUE for the Oasis controller, but until now I had problems with the Teensy having too few I/O pins. No more it seems. I still have to do most checks, but I am strongly considering using a Teensy instead of the Arduino DUE to control Oasis. (This is not the HP45 controller, which has no microcontroller.)
2: I have ordered a batch of HP45 controller boards. The layout is mostly as it was a few pages ago, according to the schematic there. I needed to order PCB's anyway and wanted to test this one. I might ship out PCB's to anyone interested, but I would really like to test them myself before I do that, because I know I am not perfect and they still need to be tested.
(PS. I finally have an idea for a more sleek HP45 carrier, but I need to design and test it first.)
1: I have seen the future. THIS: http://hackaday.com/2016/08/17/introduc ... 5-and-3-6/. I had preferred the Teensy over the Arduino DUE for the Oasis controller, but until now I had problems with the Teensy having too few I/O pins. No more it seems. I still have to do most checks, but I am strongly considering using a Teensy instead of the Arduino DUE to control Oasis. (This is not the HP45 controller, which has no microcontroller.)
2: I have ordered a batch of HP45 controller boards. The layout is mostly as it was a few pages ago, according to the schematic there. I needed to order PCB's anyway and wanted to test this one. I might ship out PCB's to anyone interested, but I would really like to test them myself before I do that, because I know I am not perfect and they still need to be tested.
(PS. I finally have an idea for a more sleek HP45 carrier, but I need to design and test it first.)
Re: Hacking the HP45
Yes, I know, there are 22 address and between firing each nozzle, a 81 us delay is needed.Also you mentioned after each 81 us of delay, it shall be fired for three times of 2 us, but on my tests, only by one 2 us firing, the ink is squirted.Actually, there are 22 addresses and the 12kHz relates to how often the entire head is triggered. This means that in 83us each primitive needs to pulsed not once but 22 times. I do like the idea of the 555 monostable circuit though. I will look into that.
Also a question: how much delay is needed between firing two separate near nozzles?
Somewhere you said the Primitive voltage is 9v <v< 12v. Can I ask what dose it depend on?The voltages and timing came from someone I know how has been working on these heads for a long time. He got them from the original printers. They seem to be right, so I won't doubt him. Also some information came from the patent. I don't know enough about your setup to understand why the heads sometimes fire and sometimes do not. Do you have all unused addresses tied to the ground?
I can see, but in my location I couldn't find suitable source driver ICs. I think I should design my own driver by myself using P-channel MOSFET.It is mostly as you said. 2us pulses on the primitive side. 3us before the primitive pulses I open the addresses, and 3us after the primitive is done pulsing, I close the address. I do not switch the primitive on the HP45 address Fet. The patent strictly forbids this and I while it might work for a while, it will not yield a long life. Especially considering the maximum trigger frequency of these heads.
Also this is my Head Holder Design. It is not so far from yours, but with not small changes. Also manufacturing process is completely different (not using 3D Printer due to large cost).
- dragonator
- Site Admin
- Posts: 597
- Joined: Fri Aug 14, 2015 4:48 pm
- Location: The Nethelands
- Contact:
Re: Hacking the HP45
No, that is not how the timing is. In said 81us, ALL addresses will have been high. The actual delay between 2 addresses is only around 2-4us. All primitives are triggered at once in an address, and 2-4us later the next set is of primitives is triggered. At 81us delays you will barely manage 600Hz. Also I did at the beginning talk of 3 triggers for every droplet, but that was based on old information. I already know (and have mentioned) that 1 pulse on a primitive is used for ejecting 1 droplet of ink.Yes, I know, there are 22 address and between firing each nozzle, a 81 us delay is needed.Also you mentioned after each 81 us of delay, it shall be fired for three times of 2 us, but on my tests, only by one 2 us firing, the ink is squirted.
Also a question: how much delay is needed between firing two separate near nozzles?
How hot the printhead is. It will become hotter as it prints.Somewhere you said the Primitive voltage is 9v <v< 12v. Can I ask what dose it depend on?
That is possible, it just takes up more space. Look at how fast your mosfets can switch too. Most of them will be fast enough, but do look at it.I can see, but in my location I couldn't find suitable source driver ICs. I think I should design my own driver by myself using P-channel MOSFET.
I don't know if 3D printing is that much more expensive than laser cutting, but your carrier looks nice. I hope that it will work.
- dragonator
- Site Admin
- Posts: 597
- Joined: Fri Aug 14, 2015 4:48 pm
- Location: The Nethelands
- Contact:
Re: Hacking the HP45
Finally I can move forward again. I now got my new PCB's. I still need a carrier and I need to solder the PCB's, but I can move forward again.
- dragonator
- Site Admin
- Posts: 597
- Joined: Fri Aug 14, 2015 4:48 pm
- Location: The Nethelands
- Contact:
Re: Hacking the HP45
All the PCB's have been soldered and are currently undergoing tests. The address side with level shifters has been tested and appears to work. The primitive side drivers, gate and nozzle tester still needs to be tested. After that I will solder in the pogo pins and put it in a carrier.
Also the pinout of the V1.01 controller, not because people need it right now, but because I want to have it available when I need it.
All pins are:
Also the pinout of the V1.01 controller, not because people need it right now, but because I want to have it available when I need it.
All pins are:
- GND: The ground of the driver;
- V var: variable printhead voltage. Usually between 9 and 12V;
- Logic: The logic level voltage, between 3.3V and 5V;
- Addr CLK: The address side clock signal. Advances to the next address;
- aux2: attached to an broken out pin on the PCB;
- Print enable: The printhead FET to enable the printhead, Also used to check the nozzles;
- 10x Res: connected to the printhead 10x resistor;
- Prim CLK: Primitive side clock. Latches the active primitive signals on the driver;
- Primitive 1-14: Connected to the driver of the primitives;
- Prim _CLR: Primitive side reset. Resets the primitive signals on the driver (active low);
- TSR: Connected to the printhead thermal sense resistor;
- Nozzle check: The signal the controller returns when a nozzle is ok;
- aux1: attached to an broken out pin on the PCB;
- Addr RST: The address side reset signal. Returns the address to 0;
- 12V: address side 12V input;
Re: Hacking the HP45
I unfortunately don't understand as much about the electronics side of this and why you are having trouble with various parts of the circuit. I'm currently looking at building another 3d printer with an inkjet head and would like to upgrade from 96 dpi to 600 dpi.
I can have boards made and solder SMT components though. If we get a working board configuration, I can definitely help out with software and driving it well. Is there any way I can help out in this project now, given my limited understanding of exactly how electronics work? Possibly by running other tests?
I can have boards made and solder SMT components though. If we get a working board configuration, I can definitely help out with software and driving it well. Is there any way I can help out in this project now, given my limited understanding of exactly how electronics work? Possibly by running other tests?
Re: Hacking the HP45
Looking great! I can't wait to see it actually work.
Re: Hacking the HP45
Hi Friends
Finally I succeed to design and create my first version of driver, and So far the circuit has nice performance.
It is a fully self-dependent Driver (not controller), by means of:
- It gets number of nozzles which are needed to be fired via Serial or SPI protocol (From a foreign controller like another micro-controller or Raspberry pi).
- and by sending a triggering pulse to driver (from same controller), it starts to fire considered nozzles.
- and after ending a firing cycle, an IO pin change its state from Low to High which tells the Controller the firing process is completed.
It is based on an AVR ATMEGA 64 micro-controller which operates in 16 MHz. It can communicate via SPI or Serial Protocols and at 3.3v~5v of voltage level. This make it easy to use beside other micro-controller like XMEGA of ARM or Raspberry Pi as a Controller.
Signal Pulses applied to Cartridge are Protected and limited to a predetermined width by an analog circuit, So during micro-controller programming
process, or when any other problem occurred for logic level of circuit, non of cartridge pins go High for more than 2 us. Also Using Zener Diodes, All Voltage levels and polarities are limited and protected.
All input pins of ICs and transistor have pull-down and pull-up resistors to stabilize the initial and default state of pins.
There are 5 Main Connectors on Board:
- Two pieces of 2*30 Connector (Wired to Cartridge)
- One 2*8 Connector (containing "GND" "14v~24v Supply Voltage" "Trigger pin" "End Cycle Pin" "SPI or Serial Pins" "Some Other Free Pins for future Development")
- one 1*6 Connector for Programming of micro-controller (connected to "GND" "RST" "SCK" "PDI" "PDO" of micro)
- one 1*5 connector as second serial port of micro-controller (maybe used in future development)
The only problem is Voltage Regulators; Two Pieces of them (+5v and +12v) get Hot after a while. and my suggested solutions are using switching Regulators (not best solution) or using separate power Supply (better). Switching Regulators create large noise and can cause problem for operation of circuit and micro controller. It is just needed to wire out three voltage traces and connect them to a separate power supply.
Below You can See Some Photos of My Driver + Cartridge Holder and a video clip of its performance (sorry for low quality of photos, I will send some more photos with more details).
https://youtu.be/9CqEEKkPQ5A
In the video it is firing not all of nozzles, to show you a clearance between ink lines.
Finally I succeed to design and create my first version of driver, and So far the circuit has nice performance.
It is a fully self-dependent Driver (not controller), by means of:
- It gets number of nozzles which are needed to be fired via Serial or SPI protocol (From a foreign controller like another micro-controller or Raspberry pi).
- and by sending a triggering pulse to driver (from same controller), it starts to fire considered nozzles.
- and after ending a firing cycle, an IO pin change its state from Low to High which tells the Controller the firing process is completed.
It is based on an AVR ATMEGA 64 micro-controller which operates in 16 MHz. It can communicate via SPI or Serial Protocols and at 3.3v~5v of voltage level. This make it easy to use beside other micro-controller like XMEGA of ARM or Raspberry Pi as a Controller.
Signal Pulses applied to Cartridge are Protected and limited to a predetermined width by an analog circuit, So during micro-controller programming
process, or when any other problem occurred for logic level of circuit, non of cartridge pins go High for more than 2 us. Also Using Zener Diodes, All Voltage levels and polarities are limited and protected.
All input pins of ICs and transistor have pull-down and pull-up resistors to stabilize the initial and default state of pins.
There are 5 Main Connectors on Board:
- Two pieces of 2*30 Connector (Wired to Cartridge)
- One 2*8 Connector (containing "GND" "14v~24v Supply Voltage" "Trigger pin" "End Cycle Pin" "SPI or Serial Pins" "Some Other Free Pins for future Development")
- one 1*6 Connector for Programming of micro-controller (connected to "GND" "RST" "SCK" "PDI" "PDO" of micro)
- one 1*5 connector as second serial port of micro-controller (maybe used in future development)
The only problem is Voltage Regulators; Two Pieces of them (+5v and +12v) get Hot after a while. and my suggested solutions are using switching Regulators (not best solution) or using separate power Supply (better). Switching Regulators create large noise and can cause problem for operation of circuit and micro controller. It is just needed to wire out three voltage traces and connect them to a separate power supply.
Below You can See Some Photos of My Driver + Cartridge Holder and a video clip of its performance (sorry for low quality of photos, I will send some more photos with more details).
https://youtu.be/9CqEEKkPQ5A
In the video it is firing not all of nozzles, to show you a clearance between ink lines.