Hacking the HP45

Powder and inkjet printing
Miltea
Posts: 3
Joined: Mon Jul 25, 2022 10:52 am

Re: Hacking the HP45

Post by Miltea »

Hello, my friend。May I request about HP45 control board’s PCB Gerber file?thank you!
User avatar
dragonator
Site Admin
Posts: 595
Joined: Fri Aug 14, 2015 4:48 pm
Location: The Nethelands
Contact:

Re: Hacking the HP45

Post by dragonator »

Hello,

At this point I do not share beyond the schematics and source code. This will probably change in the future, but this will be where it sits right now.
Miltea
Posts: 3
Joined: Mon Jul 25, 2022 10:52 am

Re: Hacking the HP45

Post by Miltea »

OK,thank you so much,I'll still follow your product.
exalted coding
Posts: 5
Joined: Wed Jun 09, 2021 1:07 pm

Re: Hacking the HP45

Post by exalted coding »

I had spent many days figuring out encoder pulses with the spitting of an inkjet printer. but I cannot succeed. anyone can tell me the formula or a method of controlling printer spitting with encoder. i am using 2500p/r encoder.
I have made a firing function. how to fire with respect to encoder pulses.
amirslz74
Posts: 3
Joined: Tue Aug 23, 2022 2:00 pm

Re: Hacking the HP45

Post by amirslz74 »

dragonator wrote: Wed Jan 19, 2022 6:47 pm ESP32 is actually a bit short on pins. It should have enough pins to control an HP45, but there will not be many pins left for other things the way I drive them. The ram and other peripherals are very nice though, so it might be a cool idea. I have no experience with driving HP45 with an ESP.

I do know SpriteTM drives other printheads with an ESP.
Hello, I want to start doing this work by ESP32, which schematic do you recommend to install the ESP32(Like Tensser or Arduino2560?)
User avatar
dragonator
Site Admin
Posts: 595
Joined: Fri Aug 14, 2015 4:48 pm
Location: The Nethelands
Contact:

Re: Hacking the HP45

Post by dragonator »

exalted coding wrote: Tue Aug 23, 2022 10:00 am I had spent many days figuring out encoder pulses with the spitting of an inkjet printer. but I cannot succeed. anyone can tell me the formula or a method of controlling printer spitting with encoder. i am using 2500p/r encoder.
I have made a firing function. how to fire with respect to encoder pulses.
Can you tell me what exactly it is you are struggling with? I will try to explain what I do, but I cannot guarantee that it makes sense or will work for you.

The HP45 controller has an encoder input. This receives the pulses of the encoder itself. The Encoder library I use converts this to a pulse position. 2500 would be 2500 pulses measured since the start. -2500 would be negative 2500 pulses measured since the start. This can easily be converted into position by dividing the number of pulses by the pulses per millimeter or pulses per inch. 2500 pulses at 20 pulses per millimeter would be 125mm.

Getting velocity means that you will have to get yourself a change in position over a certain time. Every time I update the position, I will also note when the last position change happened. When the next position update happens, I can see how much the position changed (for instance from 10mm to 15mm) and that the last position update was 1s ago. This gives me 5mm per second, since I moved 5mm in the last second. In reality we want to do quite a few updates per second (1000 updates per second is not even that fast) but this is the basics of it. In arduino you can use the micros() function to log time independent of clock cycles.

To determine when to print, imaging an image with a line of pixels at 5mm, 10mm and 15mm. My printhead is currently at 0mm. I see that to print a line, I need to be at 5mm position. Going from 0-5mm requires a positive movement, so I will only print this line while I am moving in the positive direction. I now start moving. At 1, 2, 3 and 4mm I am still not at the 5mm position, so I do not print. When I reach 5mm (or 5,01 or something like that). I see that I am past 5mm, and that I am still moving in the positive direction. I will now print the line destined for 5mm, and go to the next line. This is at 10mm, so I still need a positive movement. Only when I move to or past 10mm (10.1mm for instance) do I need to trigger the line. This repeats for 15 as well. I need to look ahead where the next line is, move in that direction and when I go past it while moving in the correct direction I can print it. This function also works for negative directions.

The only difference with what I said above and what I do is that I actually do not care exactly where each droplet of ink lands. I use the velocity to determine how often per second each nozzle needs to fire, and use the position only to change the current pattern being printed. This allows me to print a variable amount of droplets per inch, regardless of what the image itself looks like.

Hope this helps.
exalted coding
Posts: 5
Joined: Wed Jun 09, 2021 1:07 pm

Re: Hacking the HP45

Post by exalted coding »

