For the past two years, I’ve been planning to build myself a 3D printer from some old Inkjet printers that I had collected over the years. But not until two weeks ago had I actually started to work on it.

The 3D printer I want to made uses a ink jets to print a chemical onto a building platform. The building platform goes down as a new layer of powder is spread onto it. Then a chemical is sprayed from the print head that will cause powder to bind. If you want more information on these kinds of printers look here

My printer of choice was an old Epson Stylus C63 for these reasons:
1. The ink cartridges only supply ink, they do not have ink jet nozzles themselves
2. I can attach rubber hoses or some other form of tubing that allows me to print another chemical of my choosing
3. The print head nozzles uses a piezoelectric material to produce droplets of ink (lasts much longer than thermal inkjets)
4. Most service manuals for Epson Printers come with a detailed schematic of the main board.

Note: Due to certain circumstances, this printer had already been pulled apart.

The first thing I needed to do was get my printer running so I could plug my logic analyser in and look at the signals, the problem was that I was missing one ink cartridge so the printer refused to print, or do anything.
Due to my budget (jobless and about to start university) I decided to try and Emulate the missing cartridge, or all of them using one microcontroller, thus allowing me to move forward and using water for the print head instead of ink that stains.

Video of the finished result:

New updated video: (HD)

Step 1: Getting Familiar With It

So in order to emulate the ink cartridges, I need to know how they work first. Luckily the ink cartridges in my printer have simple EEPROMs that hold the ink usage and other important information about the ink cartridge such as the expiration date, colour, serial number and so on.

Inside the print head, there is a circuit board with pads mapped out that are an exact mirror of the pads on the ink cartridges and a ribbon cable that connects this board up to the main board on pins 1 to 6.

A quick look at the schematic for the main board reveals that pins 1 – 6 are named CVDD, CSDA, CRST, GND, CSCK and COI.

With these signal names I decided it would be best to draw out a schematic of the connecting board as it was not present in the service manual. This revealed that CSDA, CSCK, CRST have 100KOhm Pull-Down resistors, a bit unusual in my opinion as it’s not like I2C (uses Pull-Up Resistors typically 1.8KOhms to 47KOhms). The COI signal connects serially to the ink cartridges but on the end is shorted to GND. Curiously I tested the continuity of the pads on the ink cartridges and found that they are shorted, this means that when COI is grounded, all ink cartridges are present.

<p>Great work.Thank you very much for sharing</p>
<p>Wait. I did not get it. you try to emulate a cartridge. Wouldnt it be much easier to tell the cartridge it is filled? (with whatever)</p><p>So it can keep its way of comms with the printer. Maybe I missed something special.</p><p>Sorry if that is the case.</p>
Hej, I tried out communocation with a cartrige with AT45. Damn this protocol is so messy and redundandly &quot;different&quot;. Best example for 'security by obscurity'. Did You ever manage the cartridge to respond?
Hej, I tried out communocation with a cartrige with AT45. Damn this protocol is so messy and redundandly &quot;different&quot;. Best example for 'security by obscurity'. Did You ever manage the cartridge to respond?
<p>Wow, thanks for this. It's exactly what i'm after :)</p>
R 1,R 2,R 3,R 4,R 5=? <br>C 1-C 2=? <br>Crystal=?
This is the closest thing to what I wanted. I wanted to know how to directly interface to an ink cartridge.
Also, I would like it in Wiring language so I can use it with my Arduino.
Hello , Im thinking of making a design to color plastic fillament and I thought that ink jet cartridges would do for such a thing , though I dobt know how they work and how I can communicate with them using the small pcb they have .I also thought that the cartridges should be from epson since I like their shape and it would be neat .So can you provide me with the information I need to control them?<br>If so please , please send me an e-mail at theohacker@hotmail.com<br>Thanks by the way ...<br>
Hey, <br><br>I haven't had much time to work on my printer project all year so I don't know how to control the print heads just yet. What I can say though is that you will definitely need the control circuitry on the printer's main board because it provides the correct voltage levels and wave forms that are needed to drive the Piezoelectric print heads.<br><br>The good news is however that University had just ended and I'm now on my summer break meaning more time to work on my own stuff. I'm sure that during that time I would be able to figure out the control signals and have it print &quot;Hello World&quot; or something on a piece of paper :P<br><br>I'm sorry I can't be of much help at the moment =(
Hey<br> <br> This is interesting, although I currently don't have any need for reverse engineering... but who knows. Maybe some day in the future.<br> <br> Re 3D printers - I am building on, a standard Mendel from the open source Reprap project www.reprap.org<br> <br> Although reprap primarily looks a FDM (laying down layers of plastic) I am sure it would be a valuable resource for you to proceed with your build. I have recently seen a demo video of a printer building with this approach and thought it may be a simpler method over FDM. But then again, you need some method of laying a even layer of the build material down each time. Are you looking at a dropping bed or a raising head? Dust management might also be interesting :)<br> <br> good luck with your build. Looking foreward for more info.
Hey, Thanks for your reply :)<br><br>When I do get around to building the build platform. it will be a bed that drops for each layer printed. <br>I haven't really thought about dust management at this stage because I have yet to build something that prints first :P<br><br>Cheers<br>roman
Which logic analyzer are you using?<br><br>Thanks...
how do you control nozzles of printhead?<br>
hi!<br><br>I'm a student . now i am begin to do my project about 3d printing.i have very much difficult about printer head.I try to search information, how to control print head .but i don't see. fortunately, to day i written your project.I found very interesting. i hope you can shared for me about your experience,tell me more than information about your project.<br>and please give me some document to <br>tranngoclinh.cdt@gmail.com.<br><br><br>thanks you very much.
Roman,<br><br>I have some interesting auto reset ink cartridges for you.<br>I can get you for free.<br><br>Check the video and let me know if this can help you on this project.<br>http://www.ufosystem.net/<br><br>Our ink refill solution will auto reset the ink level to 100%, and you can refill the ink without removing the ink cartridge.<br>Anyway, let me know if you need it. It is free for you.<br>(email me at info@timelinedigitalic.com)<br><br>Charles
Hey Charles,<br><br>Thanks for the offer but I will have to turn it down. My printer didn't want to work without all ink cartridges present, that's why I emulated them all so I could continue with my 3D printer project.<br><br>The print head in the end will be printing chemicals to bind powder together, not ink. So ink cartridge reset will not be of any help to me, sorry.
Roman,<br><br>No worries, if you need anything related to ink cartridges, let me know.<br><br>Cheers,<br><br>Charles
Great job on that.
this is so awesome, I hate my epson, 1, it drains the ink every time i turn it on or 2. it simply does nto work, 3. will only work with all colors full (I only use black, but somehow the colors get used up too)<br><br>thank you for doing this.
Yeah, Epson printers are trouble makers but I'm choosing it because of the technology it uses.<br>Not only will my hack help me with my long term project, but it will also mean no wasting expensive ink :P<br><br>Word of warning though, If you try to use this on your own Epson printer, I can not guarantee the protocol is the same or the pin out of the ink cartridges. But if you do get it to work, you will need to isolate the inks EEPROMs so that they do not interfere with the microcontroller...<br>Or<br>Analyse the dumped data and see if you can find what bytes contain the ink usage, and reset it to full :P (Might post this up later myself)

About This Instructable




Bio: I'm currently studying at Massey University in New Zealand. I'm doing Computer and Electrical Engineering which is a fun course and already proving ... More »
More by NZSmartie:Reverse Engineering to Emulate Ink Cartridges for a Epson Printer How to De-Solder surface mount ICs 
Add instructable to: