Window Shopping: NASA Perseverance Rover 3D Print Static Model

After finishing a model of Mars rover Curiosity, the obvious question is: did NASA release a 3D print static model of its successor Perseverance? And the answer is yes! Curiously, the web site page points to a 3D file suitable for graphics rendering, not for 3D printing. But poking around the GitHub repository revealed there’s a “M2020” 3D print model. (Before receiving its name, Perseverance was called Mars 2020.)

Armed with my recent experience, I looked over the files for this printable rover. First the good news: the rocker-bogie suspension is represented in much higher fidelity on this model. The full rocker bogie geometry is represented, including a differential bar that is designed for some bent paperclips to serve as critical linkages. The wheel tracks appear to be correct with the center pair of wheels having wider tracks than the front and rear pairs. And the geometry is more accurate, no weird right angle bends as concession to ease of printing.

The lack of concession to ease of printing is also the bad news. Unlike the previous model, none of the geometry has been modified to fit flat on a print bed. Printing this model will require, at a minimum, printing with supports which is always problematic. Dual-material printer with dissolvable supports should make such designs easy to print, but I don’t have one of those.

Another change from the previous model is that this one doesn’t use snap-together construction. Parts are designed to be glued together instead. It also means these files assume a much higher printing precision, since superglue requires a much tighter fit than snap-together construction.

If I saw these traits on a Thingiverse item, I would be skeptical that the model is even buildable. That site is littered with too many things that are obviously impossible, merely the dream someone created in CAD and never test printed.

But this one appears to be real, since among the STL files is a picture of this rover design that has been built. Looking over the print quality of its parts, it was obviously printed at high detail quality on a good printer. Likely better than mine! I think I’ll hold off printing this rover design for the moment. Maybe later, when I have a well dialed-in printer that I can trust to meet precise tolerance requirements. In the meantime, I can admire the Perseverance 3D Model released by NASA that lives strictly in the digital realm.

Built NASA’s Curiosity Rover 3D Printed Static Model

I’ve completed assembly of a 3D-printed static display model, released by NASA, of Mars rover Curiosity. It had a lot of details that were demanding when printed in PETG. In hindsight, I should have printed with PLA for fewer printing problems like stringing and overhangs. It is only a display model, it’ll just sit on a shelf and not stand out in the sun as Sawppy has done (and suffered for it.) Better dimensional accuracy with cleaner printing PLA would also help make the snap-together construction more effective. PETG is more ductile and so there wasn’t a “click” to announce successful assembly.

The demanding details were fitting for a static display model. Unlike its smaller sibling, this one is even poseable with corner wheels that steer and a robot arm that can articulate through the same degrees of freedom as the robot arm of the real thing.

With its emphasis on appearance, I was disappointed at the representation of my favorite feature of NASA JPL’s Mars Rovers: their rocker-bogie suspension. The first complaint is cosmetic: this model placed all three pair of wheels with the same track (distance between left and right wheels.) Curiosity’s front and rear wheel pairs actually have a narrower track than the middle pair, which I speculated was done that way so the suspension can fold up for flight. While a static model does not need to fold up for flight, it should at least accurately represent the layout.

The next complaint is a combination of cosmetic and functional: the suspension rockers do not articulate. Their angle is fixed relative to the body. On Curiosity, the left and right rockers are connected via the differential bar which keeps the two rockers in sync with complementary movement: if one moves up, the other moves down the same amount. But on this model, the differential is a surface feature and not a functional one, without connection to the suspension rocker.

On the upside, at least this model has articulation for suspension bogies. This was also missing from its smaller sibling. With articulating bogies, this rover model can at least pretend to handle rough terrain capability even if it lacks full rocker-bogie capability. In this picture, the middle wheel is raised by a piece of 3D-printed plastic I had on hand.

And finally, the suspension arms leading up to corner steering wheels have right-angle bends that are not an accurate representation of Curiosity’s suspension. I suspect this was done as a compromise to make these parts 3D-printable without supports, but it further reduces fidelity of this model.

There are several additional print problems with this first draft. If I were excited about this model I would reprint in PLA to see if it improves as expected. But given my lack of enthusiasm about representation of rocker-bogie suspension, I am content to stop here and look around for the next project.

NASA’s Curiosity Rover Model Print Cleanup and Assembly

