The Artist--Printze

What wonders can be achieved with a 30y/o Bubble-Jet?

Similar projects worth following
I've a bunch of ideas, some already mostly-implemented. I'll document them here.

In the meantime, consider this: this ink/bubble-jet printer was made in an era when dot-martix tractor-feed printers ruled as a bit of a highly-backwards-compatible upgrade to, essentially, teletypes. So, besides the 360x360dpi graphics used by most OSes to render-then-print a text document, this bubblejet [like many ink/bubble-jet printers of the era, and maybe quality ones of today], basically, can be used much like a teletype can... This one can even print one /character/ at a time... by merely outputting that character to the parallel port.
[E.G. in bash: $ echo -n "a" > /dev/usb/lp0]

No need to render fonts, no need to process a whole line prior to printing...

Imagine the uses! And the implications of this /back/wards-compatibility!

On "/back/wards" compatibility's implications...

[something I'm using for a super-duper demonstration, I'll discuss later]

Imagine this scenario: back in the dot-matrix era, printing graphics was a big task, even at 120x120dpi, an 8in x 10in page would've required rendering a 1.2 Mega Pixel image. Computers of the era didn't have memory for that!

Printers of the era had fonts stored in the printer's ROM, and used a technique similar to Sprites [in videogames]--and similar to MDA/CGA video-cards' text-mode--to render and print each, say, 12dot x 12dot text character.

So, imagine printing a document with an image, captioned, and text surrounding it.

Printers of the era would first print all that text [fast, low memory requirements], then go /back/ [note that word] and print the memory/bandwidth-intensive graphic.


Why my harping on /back/?

Because it means that the paper can be fed *both* ways, and, with that, printing can basically occur in any order on the page one might desire.

Now that boring "raster" line-by-line printing can get a whole lot more interesting to watch.

Again, a ton of thoughts [and a few implementations] on what to do with this...


Another issue [opportunity] arose when my 20+y/o ink cartridge lost control of its top 8 nozzles [and several others interspersed]. No, I don't think they're clogged; this printer handles its 64 nozzles, physically-arranged in a line, electrically as 8 rows and 8 columns. It seems "Column 1" has burnt out [as well as "Segment 5" and 8, as I recall. Though a missing pixel surrounded by 6 that work, at 360dpi, is hardly noticeable]. But, losing 8/360ths of an inch, well that's noticeable. In text-mode, with the default font, that's the top bar in a 'T', which is difficult to read. In graphics mode, though, especially, say, when printing a datasheet, it makes pinouts quite difficult to read.

