Week 6. 3D Scanning and Printing
6. 3D Scanning and Printing
We will be using two 3D printers:
The Ultimaker 2+ (Dutch 3D printer with heated bed)
Prusa i3 MK3S MMU2S (a 3D printer that can be easily fixed)
And for a 3D scan we will be using the Sense 3D scanner from 3DSystems
3D test print for the group assignment
3D scan of my head (14,3 MB)
3D head model made in Fusion360 (9,6 MB)
STL export of the model head
G-code for printing the head
Smart watch case and cover Fusion360
Ultimaker file watch case
Gcode Ultimaker watch case
Cover Gcode Prusa
You can print with different materials (plastics), mainly PLA is used now, because it is less toxic than ABS and there is a version of that is biodegradable and made from bio-materials. Each type of plastic has its own properties like melting point, strength and application. Like PVA which can be desolve in water. Currently no 3D printing materials are really food safe, but if you want to see some work with almost foodsafe material, take a look at the work of Anne.
Basic steps for a 3D print with the Prusa MK3
- Create a 3D printable object and export as STL
- Import STL in Cura software
- Position on the surface in the software to determine printing position and orientation.
- Change the settings to support your printing details as Material, Nozzle size, Layer Height. If you hover your mouse over a property the software will tell you what it is for. The recommended settings most of the times are sufficient. With Custom settings you can set more advanced settings.
- Material: PLA
- Nozzle: 0.4 mm
- Layer Height: (height of one layer, the lower the layer height the slower to print, try to keep it a multiple for your nozzle size.
The advice is to keep the layer height not higher than half the extruder diameter. In this case 0.4 mm is our nozzle, so 0.2mm is maximum layer height.)
- Print speed: (3D printing is a slow process, if you know your material properties and printer behavior you can tweak and increase the speed)
- Infill (how solid a structure is, 100% is fully solid, the more solid the slower printing, 40% takes already a long time to print, different infill patterns can be used for different structures) Note that with printing and infill you will need to make sure you have a solid design, if surfaces are not connected, you will not get an infill.
- Generate Support (will create support bridges for your design, to be able to print surfaces that are not build up from the base plate.) In the Layer View you see how your design will be printed. You can sue the vertical slider to see the build-up of layers.
- Build Plate Adhesion (Also known as Brim, creates a bottom support layer to print on. Making your design attach sturdier to the base plate. You can select several structures like a Brim, Skirt or Raft.)
- Export your G-code and store it on a SD-Card
- Insert the SD-Card into the 3D printer (Ultimaker or Prusa)
- Place our filament (1.75mm PLA Prusament for the Prusa), make sure your filament is properly rolled. Crossed lines can cause to much friction for the printer to load the filament.
- When you turn the printer on it gives you information about the bed temperature, nozle temperature, ect.
select preheat option sand wait for head and bed to heat head: 265 bed:60/60
load filament by hand and select load filament
It is a good custom to calibrate your system before printing using the calibrate option,
First layer calibration, level your bed for z height, it will automatically level the bed.
The line should be straight and flat, if the line is not nice adjust the z axis. See the manual for difference in lines.
- Select your file from the menu, print from SD, if you set the settings for the printer in your file this will be automatically used, it will start when heating in ready.
- While printing you can tune the settings, increase, decrease speed, flow, degrees.
- You can even pause the printing to check your print. Or stop if something went wrong.
- While printing stay on watch to see it build the first layers. These are the most likely to go wrong, and sometimes you can tune them enough to fix your print. In between it is good to check if everything goes as planned.
Protip: If you generate the G-code from Cura the Prusa printer wont show estimated time, if you use Slicer, it does.
Protip: For example to remove exes filament in settings you can freely move the head and bed and disable steppers to freely move the head and bed.
We will be testing the printer capability of 3 different 3D printers: the Prusa MK3, Ultimaker 2+ and the PrintrBot.
Me and Heide will be using the Ultimaker 2+. For the other printers check the work of:
A test print with the PrintrBot by Anne and Rutger
A test print with the Cura by Micky
1. Preparing a file/object to print
- Downloaded the 3D test file from https://www.thingiverse.com/thing:1363023
- Opened version 0.4 mm in Cura.
- We checked printer for Ultimaker 2+
- We checked the filamend. PLA : GIL-A-GEHR PLA 2.85 mm. Default heating for nozzle and bed.
- Pressed prepare, default settings show 2.13 hours
- Increased layer height to 0.15 mm and pressed prepare than got a result of 1.13 hours.
- When inserting SD-card the “save” button changed to “save to Removable Drive”!
2. Preparing the 3D printer (Ultimaker)
- Insert SD-card in machine
- Clean the build plate before you print, ours was really dirty.
- Calibrate-> Maintenance, and select build plate. Went through the steps of setting the distance of the head to the bed using a sheet of paper and turning the bed.
- Selected the file from the SD-card and the printer started heating and when finished heating started printing.
3. Printing with many failures
- While printing the filament was curling from the bed. We came up with 3 options why this could be the case:
- plate not properly cleaned (we used Dreft)
- bed temperature not properly set (we looked in Heatup build plate settings, when we stopped it, it was at 52)
- not the correct temperature for the filament.
We cleaned the build plate with glass cleaner
We checked the temperature for the filament. Could not find the details on the manufacturer website for the PLA
- During the next print test we checked the temperature in the settings during printing, they were fine, still we had the problem.
But only on the front. By pressing the plate a little bit up the problem was resolved.
- We recalibrated the plate using the calibration settings and retried the print and waited till the bed was heated, had even worse results, the material was sticking to the nozzle.
- We recalibrate, but again it was getting lose. and experimented with the speed while printing, that seemed to have some effect. Abort.
- We recalibrate again and made it even a tighter fit for the paper. Had some help from Henk and Anne for the proper fit. Still no success.
- Anne pointed us to some more problems. The printing nozzle was really old and not so pointy anymore. This causes the nozzle to stick to the material.
We changed out the nozzle for a new 0.6 mm nozzle, adapted the print file and re uploaded it to the SD-card.
Tried printing it again, and still had that the PLA did not wanted to attach properly to the base plate.
- We applied APRINTAPRO PrintaStick to the base plate and that made the PLA stick to the surface!
4. Printing with result
After waiting for almost 2 hours we got a finished result!
We waited till the bed was cooled a little bit and removed the test print from the printer using a scraper. It was firmly attached to the base.
We used the test measurements from the description and image provided with the file from Thingyverse.
Our result was not as nice as the result from the other printers. Still with this test we proved you can print something at a decent detail.
A test print with the PrintrBot by Anne and Rutger
A test print with the Cura by Micky
|01.Nut, Size M4 Nut should fit perfectly||Fits good|
|02. Wave, rounded print||Good|
|03. Star, Sharp Edges||Ok, could have sharper edges|
|04. Name, Complex Shapes||Ok, little filament inside, could be from the base|
|05. Holes, Size 3, 4, 5 mm||2,5 - 3,5 - 4,5 mm|
|06. minimal Distance: 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7 mm||Walls are missing, minimal distance cut-outs barely, filled with filament|
|07. Z height: 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1.0, 1.1 mm||Good, only difficult to measure because of the brim|
|08. Wall Thickness: 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7 mm||Fail, only the 0.7mm|
|09. Bridge Print: 2, 4, 8, 16 mm||Did print, broke after removal|
|10. Sphere, Rounded Print 4.8mm height||Check, 4.8 mm|
|11. Sphere Mix, 7 mm height||Check, 7 mm|
|12. Pyramide, 7 mm height||Check, 7 mm|
|13. Overhang: 25, 30, 35, 40, 45, 50, 55, 60, 65, 70°||Ok, with some filament in-between|
|14. Warp, does it bend?||It does not bend|
|15. 3D Print Font, optimized for 3D printing||Not clearly visible because of 0.6mm nozzle|
|16. Surface, Flatness||Flat before removal|
|17. Size, 100 x 100mm x 23.83 (10mm width)||93,5 mm|
|18. Spike, minimum Layer Time, 21 mm height from Bottom (include Baseplate)||Tip broke off after removal of base|
|19. Hole in Wall, 4 mm diameter, check for proper print||Not perfectly round, 4mm|
|20. Raft Test, raft should be just under the model||Did not do the raft test|
|21. Retract Travel, check retract settings for longer travel||Did not enable this|
We will be using the Sense 3D hand scanner from 3DSystems to make a 3D scan that we can 3D print.
As an example we will be making a Lego Minifigure head using our own head as a base.
A human head is a good example of a shape that cannot be made supstractively from one peace using a CNC-router. This is because of the head-shape has curves on all sides, something that can be made using a 3D printer, but we will be needing support bridges.
There are many 3D scanning hardware and software around ranging from cheap to expensive. There are many apps for your smartphone you can use. Be aware that depending on your used hardware and software you may have different results. Also lighting, a steady hand and the reflectiveness of the object are big influencers on your scan.
In my case we scanned my head using Sense 3D. It is a portable hand scanner that uses the camera and infrared sensor to take depth images, special software stitches the images together and allows the image to be exported to an object file. As you can see in the image we scanned by standing still and rotating the head using a chair.
At the stitch (the part where your 360 scan starts and ends) you might have artifacts, so make sure your stitch is at a place where these artifacts are less relevant. In my case we started at the nose and scanned the front of the head first. We also tried with the back of the head, with Heidi, this gave strange results at the hair. With my head you can see my left and right mouth corners are a bit out of line.
2. Scan to Printable object (with Fusion360)
Note that most of the times a 3D scan cannot be printed directly without editing. As with this example you need to remove extra parts in the scan, add custom 3D shapes to the object, reduce the number of faces and resize to the correct size to make a printable object.
In my example I use Fusion360 to make a printable object.
I first imported the scan in Fusion360 and edited it to a printable model that would fit a lego minifigure.
To be able to edit imported scannes you have to active Mesh edit mode in preferences.
Select unwanted properties and deleted using “Delete Faces” function.
Close off the Mesh with option “Make Closed Mesh”
Then I had to reduce the number of meshes to be able to create a body out of the mesh with the option “Mesh to BRep”.
I created a cirle roughly the size of my nek, and extruded a cilinder from it.
I joined the cilinder with the solid head.
I rescaled to the desired size, using the neck as a base, the width became about 6 mm in stead of 1277 mm! Wow!
I created a circle and extruded that to be the cutout cilinder for the Lego figure head. Diameter 4.86 mm, height 6 mm. And cut the cilinder from the neck.
For the lego measurements I used the measurements from: https://bricks.stackexchange.com/questions/288/what-are-the-dimensions-of-a-lego-brick and https://lego.fandom.com/wiki/Minifigure
Last I selected the object and exported the object to a STL file.
3. Printing with Cura
I imported the STL in cura and set print speed to 30 cm/s instead of 50 and layer height to 0.1 mm for the correct level of detail.
My first tries failed on the BCN3D printer. For this printer I used a special version of Cura for the BCN3D that can be found here, because it was having trouble with tranfering the filament to the nozle. The servo transfering the filament kept having problems with putting the the filament through. The servo probably needs cleaning. Unfortunately this was not easy to do, a bit part of the printer needs to be dismantled for this. We did not had the time to do this now, so we tried to replace the damaged filament, hoping the servo would work. After replacing the filament, we encountered the same error twice, forcing me to swith printer.
After failures to get the BCN3D printer to work I tried on the Prusa MK3, this gave results, unfortunately the print started moving.
The Prusa is a great printer, it can auto calibrate, it is easy to controll and because of its open structure easy to repair. Also the flexible bed makes it easy to remove the print.
Because my first print started to move, I added a build plate adhesion and support to furter reduce fails. This worked, after two prints I had a printed head!
4. Finishing work after printing
The final result had support, which I carefully removed. It left some sharp residu that I removed with a veil.
When testing the head, I concluded the hole was to tight, an error in my lego measurements. I printer 4.8mm instead of 4.9 or 5 mm.
I carefully removed 0.1 mm to make a perfect fit.
After all the work the final result could be fitted to the lego minifig.
For my final project I created and printed two designs that cannot be made using substractive methods on the Shopbot.
My watchbody had cutouts on both the top and bottom, and my watch cover is hollow, but with a small ring inside, making it inpossible to mill.
3D print body
For my final body design I opened my molding design and changed the width parameter to fit my new board size.
Fusion360 automatically updated the size of my bodies to the new parameters.
I added a mount for the on/off switch.
The datasheet provided the dimension, that I copied to my parameters in Fusion360.
I started on adjusting my button/switch holder, I extracted the rectangle from my sketch, than wanted to make a hollow form out of my new cube.
Then something happened: TRIAGE!
I had reached the time to start my 3D print. It was Friday and around 1400. If I really wanted to print a case that day, I had to finish my design in a few minutes. I had to drop my holder for the switch, and just print the design I created earlier.
After this painfull decision, I took the Ultimaker 2+, exported my design from Fusion to Cura, and copied my specifications from my previous description. With an infill of 20% it will the Ultimaker take about 1,5 hours, not bad.
I added a build plate and supports. The build to prevent the print from moving, and the supports for my small cutout I made at the bottom for the armband.
I switched filament from black to white and performed a first test print of a small servo arm of our group machine to make sure there was no more black in the nozle, and I had the device properly calibrated.
After the servo arm was finished I loaded my case design.
After 1,5 hours it was finished. And the result looked nice, besides that one of the arm band mounts was 2 mm off!
I checked my design, and just before exporting I accidentally moved the mount with my mouse!
I fixed my mistake, reexported to cura and exported to the Ultimaker.
This time printing went succesfull.
One thing that still went wrong was that the support was fused to my small cutout for the armband.
I accepted this fail, since the other parts of the body were perfect, and you wont see this mistake when wearing the watch.
3D print cover with prusa
After having a working body, I found an extra hour to design a cover for my body.
Although I tried to keep it simple it became complex fast.
First I started by extracting the circle of my watchsketch, and them adding about 0.1 mm to make sure my cover would be a little bit larger than the body. I noticed my electronics was allready sticking out of the watch case, so I made my top 7mm high to make sure all the electronics would fit.
Next I made a shell of my cilinder, but keeping the top solid.
To make sure the whole cilinder would not slide over my watch case, I had to ad some form of legs inside my cover to stop at the edge of my watch case.
I decided to extract another cilinder from my watch circle from the sketch, but only making it 1 mm high and then making a shell out of it off about 1 mm width. So I ended up with a small ring that would fit exactly on top of my watch cover.
I combined the ring and cover on about a 1 mm height, giving me the stop at the edge of my watch inside my cover.
For esthetics reasons I extracted the TIKTOK markings . and , from the sketch and combined them with the cover by extracting them from a fraction of a mm of the top of the cover.
Last I extracted also two small cilinders of 1 mm each right above where my LEDs of my microcontroller board are.
Maybe I can connect some form of light guidance to this in the future, for example with glass fiber. But that will be after the Fabacademy course due to time constraints.
I exported the cover to an STL, and imported it in a new piece of software Prusa Slicer
Due to the Ultimaker not being available I had to switch to the Prusa i3 MK3S MMU2S.
This is the improved prusa MK3S, having a module that allowes to print with different filament at the same time!
I am not using different filament, I just want to quickly print this cover with one color.
But the new module does mean I have to use Prusa Slicer instead of Cura.
If provides pretty much the same settings options as Cura, only with the addition of the extra filament.
Also it has a beginner mode, making it easy for me to use.
I used the following settings:
- filament: Prusament PLA (red)
- printer: Prusa i3 MK3S MMU2S Single
- supports: supports on build plate only
- brim: yes
- infill 15%
I cleaned the board, loaded the filament in the first hole of the new module (the Prusa auto graps the filament, when you load in the hole), and started the print.
As with the Ultimaker the first print failed, now the brim was wrapping upwards.
I cancelled the job and started a new one again.
Now everything went fine and after an hour I had a big red cover, and trying to fit it on the watch case made a beautifull snapping sound!
Filament not sticking to bed
Both with the Ultimaker as with the Pruza I had that the fillament did not wanted to stick to the bed.
With Heidi, I explored the problems with the Ultimaker, it was a dirty not resently used device, which led to multiple problems. Through itterations we defined the following problems:
- printer not properly calibrated -> the distance between the nozle and the bed should be precise and levelled, we went to the printer calibration process several times to determine what was a proper distance.
- bed not clean -> a dirty bed can result in uneven prints, we cleaned our bed with soap and glass-cleaner
- bed not sticky enough -> a clean glass plate can be to slippy, adding some gluestick or Printastick will create a sticky surface
- old filament -> filament dries out and becomes less flexible, also changing the melting point and cool down time.
- filament not properly heated -> each filament has its own optimal temperature, which can be found in the product sheet, for our filament we had difficulties finding the optimal temperature at the website of the manufacturer.
With the Pruza I had the problem that the print was to small to stick to to the bed. Adding a build plate adhesion to the print resolved this problem.
Printing in the air
With the Ultimaker and the BCN3D we had it printing in the air. With the Ultimaker this turned out that it was not properly calibrated, a new calibration round resolved this. With the BCN3D we did not find all the problems, one problem whas that the filament was not fully extruded by the stepper motor. We were not able to resolve this problem, so we did not looked at why it was printin in the air.
Filament not properly extruded
The BCN3D did not fully extruded the filament. A problem like this can be because of:
- Extruder/nozle can be cloghed, can happen when the filament is not properly heated or dirty nozle
- the filament(roll) can be stuck
- the filament can be broken, this can happen with old filament
- filament not properly heated
- or as in our case the stepper motor serving the filament was malfunctioning. Either there was too much room between the gears of the stepper and the filament, or the stepper was not functioning properly.
Unfortunately we were not able to resolve this problem.
With the printin with the Ultimaker we kept having problems that the filament was not properly disributed and the nozle was moving the extruded filament. Anne pointed us to the problem that the nozle was damaged and did not had a nice point. Replacing the nozle for a new one resvoled these errors.
Failed 3D scan
When scanning an object for a 3D representation, be aware that with most tools you need to scan slowly.
We tried to scan Heidi, and at the first time moved to fast and also Heidi moved to much, this resulted in a very creepy scan.
Also you can have diffuculties with scanning shiny objects, becasue of the many reflections of the object the scanning software can get confused. Always try to keep the object as still as possible, move the camera slowly and make sure there is enough contrast between the boject and the surroundings.
3D scan not able to reduce to object
A 3D scan can be a very big point cloud. This can be easily to big and to complex for your 3D printer.
To reducy this resolution and complexity you should reduce the amount of faces of the 3D object.
Faces are the panes or sides the object is made of. For example a box has 6 faces, a piramid 4, but a shere can have many faces. The amount of faces is the resolution of the object.
You can reduce the amount of faces in a 3D edit software as Fusion360.
Also you can have the problem that our faces are not properly connected to each other, most of the times you cannot make a solid out of your faces when this is the case, but this can also result in your 3D printer printing in the air. You can join the faces in Fusion 360 using the “Make Closed Mesh” option.
Reflection week 6
I must say I am still not a big fan of 3D printing, it is really a hasle to be able to print something. The print itself took about 20 minutes to print, trying to print took me about 3 hours because of all the printer issues!
3D printing will stay difficult using the tools as currently available. Next time when I print I will use the following steps to try to make sure everything goes as planned:
- First decide on the printer and filament and make sure it is available and not broken
- Design or create 3D object to print (keeping in mind the printer and filament capabilities)
- Clean the printer: bed and nozle
- Recalibrate the printer
- Do a quick testprint
- Cleanup, properly store the filament (preferred in vacuum)