NASA published a 3D printable static display model for Curiosity rover, and one of the things they offered to make printing easier are STL files that have already laid out many parts so they can be printed all at once. The upside is a lot less work on setup and less time tending to the printer. The downside is that if one part fails, it dooms the entire print.

The rover suspension parts are all in a single large multipart print. The real Curiosity rover suspension structure is cylindrical, and this model tries to maintain that shape, meaning there’s very little surface area contacting the print bed at the bottom of the cylinder. In the first few failed attempts, one of the suspension parts (and never the same one twice) would pop free from the print bed and wreck havoc.

To work around this, I told MatterControl to add a brim on all parts to increase surface contact area. It allowed the print to complete, but now I have to cut all those brims off before I could proceed to assembly.

I started by cleaning up the wheel hubs and pressing them into wheels.

Following my tradition of rover building, I proceeded to build a rover wheel on a stick.

Which quickly led to a rocker-bogie assembly for one side of the rover.

Unfortunately, the rocker does not articulate on this model. Its angle relative to the body is fixed. So this particular portion of the model is no more functional than the smaller version. However, the bogie does articulate, and all four of the corner wheels can steer.

Having built one side, it was easy to build the mirror side and put everything together. I noticed I had two extra steering brackets left over. Reviewing the large multipart print, I now notice there are six steering brackets even though only four rover wheels could steer. I shrug and move on.

Assembly of the robot arm was straightforward following the directions, leaving rover head installation as the final step. The static model is complete and I can admire it in its entirety.

3D Printing NASA’s Curiosity Rover Model

I decided to build the 3D printed Curiosity rover model released by NASA, and ran into some problems with print bed adhesion. Whoever designed this model had a 3D printer with better print bed adhesion than mine. My first few printed parts would lift from my print bed.

Some of this is unavoidable, the natural orientation of some parts dictate minimal surface area. The wheels, for example, have to sit with their narrow side edges on the bed because that is the only flat side. Fortunately wheels are round and produced minimal stress.

In contrast, the body of the rover is a large rectangular solid with sharp corners. This is a recipe for lifts and they released the STL files with some pre-generated brims to help the corners stick. Unfortunately that was not enough for me, because some of the corners still lifted off the print surface. Fortunately this was only a minor cosmetic issue, since the bottom does not need to be absolutely flat to mesh with any other part.

Another cosmetic issue is the radiothermal generator at the back, which ramped up more aggressively than my Pulse XE revision D printer could handle with PETG. Fortunately this is a bottom-facing surface and shouldn’t be too much of a detraction.

The wheel spokes were the most problematic with their fine detail requiring a lot of filament retraction as the print head moves from one tiny feature to another. In my experience, retraction-heavy prints work much better in PLA than PETG, in hindsight that’s what I should have used.

An interesting nod to convenience is that, in addition to publishing STL for individual parts, the creator of this project also included STL files with many parts laid out to be printed all at once. The upside is that there’s a lot less overhead. The downside is that failures can be troublesome.

NASA’s 3D Printable Curiosity Rover

When I take Sawppy out for some publicity, people frequently ask about the 3D printable Curiosity rover static model released by NASA. Some mistakenly thought Sawppy was the NASA-released design, others wanted to know how the rovers compared. I couldn’t answer the latter because I never printed the NASA rover, to the surprise of some, so I thought I should do it at least once.

NASA’s 3D printing resources page for a printable Curiosity points to a GitHub directory that actually has two printable models. I’ve seen the smaller one at a MatterHackers event, printed by another attendee who left her little rover on Sawppy’s table to keep my rover company.

The small model has limited articulation. All six wheels can roll, but cannot steer and it could only sit on a flat surface because its rocker-bogie suspension joints are fixed. I also noticed the robot arm joint articulation doesn’t match that of the real rover’s. Still, it is undeniably a representation of Curiosity and a cute little model.

Since I’ve seen the little one, I decided to skip it and try building the larger one. “Large” is relative, of course, it would still be much smaller than Sawppy. Another important difference is that it is an unmotorized static display model, which is actually the main reason I had not tried to build it. I wanted a rover that moved!

But I’m glad I’ve built it, because it was a good study into the different compromises this model made for the sake of being 3D printing friendly.

Quick Print Xbox One X Vertical Stand

