Hacking the HP45

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

Re: Hacking the HP45

Post by dragonator »

Success.

I spent the last 2 days working on the HP45. Until now I spent the test connecting single pins on the HP45. I spent several hours to completely break out the HP 45 on my biggest breadboard. All grounds are connected, and all primitives and and addresses are connected (in order) to all drivers. I added an arduino Nano to control the head for now. When I need more pins I will use a bigger micro-controller
IMG_20160509_230843.jpg
IMG_20160509_230843.jpg (347.32 KiB) Viewed 23766 times
First I had only the direct wire connection with address 1 and primitive 1, but no other wires. I got the bottom right paper. There were random single droplets of ink, but from several different nozzles. The power consumption during a trigger was quite large.

I reckoned that multiple addresses were open at a time. I added a 10k pulldown to every address pin to pull it down. That did not do enough and I also pulled all the unused address inkjet driver inputs to the ground. I go the bottom left paper. I got nozzles to spray a constant amount, but there were multiple nozzles firing. The power consumption dropped considerably.

I then did the only thing left to do. I also connected the primitive side driver inputs to the ground. Success! There was now a single nozzle firing. After a little start up it produces a constant stream. The results can be seen on the top paper. I did still get some dropouts in some lines, but with 150 wires, resistors and connectors everywhere, I am already surprised that it worked the first time around. Another interesting thing is that the slightest breeze causes the ink to spray all over the place. I know this because I had a fan running on the other side of the room. I now have decent ink from single nozzles. I will continue to do some work on the breadboard, but in the near future I might add a breakout for testing with drivers. This project is moving forward again.
IMG_20160509_230835.jpg
IMG_20160509_230835.jpg (361.87 KiB) Viewed 23766 times
User avatar
dragonator
Site Admin
Posts: 597
Joined: Fri Aug 14, 2015 4:48 pm
Location: The Nethelands
Contact:

Re: Hacking the HP45

Post by dragonator »

Even more success.

After the success of yesterday, I dug up an Arduino Mega to get the pin count. Connected all addresses and primitives to the Mega, wrote a piece of firmware that triggers all nozzles in the cascade, and tried it. It worked the first time.

All nozzles (or at least all nozzles that are still functioning) are now firing. The swatch of ink is enormous. Keeping it on one place of the paper saturates it in less than a second. The current draw is significant (1,5A on a 0.5s burst on an analog meter) but not unexpected. I can still optimize the code to get better speed, but I now have control.

Now it is time to look forward. The things I want to do while I am working on a breadboard:
- Get specific nozzles to trigger. Goal is a diagonal line here. Even side, from top to bottom, then the odd side.
- Test the nozzle testing. Add a capacitor, resistor and Fet to the ground of the printhead, then triggering a single nozzle. Nozzle condition will be determined by the time it takes to charge the capacitor.
- Testing temperature measurement.
- Testing minimum voltage. At what point does it brown out, and is it dependent on printhead temperature.
- trying to run the addresses on 4017 chips to massively reduce pin count from 24 to 4. (I like 4017 better than demultiplexers)
If people want to see other tests, suggest them here.

After that I might do a breakout on a prototype board, design a breakout to add to the current breakout or design a full breakout with integrated microcontroller (Teensy 3.2?). At this point I am open to all suggestions. I can design a functional set of electronics myself, but input and help from others is greatly appreciated. Electronics is NOT my specialty.
IMG_20160510_223536.jpg
IMG_20160510_223536.jpg (360.92 KiB) Viewed 23768 times
IMG_20160510_223539.jpg
IMG_20160510_223539.jpg (219.16 KiB) Viewed 23768 times
Wonko
Posts: 110
Joined: Sat Aug 15, 2015 8:13 pm

Re: Hacking the HP45

Post by Wonko »

That looks absolutely fantastic!
User avatar
dragonator
Site Admin
Posts: 597
Joined: Fri Aug 14, 2015 4:48 pm
Location: The Nethelands
Contact:

