Hacking cartridge HP 84/85

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

Re: Hacking cartridge HP 84/85

Post by dragonator » Wed Oct 17, 2018 4:35 pm

The printer giving errors does not surprise much. It would have been helpful if it just kept printing, but it should have error checking.

If there are analog signals, they should be coming from the printhead. There are a few things that should come as analog signals, such as temperature values.

I will believe you if you say you measured 3.3V. I based my assumptions on the scope videos of yours, which look like 2.5V.

Your pogo carrier looks really nice. One thing I would consider is the metal needle where your clamp is. This is where the ink enters the printhead. I do not know how much ink (if any) you have before the printhead itself is empty. Maybe the printhead is completely empty, in which case you need to prime it with ink first.

If you have specific C++ questions you can always ask. I assume you are using something Arduino based?

MAsic12345
Posts: 75
Joined: Sat Aug 25, 2018 5:26 pm

Re: Hacking cartridge HP 84/85

Post by MAsic12345 » Thu Oct 18, 2018 2:17 pm

the printer shows a printhead problem in which I closed the contact

I checked all the contacts with an oscilloscope and did not find an analog signal

With a needle for supplying ink, everything is okay, as a last resort, i can make a hole in the carriage in white.
There is ink there because I take off the head immediately from the printer the printer itself injects ink

At first I decided to use Arduino, but I doubt that it will be possible to work with three megahertz
but Wonko wrote Teensy and I became more interested in Teensy. will need to order teensy

C ++ I study to write the program on Windows and the 3D printer worked together with Windows
I plan to write a program that will cut the 3D part into layers and send the layers to the Color 3D printer

Wonko
Posts: 88
Joined: Sat Aug 15, 2015 8:13 pm

Re: Hacking cartridge HP 84/85

Post by Wonko » Thu Oct 18, 2018 6:28 pm

Hi MAsic12345,

1: Note that the Teensy 3.5 and 3.6 uses 3.3V instead of most Arduinos with 5V. Teensy 3.5 is 5V tolerant, which is probably not so important here. There is also the Arduino Due with a Cortex CPU and 3.3V, but it runs at 80MHz .

2: Don't learn C++. Just learn C. C is far simpler and much quicker to learn. Avoid any comminication between the Arduino and the Host Computer in the beginning. Just send a fixed sequence from the Arduino to the printhead and verify it in the scope before ruining the printhead. The Arduino app is very easy and helpful. It has several test programs that you can try out and read.

For example, this makes an LED blink. Everything following a // is just a commentary for you and not part of the program.

Code: Select all

void setup() {
  // initialize digital pin LED_BUILTIN as an output.
  pinMode(LED_BUILTIN, OUTPUT);
}

// the loop function runs over and over again forever
void loop() {
  digitalWrite(LED_BUILTIN, HIGH);   // turn the LED on (HIGH is the voltage level)
  delay(1000);                       // wait for a second
  digitalWrite(LED_BUILTIN, LOW);    // turn the LED off by making the voltage LOW
  delay(1000);                       // wait for a second
}
3: I have a working slicer written myself that can convert arbitrary 3D models into commands that your Arduino would understand. If you get to the point where your printhead fires ink, and you mount it on a printer. I will gladly adapt my and your software to print slices.

MAsic12345
Posts: 75
Joined: Sat Aug 25, 2018 5:26 pm

Re: Hacking cartridge HP 84/85

Post by MAsic12345 » Fri Oct 19, 2018 2:04 pm

Wonko
Can i repeat this signal with arduino?
test.png
test.png (13.36 KiB) Viewed 2101 times
Well 5 volts I can pick up a resistor and lower it by 3.3 volts. With this problem, no, I think so. the most important thing is to repeat this signal in the picture

I already had time to study 50% с++
and programming in Arduino has also been mastered recently; practice is needed only

only I don’t know if the clock frequency should be kept the same as on the print head to 3 megahertz

Wonko
Posts: 88
Joined: Sat Aug 15, 2015 8:13 pm

Re: Hacking cartridge HP 84/85

Post by Wonko » Sat Oct 20, 2018 10:01 am

Yes, you ca get this signal out of one of the fast Arduinos. To access pins really fast, you can write to registers directly: https://www.arduino.cc/en/Reference/PortManipulation . This manipulates 8 bits with a single instruction.