Reorganizing my video game console area, I’ve decided to reorient my Xbox One X so it stands vertically to take up less table area. The console was designed to handle this scenario for the most part. There is even a designed hint on which side of the console to use: only one of the two sides is flat enough for standing. However, it is not quite as simple as turning the console on its side, because there is an open cooling vent grille on that side.

Side of Xbox One X showing cooling vents

In order to elevate the console so air can still flow through those holes, a stand is needed. There are official stands available… but where’s the fun in that? I could 3D print something and there are several stands already on Thingiverse. But I didn’t think that was any fun, either. I much rather design and print my own, but how will my contribution be different? I focused on simplicity and print time. My design should be faster to print than the others.

I focused on designing while keeping the print path in mind. It is one continuous curve that can be printed with only perimeters. No infill, no top layer, no bottom layer, no retractions. And no supports, either.

MatterControl slicer showing the design sliced as continuous curve.

I will need to print two of them.

Two copies of the design were printed, one for front and one for back.

The installation position doesn’t have to be exact, since the grille doesn’t seem to be covering anything in a particular pattern that would require that I keep the nearby holes clear. I think it should be OK to flow around these feet.

The two stands installed on Xbox One X, covering minimal cooling vent area.

The single loop design means the stand is not completely rigid but slightly flexible. The upside of this flexibility is that it will sit nicely on surfaces that are not perfectly flat. The downside of the flexibility is that the console may wobble a bit if bumped. Such is the tradeoff.

Xbox One X sitting on vertical stand.

Now my Xbox One X can stand vertically without completely blocking its cooling intakes. If someone wants to tinker with this design, the Onshape CAD file is a public document here. If someone wants to use the design as-is, it has been published to Thingiverse.

Another Z-Axis End Stop For Geeetech A10

Once the power situation was improved to something more acceptable, I revisited the Z-axis end stop. Because the bare wire hack attached with tape was never going to cut it long term.

The first order of business was to transfer the circuit to a small circuit board instead of just wires hanging in the air. This little board was broken off from a larger prototype board, an easy task as the board was already perforated. The inexpensive switch I used (*) had two mounting holes that conveniently lined up to holes on the perforated prototype circuit board, so I soldered two pins at those locations as primary load bearers. I pushed the switch against those two pins as I soldered the three signal pins, hopefully this means any downward force from the homing procedure would be directed into the two mounting pins and not the three electrical pins.

Geeetech A10 Z axis end stop clip old and new

Geeetech A10 Z axis end stop clip CADOnce I had a small circuit board to hold the switch wired to the appropriate JST-XH (*) 3P (3-pin or 3-position) connector, I designed and 3D printed a small bracket to hold it to the machine. I saw no signs of how the original Z-axis may have been fastened, certainly no obvious holes to reuse. So I designed a clip-on bracket. The tool-less installation is a plus, but it came with the downside that it could not grip solidly enough to reliably hold a Z-axis position.

Right now it is sitting at the bottom against a cross beam, sitting at a height that I had guessed is relatively close to the original Z-axis end stop switch position. If that is too high, I will either have to print a shorter bracket or take a knife and trim some of the bottom off of this one. If it is too low, I can add something underneath this bracket to act as a spacer or print a taller bracket.

Now that I have the three-axis motion control portion of a 3D printer up and running, what can I do with it? I have lots of ideas! The first idea to be explored will be for visual dimension measurement.


(*) Disclosure: As an Amazon Associate I earn from qualifying purchases.

Replacement Power Panel for Geeetech A10

A very crude Z-axis end stop switch allowed me to verify this partial chassis of an old Geeetech A10 could still move in the X, Y, and Z axis. Once proven, I went back to refine the hacks done in the interest of expediency for those tests. First task is the power adapter, which had been a cheap barrel jack not quite the correct dimensions for reliable electrical contact with the 12V DC power adapter I’ve been using.

