Hacking the HP45

Powder and inkjet printing
User avatar
dragonator
Site Admin
Posts: 616
Joined: Fri Aug 14, 2015 4:48 pm
Location: The Nethelands
Contact:

Re: Hacking the HP45

Post by dragonator »

I would try and keep your schematic either completely compatible with the V3 design, or the V4 design. It might be possible to mix the V3 address design, and the V4 primitive design, but I cannot judge completely if that will work.

As for the values you are showing. The variables you are showing is for the NewNozzleTable. This bit of code is not used under normal circumstances, and only used when a new PCB was designed to generate the new table. The actual nozzle tables are in Printhead.cpp for V3, and DMAPrint.cpp for V4

Changing the values in NewNozzleTable will do nothing at all.

Analog pins are analog inputs. The controller only uses 2 of those, 10x and TSR. Most pins are used as digital pins, mostly output, so the fewer analog pins are not a problem.

Code: Select all

//nozzle tables
    const uint8_t nozzleTableAddress[300] = {
      21, 16, 5, 19, 16, 10, 19, 8, 10, 14, 8, 6, 14, 4, 6, 18, 4, 7, 18, 12, 7, 17, 12, 2, 17, 1, 2, 13, 1, 11,
      13, 15, 11, 20, 15, 3, 20, 0, 3, 9, 5, 21, 9, 1, 21, 16, 5, 19, 16, 10, 19, 8, 10, 14, 8, 6, 14, 4, 6, 18,
      4, 7, 18, 12, 7, 17, 12, 2, 17, 1, 2, 13, 1, 11, 13, 15, 11, 20, 15, 3, 20, 0, 3, 9, 0, 21, 9, 5, 21, 16,
      5, 19, 16, 10, 19, 8, 10, 14, 8, 6, 14, 4, 6, 18, 4, 7, 18, 12, 7, 17, 12, 2, 17, 1, 2, 13, 1, 11, 13, 15,
      11, 20, 15, 3, 20, 0, 3, 9, 0, 21, 9, 5, 21, 16, 5, 19, 16, 10, 19, 8, 10, 14, 8, 6, 14, 4, 6, 18, 4, 7,
      18, 12, 7, 17, 12, 2, 17, 1, 2, 13, 1, 11, 13, 15, 11, 20, 15, 3, 20, 0, 3, 9, 0, 21, 9, 5, 21, 16, 5, 19,
      16, 10, 19, 8, 10, 14, 8, 6, 14, 4, 6, 18, 4, 7, 18, 12, 7, 17, 12, 2, 17, 1, 2, 13, 1, 11, 13, 15, 11, 20,
      15, 3, 20, 0, 3, 9, 0, 21, 9, 5,  21, 16, 5, 19, 16, 10, 19, 8, 10, 14, 8, 6, 14, 4, 6, 18, 4, 7, 18, 12,
      7, 17, 12, 2, 17, 1, 2, 13, 1, 11, 13, 15, 11, 20, 15, 3, 20, 0, 3, 9, 0, 21, 9, 5, 21, 16, 5, 19, 16, 10,
      19, 8, 10, 14, 8, 6, 14, 4, 6, 18, 4, 7, 18, 12, 7, 17, 12, 2, 17, 1, 2, 13, 1, 11, 13, 15, 11, 20, 15, 3
    };

    const uint8_t nozzleTablePrimitive[300] = {
      0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1,
      0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3,
      2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 4, 5, 4, 5, 4, 5,
      4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5,
      4, 5, 4, 5, 4, 5, 4, 5, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7,
      6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 8, 9, 8, 9, 8, 9, 8, 9,
      8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9,
      8, 9, 8, 9, 8, 9, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11,
      10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 12, 13, 12, 13, 12, 13, 12, 13, 12, 13,
      12, 13, 12, 13, 12, 13, 12, 13, 12, 13, 12, 13, 12, 13, 12, 13, 12, 13, 12, 13, 12, 13, 12, 13, 12, 13, 12, 13, 12, 13
    };
edithai
Posts: 11
Joined: Wed Nov 27, 2024 7:28 am

Re: Hacking the HP45

Post by edithai »

@perryj19 incase u are using that printhead u can modify the plan B printer or use https://github.com/TeslaMaker/Pwdr which was based on pwdr code which i updated and will put the schematics, etc there as i tidy them up.
edithai
Posts: 11
Joined: Wed Nov 27, 2024 7:28 am

Re: Hacking the HP45

Post by edithai »

dragonator wrote: Sun Mar 16, 2025 11:18 am I would try and keep your schematic either completely compatible with the V3 design, or the V4 design. It might be possible to mix the V3 address design, and the V4 primitive design, but I cannot judge completely if that will work.

As for the values you are showing. The variables you are showing is for the NewNozzleTable. This bit of code is not used under normal circumstances, and only used when a new PCB was designed to generate the new table. The actual nozzle tables are in Printhead.cpp for V3, and DMAPrint.cpp for V4

Changing the values in NewNozzleTable will do nothing at all.

