Oasis 3DP

A powder and inkjet 3D printer based on HP45 inkjet technology

Similar projects worth following
Oasis is a powder and inkjet 3D printer (3DP) that uses older inkjet technology to print an object. HP45 inkjet printheads jetting binder are used to bind powder locally. This part can then be cleaned and treated to create an 3D object.

3DP can print in several materials to get several results:
-Gypsum: For full color parts if printed with a color. Infiltrated with CA afterwards;
-Sand: For sandcasting moulds;
-Sugar: For edible prints;
-Ceramics: For printing stoneware. Parts need to be fired afterward;
-Metals: With a lot of post processing;

Oasis (and my other 3DP printers as well) were developed to add powder and inkjet 3D printing to the list of open source 3D printers.

Oasis is not a finished printer, rather a working prototype. Software and hardware may have quirks.


Oasis is a open source powder and inkjet (3DP) 3D printer. It is designed to be a hackable platform to experiment with 3DP printing.

Current specs:

  • Build size: Ø84mm x 100mm;
  • Printhead: HP45;
  • Printhead DPI: 600;
  • Printhead swatch size: 300 nozzles, 0.5" (12.7mm);

Handy features:

  • A cover to keep dust out and powder in. (This may seem mundane, but was seriously lacking in my previous printers).
  • A large, flat, unobstructed build area that is easy to clean. (Again, seems mundane, is not mundane).
  • An aluminium extrusion frame where parts can easily be bolted on.
  • Plenty of room for future additions (It should be able to handle 5 printheads or a 200mm cubed print area).

Logs of interest

How 3DP

'3DP' also going by the names 'binder jetting' or 'powder and inkjet printing', is a technique that uses inkjet and powder to fabricate parts. 3DP printers consist of a moving inkjet printhead, a build area, and a way to deposit new layers of powder in said build area. The example below uses 2 hoppers and a spreader. The left hopper supplies the powder and is called the 'feed hopper', the part is built in the right 'build hopper'. A spreader can move between these hoppers to transfer powder from one to another. The order of operation for 3DP printing is as follows:

  1. The inkjet head deposits binder wherever the part needs to be. Where the binder fills the powder, the powder solidifies;
  2. The build piston lowers by the layer thickness, the feed piston raises enough to fill the build area completely;
  3. The spreader spreads the powder from the feed hopper to the build hopper;
  4. The spreader returns and the printer starts at step 1 again. This is repeated until the part is finished.

After this printing, the part is allowed some time to dry. It can then be removed from the printer and gently cleaned. After this the part can either receive further processing, or be used directly.

Why 3DP

3DP is quite unlike FDM and SLA. It's biggest advantages are:

  • You do not need support material. The powder is added one layer at a time, and the powder from the previous layers supports the next layers. All the unprinted powder can be reused infinitely.
  • A wide range of materials can be printed. While FDM is limited to plastics, and SLA requires light sensitive resins, 3DP can print most materials that come as powders.
  • Color can be printed. Because 3DP uses standard inkjet technology, it is possible to add color, simply by printing dye alongside the binder.

3DP is not perfect though, There are some drawbacks that need to be considered:

  • Powder printing is inherently messy. Very messy.
  • All prints require post processing, ranging from simple cleaning to firing or infiltrating. Untreated parts are very fragile. This also limits maximum size of parts. The part needs to be able to survive post processing.
  • All of the print area needs to be filled with powder. While the excess can be reused, a minimum amount of powder is required to print at all.
  • 3DP prints only one material at a time.
  • Hollow parts need escape holes to drain unprinted powder.

What 3DP

There are a variety of materials 3DP can print. The only thing these materials have in common is that they are powders. In most cases, a glue is added to the powder. Examples of this are PVA, sugar or maltodextrin. The binder is generally an inert liquid, like an alcohol/water mix. I have...

Read more »


The software license for Oasis.

Adobe Portable Document Format - 77.43 kB - 09/08/2018 at 10:54


Oasis Total BOM 20181018.xlsx

A bill of material for one Oasis, to the current state of the machine.

sheet - 26.92 kB - 10/21/2018 at 08:11


OA-Y00-A01-00 3D-PDF 20181014.PDF

A 3D PDF of the mechanical parts of Oasis. Slow and in a finicky format, but openable by adobe pdf reader. Good for reference.

Adobe Portable Document Format - 26.12 MB - 10/14/2018 at 13:06


Oasis make package

A full package with all electronics, 3D files, drawings and software required to make one Oasis. While in combination with the 3D PDF, it should be possible to to build an Oasis, more information will be given in the instructions section.

x-zip-compressed - 41.42 MB - 12/30/2018 at 11:04


Oasis lifting spreader A21

The mechanical files of the lifting spreader, used as an optional upgrade over the current spreader. Instructions still missing.

x-zip-compressed - 5.34 MB - 12/08/2018 at 11:55