The 12V supply itself was a hack, as the Geeetech A10 printer is actually designed as a 24V printer but I didn’t have a 24V power brick handy. Since this printer has been deprived of its print nozzle and heated bed, the majority of power draw are absent leaving only the motors. I understand the stepper motor current chopper drivers would still keep the current within limits and give me nearly equivalent holding torque. However, halving the voltage meant it couldn’t sustain as high of a maximum speed and I saw this on the Z-axis. The X axis is super light (as there is no print head) and had no problem running quickly on 12V. The Y axis has to move the print bed carriage (minus heated print bed) and had a little more difficulty, but still plenty quick. So it was the Z-axis that ran into limitations first, as it had to push the entire carriage upwards and it would lose steps at higher speeds well before reaching firmware speed limits that are presumably achievable if given 24V.

Geeetech A10 power panel CADA reduced top speed was still good enough for me to proceed so I drew up a quick 3D printable power panel for the printer. Since the 12V DC power supply was from my disassembled Monoprice Mini printer, I decided to reuse the jack and the power switch as well. Two protrusions in the printed plastic fit into extrusion rails, though it took a few prints to dial in the best size to fit within the rails.

With this power panel I could use the 12V DC power adapter and the connection is reliable. No more power resets from jiggled power cables! It also allows me to turn the printer off and on without unplugging the power jack.

With this little power panel in place, I moved on to build a better Z-axis end stop.

Crude Z Axis End Stop For Geeetech A10

Preliminary exploration of a retired Geeetech A10 has gone well so far, enough that I felt confident discarding the control panel I did not intend to use. Before I tossed the control panel in a box, I verified each of the motors could move via jogging commands. But before I can toss more complex commands at the machine, I need a way to reset the machine to a known state. In machine tools this is called a “homing” operation, and this 3D printer do so via the G28 Auto Home command to set each axis to their end stop switches.

Problem: While the X and Y axis still had their respective end stop switches, this machine is missing the Z-axis switch and I wanted to whip up a quick hack to test the machine capabilities. If it works, I’ll revisit the problem and spend more time on a proper one. If it doesn’t work, at least I haven’t wasted a lot of time and effort.

The existing X-axis end stop was buried inside the mechanism, but the Y-axis end stop is visible. I was surprised to see a circuit board with several surface mount components on board. Unlike most of my other 3D printers, the end stop mechanism isn’t just a pair of wires hooked up to a single switch, there are actually three wires.

Geeetech A10 Y endstop

I removed the Y-axis switch to probe the circuit and search online. It appears to be close but not quite identical to the RepRap design, and had a few additions like a LED and its associated current-limiting resistor. The LED is a nice indicator of switch toggling status, but it is not strictly necessary. This end stop boiled down to a switch that directly connects the normally open leg to common, and a resistor between the normally closed leg and common.

Once understood, I grabbed a micro switch waiting in my parts bin (*) and created a free form wire soldering job for the test attached with double sided foam tape. (Picture up top.) The foam tape did not hold position well enough, so additional structure support was added in the form of blue painter’s tape.

Geeetech A10 Z endstop hack with tape

Hacks upon hacks, it’s hacks all the way down.

But it was good enough for G28 Auto Home to succeed, which opened the door for more tests to verify this 3D printer chassis could still execute motion control commands coordinated across all three dimensions. Once I was satisfied it is working well enough for further tinkering, I revisited the power hack to make it more reliable.


(*) Disclosure: As an Amazon Associate I earn from qualifying purchases.

Geeetech A10 Control Panel Removed

Once I had the retired Geeetech A10 3D printer powered up, I could start poking around to see what is working and what is not. Obviously the control panel was my entry point to jog each axis. I was very happy to see the individual motors move on command, but I couldn’t command a homing cycle just yet due to the missing Z-axis switch.

However, the control panel itself was annoying to use. The screen contrast was poor, and user responsiveness is lacking. I frequently find that encoder steps were ignored, as were some of my wheel presses to select menu options. I experienced the same frustration with the Monoprice Maker Select, and I had thought those issues were specific to that printer. Now I’m starting to wonder if this is common with 3D printers running Marlin on a ATmega328 control board.

The good news is that I don’t plan to interact with the control panel for much more than this initial test. Once I established the board was functional, I no longer feared the USB port damaging my computer so I found an appropriate USB cable and plugged it in. The expected USB serial device showed up. With the popular settings 250000 8N1, I could command the printer via Marlin G-code. This is how I intend to control this machine as a three-axis motion control platform.