Analog pins are analog inputs. The controller only uses 2 of those, 10x and TSR. Most pins are used as digital pins, mostly output, so the fewer analog pins are not a problem.

Code: Select all

//nozzle tables
    const uint8_t nozzleTableAddress[300] = {
      21, 16, 5, 19, 16, 10, 19, 8, 10, 14, 8, 6, 14, 4, 6, 18, 4, 7, 18, 12, 7, 17, 12, 2, 17, 1, 2, 13, 1, 11,
      13, 15, 11, 20, 15, 3, 20, 0, 3, 9, 5, 21, 9, 1, 21, 16, 5, 19, 16, 10, 19, 8, 10, 14, 8, 6, 14, 4, 6, 18,
      4, 7, 18, 12, 7, 17, 12, 2, 17, 1, 2, 13, 1, 11, 13, 15, 11, 20, 15, 3, 20, 0, 3, 9, 0, 21, 9, 5, 21, 16,
      5, 19, 16, 10, 19, 8, 10, 14, 8, 6, 14, 4, 6, 18, 4, 7, 18, 12, 7, 17, 12, 2, 17, 1, 2, 13, 1, 11, 13, 15,
      11, 20, 15, 3, 20, 0, 3, 9, 0, 21, 9, 5, 21, 16, 5, 19, 16, 10, 19, 8, 10, 14, 8, 6, 14, 4, 6, 18, 4, 7,
      18, 12, 7, 17, 12, 2, 17, 1, 2, 13, 1, 11, 13, 15, 11, 20, 15, 3, 20, 0, 3, 9, 0, 21, 9, 5, 21, 16, 5, 19,
      16, 10, 19, 8, 10, 14, 8, 6, 14, 4, 6, 18, 4, 7, 18, 12, 7, 17, 12, 2, 17, 1, 2, 13, 1, 11, 13, 15, 11, 20,
      15, 3, 20, 0, 3, 9, 0, 21, 9, 5,  21, 16, 5, 19, 16, 10, 19, 8, 10, 14, 8, 6, 14, 4, 6, 18, 4, 7, 18, 12,
      7, 17, 12, 2, 17, 1, 2, 13, 1, 11, 13, 15, 11, 20, 15, 3, 20, 0, 3, 9, 0, 21, 9, 5, 21, 16, 5, 19, 16, 10,
      19, 8, 10, 14, 8, 6, 14, 4, 6, 18, 4, 7, 18, 12, 7, 17, 12, 2, 17, 1, 2, 13, 1, 11, 13, 15, 11, 20, 15, 3
    };

    const uint8_t nozzleTablePrimitive[300] = {
      0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1,
      0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3,
      2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 4, 5, 4, 5, 4, 5,
      4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5,
      4, 5, 4, 5, 4, 5, 4, 5, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7,
      6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 8, 9, 8, 9, 8, 9, 8, 9,
      8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9, 8, 9,
      8, 9, 8, 9, 8, 9, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11,
      10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 12, 13, 12, 13, 12, 13, 12, 13, 12, 13,
      12, 13, 12, 13, 12, 13, 12, 13, 12, 13, 12, 13, 12, 13, 12, 13, 12, 13, 12, 13, 12, 13, 12, 13, 12, 13, 12, 13, 12, 13
    };
i knew i was wrong somewhere, i have almost finished the mechanical build, will soon begin on the electronics firmware part, thanks for your constant guidance kind sir
edithai
Posts: 11
Joined: Wed Nov 27, 2024 7:28 am

Re: Hacking the HP45

Post by edithai »

Im a bit confused when it comes to pcb layout, i put all the caps on one place, i heard that for the bypass caps they have a certain distance or impedance away from the pin is important. Says quilter https://app.quilter.ai i tried using this for doing the layout but it make it a bit confusing coz it asked me to place everything outside the outline, i did that and instead of auto placing the components it just routed them outside the board. so ill just share the one i routed until someone whos a pro says its rightly layed out . until then maybe ill just test it this way.
i have attached the gerber for the board which has the pins which i spoke about before, and one side of the oasis hp45 mount is open to allow little more free space when routing.

EDIT: i updated the pcb files, will update once i receive them and solder and test them on the printer , and incase any code changes need to be done besides the ones i've done ill update that too over here...
Attachments
0.3GPhp45.zip
new revised version i got fabricated at our MII LionCircuits.
(121.1 KiB) Downloaded 33 times
ale151755
Posts: 2
Joined: Wed Apr 16, 2025 2:33 pm

Re: Hacking the HP45

Post by ale151755 »

dragonator wrote: Fri Jul 28, 2023 7:18 pm The best I can do is a manual for the C8855 driver, which I can send by mail. It has no software, and I don't think a wiring diagram of the C8855 itself, but it does explain how to roughly use the C8855.
TM chip 1825-0057. I think the C8855 driver manual will be very helpful.
My email is ale15175@gmail.com
Thank you.
Last edited by ale151755 on Wed Apr 16, 2025 2:41 pm, edited 1 time in total.
ale151755
Posts: 2
Joined: Wed Apr 16, 2025 2:33 pm

Re: Hacking the HP45

Post by ale151755 »

