-
The ideal workflow
05/07/2017 at 20:18 • 0 commentsOne of the things I haven't covered in depth is how I want the printer to function. First I want it to be completely independent, so it doesn't need any additional computers to function. The ideal case would be if it was network attached device, so one could print from any computer on the local internet. It would be cool if it had some sort of cloud to store all the files to print. So the idea is one would just send the stl over the internet to the printer. Printer would then do all the work. I first had an idea where i would use google cloud with 2 folders, one for queue and one for active file. It could work but it feels more as a makeshift protocol than a professional workflow. There is still a large number of possibilities, but for now I will be focusing more on a LAN attached device. There are two possible ways, one being that SBC functions like a NAS on which user uploads stl files, and starts the printer over web dashboard. The other way is to upload files and start the printer trough a web dashboard. The idea with NAS would be great as one could have stored files that he could frequently use. But this idea adds one unecessary step to the process. The ultimate idea with LAN printer is to do everything trough web dashboard. The problem mostly lies in my knowledge about creating websites and especially ones with functions connected to separate programs.
Also i have made a github repo with full firmware and software that i have used. Link is in the project details
-
Progress on the printhead replacement
05/06/2017 at 21:25 • 0 commentsI have already started on replacing the Xaar head with HP45. It will make a printer at least 50$ cheaper to build. I am in process of finishing the mounts for the head and its driver unit. I still have to make a Maple Mini to apropriate connector PCB. For now i will be making it using toner transfer method. For now i still need to decide how I want to controll the head with the main unit. I will probably stick to SPI with communication simmilar to Xaar128. There is one problem as previous head had only 128 nozzles at 200DPI and the newer one has 300 at 600DPI. So if we take a look at how much data is needed for one sweep, where we write every pixel with one bit and 4 inch sweep length, we are looking at 192400 bits for previous head and 720000 bits. This is of course too much to store in a microcontroller or even send across the SPI due to possible communication fails. Because of this I will be probably doing a 2 slave SPI communication from SBC (beaglebone black or raspberry pi) to main controller and head controller. I will be sending packets with 16bits of data, first 9 being nozzle numbers and last 7 being run length. I will try to write the software on the SBC so it will arange the run lengths in a chronological way. This way I could also have the communication with only one byte of data (used to send the run length). For this to work I would also need another connection between the head controller and the SBC, this one being just a simple pulse to request data.
Anyway this still needs some thinking to be made, but meanwhile I can focus on gathering the needed materials or upgrading independent faulty bits (wiggle in the axis)
-
What about materials?
05/05/2017 at 20:36 • 0 commentsWhile I was searching internet for cheapest hydroxyapatite offer, I stumbled upon articles, that described how to synthesize this material. At first glance it seemed as somewhat complicated process, but after some reading it became more and more doable. Maybe it would be fun to find a way to do the process at home with products being ready to use in a 3D printer. Whole process could also be automated using some pH probes and syringe pumps. Whole device could possibly be 3D printed, so it could be used as a standalone machine for creation 3D printer substrate.
If i understood corectly, one needs CaO and phosphoric solution to produce a hydroxapatite. The process is done by mixing. It also needs regulation of pH (i think). This all seems pretty much doable. The reactants should not be so hard to get (CaO is lime and phosphoric solution shouldn't be too hard to get). Then I would just use a jar as a mixing chamber with 3D printed lid. The lid would contain 2 inlets for pH regulation (2 syringe pumps with HCl and NaOH), 1 inlet for phosphoric solution, some sort of trickler for lime input and few sensors (probably just pH and temperature probes). I would als add a outlet pipe connected to a peristaltic pump to a suspension reservoir. All could be controlled using a arduino. There could also be a peltier element to heat or cool the jar for best possible output (if it would be worth it of course).
Note that this is just my thought process. It is a result of the fact that cheap hydroxyapatite is almost non existent in case of purchasing. I still want to print a whole object, but for this I would need one liter of this powder (>1 kg; approximately 600 €/100g over at sigma aldrich). If I will be able to find someone who could help me on this subject, I will definitely think of doing it.
If you have any ideas I would be pleased to know. I would be also happy if someone would be able to try creating the hydroxyapatite powder themeselves as I have quite a lot of work to do regarding the printer itself.
-
What now?
05/04/2017 at 21:18 • 0 commentsThis project has been more or less a proof of concept type deal. Now it is time to make it easier to use, faster more accurate, etc. If I want to start improving anything I have to most of the faulty bits and find a way to improve them. Here is a list of the major ones:
- Wobble in the X axis due to asymetrical drive
- Slow y axis movement
- Expensive and low spec printhead
- Ineffective controller
- Ineffective powder storage method
- Different motor drivers
- No feedback sensors
- Messy wiring
- Beta stage software
- Buggy firmware
- Need of additional computer
It is important to do this process step by step, so for example I shouldn't just go replacing all of the construction, as better motors could have different mechanical properties or needs. I have made a some sort of a plan of attack that focuses on upgrading the printer. The plan is as follows
- Replacement of Xaar128 with HP45
- Replacement of Arduino MEGA 2560 with Maple Mini
- Addition of drive pulley on x axis
- Addition of feedback sensors
- Firmware debugging and improvement
- Addition of SBC
- Software improvement
- Replacement of stepper driven threaded rod on y axis with servo driven pulley drive
- Replacement of stepper drivers with 2 pololu A4988s
- Replacement of old construction with newer one, that has only 1 cylinder and hopper based feed system
- Wiring cleanup
Note that most tasks are connected in some way. This is only a chronological order of major changes. Also some can be done during the upgrade eg. wiring cleanup.
-
Materials research vol. 4: Dodecyl benzene sulfonic acid
05/03/2017 at 17:53 • 0 commentsThis was the last aditive i have tried. Dodecyl benzene sulfonic acid (I'll be calling it DDBSA) is a surfactant. This means that it lowers surface tension. It can be used as a detergent, wetting agent, emulsifier, foaming agent and dispersant. I have used it as a wetting agent. As it is an acid I couldn't have added it to the liquid binder as it would slowly destroy the printhead. This way I had to get it in contact with water but not with the head. The easiest way was to coat the powder particles.
This was done by putting the powder in 0,1% DDBSA solution. Then i had let it mix for about a day (could be a lot less, but I wanted to rule out the variables). After that powder needed to be filtered. I have noticed that it is best to filter it slowly as too much flow will also wash away DDBSA molecules.
I had done many tests to find the best parameters. I won't be discussing them here as they are quite boring. I found out that mixing a 0,1% DDBSA solution and Hydroxyapatite gives good enough (we don't want to add too much additives and DDBSA is not good for human body) results at a ratio 1g of hydroxyapatite powder per 10ml od DDBSA solution. I have also found out that spray drying gives effective results at 1g/1ml ratio.
To sum up DDBSA did quite good in my case. It could be also used for some other material. But it shouldn't be used with any material, that can be corroded by acid.
P.S. This is my final log of making an overview of what I have done up to this point. I will try to continue publishing every day, but I need a topic. If you want anything specific just ask in the comments or private messages.
-
The software and firmware of the printer
05/02/2017 at 19:45 • 0 commentsThese are my final entry describing how I have built my 3d printer. They are not so complicated because I have tried to keep it simple as it was just a simple proof of concept. Now that I have seen some flaws and bugs in the algorithms, I can start working on a better firmware and software.
FIRMWARE
The firmware is nothing more than a serial communication command interpreter, run length decoder and some code to execute simple procedures like adding a new layer, printing a layer and piston movement. The largest part of the firmware is run length decoding and layer printing (they are combined to make it as fast as possible).
Printing of one layer from firmware perspective looks something like this:
- Addition of one layer
- Reception of data for single pass
- Printing of single pass (processing and applying data form 2. step)
- Returning to zero X position and required Y position
These are then repeated until the whole layer is printed.
The data is sent to printhead in lines where the first three numbers specify nozzle (0 to 127), then there is a delimiter {, up to 20 ints separated by commas and finally a final delimiters } and ;. The ints tell the controller how many steps (not motor step but a move for 0, 136 or the nozzle pitch) does the printer need to make along the x axis untill the state of the specified nozzle is changed. The firmware is then basicly just counting how many steps has it made from previous nozzle state change or zero X position. Then it just compares this to buffered data. If the two are equal then a the state of the nozzle is negated.
SOFTWARE
Whole software is built to take in the Slic3r svg file. The file is then read layer by layer. Only one layer is used at a time (depending on the actual layer that is being printed). All of the polygons are read from the active layer and stored in to RAM. Then point in polygon algorithm is run on these polygons for all nozzle positions in one pass (move along the X axis). Because we need run lengths this program also counts steps head needs to make before it changes nozzle state. The software also coordinates printer movement and steps in the printing process.
All of the files used are now on the project site.
-
Materials research vol. 3 Portland cement
05/01/2017 at 19:04 • 0 commentsI used portland cement as a binder because it is already used in dental medicine to prepare MTA cement. It works based on a series of chemical reactions that in the end make a mixture of chemical substances which slowly crystalize. Process of crystalization can take up to few months. The strength of the final material depends on how long has it been left to cure. This process can also be sped up with other chemicals or soaking the object in warm water.
Firs I have started with making a mixture of hydroxyapatite with 10%, 20%, 30%, 40% and 50% of portland cement in it. All of the mixtures worked. The best results were observed with 30% portland cement and 70% hydroxyapatite mixture. This material also had one bonus as I didn't have to sinter it as it was already hard enough. There is still one problem though: I don't know the effects of portland cement on human body. If there aren't any it could be used without problems as it is the easiest to use and make.
Printing with cement is a bit of a nuisance, as the wetting area is usualy at least twice the size of the drop. This can be prevented by using alcochols with big concentrations. There is also one more problem as this material cures even in plain air. Because of this I had to get big lumps out of the feed cylinder every day.
This material could be used just by itself as it is very reliable and easy to use. It could also be mixed with some other powders to give it color or some specific texture, but do not use it in conjunction with metals as non cured cement is alkaline and corrosive. I would say that this materials is mostly for artists, because it does not have any particular use in technology or engineering
-
The electronics of the printer
04/30/2017 at 21:12 • 0 commentsThe electronics I have used are mostly based around the existing 3D printer controllers. Based on that I have a microcontroller controlling a series of motor drivers. I have even tried using ramps 1.4 with 4 pololu a4988 stepper drivers, but they got fried in the process. So I was left with one working pololu stepper driver and a arduino MEGA 2560 with a bricked power stabiliser. I managed to replace the faulty element with one from arduino uno that died few years ago. With one driver working, I had to design 3 more with one being for a servo. This way i have decided to use h-bridges (i only had 2 of them) and an ULN2803 with outputs and inputs connected in pairs. This is why my printer uses 4 different electronics to drive the steppers. With that out of the way I also had to design a way to control the power on the printhead. I did that using 2 relays one for each high voltage (35V) line on the Xaar 128. I also added few diodes and capacitors to smooth the spikes caused by either power supply or the printhead. There is also one relay more that is meant to turn on or off the spreader motor.
MOTOR DRIVERS
As I have said I am using few different motor drivers. Controlling these isn't such a problem as I am using accelstepper which takes care of different ways to drive a stepper.
The servo is a bit more complicated as it needs few components more to function. These components are the power driver which is a h-bridge (L298), Arduino UNO controller, DC motor and a 500PPR quadrature encoder. It is nothing special as other people have made all of the programming in the past. The most tedious part is finetuning the PID algorithm.
THE PRINTHEAD
Xaar 128
For now I am still using the Xaar 128 printhead. It is controlled via SPI. In the head there are 2 SPI slave chips, each one receives 8 bytes of data, which are equal to 64 bits which represent the state of single nozzle.
Besides the spi Xaar 128 printhead has an output to tell the micro whether it is ready and few inputs that are used for triggering and enabling the nozzle. There are also 2 35V power lines (one is for low noise low current voltage and the second one is high current voltage line) and a single 5V logic power line.
HP 45
As I have stated few days ago I will be replacing the Xaar 128 with a HP 45 printhead. I will be using Ytec3D HP45 driver (read the forum for more info). In conjunction with the driver I will also use a Leaflabs Maple Mini (STM32F103 microcontroller) to convert SPI commands to signals for the driver.
THE CONTROLLER
Arduino MEGA
For now I am using the Arduino MEGA 2560. It is a really good board for most projects, but it is barely capable of driving this printer. The biggest problem is the RAM on it. It is just not sufficient enough. With run length encoding I could barely squeze 128 data sets of 20 nozzle state changes. If I change to HP 45 this controller wont be usable because of the fact that the new head has 300 nozzles instead of just 128.
Maple Mini
With the change of the printhead I also have to change the controller. I will be changing it for a maple mini. With this i will more than double the RAM needs, and also lower the cost of the printer. I was also thinking of using STM discovery F3, but I am not capable enough to use it yet. Maple mini is also a better choice as i will have two of them. They will be communicating over SPI. This way I could also unload all printhead data to one on the printhead and leave all of the movement on the other. This way i could also make the head trigger based off the encoder input.
-
Materials research vol. 2: Methyl cellulose
04/29/2017 at 20:48 • 0 commentsThe first aditive that I have tried to use as a binder for hydroxyapatite is methyl cellulose. It is a polymer simmilar to cellulose. It has no interaction with human body, as it can not be digested. This is one of the reasons why it seemed as a great aditive. It can also be used for making metal clays, which makes it quite commonly used in jewelery. This was also one of the reasons why I thought of using it, as it binds together particles with small forces in between them or no at all. Methyl cellulose also burns away in the process of sintering, which makes it even better.
To start off I first made samples with hydroxyapatite and 50%, 40%, 30%, 20% or 10% of its mass being methyl cellulose. I found out that below 20% mixture was not usable as it did not form any usable solids when wetted. I found out that the best one was around 40% methylcellulose. This sample also had clay like properties. Then i left the samples to dry. The samples that solidified were quite strong. After that i put them into a kiln at 1300°C for 10h to heat up, 2h to be stable and 12h to cool down. The results were quite disappointing as the sintered objects were then just a piles of slightly sintered hydroxyapatite. I think this is due to the fact that methyl cellulose burns away at lower temperatures. Because of that and the fact that methyl cellulose made the most of the volume of the sample as it has quite low density. This all led to methyl cellulose burning away and very porous object that didn't bind together as it did not melt yet.
Anyway I still have hopes for methyl cellulose as it could be used to print objects that aren't going to be sintered. These objects would probably need to be coated with something that would increase its strength (eg. ca glue). This method would probably be cool to be used with some fine ground sands made of different colored minerals. Methyl cellulsoe could also be used to print out of materials with lower melting points (eg. some metals like tin, gold, silver... maybe even aluminum). These could then be sintered. One should keep in mind how much material like this would shrink.
To conclude methy cellulose isn't usable to use with hydroxyapatite to print bones, but it is still promising as it could be used with other materials.