I didn’t intend to use the control panel anymore, and I could have just left it alone. But it also sticks out to the side of the printer and awkwardly taking up space. After a particularly painful meeting between a body part and an outer corner of the panel, I took a closer look at how it was connected to the control board. It seems to be a single ribbon cable plugged into a single connector that had two dabs of hot glue to help keep it in place.

Geeetech A10 control panel ribbon cable connector

I removed the hot glue and the cable to see if this printer would continue functioning as a USB serial peripheral, in the absence of the control panel. Good news: it does! I could move all three axis (X, Y, and Z) via G0 commands. So after removing two M5 bolts, the control panel go live in a box. Cleaning up the printer outline and hopefully reducing painful episodes in the future.

Now I need to install a replacement Z-axis homing switch in order to try homing cycle.

Power Input Replacement for Geeetech A10

I’ve received the gift of a retired Geeetech A10 3D printer. It is missing some important components for 3D printing, but its three axis motion control components are superficially intact. The machine is in unknown condition with no warranties expressed or implied. Ashley Stillson, the previous owner, don’t remember everything that was wrong with it, but she did not remember anything dangerous. (My specific question was: “Will I burn down the house if power it up?”)

Not burning down the house was a good baseline, so I’ll begin by supplying the machine with some power to see what wakes up. The first task was to replace the XT60 power connector. The XT60 isn’t a type I use and hence I had nothing to plug into it. This type is an excellent connector for high current draw applications, but since I’m not planning to run a heated print bed nor a filament nozzle heater, I can start with something less capable and more generic. So instead of buying some XT60 connectors (*), I replaced it with a jack for a barrel plug (*) that I already had on hand.

The cheap jack I have on hand is listed with outer diameter of 5.5mm and inner diameter of 2.1mm. It is very close but not exactly the correct type to connect to the 12V DC power supply from my disassembled Monoprice Mini printer, which I guess is actually the very similar and popular type 5.5mm OD / 2.5mm ID. But what I have is close enough for a little hacking to permit power to flow.

Later I learned I had made an assumption I didn’t even realize I was making at the time: I assumed the printer wanted 12V power. The Geeetech A10 is actually a 24V printer! This is irrelevant to the electronics, which will run on stepped-down voltage probably 5V. It is most important for the heater elements, which are absent anyway. In the middle are the stepper motor subsystem, where 12V is not ideal leaving them less capable than if they were fed 24V, but they should function well enough to let me evaluate the situation.

When power was supplied, a fan started spinning, a red LED illuminated, followed by the control panel coming to life. We are in business.


(*) Disclosure: As an Amazon Associate I earn from qualifying purchases.

Retired Geeetech A10 3D Printer

My herd of 3D printers has gained a new member: a Geeetech A10. Or at least, most of one. It was a gift from Ashley Stillson, who retired this printer after moving on to other machines. Wear on the rollers indicated it has lived a productive life. Its age also showed from missing several of the improvements visible in the product listing for the current version. (And here it is on Amazon *)

In addition to those new features, this particular printer is missing several critical components of a 3D printer. There is no print head to deposit melted plastic filament, it has no extruder to push filament into the print head. The Bowden tube connecting those two components are missing. There is no print bed to deposit filament on to, and there is no power supply to feed all the electrical appetite.

It does, however, still have all three motorized axis X, Y, and Z, and a logic board with control panel. X and Y axis still had their end stop switches, but the Z axis switch is absent leaving only a connector for the switch.

Geeetech A10 Z endstop connector

The only remnant of the power supply system is a XT60 plug. I don’t use XT60 in my own projects and have none on hand, so I will either need to buy some (*) or swap out the connector to match a power supply I have on hand.

Geeetech A10 XT60 power connector

It would take some work to bring it back into working condition as a 3D printer, but that’s not important right now because my ideas for this chassis is not to bring it back to printing duty. I’m interested in putting its three-axis motion control capability. to other use. But first, I need to get its three axis moving, which means giving it some power.


(*) Disclosure: As an Amazon Associate I earn from qualifying purchases.

And Now I’m Up To (Most Of) Five 3D Printers

When I first got started in 3D printing, I was well aware of the trend for enthusiasts in the field to quickly find themselves with an entire flock of them. I can confirm that stereotype, as now I am in the possession of (most of) five printers.