ale151755 wrote: Wed Apr 16, 2025 2:39 pm
dragonator wrote: Fri Jul 28, 2023 7:18 pm The best I can do is a manual for the C8855 driver, which I can send by mail. It has no software, and I don't think a wiring diagram of the C8855 itself, but it does explain how to roughly use the C8855.
TM chip 1825-0057. I think the C8855 driver manual will be very helpful.
My email is ale15175@gmail.com
Thank you.
GRACIAS !!!
User avatar
dragonator
Site Admin
Posts: 616
Joined: Fri Aug 14, 2015 4:48 pm
Location: The Nethelands
Contact:

Re: Hacking the HP45

Post by dragonator »

I spent a day this weekend with @Dries Vandenbroucke trying to get the firmware to work on a V4 controller with a Teensy 4.1. We have gotten to a point where we got the firmware to eject ink, and got the timing correct. There are a few more things that are still untested, the nozzle array might still be wrong, but I now have a Teensy 4.1, so I can also do some small testing. The firmware that we ended up with is at the link below. I cannot guarantee that it will work perfectly, but it should make decent contact with the printhead and eject ink.

https://ytec3d.com/wp-content/uploads/2 ... 3-T4.1.zip

Challenges included
  • Getting the timing correct for preheat and ejection
  • Encoder pins on V3 being the address reset on V4, and the reset working correctly
  • Still a TLC59213 blowing up
  • Voltage errors while testing the printhead
We did not get around to fully testing a printhead, and did blow up one of the controllers, so it really is a 'use at your own risk' type of firmware. I do also have some pointers for making a V4 controller with the V3 firmware, especially what components to remove.
  • R13, R14 and R20 are for the primitive self test. These components are no longer used, and accidentally turning them on might actually damage the controller, since they might still get powered due to no longer being controlled directly.
  • R27 and R28 are address self test. These do nothing, and are also suspected to actually cause issues. They can safely be left off.
  • R15, R16, R18 and R19 are voltage check. They are marked yellow because they 'can' be left off, but it is not required. I do not suspect these of causing issues, but right now they also do not do anything.
HP45 V4.02 parts to leave off.png
HP45 V4.02 parts to leave off.png (162.9 KiB) Viewed 20456 times
I will be continuing to work on a way to get a Teensy 4.1 to work with HP45. The V4 controller may however not be the right way to do that. I cannot yet give more details, but I may attempt a V5 controller that is somewhere between the V3 and V4 controller, with a Teensy 4.1. This fix will probably have some compatibility with the V4 controllers, but that depends on what is required to be changed. but More details when they are ready.
User avatar
dragonator
Site Admin
Posts: 616
Joined: Fri Aug 14, 2015 4:48 pm
Location: The Nethelands
Contact:

Re: Hacking the HP45

Post by dragonator »

Currently in progress with no promise that I will be able to finish it. HP45 standalone controller V5.00

PXL_20250507_170636164S.jpg
PXL_20250507_170636164S.jpg (466.56 KiB) Viewed 1793 times
V5.00 PCB image.jpg
V5.00 PCB image.jpg (170.38 KiB) Viewed 1793 times
This controller will be my attempt at making a controller that works with the Teensy 4.1, with some specific design goals in mind.
  • It should work with a Teensy 4.1 as it's main controller
  • It works mostly on the basis and components of the V3 controller. V3 worked more reliably, and was easier to assemble. It has the old SO14 and SO16 packages for the 4081 and 4017, easier to make, and the reset pulse generator is now gone. Most of the self testing functions like the dummy nozzles and address test is also gone. Only the voltage measurement on the head is present still.
  • NO DMA REQUIREMENT: the V4 way of printing is now gone, and replaced by the V3 bitbanging. This worked well, but was slower. Max printing speeds of around 50mm/s, where DMA allowed for 120mm/s. Working is more important than fast. The new octo WS2811 library could at some point be modified to get this to work on DMA again, and while it is being thought about, it is no promise.
  • Theoretical nice to have is more ram, so a full sweep of any reasonable size should be able to fit in RAM, making sending data while printing unnecessary. This is handy with DMA gone.
  • It is data and function compatible with inkjet commander as it stands at the moment, so most of the V4 commands should work
  • Drop in compatible PCB with the V4. V4 form factor was nice, I kept this. The power input and leds are the same. Only one of the ports, I2C is now gone, but this was never implemented anyway.
  • Encoder port, the last 5V capable port, now has a level shifter to protect the Teensy 4.1, which is not 5V tolerant.
In the coming weeks I will see if I can port the firmware for the V5 controller. When I finish, I will share the files and whatever documentation I can make. I hope the V5 controller will get the reliability that the V3 controller had, with the ease of assembly of the V4, but at this point I have an untested assembled controller that I will get to work on in the coming weeks. More updates when they happen.
n1ghtray
Posts: 1
Joined: Wed May 07, 2025 9:22 pm

Re: Hacking the HP45

Post by n1ghtray »

I have made a solution that uses the RP2340B. Supports color and black cartridges. Soon, I will upload to github and share the link here =)
Post Reply