dragonator wrote: Tue Aug 23, 2022 4:43 pm
exalted coding wrote: Tue Aug 23, 2022 10:00 am I had spent many days figuring out encoder pulses with the spitting of an inkjet printer. but I cannot succeed. anyone can tell me the formula or a method of controlling printer spitting with encoder. i am using 2500p/r encoder.
I have made a firing function. how to fire with respect to encoder pulses.
Can you tell me what exactly it is you are struggling with? I will try to explain what I do, but I cannot guarantee that it makes sense or will work for you.

The HP45 controller has an encoder input. This receives the pulses of the encoder itself. The Encoder library I use converts this to a pulse position. 2500 would be 2500 pulses measured since the start. -2500 would be negative 2500 pulses measured since the start. This can easily be converted into position by dividing the number of pulses by the pulses per millimeter or pulses per inch. 2500 pulses at 20 pulses per millimeter would be 125mm.

Getting velocity means that you will have to get yourself a change in position over a certain time. Every time I update the position, I will also note when the last position change happened. When the next position update happens, I can see how much the position changed (for instance from 10mm to 15mm) and that the last position update was 1s ago. This gives me 5mm per second, since I moved 5mm in the last second. In reality we want to do quite a few updates per second (1000 updates per second is not even that fast) but this is the basics of it. In arduino you can use the micros() function to log time independent of clock cycles.

To determine when to print, imaging an image with a line of pixels at 5mm, 10mm and 15mm. My printhead is currently at 0mm. I see that to print a line, I need to be at 5mm position. Going from 0-5mm requires a positive movement, so I will only print this line while I am moving in the positive direction. I now start moving. At 1, 2, 3 and 4mm I am still not at the 5mm position, so I do not print. When I reach 5mm (or 5,01 or something like that). I see that I am past 5mm, and that I am still moving in the positive direction. I will now print the line destined for 5mm, and go to the next line. This is at 10mm, so I still need a positive movement. Only when I move to or past 10mm (10.1mm for instance) do I need to trigger the line. This repeats for 15 as well. I need to look ahead where the next line is, move in that direction and when I go past it while moving in the correct direction I can print it. This function also works for negative directions.

The only difference with what I said above and what I do is that I actually do not care exactly where each droplet of ink lands. I use the velocity to determine how often per second each nozzle needs to fire, and use the position only to change the current pattern being printed. This allows me to print a variable amount of droplets per inch, regardless of what the image itself looks like.

Hope this helps.
so I figure out the encoder speed in meter per mint or meter per second. so what I want to do is how to control the ink spitting with the change of velocity. let's suppose if the speed of the encoder changes from 23m/min to 10m/min the width of the message should remain the same. so who I should relate the change in speed with the spitting of ink. Should I change the speed into frequency and then change the spitting frequency of ink in relation to the change in encoder frequency? or any other idea?
User avatar
dragonator
Site Admin
Posts: 595
Joined: Fri Aug 14, 2015 4:48 pm
Location: The Nethelands
Contact:

Re: Hacking the HP45

Post by dragonator »

What I do is determine when to change the pattern I am printing based on position, but the distance between each drop based on frequency.

If I am moving at 25mm/s, I will be spitting out 600 drops of ink per second per nozzle, but if I am moving at 50mm/s I will spit out 1200 drops per nozzle per second. I make this calculation of drops per second purely based on the current velocity of the printhead.
Cqaurich
Posts: 2
Joined: Fri Oct 21, 2022 11:32 pm

Re: Hacking the HP45 C8855m

Post by Cqaurich »

Hi Guys, I have a project for printing using HP TIJ technology. I am planning in using the HP C8855m pen driver board. I know that board can receive serial commands from a controller and translate those commands into the proper firing parameters. I have found a list of serial commands to the job but i have looking for the C8855m board schematics without luck. I need to be able to identify each of the 14 pins for the FPC ribbon cable connector and what they do, for example which one is the RX, TX, 12V and GND pins to test serial commands like the command to Purge the cartridge. Also would be helpful to find which pin recieves the trigger to initiate printing and which one get the pulses from the encoder.

If any of you guys have the schematics for the board or the pinouts labels , would you be kind to share it with me. if sucessful i will post all information to this site afterwards. I will be using a raspberry pi 4 to run my app and as the printhead controller.

Thanks a lot!!!!!
Cqaurich
Posts: 2
Joined: Fri Oct 21, 2022 11:32 pm

Re: Hacking the HP45

Post by Cqaurich »

Hello Dragonator,

Could you share with me the manual for the c8855m board and schematics? Thank you!!!
Post Reply