My first printer, a Monoprice Select Mini, was still functional but due to its limitations I had not used it for many months. I had been contemplating taking it apart to reuse its parts. When I talked about that idea with some local people, I found a mutually beneficial trade: in exchange for my functioning printer, I traded it for a nearly identical but non-functioning unit to take apart.

My second, a Monoprice Maker Ultimate, has experienced multiple electrical failures with an infamous relay, and I suspect those failures had secondary repercussions that triggered other failures in the system. It is currently not working and awaiting a control board upgrade.

My third printer, a Monoprice Maker Select, was very affordable but there were trade-offs made to reach that price point. I’ve since had to make several upgrades to make it moderately usable, but it was never a joyous ownership experience.

Those three printers were the topic of the tale of 3D printing adventures I told to Robotics Society of Southern California. One of my parting advise was that, once we get to the ~$700 range of the Maker Ultimate, there were many other solid options. The canonical default choice is a Prusa i3 and I came very close to buying one of my own several times.

What I ended up buying is a MatterHackers Pulse, a derivative of the Prusa i3. I bought it during 2019’s “Black Friday” sale season, when MatterHackers advertised their Pulse XE variant at a hefty discount. Full of upgrades that I would have contemplated installing anyway, it has performed very well and I can happily recommend this printer.

Why would I buy a fifth printer when I had a perfectly functioning Pulse XE? Well, I wouldn’t. I didn’t get this printer because it was better, I picked it up because it was free. I have some motion control (not 3D printing) projects on the candidate list and a retired partial Geeetech A10 printer may prove useful.

Vertical Stand for Asus Router

After almost 7 years of reliable service, my Asus RT-N66R started failing. I bout an Asus RT-AC66U B1 as replacement. The two routers look nearly identical from the outside, but the new one is actually slightly larger so it would not fit exactly in the same place. Which was fine, because I felt maybe my previous placement didn’t have enough ventilation and contributed to the old router’s demise.

For better space utilization, I wanted the router to stand vertically. But in the interest of providing more cooling, I didn’t want it to be wall-mounted against an airflow-constricting surface. Making a vertical stand became a quick-and-dirty design and 3D printing project.

As soon as it started printing I realized I overlooked an something important: the base of the stand is too thin for proper print bed adhesion. The was compounded by the fact that it sat near print bed corners, which tends to be a little cooler than the center of the bed. A few layers into the print, one corner started to lift as expected. Looking at the design, I guessed a base with a lifted edge will still be sufficient. So I decided to let the print continue rather than abort the print and waste the filament.

I was rather surprised at how far it continued to lift! I thought after a few millimeters there would have been enough plastic to hold things rigid, and that expectation was true for one corner. (Left side in the picture below.) But the other corner just kept lifting and lifting, even starting to peel the main body off the bed. I was starting to get worried the whole thing would pop off. Fortunately it finally stabilized after lifting a little over 21mm.

Router stand bed lift

This was outside my experience, as I usually abort a print before the lift got nearly that bad. But my original guess was correct: the stand worked just fine even with rear corners asymmetrically lifted from the print bed. What I have in hand is good enough for my purposes so I’ll use it as-is, but the public Onshape document is here if anyone wants to evolve this design to make it less prone to lifting.

Otvinta 3D Printed Hypocycloid Drive Model

Before I dive headfirst into designing a project around hypocycloid drives, I thought I should first try the low-effort test of printing up an existing design to see how it works. If it does, I get to see a printed hypocycloid drive in action. If it fails, I have data points on how to (and maybe not to) 3D print a hypocycloid drive.

Lucky for me, the very same site hosting a hypocycloid gear calculator also has a ready-to-print set of STL files for a 3D-printable hypocycloid speed reducer model. It looks like a nifty little hand-cranked demonstrator, so I fired up my 3D printer to print one of each STL. I noticed a lot of little artifacts on component mating surfaces. I was eager to see it in action, so I did only minimal cleanup with a blade before proceeding.

Hypocycloid demo model breakaway handle

One instance of theory not meeting reality was in the crank handle. The geometry was designed such that the outer grip could rotate around a center shaft. They are printed in a single piece but there’s a gap allowing the outer trip to break free and rotate about the center shaft. I’ve done this sort of designed breakaway before, but this one didn’t work well for me and it broke off at the wrong place, on the inner shaft instead of the outer handle. Oops.

Hypocycloid demo model big gap