Re: Hacking the HP45

Post by dragonator »

Time for a video.



I rewrote the firmware so it is no longer triggering ALL nozzles, but it triggers nozzles from 1-300 in quick succession. I thought for a while that some nozzles were broken, but running the ALL nozzles code for a while properly started all nozzles.

Almost all nozzles seem to be firing, and the order seems about right. Next step is to test the condition of the nozzles with the firmware.

(PS, you can now also embed youtube videos with [youtube]{videoID}[/youtube]. Use only the ID, not the URL.)
ezrec
Posts: 112
Joined: Sat Aug 15, 2015 1:31 pm

Re: Hacking the HP45

Post by ezrec »

Very impressed!

Hopefully I can get my TM-C600 project moving along soon, too!
Philipp
Posts: 34
Joined: Sat Mar 12, 2016 10:55 am

Re: Hacking the HP45

Post by Philipp »

That looks great, congratulations.
Now we need the temperature control, then should the printhead work reliably.
I am very excited about the schematics.
Philipp
User avatar
dragonator
Site Admin
Posts: 597
Joined: Fri Aug 14, 2015 4:48 pm
Location: The Nethelands
Contact:

Re: Hacking the HP45

Post by dragonator »

This will be the first of several posts this weekend. I will post things when I have them, to keep sort of an experiment log. I have not got anything other than the HP45 on the list for this weekend, so I will be able to do quite much. If anyone want something specific tested, now is the time to ask.

First thing I wanted to quickly test how many triggers would give me one droplet of ink. I was told 3, but I have thus far seen that 1 pulse gives me one droplet of ink. I modified the cascade test code so it makes several sweeps back and forth, pulsing each nozzle only once. I then reduced the timing so it went fairly slow. I slowly moved a piece of paper underneath the nozzle while it was sweeping back and forth. I got this result:
IMG_20160514_110852.jpg
IMG_20160514_110852.jpg (251.04 KiB) Viewed 23731 times
I see every droplet of ink. Each nozzle (especially in the middle) only fires once in every pass, so if it would take more than 1 pulse to trigger a nozzle, I would have seen dropouts. Great News! this massively simplifies things.

I also did a quick brownout test on the variable power supply. No noticeable change until 10-11V, but under 10V I got misfires. This brownout is for the whole driver circuit, not only for the primitives, so maybe the gates on the address side are not properly opening. I do not have any more proper power supplies, so that will be it for now. Also this is for a cold printhead. I have not yet implemented a temperature sense.

Next step. Write a line buffer so I can start drawing shapes. I want to prove (to myself) that I have just about full control over the inkjet head. Next post will be this afternoon.

(and @phillipp, schematics and firmware will come somewhere this weekend)
User avatar
dragonator
Site Admin
Posts: 597
Joined: Fri Aug 14, 2015 4:48 pm
Location: The Nethelands
Contact:

Re: Hacking the HP45

Post by dragonator »

There is now a line buffer in the Firmware. This means that I can store more complicated shapes in the tiny memory of the Arduino Mega. I then went on to write a shape generator because I am not going to fill a 176-bit wide 150 bit long buffer by hand. I started of with a square generator. This is a function that can make squares with different line thicknesses and sizes. It works quite well:
IMG_20160514_142451.jpg
IMG_20160514_142451.jpg (217.62 KiB) Viewed 23712 times
I wanted to do circles next, but quickly thought against it. I do not want to mess with floating points and sines just yet. Instead I wrote a simple character set for the inkjet. It is actually lcd characters with 5x7 squares to make the characters, but I can scale them to any multiple of 5x7. A function can insert characters into the line buffer with a certain size. It works quite well:
IMG_20160514_161105.jpg
IMG_20160514_161105.jpg (220.77 KiB) Viewed 23712 times
IMG_20160514_161109.jpg
IMG_20160514_161109.jpg (243.04 KiB) Viewed 23712 times