View all 7 files

  • 1 × Full BOM can be found in files ("Oasis Total BOM *date*") 1 Oasis contains 128 unique mechanical parts and 40'ish electrical ones. Listing them here would be madness.

  • Warning! A mistake on Driver V3.01 and lower

    Yvo de Haas12/30/2018 at 10:33 0 comments

    I would add this to the instructions as well, but is a bit special in that it wants me to edit ALL instructions at the same time.

    Someone made a mistake on the driver board V3.01 (it was me). The pullup for the nozzle check signal is pulled to 12V, not 3.3V. This means that an input for the Teensy is being pulled to 12V most of the time. I myself have not experienced any issues whatsoever with this, but I suspect some other people I have been talking to have experienced issues (broken Teensy's).

    I am working right now on a V3.02 design that will pull the check to the right voltage. I advise anyone who want to make this not to use the V3.01 driver.

    However this new design will not fix the problem for people who already have a board. Below is a fix for this issue. TL;DR is tombstone the resistor and solder a wire to the nearest 3.3V.

    The culprit is R8 (shown here as P8, because the silkscreen is worn off). Desolder it.

    You are now left with 2 pads. The pad closest to the R8 silkscreen is the check pin. The pad furthest away from R8 silkscreen is 12V. Solder one side of the resistor you desoldered (or another 10k resistor) with one side to the check pin, facing up (tombstoning it).

    Now a wire needs to be soldered from a 3.3V pin to the side of the 10k resistor facing up. R11 and R12 have 3.3V on the pads closest to the silkscreen. First solder a wire to the R11 or R12, then bend the wire to R8 and solder it to the side of the resistor facing up.

    Now the check pin is pulled to 3.3V and the check pin is no longer capable of destroying the Teensy.

    (Edit 20 minutes later: While designing V3.02 I found an even bigger mistake in the PCB on the TLC driver. It shorts 12V to ground, and several signals directly to ground. It is not in the Gerber files (V3.01 still had V3.00gerber files in it) but it is in all versions of the KiCAD files. The TLC driver has moved 2mm to the side and shorted on everything. I will fix and upload ASAP because this is a real problem. I have no clue how this one got in, but it is quite a bad one. My apologies)

  • Making the spreader go up

    Yvo de Haas12/08/2018 at 11:18 0 comments

    One of the biggest annoyances of Oasis for me has been the spreader. It does an amazing job spreading a new layer, but it has one quite big flaw. It drags powder back.

    This dragging back the powder should not be happening. The pistons lower to move out of the way of the spreader. However, there is quite a bit of overshoot after the piston, and there is powder on either side of the piston as well. This is the powder that is being moved when the gantry moves back.

    The first reason I know it does is because I can see powder being moved when the spreader moves back, the second reason is because there is powder behind the spreader and this heap of powder gets bigger every new layer. The third reason is that in the build piston there is an edge of powder that is moved from the overshoot, back into the build piston. The excess powder in the build piston is actually a serious problem that I do not want.

    See on the left, a heap of powder appearing
    Blue line, roughly where the piston is. Red line, where there excess powder

    This problem is cause by the spreader not being perfectly concentric, and some slop in the mechanisms. There are plenty of things I can fix here, but I am going to make the spreader lifting.

    The requirements are simple. When the spreader is on, the roller must be down. When the spreader is off, the roller must be up. The positioning needs to have a high repeat accuracy. It must also not move up under the load of powder.

    I chose a central shaft in 608 bearings to move the spreader on. This way, the spreader moves in it's entirety, and not only left or right. There are plenty of adjustment options I can make, but the old adjustments turned out to be perfectly adequate.

    I run GRBL, so I do not have many options for driving it. Hobby servo's are not an option here, GRBL does not really support them. The only reasonable options that do not require many modifications are solenoids and electromagnets. 12V is one position, 0V is another (with a spring).  I chose electromagnets since I had them (Specifically, this one)

    In the video you can see the spreader moving down (snapping into the electromagnet) when the roller is powered, and springing back up when the power is removed. The up position is a bit springy, but that is OK.

    Because the spreader is now lifting, I will change the software so I can toggle between moving the pistons out of the way or not. For the lifting spreader, I do not need to move the pistons down, saving a second or 2 on every new layer. This software will not be shared instantly, There is more I want to do. The CAD will be uploaded shortly.

    The old spreader works fine for the people who are building Oasis right now. The new one is just a little better at the cost of complexity.

  • Future plans for Oasis

    Yvo de Haas11/05/2018 at 06:44 0 comments

    I have spent the past few months working hard to get Oasis ready before the deadline of the Hackaday Prize. While I am of course a bit sad that I did not win, I knew that I was going against some great projects. Congratulations to all the winners.

    My goal for the past few months has been to get Oasis 'working'. Printing, as good as I can in the time I have. Now that I no longer have any deadlines, I will dial the amount of work I put in Oasis a bit back. This does not mean that I will stop it, not at all. 3DP has been really interesting to me for the past few years, and I still want to make it better, but I need to catch up with other things too, something that I made little time for the past few months.

    While it may take a while, these are the things I hope work on with Oasis for the coming time (not in order):


    So far I have been printing with original Zcorp materials. This is not really going to work well on a cheap(ish) and open source DIY powder printer. Zcorp powder and binder is REALLY expensive. I have had my eyes on several recipes since Plan B year ago. I compiled the most notable ones here. Now that I have a machine that is workable, I will finally test some of these recipes.

    My main focus will be ceramics, then gypsum. Other material options such as sand and maybe metal will be for an unplanned future.


    Cleaning parts is difficult. For Plan B I built a box with gloves and an air pump to clean the parts. While this works surprisingly well. I want to make a better tool using better parts. This will be a negative pressure chamber with better recovery of the powder. I also want more pressure for the cleaning air. Lastly, I hope I can make it somewhat portable.


    Firmware works, sort of. Both the decoding of printing lines and the printing happens in  the main loop. Because of this, I cannot print much faster than 50mm/s right now, while the absolute max should be around 400mm/s. I do not hope to get the maximum speed without FPGA's but I do hope I can reach around 200mm/s without much fuss.

    To get to this speed I hope to offload all of the inkjetting code to interrupts and DMA. If I manage that, I will instantly lose the biggest bottleneck in the code. Set up inkjetting for one burst using interrupts, and letting it trigger through DMA. I might need to update the controller side of the PCB to make it work, but that is a small price to pay for higher speeds in my opinion.

    I also want to add features such as virtual speed and hardware trigger so it can print without an encoder, making it more usable to other people as well.


    Python I had to learn from scratch. If I would write it again now, I would do a lot of it completely different. And so I probably will. Too many points to mention, but I will make it faster, more stable, more usable, and to fix a problem I still have, make it output Plan B code as well.

    Another thing I want to do in software is make it usable without 3DP. I have yet to think of a way to make a universal inkjet driver for use in other projects, but it is something that I would be really interested in.

    Selling parts

    I have been getting requests for assembled printhead drivers. I ran the numbers for an assembled driver, and I get to the $150-200 range. Right now, with all the software and firmware in a meh state, I really am not comfortable selling it at those prices. I will take effort to make the price go down by redesigning it, and improve the software so it will work for more people and I actually feel comfortable selling it at higher prices.

    Color printing

    I want to find a way to print in full color. There are several options. One is to add a CMY head. HP has ones that are compatible with the HP45 connector. It is narrower however, limiting print speed. I can also make a driver for 5x HP45 printhead. More expensive, but a lot faster. What I decide on will be for later, but I do want to get full color available at some point.

    ... Read more »

  • How to install the HP45 connector

    Yvo de Haas11/02/2018 at 19:05 0 comments

    I sell HP45 connectors on Tindie. In order to prevent the misery that is the connector falling apart, I am writing this guide.

    The kit of the HP45 connector contains several parts:

    • 1 Fully assembled, capped HP45 connector;
    • 2 #6x3/8 screws to mount the connector
    • 2 Resin washers to get the right depth for the screws
    • 5 Spare pins and springs for if you lose one (or five)

    The footprint of the HP45 connector is in the design files, or as a separate download here. This footprint should be on a PCB of 1.6mm (or thicker) since the 52 springs will push against the PCB. The pads should also be gold plated, since the springs only make direct contact, and are not soldered in place.

    Mounting the connector

    To mount the HP45 connector you will need a Phillips 1 screwdriver and a 2.5mm Allen wrench.

    1. Take the HP45 connector and place it pins facing up, so you see the screw head.
    2. Remove the screw using the 2.5mm Allen wrench (but do NOT lift the connector up).
    3. Flip the HP45 connector WHILE holding the back cover on the back.
    4. When the pins are facing down, you can remove the back cover to expose the springs.
    5. Align the PCB with the 3 centering pins, and place the PCB over the connector.
    6. Take the 2 washers and screws and place them in the 2 outer most holes (3.3ish millimeters).
    7. Push on the PCB to make all the springs compress so there is no gap between the PCB and the connector.
    8. Take the Phillips screwdriver and screw the screws into the connector. Do not over tighten, this will strip the threads you make out of the plastic.
    2.5mm Allen wrench and Phillips size 1 screwdriver
    Place connector in this position
    Remove screw
    Flip connector WHILE keeping the cover on the back
    Remove the cover from the back
    Take PCB
    Align holes and place PCB over connector
    Place the 2 washers and 2 screws
    Tighten screws in connector

    The connector is now ready for use.

  • Can Oasis print a Benchy?

    Yvo de Haas10/24/2018 at 18:49 0 comments

    Yes it can print a Benchy. It took a few tries because Oasis is still a bit finicky and Benchy was quite challenging, even in 3DP, but it looks great.

    One fun property of 3DP that is really weird for me to get used to is that I really do not care about orientation, but very much about Z-height. Because of this, I printed Benchy on it's side. It took around an hour to print at layer height 0.2mm. Currently adding a new layer takes 8-10 seconds. Benchy is 30mm'ish wide. This totals 25 minutes of new layers.

    Cleaning and infiltrating it was quite difficult. I did not want to damage it, and my depowdering setup is not perfect yet. I did miss a few small spots, but I got almost all of the powder out.

    The Benchy looks really nice, though it is a bit more rough than an FDM printed part. The text on the back of the boat is not visible, the text on the bottom is. All tiny details are visible. A curious thing I noticed is that the side facing down was a lot more smooth than the side facing up. I suspect I used too much binder, and the binder wicked to the layers below, smoothing out the part. The layers facing up cannot wick into unbound binder, and so stairs are visible here.

    Now that I have printed a decent Benchy, I think I am now legally allowed to call Oasis a real 3D printer.

    (PS. should I be spending a whole log on a Benchy? Probably not, but I don't care, because Benchy)

  • The parts of interest

    Yvo de Haas10/16/2018 at 20:05 0 comments

    Oasis is designed mostly around standard 3D printer parts. However due to some technical challenges with 3DP, there are a few specialty parts I cannot design around. In this log I hope to explain what they are, where I got them, and what alternatives are possible.

    Spreader + motor

    One of the most important parts of powder printing is the spreader, A round, smooth roller. It is also one of the more difficult parts to get, and possibly the biggest compromise I had to make to ease of getting the parts. In Plan B, first I did without, which did not work. Then I had to jump through a lot of hoops to make one anyway, that worked somewhat. Now I am blessed to work at a company that can order at Misumi. Misumi, is magical. They have everything. The spreader is a standard(ish) part at misumi, 'SSFRHQ20-200-F20-P5-T20-Q5'.

    If you can buy at Misumi, do that. I have included a drawing of the spreader, 'OA-Y20-P13-00'. This is exactly what you buy at Misumi. If you have access to a lathe, you can make the spreader yourself. It does need to be concentric and smooth, but other than that should not be difficult.

    To drive the spreader a motor is required. For this I am using a cheap 25mm gearmotor. I used 300 rpm @ 12V, which seems about right.

    Between the motor and the spreader is a timing belt. I use GT2, and use a closed belt of 120mm long. They are available through the usual internet suspects. Timing pulleys can also be found here if you have trouble finding them. All used pulleys are GT2, 20T, 6mm width. The pulley on the spreader motor is 3D printed for 'pulley not being available' reasons. I advise against printing the other pulleys.


    The printhead and the motion driver are controlled by separate controllers. To synchronize them I use an encoder strip. These things are common in inkjet printers anyway, and are not that hard to get.

    For the actual encoder I use a 'AVAGO HEDS-9740#150', a 150 lines per inch optical encoder head. Most component suppliers list them, but do not have them in stock. Places like ebay do sell them. The tape can also be found on Ebay. you'll need a matching 150 lines per inch tape.


    Oasis uses mostly standard 3D printer bearings (608, 624, 625, preferably ZZ, LM8UU). However, on some places special bearings are needed. The spreader takes 685-ZZ (685-2Z) bearings. I cannot easily provide a link, but ebay has them in bulk.

    Aluminium extrusion

    Oasis is built around aluminium extrusion profile. 2 types of profiles are used. 30x30 and 30x60. There is not much to the profiles. They need to be 30mm, have a groove of 8mm, and the hole in the middle of the profile needs to be able to take an M8 thread. Not all profiles will need M8, but some do. You'll also need 30x30 angles, and 60x60 (2x30 long) angles. The exact type of nut you'll use is unimportant, but I prefer profile nuts that can be inserted after assembly. 

    I bought mine at Misumi because I was already ordering. I suggest finding a supplier near you. In the BOM, the Misumi name is given, but the number in the order number is the required length. You can use that to cut your profiles.

    An example of the used profile. Bear in mind that not all holes need to be tapped M8.

  • A video is there

    Yvo de Haas10/09/2018 at 18:44 0 comments

    There now is a video of Oasis

    I will not add much more to this log, since I spent the last week making this (^) video. I can now work on finishing the file packages and instructions for other people to be capable of making this printer.

    One last thing that will be clarified in the previous log: I now sell the HP45 connector on Tindie.

    Previous log:

    Because logs are ordered by when the first draft was made, not when it was published, putting my 2 weeks ago started log behind this one.

  • The color of the day: Blue

    Yvo de Haas09/27/2018 at 19:03 0 comments

    I refilled my printhead with actual Zcorp binder. I got this stuff from a friend of mine a while ago, and it will allow me to get a bit of a baseline before I start messing with my own binders and powders.

    The first important step is to print a new carriage. I thought the refill port was on the front, I though wrong. It is on the bottom. I want to plug the printhead with a screw and o-ring, so I need a hole there. I ran out of the faint blue, so I will be using the much nicer dark blue.

    To get a good idea of what the HP45 is, go here: It has some great pictures of the HP45 itself and some explanations that will become important. Summary, a spring loaded tank that holds the ink under a vacuum.

    I needed a few things to refill the printhead. The first is the binder. I also added some ink so I can see what I am printing. I chose blue because I like it. I also needed a syringe with needle, a lot of paper towels and running water. Refilling printheads is messy. You cannot believe how much ink can be diluted and still be completely black. Last I needed a suction head so I can draw the ink through the nozzles. This is a tool I 3D printed and added a o-ring to. It works shockingly well considering I spent 5 minuted designing it.

    Interesting note, the blue color of the prints now comes from the binder, not the powder. This is how you can add full color. CMYK and binder and you have a full color printer. I will investigate this after this first part of the project is done, but it is not part of the scope of this project itself.

    The rough list of steps needed to clean and refill a HP45 printhead:

    1. Take the sticker of the bottom;
    2. Push the ball sealing the printhead into the printhead;
    3. Squeeze (milk) the ink out of the printhead (it does not simply drain);
    4. Suction last ink through the nozzles using the tool;
    5. Fill with water/alcohol mix (or plain water for some of the repeats);
    6. Combination of milking the printhead and sucking ink through the nozzles;
    7. Repeat step 5 and 6 till water comes out clean;
    8. Refill printhead with binder (and optional ink, I did 1/20 cyan ink);
    9. Clamp the printhead with a strong clamp. The head should not have any air in it;
    10. Cap the hole. I used an M4 screw with a 3.5mm ID o-ring;
    11. Release the clamp;
    12. Suck the binder through the nozzles using the suction tool;
    13. The printhead now ready for use;

    I will post a proper guide later, mainly because I cannot save drafts in guides and like to write over a few days. I have plenty more pictures and detailed steps available, but I also have 100 other tasks that need doing right now.

    A thing I discovered very quickly is that the vacuum on the printhead is really necessary. Previously I just filled the head without the clamp. After a single burst of ink there was ink leaking from the printhead. I then opened the head, clamped the body with a clamp, and closed it again. This time it printed perfectly.

    Another thing you will find out (I did at least) is that refilling a printhead is messy. Once the ink touches your hand, it stays there. My hands are various nice shades of black and blue. Next time I will be wearing gloves.

    I have heard (but not confirmed) that you can replace the milking and sucking with a centrifuge. I have no centrifuge here, so for me it will stay a mystery, but it is a nice thought.

    I will be printing with this binder for the coming few days, trying to dial in the ink percentage and trying to print some nice objects.

    Left binder, right pure ink
    Printed in glorious blue

    More coming soon, this project is now really moving.

  • Some info on interfacing with the HP45

    Yvo de Haas09/25/2018 at 19:13 0 comments

    In the previous logs I have barely mentioned the interfacing with the HP45, although it is quite an important part of this project. The best I did was this log, where I spent 62 words on the problem. In this log I will give some more background on what the problem with the HP45 is and how to work with it.

    Too many pads

    When you look at it the problem is quite simple. The HP45 has too many pads. Reliably connecting to 2 or 3 pads is simple. Reliably connecting to 52 is a bit more difficult. Depending on what pad you lose, you can lose between 14 and 22 nozzles. The problem with this many pads is so big most manufacturers don't bother with it anymore. They just put some more electronics in the printhead itself. The HP45 is between the first inkjet printheads where they were figuring it out, and the later printheads where they optimized the design.

    Pogo pin connector

    Pogo pin breakout board (on 5mm squares)

    Imagine replacing a pin on this (I did, it sucks)

    This is 2 PCB's, with IC's in the middle. If something breaks, good luck fixing it..

    My first way of connecting to the HP45 is with a pogo pin board. I have had breakouts and full drivers built this way. They are built on 2 boards to give the pins stability and to make routing somewhat possible with a 2 layer board. It is practically impossible to route without more than 2 layers, because all pogo pins are essentially through hole, and you cannot reach all the pins at once.

    In all fairness, it worked quite well. It is not perfect though. The pogo pins are only 0.8mm thick and so are incredibly fragile. In most printhead carriers you inert the printhead from the top. This means it is easy to hit the pins sideways while loading a printhead. This has happened, and the pins cannot take any sideways load and simply bent. The pins are soldered to both boards, so if a pin gets bent, you have to desolder it from both boards at the same time. I have done this, but it is the absolute worst job to do.

    Cue the HP45 connector

    Breakout board
    Full driver board

    Fabulous, isn't it?

    The HP45 connector is a purpose built connector that has 52 pogo pins in a single plastic housing. It does not have the travel of my own pogo pin circuit (not that you need it), but it has pins that you can hit sideways without breaking them. Also it does not solder in place, but makes contact with the PCB pads, giving more freedom in routing. In my case I can now route on a single 2 sided PCB.

    The HP45 connector is founds here: It is also on Alibaba through the same supplier. While it states it can supply small quantities for under $10, my experience is that those prices start happening at size 100. You get these connectors unassembled, dropping an assembled one is cause for much tears.

    I myself have bought a batch at CFConn. I now have way to many. I sell them on Tindie right now. I will start selling more HP45 related components later when the documentation is finished.

    The HP45 connector uses tiny gold plated springs and pins in a plastic housing to make connection to the HP45. The travel is about 1.5mm on each pin.

    3 locating pins locate the connector to the PCB. 3 holes can be used to mount the connector. the 2 outer holes are 2.8mm, the inner hole is 3.85mm. I use the 2 outer holes with M3 cutting into the holes, but I am still looking for proper plastic screws. To make a connection with this printhead, you'll need 52 located pads on a (preferably gold plated) PCB. I have included the KiCAD files on the page of the connector, here on my own site, or is in the electronics section of the source files.

    I currently have 2 boards, a breakout board that breaks the 52 pins out to 2 2x10 pin boxed headers (grounds are shared) and 1 driver board. The...

    Read more »

  • She prints!

    Yvo de Haas09/24/2018 at 18:51 0 comments

    Not much, not amazing, but prints nonetheless.

    I have made all modifications to 3D print in the last few weeks. Now all I need is to try out more, and make the improvements to make it better. Currently I am printing in original Zcorp powder with HP45 ink. I got this powder (and binder) from a friend a few years ago. I have yet to experiment with my own powders and have only tested with this so far. I printed a 12mm diameter by 3mm disk as a proof of concept. The part was strong enough for removal and cleaning.

    There are a few limitations at this moment. I have not yet had the time to modify printheads. This means I am printing in pure ink. This means that 1. my print is extremely black and 2. the green strength (untreated part strength) is poor. The powder has a lot of chunks, hairs and other contaminants in it. I still need to filter it through a mesh some time. I have to use the depowdering tools I made for Plan B ( I have no good superglue anymore to infiltrate the parts, so I have no pictures of finished parts. The part broke while infiltrating with bad superglue.

    Those are all the tiny problems left. I can easily fix them with some time though, so it is all right.

    Pistons and new layer

    The pistons now have seals in them. I have used sponge for a while because it is low friction and flexible. I have a little leak on the feed piston to fix, but other than that it is powdertight.

    While preparing to print, I made some final tweaks to the new layer function. I have made it so the last motion is always up. Even on movements down it will now move down too far, and back up again. This is to ensure accuracy. By always moving in the same direction you prevent the backlash in the leadscrew causing problems. I cannot move both pistons at the same time due to GRBL 4th axis issues, so moving pistons is not terribly fast.

    The current sequence is:

    1. Move to the back of the feed piston*;
    2. raise the feed, lower the build;
    3. starts spreader and move to overshoot position;
    4. stop spreader, move pistons down by clearance distance*.

    (*all piston movements will go down first so they always move up)


    I finally added the polycarbonate to the frame of Oasis and it looks amazing. This cover serves to keep the dust from printing in, and the dust and junk from me being there out. I wanted to have it on before the powder would sit for longer times in the open.

    USB cable

    I finally wired the USB cable through the ribbon cable (no good photo's :( ) This was the plan all along, but now with the cover in place I needed to do it. Else I have no way of connecting a USB to the printhead with the cover closed. I will try and finish up the wiring diagram of Oasis now that I am finished.

    (near) future updates

    I realized that I need to give some more information on the actual HP45 connector side of things. I will do this soon'ish, as well as actually making the HP45 connector (and some of the boards) available for sale. The connectors are hard to come by in small quantities, so I had to buy a lot of them.

    I will fix the printing and post processing issues I have right now, and maybe print a few more challenging parts. I will also attempt to refill a head with actual binder in the near future.

    Hackaday prize video in a few weeks.

    I will also start on making some of the assembly instructions, and file packages available. I do not think many people would want to start on this yet (while it is still a working prototype) but I won't let missing files be the limitation.

View all 23 project logs

  • 1
    Before you start assembling

    You want to build an Oasis. Neat. Be aware that it is a prototype and not a finished, optimized product. Toolchain, Software and firmware still needs to be optimized. Why is there documentation if it is not finished. Because it works.

    All the most up to date files for Oasis are here, in the file section of the page. To make an Oasis you will need 3 files the most. The first is an excel file called 'Oasis total BOM *date*'. This contains the full Bill of Materials for Oasis, mechanical  and electrical. The second is 'OA-Y00-A01-00 3D-PDF *date*' This is a 3D PDF of the mechanical build of Oasis. This should help aid in the building of Oasis. The last is a zip file 'Oasis make package *date*' This contains all files and drawings to make an Oasis.

    After extracting you will see 4 folders. 'Electronics', 'Firmware', 'mechanical', and 'software'. Each folder contains all necessary files to make an Oasis for that category.

    In 'Mechanical' There is a certain file structure in the names. All custom parts and assemblies have the name: 'OA-Ynn-Ann-nn' or 'OA-Ynn-Pnn-nn', where 'n' is a number. 'OA' is the project (Oasis), 'Ynn' is the group, or subassembly. 'Pnn' is a part, 'Ann' is an assembly, and the last 'nn' is the revision. The project starts at 'OA-Y00-A01-00' (as of writing. If you see a higher revision, don't worry and pick that). This contains the full drawing of the assembly, and refers to other subassemblies and parts.

    In each subfolder you will find at least one PDF drawing of that subassembly, PDF drawings of parts you might need to make, and STL files of parts you need to print. All drawings and step files are accompanied with STEP files you can open in many CAD packages for reference or to change them.

    These drawings, accompanied with the 3D PDF, should help you assemble the mechanicals of Oasis.

    Now the bad news. I do not have a full set of photos in the order of assembly. I built what is in the files over 3 months, improving parts as I built. In my drawings, I tried to give a good suggestion for order, but the photo's will not follow that. If you want to assemble it in your own order, feel free. All the the provided photo's are for reference and not in chronological order at all. Nonetheless I hope they will be useful.

  • 2
    Assembling electronics

    The electronics can be installed afterwards, but in order to keep this guide as chronological as possible, it is first time to assemble the electronics. In the BOM, under 'Electrical' you will find a list of components, including what name they have on the PCB, and the footprint.  I will be hand soldering SMD in this example, so it might be a bit messy in places.

    HP45 driver board

    The first board and the most complex board is the driver. This driver board controls all addresses, primitives and has the ability to test the nozzles.

    Install the capacitors. The footprint of the capacitors is 0603 and they should be at least 16V. C1, C6, C7, C8, C10, C11 are 0.1uF,  C2, C4 are 1uF. Polarity does not matter on these capacitors.

    Install the resistors. The footprint of all resistors is 0603, they should be 1% and need to be around 0.1W. R7, R11, R12 are 330Ω, R5 is 1.2kΩ, R1, R2, R3, R4, R9, R10 are 2.2kΩ and R6, R8 are 10kΩ.

    Install the mosfets. There are several types. Q1 and Q2 are the small ones. They are PMV20CNER and have a SOT-23 footprint. They only serve to shift level, so any low threshold voltage N channel mosfet should work. Q3 is the big one. It is a SIRA12DP-T1-GE3 in an SO-8 power pack. It needs low on resistance and a gate voltage lower than 3V. The dot marks the orientation for Q3.

    The IC's are plentiful on the driver board. IC1, IC3, IC6 are HEF4017 with package SOIC-16 3.9mm. The exact 4017 is not important, only that it is at least 15V. IC5 is HCF4081, the package SOIC-14 3.9mm. Again, only voltage is important. IC2, IC4 are TLC59213. Rhese will be most difficult to solder. The package is TSSOP-20. Foot pitch is 0.65mm. The last component is C7, LM311. It is SOIC-8. On all components there are dots and marks to indicate orientation.

    Install the Electrolytic capacitors. C3, C5 are 100uF, 16V minimum, package 8mm, height lower than 10mm. C9 is 1uF, 16V minimum, package 4mm.

    Mount the HP45 connector using M3x6 or #6 screws (I am experimenting with #6, if they behave I will include them in what I sell. The holes are not actually big enough for #6, so I do have to ream the holes right now.

    2x 16 pin female headers, 2.54mm (J1, J2)

    HP45 controller board

    Mount the U1 7805 voltage regulator, footprint TO263-2.

    Place the Teensy 3.2 on the controller to align the male headers. Solder a few of the pins on the Teensy (But NOT on the PCB) to secure the headers. You'll need 2x 1x14, 1x 1x5 and 1x 1x3.

    Solder SMD male header 2x7 (or 2x 1x7) under the Teensy 3.2. Make sure it is aligned with other headers. Make sure all SMD pads under teensy make good connection to the Teensy if you permanently solder it in place. Once it is in place, you cannot access it to repair a solder joint.

    Solder the Teensy 3.2 to controller board. Here you can optionally solder female headers to the board. Be aware though that this will increase the height of the whole assembly to a point where it will not properly fit in Oasis.

    Solder the electrolytic capacitors C1, C2. 100uF, 16V min, package 8mm.

    Solder the male headers 2x 1x16, 2.54mm pitch (J4, J5), 1x4 female header, pitch 2.54mm (J3). 1x3 3,5mm screw terminal (J1).

    Put boards together and enjoy.

  • 3
    Assembling the frame

    The first component that needs to be built is the base frame. In the drawings this is Y10. The drawings for these parts are: OA-Y10-A01-00 (frame) and OA-Y10-A02-00 (Lid). It is easiest to start with the 2 sides, then add the middle profiles to it. The bottoms of the side frames need to be tapped M8 to hold the feet. The 2 30x60 profiles do not reach all the way. They are 30mm short to allow passage of the X driveshaft and belt.

View all 15 instructions

Enjoy this project?



max wrote 02/28/2020 at 03:08 point

I am wondering if this is precise enough to be able to very small thin sheets of a material that maybe flexible, and if it is possible to add more extruder heads for increased printing speeds or multiple material printing

  Are you sure? yes | no

Yvo de Haas wrote 03/02/2020 at 17:31 point

The droplet size is around 0.05mm, so an individual droplet is incredibly tiny. You can use bigger printheads to increase speed. I only have a swatch size of 0.5" (12.7mm). There are printheads available that do a full 200mm in one go. I however do not have cheap access to that.

As for the multiple materials. The bulk of the properties comes from the powder, not the binder. Using different binders will not change much in most cases.

  Are you sure? yes | no

Cake wrote 02/23/2020 at 13:44 point

You know if this works then basically you could set up a computer to computer LAN or internet network where you have two of these 3D printers hooked up to the network and you can basically send 3d prints over the internet. The file that is, and this would be as close to a replicator as you can get.

  Are you sure? yes | no

EleanaC wrote 02/04/2020 at 19:26 point

Hi Yvo!

Your project is very impressive.!

Concerning the software portion of the printer, when I try to run the interface there are errors saying PyQt5 an not find the Qpixmap, Qcolor, and Qimage modules. Maybe you could help me out. 


  Are you sure? yes | no

Yvo de Haas wrote 02/09/2020 at 08:23 point

I am not really an expert on python at all. I do see where the code is trying to fetch these. Bone obvious question, did you install the libraries PyQT5, together with all other libraries mentioned in the instructions step 11? (Pyserial and Numpy)

  Are you sure? yes | no

EleanaC wrote 02/09/2020 at 09:19 point

Yes I did. Did you download PyQt5 through command prompt? Or what was your installation process?

  Are you sure? yes | no

Yvo de Haas wrote 02/09/2020 at 15:57 point

Standard procedure, pip install PyQt5. Your instance for some reason cannot find the modules in the library.

  Are you sure? yes | no

Phil wrote 09/20/2019 at 12:12 point

Hi Yvo,

I realised your Project, more than less :)

But I have a Problem with the connection to the HP Printhead. 

If I want to Test the Head I get this message in Arduino: 


Also in Oasis I can not connect to the printhead.

Message: Connection with HP failed

Maybe you could help me out with some hint.

Thanks from Germany

  Are you sure? yes | no

Yvo de Haas wrote 09/20/2019 at 18:25 point


The response THD:qqqqqqpVVVVVVVAAAAAAAKqqqqqqoAAAAAAAAAAAAAAKqqqqqq tells me that a lot of nozzles appear to be working, but I think not all of them. The values are in base64.

What operating system are you using. On windows, you need to write "com$" in the box left to connect, where $ is the port number your HP45 controller is connected to. On linux it is "/def/ttyUSB$"

  Are you sure? yes | no

Phil wrote 09/21/2019 at 06:30 point

Thank you for your very fast answer. 

Its Windows. I will try it with the com$. 

But I think something is missing or incorrect with my connection. 

With GTP for example, i dont get the printhead temp....just the response GTP:-C

Thanks a lot 

  Are you sure? yes | no

Yvo de Haas wrote 09/21/2019 at 08:05 point

There is no way you have it wired up wrongly and still get an answer. Either it responds, or it doesn't. com$ (like com2 or com5 or whatever com your head is connected to) is not optional. Arduino also requires you to select a com port, but already culls the list a little and gives you the options. Oasis for now requires you to manually give the port to connect to.

The code you write to the printhead is NOT human readable. It is not designed to be human readable. It is computer readable. The protocol consists of an up to 4 letter code (always 3 for Oasis), followed followed by an optional integer value in base 64, and an optional raw value in base 64 (up to 50 characters).

You send 'GTP', a command that asks the printhead to respond with it's temperature. The printhead sends 'GTP' back to notify what the value returned is for, a ':', and a value in base 64. In your case '-C', or -2 in human readable. -2 means the value is out of bounds and usually means you have no printhead connected.

It seems to me like it is perfectly connected

  Are you sure? yes | no

IVAN wrote 07/24/2019 at 21:20 point

You did not try to speak out the resulting ceramic products ...

  Are you sure? yes | no

dtcerrone wrote 07/07/2019 at 07:11 point

Hi there! This printer looks awesome and I would like to try to make it and possibly merge it with another printer. 

I'm just curious what the total build cost for this printer was? I am aware that it would most likely be different for me but, something as a baseline would be nice. 

Also, on a side note, is there anything that would hold me back from making the feed and build pistons larger?

  Are you sure? yes | no

Yvo de Haas wrote 07/07/2019 at 10:37 point

In the order of $1000 to $1500. 

The current software does not allow you to send inkjet lines while moving. This somewhat limits how long a sweep can be, though a lower resolution allows for longer sweeps. Other than that, nothing is stopping you. Oasis is built for roughly 200x200x200 pistons. It only has pistons this small so I can test powders on it first.

  Are you sure? yes | no

aglocorea2 wrote 07/05/2019 at 01:36 point

Hello Yvo.I'm making a your 3d printer. i finished to make mechnical parts. but there are some question about electric parts.First, i ordered pcb board and soldered electric devices and followed one by one your instructions.GRBL is working as well. i can move motors such as X,Y,Feed,Build. but Python window says qtext~~~, 

Second, hp45 board does' work. i connected hp45 by oasis and i saw word 'hp45 open'.some programs are working. example when i press test, it change 300/300 from 0/300.and when i move encoder strip. y axis is changing. and set position also change current y axis position. but it doesn't work preheat, prime. Temp fixed -0.2 and Buffer write left fixed about 997~999.During repeat this process, there was a smoke in teensy 3.2. After that, there is the symptom that the computer did not recognize it. so i trash two teensy board.

Also i have a question. when connect the power cable to HP45 standalone controller board, i connected 12v-3a adaptor directly to screw board 2,3. is it right?

  Are you sure? yes | no

Yvo de Haas wrote 07/06/2019 at 18:47 point

Sad to hear you have issues.

The board can take 12V input directly.

There is a jumper near the power input. Is this connected? Else only the address logic has power, and not the head logic.

Also, what version of the board did you get made. Is the LM311 fix in on V3.01 present and or fixed on your board?  Did you make the board from the gerber files, or from the Kicad output. V3.01 had a grave mistake on the Kicad output. Do you have a photo of a bare PCB?

I cannot really image what would be able to fry a teensy on this board, but I hope it can be figured out. Are you sure all components are in the right place?

  Are you sure? yes | no

metallplast wrote 06/07/2019 at 10:30 point


Have you ever used any other printer head? I'm interested in making 3d sand printer with using furan-based resin as an ink, so i need more resistant printer head (like polygraphic). I would be grateful if you give me a piece of advice to choose suitable head.

  Are you sure? yes | no

Yvo de Haas wrote 06/09/2019 at 07:23 point

I myself have only ever used the C6602A, a 12 nozzle printhead for competing with dot matrix printers. On my forum there are people working with the XAAR128.

For sand printing, a company called ExOne does print sand in furan resin. I am not 100% sure, but I do believe that that uses bubblejets, like the HP45, and not Piezo inkjet like the XAAR. Why this is, I do not know, but perhaps the HP45 is robust enough to print your resin. Else, look up the Xaar 128. The knowledge on driving it is there.

  Are you sure? yes | no

mohammadarefara wrote 04/27/2019 at 16:38 point

hi mr  dragonator 
I have a lot of time Which following hacking the hp45 cartridges from the site ,
I'm trying a one year , But the cartridge output is incomplete , I acted on the site ,I do not know why,
Please guide me ,I'm really confused and I do not know what to do and  I need her very much.
Thank you for your attention.

  Are you sure? yes | no

Barragan wrote 04/25/2019 at 12:57 point


  Are you sure? yes | no

Sam billings wrote 04/22/2019 at 07:02 point

First of all Congratulations for great success. I am interested to try this hardware. Is all the files you shared is ready to use. Even i am thinking of STM32 ARM 32 bit MCU with Keil MDK for debugging instead of Teensy 3.2. 

  Are you sure? yes | no

Thomas Duursma wrote 04/14/2019 at 20:09 point

Do these prints suffer from shrinkage or expansion after printing?

Also, how quickly does the binding take place?

  Are you sure? yes | no

Yvo de Haas wrote 04/15/2019 at 06:45 point

It really depends on how you post process them. If you treat them with CA, there is no appreciable shrink (it might gain a thin shell of CA). If you bake ceramic parts, there will be significant shrinkage (tens of percents)

The binder usually needs an hour or so to dry after the part is done printing. As far as I know this can be accelerated with heating up the green part.

  Are you sure? yes | no

jmc wrote 04/09/2019 at 21:28 point

Great project! Are your stepper motors running at full power? I currently have 4 StepStick modules which are limited to 1A compared to the 2A Polulu drivers.

  Are you sure? yes | no

Yvo de Haas wrote 04/10/2019 at 16:39 point

I think not. I adjust them to the lowest power the printer will move at. I think 1A should be fine. Worst case you can adjust the speeds so it will work again.

  Are you sure? yes | no

kschlot wrote 04/09/2019 at 17:27 point

I can control each stepper motor individually using the oasis software by sending G code but when I upload an  SVG file and try to print with the motors all together I get an error. Is this a common mistake? How does one go about trying to troubleshoot this issue? 

  Are you sure? yes | no

Yvo de Haas wrote 04/10/2019 at 16:36 point

What type of error do you get. The GRBL driver has several protections built in that will trigger if it was not configured correctly first. Also, the GRBL motion with 2 pistons is not standard, this firmware different. Did you install the provided package?

  Are you sure? yes | no

erichochgesang wrote 03/28/2019 at 19:21 point

Has anyone used metal powder with this? If so, what binder did you use? Trying to use metal powder soon, having a hard time finding binder. Any thoughts? Thanks.

  Are you sure? yes | no

erichochgesang wrote 03/28/2019 at 19:21 point

Going to use steel powder

  Are you sure? yes | no

Yvo de Haas wrote 03/30/2019 at 18:13 point

Sadly, I haven't. I know it is possible from an old episode of how it is made about metal 3D printing, but I have no clue what  powders and binders are used.

  Are you sure? yes | no

erichochgesang wrote 01/17/2019 at 20:41 point

For the frame what did you buy for the 230V input, power supply connector?

I am in the United States, so I assume we would by a 120V input.

Thank you.

  Are you sure? yes | no

Yvo de Haas wrote 01/22/2019 at 18:34 point

There is a random 230V connector with switch and fuse mounted to the frame, but it was not a standardized part. I got mine from a local electronics store. Use whatever connector suits you the best (or wire the plug directly to the power supply). There is simply too much variation for me to give helpful advise.

  Are you sure? yes | no

erichochgesang wrote 03/28/2019 at 19:20 point

Thank you Yvo, I really appreciate it.

  Are you sure? yes | no

1464739008a wrote 12/25/2018 at 14:19 point

Thank you very much sir for your answers last time,but here are some further questions about your answer of question3
first,you said that"The HP45 serial window does not actually get any text. This made the code unstable, and I turned it off."
  Do your words mean that showing the values in the command 
windows will made the code unstable,so you switch it off.
And this remains to be solved?If it is solved, then can  we successfully see the values in the command windows?
What's more, you said that if l have a printhead in, l can see those values such as temperature and position when l press “test”, however,we have a printhead but we still can not see the values in the software(Oasis controller),
the temperature keeps jumping quickly without any regulation from -40——300, the command window shows“the hp45 is open”,so what is the problem?
Furthermore, when we press “home”, the stepper motor start beeping(we think that it means the motor start work), but don’t move, only we press the limit switch of motor , it will move and the restoration begins on the x axe and y axe. Is it the problem of motor?  
Besides, when we press the “feed up and feed down”, the feeders only move one step, and then stop, we have to press it continnuely(many times)  Is it the problem of motor or the problem of other things?
Finally, have you ever met with the cold solder joint and solder skips, what is your way to correct these mistake? Because we think that maybe our hardware have something wrong, so we want to have a check.  
Once again thank you very much, sincerely.

  Are you sure? yes | no

Yvo de Haas wrote 04/06/2019 at 09:21 point

The Serial window for the printhead does not show input and output. It is still being sent, but it will not show there. The code will be redone later, but I am working on a different project now first.

The temperature and position should update automatically, the only value that should change when you press test is the 0/300 value (ideally it should become 300/300). An erotic value of temperature usually means that the analog pin that measures the value is floating (not connected). Position should always show when connected.

Based on what did you make your PCB's? The already present gerber files or the Kicad files?

A humming motor usually means that the motor is trying to move faster than it can go. When you press the endstop, the motor moves back a little and then moves towards the endstop slower. Either you microstepping is not configured right (the headers under the motor drivers) or the speed in GRBL set too high (this needs to be configured before use).

The pistons only move 1mm when you press the button. That is by design. It is the easiest and most stable way of programming it. Ten clicks gives 10mm.

I do some basic visual tests and some measurements when I make a PCB, but I rarely have big issues. The worst I usually have is one pin not soldered correct, and I then redo it by hand.

  Are you sure? yes | no

thomas.ebel wrote 12/06/2018 at 14:35 point

Hi Yvo! First of all: really nice work! We are building an Oasis Printer right now, and the mechanical part is ready 95%. I am still struggling a bit with the electronics. In your CAD file you have a Raspberry 10" Touchscreen, but I can't find anything in the BOM. What is needed exactly? Best regards, Thomas

  Are you sure? yes | no

Yvo de Haas wrote 12/07/2018 at 07:22 point

The 10" Touchscreen and pi were designed in, but not yet used. I currently have the electronics attached to a laptop. It is not required.

To give the idea, have a raspberry pi, with a pi touchscreen, in the front of the printer, running the Oasis controller software. From here you can control the printer.

If you do have any more questions, feel free to ask them.

  Are you sure? yes | no

wikyxx8 wrote 11/18/2018 at 09:52 point

Hello,Sir,your project is fabulous,and we are now trying to follow your project,we have already complete the firmware and the software,however now we meet some problems,


first is the part of circuitry connection,some of your circuitry map show that some wires should link to GND, does it means connect to the ground or connect to the negative electrode?

Ťhe second problem is of the software part. In your instruction 11, when we open the "Oasis, and try to connect the motion(in my computer it is com4), python shows such a information:” (Make sure 'QTextCursor' is registered using qRegisterMetaType().)” why is this happened? How can I solve it?


The third problem is also in the instruction the process of controlling HP45, HP45 can be successfully connected , but the python only shows that HP45 is opened ,there is no more informantion about the condition of HP45, so we doubt that we didn’t successfully connect HP45. Is that a problem or it is just normal?

  Are you sure? yes | no

Yvo de Haas wrote 11/19/2018 at 17:12 point

I treat the GND as the negative electrode.

The warnings I had as well. Some of the widgets I used do not like the way I use them and python throws some errors. It was planned to be fixed a while ago, together with some other things, but I had issues and did not fix it. It should not give any issues. It is still planned to be fixed, but won't be for a while.

The HP45 serial window does not actually get any text. This made the code unstable, and I turned it off. In the same package of fixes this was to be addressed, but QT gave problems. The command window should tell whether you are connected. The temperature, lines left and position should now update. If you do have a printhead in, you can also see values when you press 'test', but without a printhead this just returns 0.

  Are you sure? yes | no

kschlot wrote 04/03/2019 at 20:58 point


I am also having this error when I home the motion controller. Is there a way to bypass this error and get it to work without it? I am having trouble getting any motor to move. Any help would be appreciated. 

  Are you sure? yes | no

Joeri wrote 09/15/2018 at 17:51 point

would color printing be an easy addition to this printer?

  Are you sure? yes | no

Yvo de Haas wrote 09/16/2018 at 17:40 point

The size of the printer is as it is so I can have a row of printheads, or another printhead that has CMYK. Oasis in it's current configuration cannot. It needs a faster printhead driver that takes 5 printheads before I can print in color, but that would be possible. All other additions are software.

  Are you sure? yes | no

Similar Projects

Does this project spark your interest?

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