Upon assembly I noticed a big gap, and some parts were falling out of place. It didn’t take long before I realized there were two components (a cam and a disk) where I needed to print a second unit, rather than printing just one as I had done.

Hypocycloid demo model broken

Once both disks were in place the overall system friction went up dramatically. Optimistically thinking they’re just small bumps that can wear down with a few cycles, I tried to power past the friction points. But instead of breaking through sticky portions, I broke the input drive shaft.

I asked to print another drive shaft on a more precise 3D printer. While it was printing, the device was taken apart to better clean up surface artifacts. Round 2 was far more successful, making a fun toy and sufficiently prove the concept for future experimentation.

Hypocycloid Drive Calculator by Otvinta

The best part of maker/hacker gatherings is the opportunity to meet and chat with people who introduce me to ideas and resources. At Sparklecon 2020 I met Allen Phuong who saw Sawppy roaming around and wanted to learn more. Sadly he had missed my Sawppy presentation because he was busy participating in the battle bot competition taking place at the same time, but I gave him an abbreviated version and we talked about many projects on our respective to-do lists, robotic and more.

Allen got me interested in hypocycloid gears again. It was something I briefly examined while looking for ways to build a gearbox to obtain low speed and high torque but without the backlash present in typical gearboxes. Right now the standard solution in robotics is the harmonic drive, which is an expensive solution that has specific requirements on the material used to build the flexible spline. 3D printer plastic does not meet all the requirements and hence 3D-printed harmonic drives always involve trade-offs that made me less interested.

Cycloidal drives do not have a flexible component with strict material behavior requirements, all parts remain rigid while in operation. For (near) zero backlash operation, however, it requires high dimensional accuracy. I dismissed it for this reason as 3D printing is not very precise. However, Allen asserted that 3D printers can reach the required levels so maybe it’s worth a second look. And even if I can’t get my 3D printer to meet my dimensional accuracy goals, I now have access to a few tools that I didn’t have before. Ranging from a laser cutter, to my project CNC mill, to a resin printer. All capable of far higher accuracy than my 3D printer.

There are a few tools available online to help generate profiles based on parameters I specify. Allen pointed me to the Hypocycloid Gear Calculator on Otvinta, which looks like a worthwhile starting point. The author of this site has decided to focus on Blender as the 3D tool, so if I want to make use of the results, I’ll have to learn how to translate it into Onshape or Fusion 360. But first, I can get a taste via a ready-made project.

Hex Wrench Holder And Wire Clip For Gantry Extrusion

The first project for designing accessories to mount on the extrusion beam, a holder for ER11 collets, turned out well enough I wanted to continue. Apply some of the lessons learned to create more nice-to-have accessories for the CNC project.

One accessory is a holder for a 5mm hex wrench. This is the size used by the fasteners bolting our gantry’s extrusion beams together. There are a set of four bolts, two on the left and two on the right, that we loosen to adjust the height of the gantry. Lowering the gantry lets the cutter cut through our work surface to cut holes for threaded inserts, raising the gantry gives us more Z travel for the work piece. Or we might deliberately trade off Z travel to use a shorter and more rigid gantry for more challenging pieces. We’re not sure what the viable combinations are, but we do know we’ll need this wrench handy for experimentation.

The other accessory is a wire management clip. Wiring is a perpetual challenge on this project, from finding appropriate component placement to isolating electrical noise. I’m sure electrical challenges will continue to vex us as we proceed. We’ll figure out the problems one by one as we go, but one thing is for sure, we’ll need a lot of ways to route wires and keep them in place, hence the clips.

Unlike the previous accessories, the wiring clip may be mounted in any orientation. To hold themselves in place, each clip will require additional holding force. To get this force, they are printed slightly more open than their installed configuration. Installation would then require compressing the ring and this tension in the plastic will provide friction against extrusion rail to hold it in place. And while I’m not entirely sure it will be necessary, I added a small flap to keep the wire from sliding out of the ring into the rail slot.

There will be more accessories along the lines of what’s been printed so far, but I’m eager to get back to the primary exploration of cutting material.

Collet Holder Clamps To Extrusion