I am now convinced that I can get enough control over this printhead to do fun things with it. Left for today is making a schematic of the current setup and uploading the current firmware. Tomorrow I will try add hardware and firmware to test the condition of the nozzles. In the near future I will open a tread for an HP45 controller (and maybe one for the next generation 3DP).
User avatar
dragonator
Site Admin
Posts: 597
Joined: Fri Aug 14, 2015 4:48 pm
Location: The Nethelands
Contact:

Re: Hacking the HP45

Post by dragonator »

And now for the last task of today. Schematics and firmware. I doubt that it will help anyone before I make it obsolete again, but I have the stuff anyway. The current schematic looks as follows. It is basically 5 TLC59213 drivers and an Arduino Mega 2560. The pins that connect to the drivers have been chosen because they are connected to full ports. This way I can manipulate a full driver at once. The primitives 1-8 are on Port L, the primitives 9-14 are on port K. The addresses 1-8 are on port C, 9-16 on port A and 17-22 on port F. The clocks and clears are on port H, though this is not a requirement. The button is to activate a printing program, so it doesn't run uncontrollably all the time. That is really all there is to it right now.

As for the firmware, I am not yet going to explain that. It is a horrendous mess of spaghetti code and it only barely works. It will change a dozen more times before I get to making printers with it.
HP45 Mega connection diagram.jpg
HP45 Mega connection diagram.jpg (332.99 KiB) Viewed 23705 times
Attachments
HP45_hacking_tests 160514.zip
(7.65 KiB) Downloaded 1577 times
User avatar
dragonator
Site Admin
Posts: 597
Joined: Fri Aug 14, 2015 4:48 pm
Location: The Nethelands
Contact:

Re: Hacking the HP45

Post by dragonator »

Testing nozzles was as difficult as I imagined, but after a few hours of messing around I got it to work. The basics of it works like this:

I have an N-channel Mosfet (30N06L) that connects the ground of the printhead to the ground. This way I can divert the flow to a single 10uF capacitor. Attached to the capacitor is an LM311 comparator that compares the capacitor voltage to a reference. The reference is currently 2.5V, made with a voltage divider on the 5V. I then start making incredibly short (<1 us) pulses with 50us delays in between. After every pulse I check the output of the comparator. once it turns on, I note the number of pulses it took to charge the capacitor.

With the current setup, good(?) nozzles sit somewhere between 55 and 70 pulses. Bad nozzles show up as 0, but this means that 100 pulses could not charge them. More experimentation will still happen to see if there exists more variation.

At this moment I miss 22-ish nozzles. I did look up most nozzles that come up as 0. Fun fact, they are almost all within the lower ranges of the primitives and/or addresses. Exactly where I have been doing my single wire testing. That makes sense, so I will assume I did right.

I will probably lower the capacitance for the future. As far as I can see, the resistance does not lower when a nozzle breaks and resolution is not that important to me as speed. Now it still takes around a second to test all nozzles.

The only test left for this weekend now is the temperature of the printhead. That is a simple thermal resistor, so that 'should' be a simple voltage divider. Once I have that, I will start with a controller. I am probably going to skip a stand alone controller and go immediately to a full integrated 3DP printer controller. I will open up a thread on that later. There are some interesting things I need to do to get the speed and pin count so that it is doable with an Arduino DUE.
HP45 Mega connection diagram 2.jpg
HP45 Mega connection diagram 2.jpg (388.03 KiB) Viewed 23719 times
The oscilloscope showing the capacitor charging and discharging as the nozzles are being tested one by one.
The oscilloscope showing the capacitor charging and discharging as the nozzles are being tested one by one.
IMG_20160515_142848.jpg (206.22 KiB) Viewed 23719 times
Nozzle testing screen cap.JPG
Nozzle testing screen cap.JPG (271.21 KiB) Viewed 23719 times
Post Reply