I've, thus, modified the ghostscript driver to account for the missing pixels, and now I can print datasheets and even grayscale full-page photographs!

  • Where's my loggery?

    esot.eric08/19/2021 at 05:24 0 comments

    Printze was a months-long project... Where're all my logs?

    Off the tlp of my head:

    Goopy-vias from blown caps was an early thing, fixed...

    Blown transistors, replaced...

    Once functioning, a little alcohol revived 20+year-old ink heads.

    Injected ink from a newer cartridge from a different brand.

    A few heads did not revive. Turned out one "row" and one "column" were dead, an electrical thing beyond my repair.

    Still had 48 nozzles functioning, so revised the linux printer driver to use only those.

    Promptly thereafter discovered that "new"/refurb cartridges still exist, and are cheap. Ordered two.

    Began hackery at the printer-control-language level.

    Discovered it can traverse both up and down the page, can print a single letter at a time, eventually taught it a little bit of HPGL, printing individual droplets one by one kinda like a pen-plotter moving across the paper.

    Surely more I'm forgetting...

    Had some groovy ideas of a game kinda like pictionary, where it prints out randomly on the page until someone guesses the image.

  • Printze's Brother, also an artist

    esot.eric08/06/2021 at 05:21 0 comments

    no kidding, this thing looks like it was just removed from the box and one test-page printed for the first time... how could I pass it up?

    Also, a mini-itx computer... which is something I've never seen in person. They're *way* smaller than I imagined... and 12V-in might just make it run off a cigarette lighter. I'm guessing *far* less power than my lappy... but need to grab the screen outta storage to learn anything more about it... 

    Though, it came as an assembled /kit/ with a lot of spare parts, including a /real/ serial port... which is a bit of an irony seeing as all the work I've been doing beating-around a USB-Serial-dongle and a TI calculator cable... #Vintage Z80 palmtop compy hackery 


    This is the first time I've seen /anything/ along these lines at any goodwill I've visited... a vintage, in the first case... and a computer in the second case... always thought it a bit weird... what...? The e-cyclers get /all/ the computers these days?


    This guy is the PC equivalent of my family's first printer... same guts, much of the same styling... so, definitely some nostalgia, too, in addition to nearly all the things that drew me to Printze, in the first place, including the same still-existant ink cartridges!

    There wasn't a pricetag, so the cashier said "we better get a sticker on it in case it doesn't work and you want to return it..." "hah! It's from 1993, it probably doesn't..."

  • Moving on up, and down

    esot.eric07/29/2020 at 07:27 0 comments

    Tl;dr: It's *much* better, now.

    What'd I do?

    Ah, yes... first I tried three parallel diagonal lines filling most of the page. The thought was to see if the roller itself was somehow binding; then the lines would show errors in the same locations, right?

    The first line was horrible... wobbling all over the place. But, when it finished I was greeted with a loud grinding sound of doom... which... turned out to be the sound of stepping backwards up the page. Apparently, confirming an earlier observation that when performing a backward motion it actually oversteps, then moves forward again. I guess the idea is to compensate for backlash in the gears. So, a 1/120in step /up/ the page appears [later verified by 'scoping] to be like 12 steps up, 11 steps down.

    And... my moveTo() function does-so not by telling the printer where to move, but by telling it to move 1/120th of an inch, however many times are necessary. So, heading back 8inches up the page... well... it was slow and loud.

    But, the /second/ diagonal line, printed in exactly the same manner as the first, dot-by-dot, step-by-step, in the same direction, just half an inch to the right... well... it turned out perfect. And so did the next.


    here, the theory goes that there may've been debris in the gears... which seemed confirmed, later, as well. And that all that rattling shook it all loose!


    TONS of other lookings-into, including 'scoping...

    E.G. they used what seem to me *tiny* traces to carry half an amp 10+ inches... and small vias... and... yes... [probably most importantly] one of those vias happened to be in the electrolyte-flood-zone... I measured nearly a volt drop between the power source and the motor. At 14V, that may not seem like much, but *power* is what does work, and P=V^2/R... V-squared... 13^2 vs 14^2 is not insignificant!

    Rather'n just fix the via, I ran heavy wire from the power supply straight to the motor-driver/connector.

    I also looked into the service manual a bit... the same motor is *also* responsible for driving an optional sheet-feeder... so, this thing *should* be able to handle quite a bit more loading...

    Also, finally got a closer look at the actual gearing... yeah, white debris, presumably from the white gear, on the brown gear attached to the paper roller. Prb not the best sign; maybe 1000's of 1/120th inch start-stop motions in both directions is a bit much to ask of an inkjet. Also, interestingly, the motor's brass gear seems worn more than the white plastic one it drives[?!]

    OTOH, another discovery: the white gear actually slides on its shaft a bit [maybe 2mm]... this is enough that in one extreme maybe 1/4 of its thin-enough tooth-thickness hangs off the driving gear, whereas in the other extreme it's got plenty of wiggle-room to spare while still being fully-meshed.

    I didn't do anything about that...

    But I ran the ol' star experiment again... and; well this won't make sense unless I mention that I ran a few more test-prints after the highly-successful line-test, but before attempting repairs... and... yeah, it started up missing steps again.

    So, /after/ the new wiring and fiddling with [but not fixing] the gear-sliding... I ran the star experiment again... twice... and they both were *perfect*. Which I'm not sure I've ever seen.

    So, then I thought about that gear sliding, and tilted the thing on its side... [gear sliding slightly off the motor].... and a mess of missed-steps, again. [None, surprisingly, by the carriage, which now has to lift against gravity]. Trying the other side, though, wasn't really feasible; part of the clutch-system relies on a spring which is too weak to counteract the weight. I managed to give it a little push *once* at the right time and it managed printing most of one line before aborting... that line, too, indicated missed steps on the up/down axis [but again, not on the left-right axis now fighting gravity!]. Now, I suppose, it may just not've slid that gear back into place......

    Read more »

  • Revisit

    esot.eric07/27/2020 at 03:09 0 comments

    [TODO, there's a lot that could be written about my past-endeavors with Printze!]

    Today I decided to revisit Printze. My "super dooper secret idea" was proof-of-concept-implemented months ago, and Printze has been mostly sitting unused since.

    The other day I picked up a Silhouette-brand vinyl cutter at the thrift store for $10... putting a pen where the blade goes makes it a plotter, a bit like the ol' HP7475A [except, without the ability to change pens]. Also managed to find a linux/inkscape plugin to get 'er running. Yes!

    But... Printze's super-secret-project is quite similar, actually, so I wanted to revisit that...

    So, I ran my old code... and... well, I found/fixed some minor bugs [mostly in comments]... and... it still runs!

    But... here's something completely unexpected:

    [Shitty contrast/macro-mode compensation, sorry]

    What we have here is two stars printed, literally, one dot at a time.

    It prints the way we draw 'em... It starts printing a line from the tip of the star, down and to the left on the paper... then up/right, then horizontally-left, then down/right, then up/left back to the tip.

    Notice how the tip doesn't meet up!

    First I thought it a software glitch... then I figured... well, most printers are only expected to go vertically /down/ the page, and here I'm having it feed the paper /backwards/... so, yahknow, shouldn't /expect/ that ability at all, nevermind its being accurate. But, actually, I've been accounting for that possibility throughout this project, so as not to be too let-down if it turned out not to be possible... [similarly, with printing dots right-to-left]

    But, looking closely [which almost requires a magnifying glass... hmm, wonder if i'd get better close-ups through one? Duh!]... Looking closely, it appears pretty clear that the only mangled-motion direction is *down* the page! Exactly the direction it's designed for!

    In fact, the last line-segment, which is drawn backwards in /both/ axes [up the page and to the left], is dang-near *perfect* every time! My camera can't pick it up, but you can literally see each individual dot making up each line; can see where the vertical axis apparently *completely* misses a step, but only when going the normal direction, down the page.

    That "perfect" line is actually *far* more precise /and/ accurate than I'd've even expected of normal printing motions. I'm literally moving the printing position 1/120th of an inch each time. That may not sound like asking a lot, but consider that there's no encoders, just open-loop steppers, and the printer prints each dot *while moving* the carriage to the right. 

    That means it has to get a running-start before the droplet, and has to decelerate after. So, every drop consists of at least a reversal, to the left of the dot, and a forward/right motion passing it. Further still, every so-often the printer inserts, on its own, a head-wipe, which brings the carriage all the way to the left, and back again for the next dot. Further still still, the two motors serve various functions *besides* x and y motion, such as the cleaning pump and head-wipers, through the use of clutches and unidirectional/ratchet-clutches. So, those motors have quite a bit of weirdly-varying loads on them. Nevermind, still, the paper rollers' grip on the paper, etc! 

    I mean, it's almost shocking how precise and accurate the positioning of the dots on that one line [printed backwards! On both axes!]... i'd've been surprised if the /normal/ printing-direction turned out that good!

    BUT: the /normal/ printing-direction [vertical, anyhow] is completely fubar. At first printout the error looked repeatable. About one missed step every ten. So I tried again, and again it looked about the same, except the missed steps had /shifted/. So, then, I thought maybe some sort of math-error, or maybe caused by the unidirectional clutch ratchetting... internal to the printer [e.g. maybe it took 5 extra steps to load the paper the second time...]...

    So, then a third run... and that...

    Read more »

  • Old log entry

    esot.eric06/29/2020 at 05:01 0 comments

View all 5 project logs

Enjoy this project?



Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates