Snowmen Automata
The Whirling Dervish Tipsy Christmas Snowmen Dancing Troupe
a 3D-printed pocket automata christmas toy, 2023
I was overjoyed when my brother offered me a 3D printer, I'd always wanted to try such a thing out but had decided I just couldn't afford to get myself into yet another expensive hobby! But creating something real, physical, tangible just from pictures I have in my head has been a core appeal to me forever. I loved my time with industrial robots out in SE Asia, mechanical behemoths trundling round a factory floor to the tune of my software programming - it feels like a kind of magic; to shape the world through the power of thought. There's nothing quite like it...
It is of course all just ego, which probably isn't healthy. But it's not an uncommon illness so I thought I would write out my journey with this printer in case it is of interest to the similarly afflicted.
Design
My aim was to make a small christmas automata toy for friends and family. Previous year's christmas builds had taken 4 to 6 weeks hand crafting wooden boxes or enclosures etc so I hoped with an automated printing process the production would be way simpler...
I wanted the toy to be wholly printed, and thought that plastic (well resin) wouldn't have the weight needed to operate an up/down motion reliably - so I decided on a rotating design. To make sure it was fun though I wanted more than one rotating element - so it didn't end up just being a stick that goes round and round... With 2 gears I could have two characters rotating in opposite directions, certainly better than just one stick... but since (I thought) all the effort was in the design phase, I might as well make it a bit more complex. So I added extra gears to provide another pair of characters that would rotate at twice the speed of the first two; which basically allowed me to create a troupe of four whirling dervish snowman characters, perfect for christmas!
I wanted any element to have 3mm of solid material to ensure a suitable degree of strength. With 4mm diameter shafts the smallest gear I could work with would be 14mm in diameter. I thought that was a fair starting point, I could always scale things down on later projects once I had something working.
The main drive gears then were 32mm, giving me the 2:1 ratio I wanted to create the dual speed of the characters on the model. The main input gear (the piece the player turns) was just over 40mm, because that's what I ended up having space for, and I thought getting more than one turn of the characters for each turn of the input crank would be better than a 1-to-1 ratio, a little less obvious and so a tad more enjoyable.
So, to my mind, the toy therefore has an inherent musicality to it with interlaced rhythms of around 4/3 and 4/2, which should make for a jolly jingle.
Here's a picture from blender of what the pieces all look like - there's a couple of extra collets to be fair but here's the key design:
If anyone should want the .stls (or even the blender files) I'll happily reply to emails and send them over.
Modelling
I'm using the free software Blender, which I think is pretty good if way over complex. It tries to answer all 3D needs not just printing allowing things like camera perspectives, shading etc, etc... it also has a lot of add-ons which sort of makes things easier, but not much simpler really.
First thing to get your head around is that it only deals with surfaces - 2D objects arranged in a 3D space. Nothing is truly 'solid'. This doesn't matter if the output is for screen only, but you can end up with weird 'internal' geometries when merging stuff together, or non-manifold edges, or even inside-out faces.
Because the 3D model only describes the surfaces, the printer-slicing software has to determine what is supposed to be the solid printed matter between (or within) those surfaces; which is simple enough if you're dealing with, say, a cube. But most models are more complex than that. E.g. to create a roller for a bearing you might use a pair of cylinders:
The slicing software sees this model as 2 'shells' each of which it fills-in with material; the fact that they overlap is neither here nor there. Each face of a shell has an interior and an exterior side which directs the slicing software's decisions as to where it should create solid material.
The direction of the faces is critical if the slicing software is to understand solid (inside) versus empty (outside) regions. But direction is easily confused in the modelling software (Blender), and so has to be checked (Shift+N in edit mode).
This is a simple example, but even so things get screwy with remarkable ease - all the more so when there are more complex intersections between shells, or when introducing holes into solids.
I also found issues when dealing with more complex intersections. Creating a pair of overlapping tori (for my snowman's scarf) the slicing software complained about 768 bad orientations... This issue went away when I merged the 2 tori in Blender before sending to the slicer, so that it had one really complex shell to manage instead of 2 quite complex shells. Blender is clearly more capable in terms of merging complex maths than the slicer. So as a genral principle now I reduce my models to the smallest number of shells possible before slicing (i.e. boolean merging as many objects together as possible).
I end up having to create the model in Blender with simple atomic shapes (cylinders, cubes etc) and saving that. Then I reduce the model to as few compound objects as possible before exporting the .stl file for the slicer. Any changes to the model means that I have to re-do this reducing step, which is annoying but at least I always know where I am with things. Blender has some neat features (non-destructive modifiers) which would allow this reduction process to be somewhat automated. But honestly things are complex enough so I've adopted a slightly more awkward approach which works for me.
With my snowman I hadn't noticed that the scarf wasn't wrapped tightly enough to keep him warm - I had an unexpected hole between the upper torus of the scarf and his head; an internal hole that can't be seen (okay, so more of a hollow than a hole). The slicer complained about the model's 'integrity' which drove me absolutely potty for hours - until I noticed the slicer thought I had given it 2 shells (even though everything had been merged in Blender). On that occassion I allowed the slicer to do an automatic fix, rather than improving the model in Blender.
In general I don't like doing that. I want the slicer to just be responsible for slicing the model, I don't want it doing some kind of opaque 'automatic fix'. The model is quite a precise mechanical object so I feel I need to know exactly what is being printed; so that I know it will work as expected even after applying minor tweaks. BUT, the snowman is a sculptural characterisation, and it doesn't matter if it ends up looking slightly different to what I expected due to some 'fix' - so I allowed it...
There's a lot of info on-line about preparing 3D models for printing. Stuff like 'checking for none manifold edges'; decimating the geometry; merging vertices by distance... I think that'd be good stuff when it comes to creating very organic sculpted characters, but actually I haven't found any of that gubbings necessary at all when it comes to making precise geometric machines. I didn't do any freehand drawing to create this automata, every action was completed by entering precise numeric values. Which meant I never ended up with holes or none manifold edges. Well, it works for me. Reminds me of one of my software engineering mantras: it's better not to create a mistake in the first place than to look to fix it later..!
Here's some super-useful add-ons I enabled in Blender to help me make the automata:
Add Mesh: Extra Objects - allowed easy creation of gears
Mesh: Loops Tools - for some insane reason gears are open meshes, this tool allowed me to close them up
Object: Bool Tool - makes the job of merging everything down to a single shell much more convenient
Mesh: 3D-Print Toolbox - checks for issues in the model, but didn't help much in this case
Engineering
Before I got going designing the automata I didn't know very much at all about gears. For example, I didn't appreciate that the teeth aren't supposed to totally sink into each other. Each tooth has a 'dedendum' and an 'addendum'. The forces are transferred through the meeting of the addendums of the two cog's teeth, with the dedendums providing space for the teeth to turn. The lengths of the dedendum and addendum usually being in the ration 0.8:1.2. This affects the precise spacing of the axels.
I also didn't know very much about fitting shafts or pegs into holes; a 3mm peg will not readily fit into a 3mm hole; it will certainly snap if you try to make it fit. So just exactly how much smaller should the peg be for a good fit? Well, it turns out that depends on what you mean by 'good fit'. Fixing a shaft into a cog requires a tight fit. Sliding a collet down a shaft requires a slightly less tight fit...
I decided to use a hole-basis (rather than shaft-basis) system. So shaft holes (in cogs and collets) were 4mm diameter, and peg-holes (in the cage) were 3mm diameter. I used press fits for the cage pegs and for attaching cogs to the end of shafts. Collets, and mid-shaft cogs, used a close running clearance fit. This meant that shafts had to be slightly fatter at one end - I originally presumed my shafts would be a uniform diameter. My press-fits are about 0.15mm slimmer than their holes, and my clearance fits about 0.25mm slimmer.
I found a really good round-up on shaft and hole design on Rapid Design's website
Truth be told though, I had so much trouble printing my final model (more on that later) that I never quite got all the fits just as snug as I wanted to; I think a dab of superglue will be needed for my pegs. Next time though it'll be better (if there ever is a next time!)
I wanted the final model to run as smoothly as possible. I guess we've all experienced poor plastic model design where the cogs jiggle about and get stuck from time to time. It was critical to me that the model would turn free and easily with little force needed to operate it. So I decided all turing components would be mounted on bearings. As a compromise I only used bearings at the (fixed) mount end of the shaft. I think in industrial applications it is usual to have bearings at both ends of a shaft, but that seemed overkill.
Initially I took an off-the-shelf print-in-place bearing .stl. It was a little larger than I really wanted but I thought bearings are quite complex so it's probably best to use something tried and tested.
But it did test me... I found it impossible to cut-away the support structure cleanly enough to leave a smooth running device. It worked fine in principle and looked great in the accompanying video, but not so much in practice, the mechanism was just too sticky. So I resolved to make my own.
I decided to use a cylinder bearing design, since then imperfections caused by the print support structure were at the ends of the cylinders, not on the surface of the balls (as in a ball bearing) which meant the rotation ended up being very smooth. I had to give 3 layers of clearance (0.15mm each side) between the cylinders and the housing (and between neighbouring cylinders) to prevent the whole unit fusing into a solid mass. This meant that with 8 cylinders there was a total gap within the mechanism of 2.4mm into which the cylinders liked to fall over from time to time. This is much looser than a bought bearing would ever be, but by making the cylinders suitably tall they at least maintained their integrity and do run reasonably smoothly. I used simple cyliners, rather than conical rollers, just because there were only so many prototypes I could bear to make. Next time I think I will use multi-part bearings (for a tighter fit) with conical rollers... so yeah, I read up a lot on bearings as well as gears, shafts and holes.
Printing
I had learnt a lot about Blender, 3D-modelling principles (especially face normals), Gears, Shafts, holes and bearings and thought 'great, now all I gotta do is press the print button'...
And that seemed to work with my first print (a vase) which was a one-off and just came out all cooked good! Not a single problem.
But when I started to create more and more pieces I found that typically I could print a one-off, but repeats were failing, over and over again. With no changes at all (other than time and entropy) printfiles that did work, suddenly didn't. Or kind of half worked. Repeatability was soo poor I found myself having to make 2 or 3 attempts for each thing I wanted to produce - and you really get to resent the cost of supports when all they're doing is supporting twisted mangled approximations of what you want!
Regards orientating things for print, you have to compromise between:
Print time - flatter things print faster
Strength - The layered, Z, dimension is weak
Support volume - simple uprights don't need supporting, anything overhanging does
Print tolerance - with an LCD exposing the XY plane and a stepper motor layering the Z-plane, accuracy suffers in the Z-plane
Contact force - flat things have a large surface areak which increases the likihood of them sticking to the tank film not the base plate
Initially I oriented for strength, increasing support as needed to ensure a good print. But I wasn't getting good, reliably good, prints.
So instead I arranged the pieces to reduce the surface area of contact between the piece and the tank film - which I think helped, but I mean like the ruined pieces were less ruined, but, well, still not actually good enough.
I ended up using almost 3L of resin to create 6 toys that weighed 100g each once dried (the desnity doesn't change that much, wet to dry). That's about 80% wastage. I knew I was in for 33% due to support materials but failed prints pushed the overall wastage level through the roof.
Failed prints also cost time. I played a lot with print parameters to increase strength (exposure times) and improve print stability and to have the best chance of releasing the model from the film (post-lift wait times) - all of which meant each print cycle was taking around 3 hours. I also reduced the number of pieces I tried to print at once - only filling the build plate by about a third for any given print. So instead of printing all the pieces in two passes of around 1 hour each I ended up needing around 6 seperate prints of 3 hours each for each toy. And I wanted to make a dozen toys. Which would have taken weeks of printing - even if I wasn't getting significant fails, which I was.
PLUS, resin man, resin is bad, bad, bad, bad, bad stuff. I started with a rigid regime: Gloves on, mask on, remove printer hood, fiddle on, replace printer hood, mask off, gloves off... every. single. time.
It didn't help.
Resin got everywhere.
The printer hood is now eternally sticky, and my earlobes felt like they were on fire for just about a week (until I scrapped all the traces of semi-cured resin from them with my scalpel until they bled. All's well now though).
I hadn't appreciated that whilst the gloves protected my hands, they didn't protect anything my hands might touch (D'Oh). Everyone says, use a mask and gloes - but no one says 'gloves on last, gloves off first' because as soon as you don them they pick up resin residue and contaminate everything you thereafter touch. Put the mask on with clean hands before donning gloves. Then shed the gloves to reveal clean hands before you remove the mask. Or else you will entomb, enrobe, encrust or laminate you earlobes...
Print Costs
I got the printer for free and it's a pretty good top-end machine (Elegoo Saturn 3 Ultra) retailing at the £400-500 mark. So the basic machine is pricey, but reachable.
The basic running cost is in the liquid photopolymer resin it uses, costing around £30/kg. There's quite a lot of waste generated though, due to having to add supports to hold the model up while it's printing. With small pieces I'd guess there's maybe an additional 50% of material in the supports alone. Production cost is probaly less than 5p/gram.
But of course there's development costs as well. I had to create 4 prototypes to get to a production-ready set of print files. With a low print-run (I'm making around a dozen of these) that adds significantly to the cost; another couple of pense per gram of finished product I suppose.
But the cost isn't just about pounds and pence. This stuff is resin, a true poison to the planet. It didn't feel great poisoning the planet just to make christmas toys. So I'm using plant-based resin which is at least a little better. It's still 100g of plastic added to the world's woes for each toy, but at least it's less toxic to manufacture and uses renewable bio-materials.
In fact, the environmental cost of each print does weigh heavy. It's almost paralysing. I spent over a month in design to try and ensure that every printed piece had good reson behind it.
There are other costs too. The printer has a carbon filter air purifier which will need replacing at some point. They're supposed to last 3-6 months, but what does that mean? Obviously depends on how much printing is getting done. They're £20 a pop, so probably just add that on as a fixed cost for each project.
The printer works by exposing the resin to light through a high transparent, low stick, film; which is very delicate I discovered. At first I was printing one-offs, then returning to the drawing board. I'd set the printer up, do a print, and then clean everything away. All of which meant a lot of handling, cleaning of the resin tank. Somewhere along the way I managed to get a pin-prick hole in the film. And Resin, you know, it flows; it flows beautifully. It flows wherever it can. Which meant I ended up with resin leaking from the tank all over the LCD screen of the printer! New screens cost £150... fortunately I was able to clean it and avoid that cost but I did have to buy new film for the tank. At £15/sheet. Only available in packs of 5... Still, I have all the film I should ever need now. I hope. And at least, having finished the design phase, I don't have to set-up and clear things away everyday - I can just leave the printer running until the job is done (t'Internet tells me resin can just sit in the tank provided its well shaded). I've also put a lock on the door to ensure no pets get into the room where I do my printing, which is probably overkill but, belts and braces...
I note the build plate is also replaceable (£30). They probably get scratched over time and find it harder to hold on to the model... Shouldn't need replacing every project, but perhaps every year or so.
All of which leads me to suspect the typical baseline cost for a project will be in the region of £60 to £70 for prototyping resin, air filters and a share of the wear cost on the film and build plate. That's maybe pessimistic, but is it at least a yardstick to answer the question 'what does it cost?'