2D printing is now almost working. It is not perfect in several ways, but it is capable enough that I am convinced it will work for 3D printing.
What was wrong in the previous log:
- 1 mask was flipped in the firmware. This caused the wrong row to start when the right row entered or exited the print area, cutting off 4mm of odd or even on either side of the print. The mask was flipped the right way around. The print improved immediately.
- one of the Base 64 en/decodings is the wrong way around, sending the nozzles in order 6,5,4,3,2,1 instead of 1,2,3,4,5,6. I have dug quite deep, but have not found where. I then decided that I was lazy and flipped it in the software. This turned diagonal lines from jagged to perfectly straight.
- head needed to be cleaned with alcohol before printing. The ink in the heads dries quickly, and within a minute the head becomes clogged. Simply wiping it with a paper towel helps, but cleaning it with a paper towel soaked in 70% IPA worked wonders. It gives about 30 seconds to start the print. Not ideal, but workable.
There are a few small things left to be done before I can print well enough for 3D:
- The first sweep after starting up sometimes does not print. This is firmware side and has been there since the first tests. I know where the problem happens, and have fixes ready.
- The first sweep of a print is offset by around 0,5mm. This seems to be some encoder drift from the motion between the home position and the other smaller movements. All other sweeps in a long print line up perfectly. The exact nature of the problem remains a bit of a mystery.
- At least 1 pair, probably 2 pairs of nozzles are swapped. I will do a few tests to narrow down which. If I can also identify the nozzles that are swapped with, I will fix, else I will simply disable for now.
- Software DPI setting. The software does not yet have all checks in place to change the nozzles per inch sent to the printhead. I will add this during phase 2, where it actually becomes important in the SVG parsing as well. Firmware side already handles it fine.
- mystery exit on occasion. Haven't had it for a while, but the code has mysteriously exited with a code I cannot find right now (-10#... with around 12 numbers (negative)). The problem is gone for now, but I will keep my eyes open.
There is also one issue I will not be fixing for now. I cannot properly send lines of code while the printhead is printing. Somewhere in the mess of code, probably in the Python side, the software refuses to send code fast enough. I have had other mystery issues where some threads do things instantly, while others take forever, and these same threads at other times run fast. The short of it is that I am limited to 1000 lines of inkjet code. With DPI working and set to 150, I can easily print any print I have had on Plan B with room to spare. I already had to send long dithered images before I was reaching the limit of the buffer. This is why I have decided not to pursue any fix for the 'cannot send while moving' problem until I am done with phase 2. 'First make it work, then make it better'.
Phase 2 has now started
In phase 2 I will be converting Oasis from a working 2D printer to a working 3D printer.
For this I will need to complete the following tasks:
- Designing and building 2 powder pistons. The most obvious thing I need is 2 hoppers, 1 feed and 1 build. These are going to be small, around 80-100mm in diameter. Small because every square centimeter of hopper also needs to be filled with powder, and I want to test around with powders a bit. Round because it is a shape I can buy off the shelf. Bigger hoppers will be designed eventually.
- Spreader wired up and working. The spreader is in place, it only lacked the motor when I was building it. I have to print a pulley, attach the motor to the spreader, and wire something into the GRBL driver so I can make the spreader rotate.
- Overshoot bin for excess powder. By default the feed hopper should give too much powder to ensure the build hopper is always filled. Any excess needs to be caught. Space is reserved for a bin at the end of the hoppers to leave this excess powder. I only need to build it.
- SVG to print array function (slic3r svg). Right now the software uses bitmap images. I need to add SVG to the options. I will use Slic3r SVG's for input files. Slic3r has a nice function where it exports the slices of the stl file to SVG for use in DLP printers. I have parsed these files raw on a teensy before, so using SVG tools in python should give me the option to convert these files to the print arrays that I use. If the worst happens I can write a parser myself, but that is a worst case option.
later I will:
- (priming/cleaning head station for printhead). The printhead dries out quickly, and needs to be primed before every print. The real printer has a station where it cleans and starts the head. I will eventually need something like this, though it is no priority right now.
Finally, the files for software and firmware have been updated. This version is capable (with some flaws) to send images to the printhead and print them. Soft- and firmware and 3D files will receive changes soon, this is only a snapshot.
https://ytec3d.com/oasis-download-page/
(PS. anyone with the illusion that my work on this project will enrich the world with beautiful code will have that illusion shattered the moment they see the code. I will make it work, after the Hackaday prize is done, I will see if I can get it made properly)
Discussions
Become a Hackaday.io Member
Create an account to leave a comment. Already have an account? Log In.