At some point in time every (nowadays so-called) Maker needs a 3D-printer of some sort. In this short article I want to show you my design which is capable of printing 326x326x300mm sized parts. The focus was on maximum print/build quality while keeping the design as simple, cheap and compact as possible.
Under construction …
- Max. package: 550x490x500 mm
- Min. print volume: 300x300x300 mm
- Budged: 1500€ – 2000€
- Fast print speeds: >100 mm/s
- High quality prints: Equal of better than other printers in that price range (Ultimaker 3, RailCore II, Zortrax M200, etc.)
- Capable of printing engineering-grade materials (ABS, Nylon, etc.)
- Option to upgrade to multi-material printhead
- Easy to manufacture: No access to NC-Machines
The requirements listed above manly originate from the fact that I need the printer to be big enough to produce highly integrated (high quality) parts for my drone(s). At the same time it needs to fit inside something like a kitchen cabinet since this is the only place where I can store the printer for now.
After some research I found that none of the commercially available printers like the RailCore, Ultimaker 3, Zortrax M-series or Prusa can fulfil all those requirements. The RailCore II 300ZL seems to be a nice machine, but with shipping and up to 19% import duty to Germany I felt like it is a bit expensive.
The basic design follows the concept of a CoreXY. It is superior to other designs like the Prusa Mk2/3 in regards to rigidity, print volume to printer footprint ratio and max. possible speed. That is why a lot of manufacturers use it for their higher quality products with print beds >=250 mm.
Since I am not the first one to build a CoreXY it is worth taking a detailed look at other designs. The following design is heavily inspired by the HyperCube, RailCore II 300ZL and E3D Motion System (Toolchanger). The latter is a great machine with a thoughtful design but seems to be heavily over-engineered (and thus expensive) if you plan to use it for the sole purpose of FFF. I tried to combine as many advantages of those printers as possible. A good source for 3D printer designs is also openbuilds.com. I might add this design when it’s more refined.
In order to meet my requirements the following additional (derived) requirements are needed. Those strongly influence the overall design of the system.
System Definition & Derived Requirements
- No CNC machined parts
- No 3D printed parts for parts subject to higher mechanical loads
- Use of laser/waterjet cut parts combined with bending when necessary
- Genuine high-quality linear rails on all axis
- Bowden style extruder with upgrade option to direct drive extruder
- Low probability of burning down
Laser cutting services are broadly available online and very cheap compared to CNC machined parts. However, the shape and position tolerances are higher compared to NC parts. This will be taken into account. Many laser cutting services also offer a service for bending the cut sheets. The extra costs are still much lower than for a CNC job. Bent parts allow for a more integrated design.
In this section I will go into some details regarding the design decisions of the main components.
All components must be mounted inside the frame to allow the printer to be insulated to trap the heat inside in a later stage. The frame will be made out of 20x20mm aluminium system profiles. Those are commonly used with 3D printers because of their excellent price to performance ration. They come in at a few cents/100 mm. Taking a look at the corresponding tolerance norm for aluminium extruded profiles you can find the EN 755-9 and EN 12020-2. The latter one is 50% more restrictive and profiles are often referred to as precision profiles. Profiles following these norms are guaranteed to be at least that precise.
The linear rails will be mounted directly to the profiles making the straightness tolerance of the profiles one of the key values to guaranty smooth movement and low variation in z-direction of the nozzle (XY-Gantry). EN 12020-2 requires profiles with a length ≤ 1000 to have a max deviation of 0.7 mm. Additionally, on a segment of 300 mm length the max. deviation between the highest and lowest point must be ≤ 0.3 mm. Looking at typical FFF layer heights (~0.2 – 0.3 mm) this still sounds like a lot, but bed levelling and tighter actual tolerances of the profiles will make up for the most of it. HIWIN rails require surfaces with much lower tolerances (~≤ 0.05 mm). That is why CNC machined parts are still the best (and most expensive) option. That is why I want to keep this option. For now, the linear rails will be mounted to the extrusions by only two screws. Since we use genuine high quality rails, the chances are good that they have lower tolerances than the extrusions. By only fixing them at both ends to the profiles, the rails will not bend with the mount surface but keep their current flatness.
To reduce the cost for scews and sliding blocks, high volumes should be bought. This requires a reduction in part variants meaning screws with a certain diameter and length should be used in as many places as possible. Sometimes you just need a few screws of a specific length. In that case, I buy longer screws in bulk and cut them down to the perfect length.
The Frame is designed so that parts of it can be assembled individually and later brought together for final assembly. In this case, it means that the XY-gantry, electronics plate, as well as the Z-Axis, can be assembled without the need for the other components. In case one wants to increase the build volume in z-direction it is only necessary to exchange four aluminium extrusions together with a longer rail and lead screw. The gantry does not have to be disassembled for that purpose.
To increase the rigidity of the frame when printing at higher speeds, I added a back- and sidepanels.
The Z-Axis consists of a single linear rail. Unlike the E3D Motion System/Toolchanger, this design uses a standard rail (not the wide one). The standard rails can take enough static & dynamic moment in all directions. In reality, the load is almost static and only in z-direction. By only using one linear rail the complexity of the system is reduced while reliability and accuracy are increased. Compared to two linear rails/rods this design is less prone to jamming and much easier to align & assemble. Make sure your rail assembly is pre-tensioned. Otherwise, the movement of the printhead will cause the bed to oscillate in the XY-plane.
To mount the print bead to the Z-Axis the design uses a bent 3mm aluminium sheet. This allows the mount to be manufactured in one piece, at low cost while still maintaining high stiffness in the Z-direction. The current design may cause problems in manufacturing since some bending tools will not be able to produce the shape (U-Shape). In my case, the manufacturer offered to introduce a “helper-bend”. That way the shape can still be manufactured in one piece. The “helper-bend” makes sure it fits inside the machine & tooling and will later be “removed”/bent back. A two-part design or a wider mounting surface would eliminate that need.
The deformation of the print bed can be further reduced by using a stiffer material like steel. In many cases however the print bed is made from aluminium which has a higher coefficient of thermal expansion (CTE) than steel. This might result in internal stresses and unexpected bending of the print bed a mount during heat up.
The heart of my CoreXY design is based on laser cut parts and aluminium extrusions. Like others already showed, it is important to properly align the belts. Some belt paths must be parallel to the XY-movement of the printhead.
The gantry uses a 6mm wide 2GT Powergrip belt from Gates together with Gates pulleys and idlers. As stated by others it is important to first design the basic belt path, then order the belt with pulleys and then measure the diameter of the belt when wrapped around the pulley. Now you can adjust the position of your idlers in the design to make sure the belts run in parallel to the corresponding axes.
The design uses stacked belt paths. By stacking the stepper motor on one side the upper belt path can be designed in a way so that it goes around the top of the linear rail carriages. This allows for simple, but strong laser parts with no further modification/bending required.
The idlers in the back of the printer need a rigid mount to keep them from bending. The idea was to use an open square tube with holes to mount the idlers with threaded rods. This all-metal design promises to be very rigid, cheap and easy to manufacture. The most tricky part would be drilling the holes at the exact positions to guaranty a parallel belt path to the Y-Axis. Since the delivery was delayed and I had no drill press at hand I decided to design alternative mounts to be manufactured using SLS together with some other parts I needed. The SLS parts are expected to be sufficiently stiff.
Because of the high tolerances in steel sheets used for laser cutting (surface flatness) we use an aluminum profile for the x-axis carrier. The rail is mounted on the side to gain more build volume in y- & z-direction while keeping the max. package dimensions.
As of version 1.2 of my design the idlers on the X-axis are mounted using dowel pins instead of M5 screws. Together with an adequate fitting, that is the proper way to mount bearings/idlers. The dowel pins come with an internal thread on one side making assembly easy. This mounting method increases the lifetime of the idlers and lowers noise.
The print head will be 3D printed for the most part. I found a very affordable 3D printing service online. This allows me to go for an integral design approach and keep the moving mass as low as possible. Other than that there is not much to say about this part. The belts lock into the printed groves. They are kept in place using two metal plates. Assembly is a bit tricky since you kind of need 3 hands to slightly pre-tension the belts, but apart from that it works just fine.
In version 1.2 the printhead was redesigned so that a 40x40x10mm Noctua fan can be mounted. The Noctua will replace the E3D hotend fan because latter one is way too noisy and vibrates as hell. A new part cooling fan duct makes sure the air mainly cools the part, not the hotend. The new parts are ordered. We’ll see how they perform.
Parts List (Basics)
- 24V 150W Meanwell power supply
- 24V E3D V6 Hotend 1.75mm with bowden adapter
- BondTech BMG Extruder with bowden adapter
- FilaFarm 326×326 build plate with FilaPrint surface and heater
- 3x 59Nm stepper motor
- 1x 49Nm stepper motor
- Duet3D Duet 2 Wifi
- 6mm Powergrip 2GT belt
- Powergrip idlers
- Laser-cut parts, Aluminium extrusions, etc.
- For more info see detailed parts list
Some Parts Arrived
Some pictures of the current build. Side-panels are mounted and add quite some stiffness and style to the printer. The new printhead looks great and performs as expected. It is super quiet now thanks to the Noctua fan.
As for overall print quality the design lives up to its expectations. The layer stacking is perfect, which means no layer shifts etc.. Thanks to the high quality print bed, three point leveling and print surface there is no need for mesh bed leveling. This results in higher print speeds and lower wear (z-axis). Also setup time is reduced. For leveling I do not use positions directly above the leveling screws, but ones slightly inwards of the print bed. My print surface is not perfectly level/flat directly above the screws (+-0.05mm). I use the screw in the back (near z-axis) as a reference for leveling all the others. The one in the back is fixed and defines my ultimate max Z that I write into my config files.
Pictures will follow.
As a print profile I use the default one from Cura 4.5 for custom printers. The 60mm/s default speed and up to 120mm/s travel speed did well during my first test prints. The max accelerations for X & Y still need to be dialed in. I increased the max Z speed and acceleration a lot within the printers config. Helps speeding up calibration/homing runs.
The enclosure is a non-trivial part of the project since I want to print engineering grade materials and do not have a workshop where I could simply place the printer somewhere. The enclosure traps parts of the heat (heat camber) which reduces warping during the printing process. At the same time it prevents my girlfriend from throwing a tantrum when it is tucked away somewhere in a nice box in our apartment.
Pictures will follow
A spare kitchen cabinet is the enclosure of choice. To prevent my apartment from burning down I plate the cabinets ceiling with thin steel sheet metal. The sheets are mounted using screws and steel washers between the wooden ceiling and the metal. The resulting air gap and small contact points function as a kind of heat-brake in case the printer catches fire and heats the metal. The printers side walls are already made out of metal so no need for further protection here. Besides that all electronic components are hidden within a steel box. Chances of a fire actually being able to spread are very low. Still it is good to have a smoke detector within the box (watch max operating temperature!) and a fire extinguisher (with a suitable extinguishing agent) nearby.
Having set-up most of the printer at this moment all seems to work fine except for the following problems:
X-Y Wobble Of Print Bed
Long story short: Make sure the mounting surface of the print bed mount is flat and not bent due to the manufacturing process. For the Z-Axis you must use a beefy pre-tensioned linear guide.
The bigger problem resides within the z-axis. It is not stiff enough in Mx direction. The print bed tends to wobble in the printer’s x-direction when touched slightly. Rapid movements of the print-head could cause the same, thus making the machine very slow or creating very low-quality parts.
I think the instability roots within two things.
One being the bent build-plate mount. Its mounting surface towards the linear guide block is not perfectly flat. The bending process causes the surface to have a slight curve. Screwing the mount to the guide block causes the block to bend slightly as well. Because of that, the pre-tension of the block on the rail gets lost and a slight gap between the bearing balls and the rail forms. That causes a slight play within the mounting system. Bad.
I was able to fix most of that by filing the surface until it was flat. That removed the play. Adding washers also worked. However, the built plate is still not as stiff as I want it.
The second thing is the bearing itself. I guess it’s just not stiff enough. In design-phase, I thought the stiffness of the MGN12H block is sufficient since the bed does not experience higher loads in x-direction during print. I assured myself that the block gives in and not the rail or aluminum profile. Looking at alternatives the next best options are: MGN15C, MGN15H or the wider blocks MGW12C and MGW12H. According to HIWIN the max. static moment and rated load for those is higher. I do not want to order a new build-plate mount. This means the new block must not be too different from the MGN12H when it comes to mounting holes and height. From what I can see, the E3D Motion System uses an MGW12H block with Z1 pre-tension. That one is harder to source and a lot more expensive than the N-Series. A problem that perhaps could have been avoided looking at the radial rigidity of the blocks in the first place. I could not find any data on moment rigidity.
|Load Class||Series||Preload – Z0 [N/μm]||Preload Z1 [N/μm]|
The deformation can be calculated as follows:
|d=P/k||d Deformation [μm]|
P Operating load [N]
k Rigidity [N/μm]
The effect is multiplied by the length of the print bed in the y-direction.
It looks like picking the MGW12C Z0 series instead will not help us much. The MGW12H Z0/1 series got wider mounting holes than my current block. I might not be able to get the new holes next to the old ones. The MGN15H Z1 series got the same stiffness as the MGW12H Z1 (used by the E3D Motion System). I’ll pick that one because it’s dimensions are most similar of all options to my current setup.
Couldn’t find them online so I wrote an email to an online shop that already sells HiWin products for a fair price. They were kind enough to order me the pre-tensioned variant. I’ll post an update once I tested the new ones.
Update #2: I designed an improved bed mount that I got machined using Xeometrys service. To be honest, to machining quality could be a lot better and is below what they specify but the part will still be able to perform accordingly so I decided to not file a complaint. With the new bed mount the z-axis is almost rock solid. You can still move it slightly in XY-direction with your finger, however during prints the wobble is completely gone. I am currently running at jerk values of 1200 mm/min and accelerations of 3000 mm/s². Without testing the limits I think I could go higher.
The new print bed also improves the stiffness in the z-direction. Placing a 950g weight at the center of the bed causes a max. deviation of ~0.10mm of the bed. The deviation was measured at the front edge of the bed where the highest displacement takes place.
Update #1: The print table is a lot more stable now, thanks to the pre-tensioned guide blocks. It’s still not super rigid but seems OK for the job. The remaining wobble might originate from the design again. The top plate that attaches to the z-screw should keep the arms stiff and in place. The print surface is 6mm thick but only mounted using three screws. The design allows for the print-bed to slightly shift, which partly leads to the described wobble effect in XY-direction. Some additional stiffeners in X-configuration mounted further upfront should finally minimize the movement.
Replacing the stock E3D v6 fan with a Noctua one made a massive difference. The radial part cooling fan does a good job at cooling and producing air pressure, however it vibrates a lot at max RPM. The good thing is that ~40-50% fan speed seems to be enough for PLA.
Most gantry movements are quiet. However there are some vibrations when it’s moving in certain directions. I checked everything but couldn’t identify the exact problem. My best guess is that either the bearing block or the gantry beam are the root cause. The bearing block is not pre-tensioned, so it could be that the bearing balls are starting to vibrate during specific movements. My other guess is that due to the length and design of the gantry beam (three parts including extruded profile) hit some resonance frequency. I’ll try to re-align the two Y-Rails with a dial gauge and adjust the belt tension so it is “perfectly” equal on both belts. We’ll see how that changes the noise level. Big printers/structures always tend to be louder during operation than smaller ones.
All in all, I am already very pleased with the noise level. I tested the printer within a closed kitchen cabinet and behind the closed kitchen door. The result is you can barely hear it. Only slightly when operated at speeds that hit the resonance frequency of my frame (~55mm/s).