Wait cycles can be an issue at those high frequencies. There is a call for that: https://www.arduino.cc/reference/en/lan ... roseconds/ and for reading the current time as well: https://www.arduino.cc/reference/en/lan ... me/micros/

BTW: one nice way of debugging what your Arduino does is using the serial terminal. Even though serial port communication is extremely slow compared to the frequencies that you deal with, the serial port is great for launching command on the Arduino, and for reading result codes. The Arduino IDE has a serial terminal built in.

In the mean time, my printer arrived: HP something 90. It keeps switching itself off after a minute or two. I am afraid I have to return it :-(

MAsic12345
Posts: 75
Joined: Sat Aug 25, 2018 5:26 pm

Re: Hacking cartridge HP 84/85

Post by MAsic12345 » Tue Oct 23, 2018 7:55 am

In the mean time, my printer arrived: HP something 90. It keeps switching itself off after a minute or two. I am afraid I have to return it :-(
perhaps the power supply fails but did not come across this

Wonko
Posts: 88
Joined: Sat Aug 15, 2015 8:13 pm

Re: Hacking cartridge HP 84/85

Post by Wonko » Tue Oct 23, 2018 12:24 pm

MAsic12345 wrote:
Tue Oct 23, 2018 7:55 am
In the mean time, my printer arrived: HP something 90. It keeps switching itself off after a minute or two. I am afraid I have to return it :-(
perhaps the power supply fails but did not come across this
The seller of the DesignJet promised to take a look at it. He's selling various printers, so I am hopeful he will fix it or have a replacement.

MAsic12345
Posts: 75
Joined: Sat Aug 25, 2018 5:26 pm

Re: Hacking cartridge HP 84/85

Post by MAsic12345 » Wed Oct 24, 2018 8:01 am

Hi Wonko
I tried to create this signal and I only managed to create 82.47 kHz with code it is not enough
46.png
46.png (23.12 KiB) Viewed 2027 times

Code: Select all

int outPin = 8;                 // digital pin 8

void setup()
{
  pinMode(outPin, OUTPUT);      // sets the digital pin as output
}

void loop()
{
  digitalWrite(outPin, HIGH);   // sets the pin on
  delayMicroseconds(1);        // pauses for 1 microseconds
  digitalWrite(outPin, LOW);    // sets the pin off
  delayMicroseconds(1);        // pauses for 1 microseconds
}
maybe there is another solution?

I doubt that I will create 3 megahertz with

Code: Select all

unsigned long time;
because very low accuracy
Or is it better to think about a microcontroller that works faster?

MAsic12345
Posts: 75
Joined: Sat Aug 25, 2018 5:26 pm

Re: Hacking cartridge HP 84/85

Post by MAsic12345 » Wed Oct 24, 2018 8:16 am

Can I use this method to divide the voltage for the signal outputs?
Attachments
сопротевление.png
сопротевление.png (6.44 KiB) Viewed 2027 times

Wonko
Posts: 88
Joined: Sat Aug 15, 2015 8:13 pm

Re: Hacking cartridge HP 84/85

Post by Wonko » Wed Oct 24, 2018 9:07 am

Instead of

Code: Select all

digitalWrite(8, HIGH);
try

Code: Select all

PORTB|=1;
and

Code: Select all

PORTB&=~1;
. It directly manipulates the port instead of going through a lengthy subroutine to flip a bit. The

Code: Select all

delayMicroseconds()
has the same issues for very short times. You can look at this link https://stackoverflow.com/questions/440 ... xplanation for shorter delays, but that code may not run on your CPU.

PS: The operator

Code: Select all

|=
sets a certain pattern of bits in a byte,

Code: Select all

&=~
clears the same bit pattern.

As for the voltage divider, yes, they work in theory, but thay put a big load on your outputs (your example pulls the CPU's output through 300Ohm to GND, I=U/R, 5V/300Ohm = 16mA. You are putting a load of 16mA plus whatever the printhead consumes on every CPU pin that has a voltage divider. With 12 Voltage dividers, you have either a quite warm CPU, or an ice cold CPU that will no longer run any instructions.

You can either try 2kOhm and 1kOhm, which reduces the load to 1.6mA, but that may not be enough to control the printhead. The better solution is a bidirectional logic level converter like this one: https://www.banggood.com/8-Channel-Logi ... 23173.html or many others from other suppliers like SparkFun, etc. .

Post Reply