Halcyon Mini: World's Most Compact Direct-Drive 3D Printer
Halcyon Mini: World's Most Compact Direct-Drive 3D Printer
An ultra-compact CoreXY 3D printer design with a 35% smaller footprint and 50% smaller overall volume than the Voron V0 with the same usable print size
An ultra-compact desktop 3D printer that maximizes build volume vs overall footprint.
Space-efficiency in 3D Printing
I’ve always wanted a compact, enclosed machine, and I saw just how much space many of them wasted when I first used a Qidi X Plus II. While it’s not CoreXY, it’s this massive hunk of plastic that doesn’t really need to be that large. Most are kit builds - Voron designs being the most popular. Their smallest design, the V0.2, is a tiny desktop printer that uses 15mm rails for the frame instead of the traditional 20mm. The outer dimensions are []. However, the actual print area is just 120mm^3. This is due to the toolhead design, and extra space in the motion system caused by using standard-length linear rails.
There’s nothing inherently wrong with using extra space - Voron printers are very thoroughly-thought-out, proven designs. But I don’t need that space. And I live in a small space (both in a dorm and home) I want something that does’t take up much space on my desk. Why make printer big when small printer do trick?
Well, what improvements can we make?
Make the Hotend more compact. Traditional toolhead designs include cooling, leveling sensors, and all sorts of silly, useless (kidding) things. By shrinking the toolhead, we waste less of our gantry to plastic and fans. The goal here is to fit the hotend within the linear rail carriage (30mm wide)
Re-route belt path. This is where some significant savings come in. By redirecting belts, we can fit the entire xy motion system (barring the motors) within the confines of the linear rails.
Allow the gantry to move over frame. This saves us ~15mm in the rear (not insignificant). The gantry will be able to slide over the front of the motors in the back, using otherwide dead space.
This project initially started when I wanted to take a crack at converting my Creality CR-10 into a compact coreXY 3D printer. In fact, at the time, I told a freind of mine “don’t let me spend any money on this project.” But, as all hobby projects do, this one changed. Instead of converting my old printer, I decided to start a new project (therefore bypassing the “don’t spend any money” rule) and set out to make the most compact 3D printer that I possibly could. We’ll be making compromises here. Cooling will be difficult, as will hotend design and chassis rigidity. But we’ll make as few as possible.
How is space being wasted?
Toolheads, even compact ones, are generally quite wide, requiring a significant amount of space in the x-direction. This eats up travel distance, requiring the use of longer linear rails.
First Prototypes
Our goal is to constrain most of the motion system (belt redirects) within the linear rail carriages. I have access to a waterjet at university, so I decided to use sheet metal parts in the construction. This also meant I could easily prototype using scrap wood on our laser cutter. This is the first prototype that I assembled. It had a 190x190mm build plate, and was designed with the linear rails on the upper surface. The linear rails are 220mm rails - accounting for the carriage width, this gives me 190mm of travel. If I can keep the toolhead within the 30mm carriage, I can maintain that full 190mm build area without using that much extra space.
The following design succeeded at this.
Overall outer dimensions are 275.5x254mm. This maintains the full 190mm^2 build area by overlapping the extruder mount points with the frame plates.
parts for V2 ready for assembly
v1
V1 - checking belt routing
Motion Test
After confirming everything lined up with the wood model, I added the motors. I’m using two LDO LDO-35STH52 stepper motors, with a Raspberry Pi Zero W running Klipper.
Further motion experiments
Maxed out motion limits and got a quick motion test file going for fun
Cranked up the amperage to 1.3A as a test, will lower it back down after this.
Also figured out how to do arcs in gcode - this isn’t useful for printing, but it’s good to know!
testing doesn’t always go perfectly!
I ended up raising it to 22k after this without issue
Moving to 24v and turning off stealthchop helped quite a lot 😬 config: github commit
Metal Test
After the successful motion test, I decided to downsize. It would make my prototyping easier and less wasteful, especially since I was planning to prototype it in metal. It would also allow me to 3D print the full plates on my main printer, for the summer months when I don’t have access to the Protomax.
I moved to a design with a 120mm^2 build area, resulting in outer dimensions of roughly 190x185mm.
This was cut out on an OMAX Protomax from 1/8” 5052 aluminum. It ended up being overbuilt, especially for the gantry. Aluminum is non-magnetic and easy to work with - it allowed me to thread the holes and post-process easily.
Refining the design
Now that the gantry was proven to be at the very least feasible, I began working on the rest of the CAD model. The gantry was the sticking point - now that it works, I can work on the rest.
Changes: 7-12-2024
I transitioned to a front-routed belt setup, barring further issues (this does cause clearance problems a lil bit tho)
I moved to using aluminum extrusions for the main frame
Toolhead design is complete
There is a pre-existing design for the bed mounting for the Voron V0 called the Kirigami bed mount. I briefly flirted with the idea of a side-mounted bed, but I decided to forgo that, as it would make cooling fan mounting more difficult.
Issues with Sheet Metal CAD
What in the world is going on here…?
It turns out that it’s due to the sheet metal part - because the way Fusion360 works with sheet metal, angles end up not being exact. This would usually not be an issue, but I started to run into issues with constraints failing to solve. Mocking up an “ideal” model of the mounting plate allowed me to continue (mostly) without issue.
Moving towards printing
I purchased up everything I need to get printing from West3D in Oregon - shoutout to them for feedback during the process!
Orbiter v2 Extruder (no motor)
Trianglelab Bambu TZ 2.0 HF
Slice engineering 30x10 fan for hotend
1515 Aluminum extrusions
Got some advice as well for the config: Motor max current 70% of rated (1-1.1) but lower (~0.7) is probably ideal. I updated this in the config. Next step was to verify my parts didn’t have glaring issues before ordering the sheet metal.
7-10-2024
7-10-2024
I used a circular saw to cut the aluminum extrusions, and pre-assembled the bed motion system
7-14-2024
The test parts
I cut slots out of the parts to save on material usage
The belt retention mechanism worked very well. - 8-2-2024
Updated hotend design
8/14/2024: ALIVE AND PRINTING
Takeaways
I have determined that the Voron team is right (shocker) and will be re-routing the belts once more. Routing the belts around the front causes two main issues:
The front of the frame needs to be reinforced significantly to prevent the belts from pulling the frame out of square. This can be overcome with support plates, but those block access to the bed when starting a print and overall limit visibility and access.
Routing the belts in this manner causes the belt teeth to come into contact with the bearings more frequently. If I re-route the belts as I did in the original design, there’s only one point of unnecessary contact between the belt teeth and a bearing surface. Avoiding teeth-bearing interactions should reduce artifacts in the final print.
Re-routing the belts will allow me to stiffen the frame, have better access in the front, and provide more room for cooling. It may result in a slight size increase, but the benefits outweigh the costs. Using quality 5mm bearings will help with this.
Building V2
10-11-24: Parametric, Baby!
Finally nailed the parametric nature of this thing. Can also adjust the motor position.
Material selection (12/17/24)
Chromoly seems to be 3x stiffer than aluminum of the same thickness. Same with galvanized steel Using steel for the top/bottom plates will help with any possible bimetallic expansion issues with the linear rail - not a huge issue because of the size of this printer, but good to note. that, combined with being lighter (because of thickness?) and stiffer, could be a good reason to switch. check bolt sizes/lengths though - currently, we’re at 24.5mm bolts. any less and things might get weird.
12-19-2024: Decisions and sheet metal learnings
I discovered sheet metal in fusion can be WAY easier than I thought. afaik, I don’t actually need to create a flat sketch and then un-bend it - I can create my static bodies, then convert them to sheet metal, pull the flange where it needs to go, and use the solid menu to combine them. unfolding then works as normal.
I’m going with the sideways hotend again. hopefully this is the correct choice, but it makes sense for a few reasons:
less hot air blasted at abs parts
clearer path for air to escape heatsink
easier mounting (?) seems a little cleaner, IMO
moves nozzle forward for better rear motion clearance
Note: sinking in rivnut things
what if instead of pressing the nuts into the metal, you just used the metal as a way to hold normal nuts in place, and then kept the plastic parts down onto the metal with the m2 bolts? I know this is technically less stiff, but it might be ok - check how much material is available for locking the printed spacers down. it might be plenty, especially considering the direction of the load. this also allows for less threading or countersinking or whatever. even tho - just using the tip of a drill but to “countersink” part of the hole, then setting in a normal m3 nut seemed to work fine that one time. unsure if that was 3mm or 2mm aluminum tho. (shucks, I’m almost certain it was 3mm. could do the same thing with the self-clinching nuts tho - just don’t actually press them in. countersink with drill bit until flush and let friction stop them from spinning.
12-19-2024 (daytime)
might be choosing to do a bottom plate design as well (sandwich-style) - in that case, you can countersink m3 bolts into the sheet metal to attach them to the extrusions, instead of relying on the m2 bolts from the rails. just a thought.
Progress Update:
Belt tensioners
The belt tensioners work by having an m3 bolt push against an m2 nut - this protects the plastic a bit. It has to be offset from the center of the motor clamp (blue) but that “shouldn’t” be an issue. I think it’ll be fine!
This is a VERY preliminary prototype, and will be iterated on quite a bit more. The clamp will likely be extended upwards in the back to meet the upper idler block (or something similar)
ooo wait - could i fix that possible issue in the front with the belt teeth running over the small pulley and causing vibrations?
OOOOO
wait - this might work (dotted is OD)
on the right image, the smooth bearing flange protrudes.
fix 1: I already included a bit of clearance on the sides (1mm each, I think?) and that would be enough for this
alternative: move the hotend over 1mm. this MAY cause issues with the spring, but in reality that was something we were gonna need to deal with anyways. also adds more room for the fan on the left side… 👀
routing the belts this way would likely BOTH reduce friction and in turn, reduce wear on the teeth.
if you put a plate here (and maybe extended towards/through the sides?) you would massively stiffen the motor block area and potentially prevent it from bowing. would also mean you could do something different with the top plate, for aesthetic OR legit reasons. importantly though, you’d need to include a spacer in the middle that locks it in place. when tensioning motors, it’d need to be pre-clamped in the middle as to not introduce a bend during tensioning.
would look better visually too 😉
A note on linear rail mounting
Putting a plate of some kind here would be beneficial for a few reasons:
Mount linear rails to it. These should now fit in front of the motor given the different hotend position.
Isolate electronics from heat
Make it easier to seal chamber from outside world, depending on Z leadscrew mounting.
New Year, New Printer - 1/26/25
Quick design update. Designed the front idler blocks, though I haven’t yet swapped the bearing order in the front. I’ll be using my previous toolhead for testing, but the next design will include the Berd Air cooling tubing.