While I was in Onshape CAD designing our goose neck work holding clamps, I also tackled a few other to-do items on the 3D-printable accessory list. The top of the list was building a way to keep extra collets accessible on the machine. Our CNC spindle came packaged with a 1/8″ ER11 collet, which we swapped out for a 1/4″ collet when we wanted a stouter cutter. We didn’t have a good place to keep the temporarily unused 1/8″ collet and, rolling around on the tabletop, we were constantly at risk of losing it.

I thought it was a good project to practice designing plastic’s flexibility to my advantage instead of constantly seeing it as a disadvantage. I’ve had several projects along these lines before, but my interest was renewed by Amy Qian’s demo board she brought to show off at Supercon.

There are two ways I wanted to apply this concept. First, I wanted a holding mechanism that can snap into an extrusion rail and stay there without use of tools or fasteners. Second, I wanted a way to hold the collet so that it is held securely by default (not fall out or be dropped easily) but can be removed easily on demand. Again without tools or fasteners.

Here is the first draft of a flexible clip for installation into extrusion beam, this design was too flexible and fell out of the extrusion rail easily. More iterations followed, hunting for the most secure hold possible while still making it possible to insert into the rail.

Extrusion slot clip

Separately, I started designing a flexible cover for the collet. The test piece for each mechanism evolved separately until I was happy with both designs, then they were integrated into a single piece incorporating both mechanisms.

Collet holder evolution

With the success of this holder, I took the lessons of a flexible extrusion beam mount and applied the concept to a few additional 3D printed accessories.

3D Printed Goose Neck Clamps For Work Holding

Once we have metal threads securely inserted into our MDF work surface, we could bolt on clamps to hold our work pieces. These clamps are 3D printed because we fully recognize our CNC beginner status and, while we’ll do our best to avoid crashing cutting bits into fixtures, it’s realistic to plan for the probability that crashes will occur despite our efforts. If we use commodity metal clamps and our carbide cutting tool makes contact it will break our tool. But if our carbide tool contacts a piece of 3D printed plastic it might survive our mistake. We have the luxury of this provision because we’re starting easy with scraps of MDF, which requires less forces to hold and to cut than cutting metal.

Clamp evolution

We started by copying standard step clamps. We weren’t sure if the steps could be accurately replicated with 3D printed plastic so it was worth a bit of experimentation to find out. They look very promising but we probably won’t use them, because the reason step clamps exist is to have a few set of them that can adjust to various sized work pieces. 3D printing gives us the flexibility to print project-specific fixtures that don’t have to compromise for flexibility. This advantage can make up a tiny bit of deficiency inherent in using plastic instead of metal. Hence the second iteration: a single piece clamp shaped like an L designed specifically for the thickness of our test piece of MDF.

Once that was printed and eyeballed on the work table, we moved on to the third iteration: a low profile goose neck clamp tailored for the height of our scrap MDF. Low profile design reduces chance of cutter collision, and it allows us to use shorter and stouter bolts to fasten them to the table. This is what we will use for our first real cutting experiments, alongside other 3D-printed accessories for our CNC project like a collet holder.

Threaded Insert Alignment Tool

We now have a small G-code program that we can call upon to cut holes for self-tapping threaded inserts. We’ll cut them as needed for work fixtures on our CNC work table. However, cutting the hole is only part of the process, we had to install the metal insert as well. In order for the resulting threaded hole to be vertical, the inserts have to be held perpendicular to the work surface as we install them. However, the coarse exterior thread makes it difficult to maintain the orientation, made more challenging by the fact the shallow hex socket allows the insert to rotate around the tip of a ball-end hex wrench making it even harder to hold vertical.

We originally had the hypothesis that, given the geometry of the wooden hole, our metal insert will self-align as we start turning it. This may be true for some types of wood but it didn’t work for our particular sheet of MDF. If the coarse outer self-tapping thread starts biting at a bad angle, the insert did not self adjust in our experience. It just jams partway down the hole ruining the MDF hole in the process.

To solve this problem, we designed a small 3D-printed plastic tool to help maintain vertical alignment for installation.

Insert alignment tool printed

The bottom part of this tool helps keep the insert vertical, and the top part keeps the hex wrench vertical. The bottom is mostly flat for the work table surface. I tried adding a small lip to help with hole alignment, but that turned out to be unnecessary. These metal insert can align itself in the XY plane well enough. And once these inserts are in place, we can bolt down our pieces of scrap MDF using custom gooseneck clamps.