Yet Another Z-Axis Candidate Emerges

This whole project started with a pair of salvaged Parker linear motion stages, bolted at right angles to each other. That formed X and Y axis which has always been the center of the project, but there has been a few iterations on a Z-axis. Shortly after squaring away 12V power for the third iteration, we already have a candidate for number four.

This linear stage was retrieved from a pile of retired electronics & hardware due for recycling. The main reason it is interesting is because of the ball screw at the heart of the mechanism. If this works, it would have less backlash than the ACME leadscrew of iteration three, and certainly higher precision than the belt drive mechanism of iteration two.

Ballscrew Z axis label

The tag at the bottom says DBX1204-100. Plugging that into a web search found it and several very similar items broadly labeled as “100mm Linear Stage Actuator”. Here’s one example (*) among many. Starting at about $65 USD, they are pretty affordable. A closer look unveiled a few factors contributing to this price. The first is the bearing at the bottom (under the tag in this picture) which appears to be a commodity 608 form factor bearing. These bearings might be highly precise… or they might be out of tolerance QA rejects and there’s no way to know.

Ballscrew Z axis rigid coupler

A similar mark is the top end: the commodity sized NEMA17 stepper motor’s internal bearing directly handles the top end, mounted with a rigid coupler that will not adapt to misalignment or slack. This simple design makes things cheap, but it also means precision alignment will vary as wildly as the range of quality found at these mass commodity sizes.

Ballscrew Z axis pinched wires

Beyond the design considerations, we looked over this specific unit for reasons why it might have been retired. The wires seem to have been routed through some tight spots, with pinch marks showing on insulation. A bit worrisome, but an electrical continuity test passed so they should still work well enough.

Ballscrew Z axis gouge

We’re more worried about this. This gouge in the backbone aluminum beam implied this assembly absorbed an impact of some sort. Did this damage retire the assembly? Or was it injury from being thrown in the retirement pile?

Regardless of these question marks, this mechanism will become the fourth version of the Z-axis. Mainly on the promise of its ball-screw accuracy. And if it doesn’t work out, we’ve got more Z-axis candidates and worst case, replacements are affordable. Let the integration work begin!

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

Limiting Range of Motion for Sawppy Suspension Bogie

Sawppy’s appearance at LA Maker Faire was also the first public trial of the latest feature: a way to limit the range of motion on Sawppy’s suspension bogie assemblies. They were previously joints that were allowed to spin freely. I had known that the bogies shouldn’t actually turn too far, because that would break the wires running out to the wheels. But I didn’t think it would be a problem as long as Sawppy is rolling on the ground.

It turns out I was wrong. When Sawppy explores extreme terrain, it is possible for the bogie to tilt a little too far and gravity works the rest of the way and sprain a Sawppy ankle. I’m sure the actual rovers had a clever mechanism inside their bogie joint to limit their range of motion, but the details of their implementation aren’t apparent from pictures.

Ideally I would redesign both parts of the bogie joint in a way to limit their range of motion, but I didn’t want to reprint all the parts and recut a shaft just yet. For the first draft of this angle limiter, I changed the smaller part to add a nub that restricts the range of motion.

I originally wanted this nub to live underneath out of sight, but due to the angle of the suspension bogie, it turns out there’s no place for such a nub underneath if I wanted to preserve the desired range of motion. So the nub lived above as a very visible difference between it and the rovers that inspired Sawppy.

The angle limiter did function properly during Downtown LA Maker Faire, but I’m not satisfied with its appearance. The part is available directly from Sawppy’s Onshape CAD file, but I think there will be a few more iterations before I push it over to Sawppy Github.

Overlooked Gem: The Princess and the Frog

Ten years ago today, The Princess and the Frog opened to general theatrical release. At first glance, people saw hand-drawn animation in a computer-animated world, retelling an old fairy tale in the 21st century. As a result, people did (and still do) dismiss the film as out of date without taking a second glance. Which is a shame, because it is a wonderful film that can stand tall among all its modern contemporaries.

For photorealistic detail, state of the art computer animation in 2009 had long surpassed what hand drawn animation could deliver. This has happened before: painters used to focus on realism, but once color photography could handle all the realism we would want, good painters switched focus on applying their art in ways a camera could not. Similarly, good hand drawn animation projects would focus on their strengths. My favorite example in this movie were the dramatic changes in tone and style employed during the Almost There and Friends on the Other Side sequences. There are times when hand-drawn animation is the best tool for the storytelling job.

It also helps that beautiful art is backed by fantastic music. Of course, a film set in a fictional historical New Orleans couldn’t go without music, and this film delivered one of the best soundtracks of any film. Animated or otherwise.

This film was lovingly made by people who appreciated the art of hand drawn animation. From the high level executives who approved the project, to the Disney alum directors who returned to tell great stories, to the individual animators drawing the subtle curves found within every frame. The team had high hopes that Princess and the Frog would herald a new age of Disney animation.

Alas, it was not to be. Audiences remembered the lackluster low-budget animation projects that had come before, too much inertia for a single film to overcome. Still others dismissed it as a plot they’ve already seen, missing out on the unique twists offered by this particular version. And worst of all, getting the word out for this film proved to be impossible: promotional efforts were drowned out by advertising for James Cameron’s mega project Avatar, which would open a week later to herald a new age of 3D cinema. (It didn’t do that, either, but that’s a different topic.)

Disney released one more hand drawn animated feature film two years later with Winnie the Pooh. Both of these films were far more successful than Home on the Range that proceeded them, but still farther short of The Little Mermaid and Aladdin who were credited with building the previous peak of Disney animation. With blockbuster success of the computer-animated Frozen, Disney hand-drawn animation retreated from the big screen except for small appearances like “Mini-Maui” in Moana.

But as long as there are bored creative kids and blank corners in paper notebooks, there will be hand drawn animation. And Disney has no monopoly on the art form: smaller projects alive and well, delivered via new channels like YouTube. I’d like to believe hand-drawn animation is only waiting for the right combination of story, artistry, and audience to make its next great return to the big screen.

In the meantime, The Princess and the Frog is available for digital purchase at all the usual outlets (here’s my Amazon affiliate link) and is available for streaming on Disney+.

Sawppy at DTLA Maker Faire 2019

Sawppy returned to the downtown Los Angeles Mini Maker Faire for 2019 as a roaming exhibit. This is a change from last year where Sawppy was part of a rover themed booth with other JPL Open Source Rovers. Sadly this year we were missing representation from the JPL Open Source Rover project, none of the three rovers from last year were present this year.

Los Angeles Maker Faire has grown even more this year and spilled into the street, specifically 5th Street adjacent to the library which was shut down for the event to make room for an additional row of exhibits. Many of the larger booths were out here, including a robot combat arena and a few car projects like the Eggscape Eggsperience.

There was forecast for rain, which dampened things literally and otherwise. Fortunately Sawppy is prepared for rain with a rain coat developed for Maker Faire San Mateo earlier in the year, so the light rain was not a problem.

I have fun showing Sawppy to interested attendees, but it is also an opportunity to chat with other like-minded exhibitors. I started trying to strike up conversation with people as soon as I got in line to check in as a maker. It turns out I was behind a member of the Air Quality Management District’s Air Quality Sensor Performance Evaluation Center. They were here at Maker Faire to tell people about the availability of low-cost air quality sensors. Both for AQMD’s own purposes and as something that could be fun for makers to tinker with. They brought a few sensors for show and I asked if Sawppy could act as a mobile air quality sensor for a day… and they said yes!

Even though no JPL OSR builds were present, Sawppy was not the only rover there but most of the others were static 3D-printed models. Probably from here. The one I found actually interesting is a motorized version that was done as an example application of the 3DoT board by Humans for Robots.

It was a fun day of adventure for Sawppy, topped off with a shout-out from Make!

Mounting Z-Axis 12V Power Supply

Wiring was never my favorite part of a project, but it needed to be done. A lot of it at that. After the latest plotter test, I picked up the next item on the to-do list: the 12V power supply for Z-axis. It was just set on the table for testing the second and third iteration of Z-axis, held only by gravity which meant it started shifting position and threatened to fall off the edge when the XY stage movement hit the table’s resonance and everything started shaking. We should mount it rigidly on some part of this machine.

My first thought was to 3D print a bracket for this power supply, and mount it to one of the aluminum extrusion beams. But then I thought it would make more sense to put it alongside X and Y axis control boxes which are combination power supply and stepper driver modules. I’ll mount the Z-axis power supply here, but I’ll hold off moving the stepper drive here as well since that would involve re-routing many more wires.

CNC 12V PSU mounted on plate below

I drill three holes in the metal panel mounted below the table for X and Y axis driver modules. Even after the 12V power supply was bolted in place, there’s plenty of room left on this panel for the Z-axis stepper driver in the future, and possibly also the ESP32 control board. This is the eventual destination for all electrical components, but one step at a time. Of course, it would help if I don’t keep changing parts of the machine

Pen Plotting With Third Iteration Z-Axis

After third iteration of CNC Z-axis was installed, we wanted to perform a simple test. This particular assembly already had brackets to hold a spindle of some kind. We don’t know what it used to be, but measuring the hole we infer it was approximately 65mm in diameter. We didn’t have a suitable cutting tool on hand, so we reverted back to the old standby: testing it as a pen plotter.

We didn’t have any 65mm diameter pen, either, but we do have plenty of plastic bits in the form of failed and abandoned 3D prints. A few blocks were fished out of the bin and took up space so we could clamp a pen in the spindle holder. A pen could not reach the surface of the XY table, so a cardboard box and a few sheets of foam were used to raise the working surface. It’s not precise by any stretch of the imagination, but it’ll suffice for a pen plotting test.

The test plot was the ~25 minute variant of a Sawppy portrait. This file previously helped us determined UGS was not going to work in this particular configuration, and that bCNC worked better. Now we’ll feed this G-code throub bCNC to plot with the new Z-axis holding a pen.

Since the pen was clamped rigidly in the holder, and the work surface was crude with boxes and foam, the paper was not level. For one side of the sheet, the pen barely made enough contact to draw. On the opposite side, it dug deeply enough to start damaging the paper. But it did not tear, so we’re calling it unintentional embossing.

The results looked pretty good! It’s a good confidence booster before I return to more housekeeping tasks of building this machine.

Integrating Transplanted CNC Z-Axis

Bolting on a transplanted Z-axis assembly gives us a screw driven linear actuator with open-loop control via stepper motor, plus a switch for finding home position. Electrically this assembly is identical to the belt drive assembly we had wired up earlier, this second round of electrical integration consisted only of crimping some connectors on new wires.

For hardware configuration, the first stop is always to punch in part numbers to see what we get. We can tell this stepper motor is in a standard NEMA 17 form factor, but we needed to search on its part number SM42HT47-1684B to discover specs such as maximum current per phase. (1.68A) We conservatively capped our driver to a low value of 1.0A just to be safe, leaving room to increase if we need to.

The steps per revolution for this motor was unstated, so we’ll start with the assumption 200 steps per revolution typical of such motors and adjust as needed. We then measured the lead screw on this Z-axis. Since everything else on this machine is metric, we used metric measurements and it appeared to be 2mm per revolution. This maps the motor neatly into 100 whole steps per mm.

A test run with whole steps sounded very rough, so we increased the stepping up to 4 microsteps and a corresponding adjustment in Grbl to 400 microsteps per mm. This gave us smoother movement at the loss of some holding torque. We won’t know if that loss would be a problem until we start putting some heavier tools on that spindle holder.

In the meantime, we’ll start testing the same way we tested the servo Z-axis: use it as a pen plotter. Only this time we’ll have a stepper controlled screw drive Z-axis.

A New Home For CNC Z-Axis

Our hacky CNC machine project upgraded to a real CNC Z-axis courtesy of a retired CNC router project. It was a modular design built out of extrusion beams and commodity M5 fasteners, which made it easy for us to remove the Z-axis and transfer it to our project.

The modular nature also made it easy to make modifications, and as we mounted this Z-axis on our machine we could see signs of creativity by the previous owner. We’re not sure exactly what problems all of these modifications were intended to solve, perhaps we will learn as we get further on this project. For now, the focus is on exploration which means a preference for nondestructive modification until we have a better idea of what we are doing.

HAKNC bracketWhich means we’re not going to drill into aluminum for mounting holes just yet, we’ll get started with a simple 3D printed bracket for mounting this Z-axis assembly on our gantry. We would prefer to have mount it just a little bit lower, bit we were hampered by the 3D printed limit switch mount. It may get replaced later, but for now it dictates our Z-axis mounting height.

Thanks to the use of flexible aluminum extrusion beams on both CNC projects old and new, mechanically speaking it was relatively painless to transplant this Z-axis from one machine to another. Now we proceed to electrical and software integration.

A New Candidate Z-Axis From Retired CNC

We didn’t get very far with a belt drive stepper Z-axis before another candidate emerged. This is the gantry of a CNC router table, with some sort of a spindle holder and two stepper-controlled axis. The Z-axis moving the spindle holder up/down, and one of the linear axis. X or Y I can’t tell. The other axis would roll on rails and controlled via belts missing from this picture.

There’s a name on the spindle holder, and a search for Inventables CNC found their current product called X-Carve which shows some superficial similarity to what we have before us. But this one showed signs of several modifications by its previous owner. We do not have the full history of it, we just knew it was a CNC project that was left behind several months ago when its owner moved to a different city. It was given to another person, who then offered it to us because we were likely to make use of it immediately on our project.

And use it we shall, because that Z-axis looks a lot better than the one we were ready to start exploring. This Z-axis module uses a leadscrew, which we expect to offer superior precision (good) at a loss of top speed (probably less important for Z axis.) It was originally designed to be a CNC Z-axis, built with aluminum extrusion beams far more rigid than the thin folded sheet metal construction of our belt-drive assembly. Our belt-drive sheet metal Z-axis was the X-axis of a Monoprice Mini Select 3D printer, which meant it was not designed to take the kind of loads that would be necessary for CNC cutting anyway.

Let’s mount this modified Inventables Z-axis and make it work instead.

Freebie Supercon SAO from

Digging through some old piles, found this advertisement freebie given out at Supercon 2018. (This was handed out by one of the attendees and not part of the conference goody bag.) The board already has all the surface mount pieces, I just need to solder the two through-hole components: the LED and the SAO header. It should be a short soldering project, might as well give it a shot.


With writing on both sides, I realized it wasn’t obvious which side each component should be soldered to. Well, I wasn’t going to use it as a badge SAO anyway, so it didn’t really matter. I chose arbitrary directions. Supercon 2018 SAO 40 connector

I’m not familiar with this “Qwiic” connector. It looks like something these guys are trying to promote as an interconnect for an ecosystem of components. I guess they saw Seeed Studio’s Grove Connectors and decided they had a better idea? This little giveaway didn’t exactly entice me to dive in to their system, but it did let me know it existed and to look it over. I guess mission accomplished for this little freebie giveaway.


I used my bench power supply to deliver 3.3 volts to the input pins. The LED lit up and that’s when I learned it was a fast color-changing LED. The lens is frosted instead of clear like the ones I’ve been using for fun, but the same basic idea.

It lights, it’s fine.

Initial Tests Of Stepper Motor Z-Axis

We have wired up our first pass of a stepper motor controlled Z-axis, with a stand-alone stepper motor driver powered by a stand-alone 110V AC to 12V DC power supply unit. All connected to a mechanical assembly that was formerly the X-axis of a Monoprice Mini 3D printer.

First test was to verify electrical functionality. The entire assembly was connected to our Grbl ESP32 controller while sitting on the XY table, and we verified there were no escapes of magic smoke. (Yay!) We then used bCNC on the laptop to command Z-axis movement, and verified the direction was correct. (The distance was not, but we can figure that out later.) At this point we were running short on time available at the shop, so we followed up the electrical test with a quick and dirty mechanical test.

The machine has a vertical aluminum beam where we had taped our sharpie markers earlier, and fastened our servo Z-axis for that series of tests. Now, with a mechanical assembly almost as tall as the beam, we’ll need to decide if we still need that vertical beam for permanent installation.

But for a temporary test while we were short on time, the vertical beam is great for us to zip-tie the mechanical assembly in place. It is crooked (not nearly vertical) but it was enough for us to gain confidence this assembly is actually going to work for us. There are still things to be figured out: a rigid mounting solution that doesn’t involve zip ties, plus Grbl parameters to correct movement distance.

But for today, we’re just happy to run through homing routine on all three axis before proceeding further.

Wiring Z-Axis Assembly To Stepper Driver

The Monoprice Select Mini 3D Printer is an impressive demonstration of how costs could be wrung out of a basic cartesian 3D printer design. We could debate whether the tradeoffs were worthwhile, but the level of integration resulting in parts count reduction is indisputable. I have extracted the X-axis from a non-functioning Mini printer intending to leverage its highly integrated mechanical assembly. But it turned out the advantageous mechanical integration was balanced by the disadvantages of electronics integration.

The Mini 3D main board is a single monolithic circuit board, with stepper motor driver chips surface mounted directly to the PCB. This meant electronics associated with the X-axis mechanical assembly could not be easily extracted and reused, and we had to use a stand-alone stepper motor driver.

While I was busy routing wires for X and Y axis and cleaning up the tangles, Emily stepped up to handle the task of wiring this Z-axis. In the shop she found a stepper motor driver module gathering dust and got approval to use it in this project. The motor presumably runs best on 12V as that was the power supplied by the Mini’s AC adapter, but there was no existing 12V power rail on our machine to tap into. Our Grbl ESP32 controller ran on USB 5V from the laptop, which was itself running on standard Dell 19V power. The Parker ZETA4 controllers plugged directly to 110V AC and each had its own internal power supply.

So Emily also had to dig up an 110V AC to 12V DC power supply to wire up to the stepper driver. It was also gathering dust and had amperage capacity far higher than what we needed for the motor, but it was easily available so we went with it. Once everything was wired up, it’s time to test what we have.

Repurposing Broken 3D Printer X-Axis To Use As Z-Axis

It feels like a lot longer than three years ago, but that’s when I started my adventures in 3D printing with the Monoprice Select Mini 3D Printer. It was limited in print volume and print quality, but it served as a good introduction to 3D printing so I felt I understood the field enough to invest in larger and more capable printers.

My Mini was retired from active duty and sat in a box until I loaned it out to Emily for the exact same purpose of giving her an introduction to 3D printing. And just as I did, the introduction led her to purchase a larger printer and my mini went back into its box.

Now it has been pulled out of the box for a third tour of duty elsewhere. This time, I am trading it away. It is destined for local technology outreach events, and in exchange for my working but limited printer I’m receiving a non-working Monoprice Mini to tear apart. Here is my printer performing a test print to verify it still works, the final print it will perform in my possession.

MP Mini X axis

Before I agreed to this trade, I was ready to tear it apart for the sake of extracting its X-axis. That black horizontal arm is a small self-contained linear actuation unit: it has a standard stepper motor, guide rods with linear bearings, and a belt-controlled carriage. Plus a micro switch for axis homing, all inside an integrated stamped sheet metal unit.

I wanted to use this X-axis assembly as the Z-axis for our Grbl CNC project. And the timing of this trade is fortuitous, because now I’m not destroying a perfectly working printer. It is not going to be rigid enough to handle a CNC cutting tool, merely an incremental upgrade over the servo-controlled Z-axis. This allows us to take our first step towards a stepper-controlled Z-axis for our machine.

4S LiPo Battery Tray for JPL Open Source Rover

As of late August 2019, the official JPL Open Source Rover specifications call for this battery pack. Based on specifications listed on that page, it appears to be built from 18650 Lithium Ion battery cells in a 4S2P configuration. (4S2P means four cells in series, two sets of them in parallel, for a total of eight 18650 battery cells.) The key feature that made this pack desirable for JPL is the extra safety it offers: this battery pack features an integrated battery protection circuit board backed up by a polyswitch. This is great protection against battery abuse such as over-charging and over-discharge including short circuits. Like many facilities working with leading edge engineering, JPL had its own experiences with runaway batteries so it’s no surprise they would recommended the safest thing available.

The safety, however, comes at significant cost as the pack costs over double that of a commodity battery pack popular with remote control vehicles. (Multi-rotor aircraft, monster trucks, etc.) And that’s before factoring availability and its impact on shipping costs. The rover specifications already include a 10A fuse on board, plus a power monitoring module that can be programmed to sound an alert when the battery has been discharged too low. This provides a baseline level of protection so rover builders like myself can choose to forgo the belts-and-suspenders safety of a premium battery.

But in order to use commodity battery packs, we’ll need a different battery tray, and that’s where this project came in. It also makes the battery more easily accessible via a rear door for charging, replacement, or in the worst case scenario, yank it out of the rover quickly in an emergency.

This battery tray was designed for a 4S LiPo battery pack (*) with a hard outer shell for physical impact protection, and the tray bolts on to the bottom plate of rover body. CAD file is an online Onshape public document for anyone to modify to suit different battery packs. For those who don’t need to make modifications, ready-to-print STL (and DXF for updated rear panel) have been posted on Thingiverse, and a video walkthrough has been posted to YouTube:

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

Wiring Organization With Spiral Wrap And Zip Ties

The major components of the SGVHAK CNC project now all have assigned mounted locations, the Grbl ESP32 controller board being the most recent item. No longer sitting on whatever surface is convenient, a tidier arrangement of components allow a tidier arrangement of wires.

The repurposed aluminum extrusion beams have channels that turn out to be quite convenient for running wire bundles. And as long as we stay away from the cut ends of these beams, there are no sharp corners to raise wire damage concerns. So they were stuffed into a channel, and held in place with zip ties. This may or may not be a good long term idea, we’ll find out as we go.

Under the table, there is a metal cross beam just behind the metal plate where we’ve mounted the Parker ZETA4 motor drivers. This beam is an ideal location for extra length of wire to be coiled up and zip-tied out of the way.

The leaves what we should do about the wire that can’t be conveniently tucked into an extrusion nor tied to the cross beam, and the solution is spiral wrap. The downside of spiral wrap is the time consumed in their installation, a lot of labor just winding them around and around the wire bundle. This spool was available precisely because it was so tedious to install. The owner switched to a different and easier-to-install style of cable sleeves and donated these spiral wraps to the project. It stays with the theme of building this project out of salvaged and repurposed parts, and besides, beggars can’t be choosers!

Once we’ve done our housekeeping and the wires are much neater than before, we can return to feature work.

Test Mounting Grbl ESP32 On Gantry

We now have good homes for the Parker ZETA4 driving our X and Y axis, and the laptop control console has a nice throne of its own. But we can’t start working to tame our nest of wires unless we also find a home for the prototype Grbl ESP32 controller board. Every wire on this machine leads to the controller board, so its location is literally key to the wiring puzzle.

During the test where everything was held down by tape, this controller lived atop the gantry not far from the laptop computer. This seemed to work well and there may be merit to the thought that lines for high speed digital data should be kept as short as possible. To test this plan, some very minimalist brackets were designed and printed for hooking the board on our gantry rail directly behind the laptop computer.

Since we have components and wires soldered to the back side of our prototype control board, we need to make sure we keep a healthy distance between those exposed contacts and the very conductive aluminum extrusion beam. M3 threads were tapped in the bracket, and standoffs installed to maintain that distance.

Grbl ESP32 test mount 1

Two identical brackets were printed, with a minor lip to hook over the edge of the extrusion beam. The only thing maintaining the correct distance between these two brackets is the perforated PCB itself. Not the best plan in the world, but this is just for a test to see if all the wires would even reach and function if they do.

Grbl ESP32 test mount 2

If this location doesn’t work out, the next most logical position is on the metal plate below the table, adjacent to the X & Y axis driver modules. We’ll test this location first. And now that a location has been decided, it was time to organize some wires.

Mounting Parker ZETA4 Under Table

Adding functionality to our CNC project is fun, but every once in a while we need to stop and do some housekeeping. Such was the case for a recent work session: we need to start cleaning up our wiring. The big nest of tangles are starting to impede progress, because time we spent sorting through wires is time not doing cool things.

Real industrial CNC machine usually have a big electronics equipment cabinet in the back, made of folded sheet metal. We won’t have that, but we shouldn’t leave the Parker ZETA4 stepper motor drivers sitting loosely on the ground, either. A big metal bracket was available and repurposed as home for the beefy X and Y axis motor drivers, the Parker ZETA4.

First a few holes were drilled in the table to fasten the bracket, then mounting patterns for the ZETA4 were drilled in the bracket and tapped for fastening machine screws. There was one minor oversight: the pattern is technically upside down. The most important part of this vertical orientation is so the driver module heat sinks are oriented properly for convection cooling. Mounted upside-down will reverse the air cooling flow, hopefully the direction matters less than the fact air is flowing.

With the two driver modules fastened to the bracket, we can plan wire paths in some semblance of organization. As a bonus of this mounting, the new locations are closer to the rest of the machine giving us more slack in the wire to reach other components.

LED Modules Salvaged From Cree Dimmable Bulb

Earlier this year I brought a failed dimmable Cree LED light bulb to SGVHAK for a teardown. We determined the LEDs were fine and the problem was in its power supply but we couldn’t figure out exactly where. I stashed the board aside, intending to someday pull the LED modules off for potential reuse elsewhere. That “someday” has finally rolled around.

Removing 10 LED module from light bulb

I deployed the heat gun I’ve used to remove many components from PCBs before. It is usually just for fun, or for removing hardy components like switches, transformer coils, and power connectors. This would be the first time I tried removing a silicon component with intention of reuse.


Out of eight modules, two were damaged when I tried to remove them. These LED modules were composed of two parts: a substrate to which the set of 10 LEDs were mounted, and a diffuser/cover module over them. And much to my chagrin – they weren’t bonded very tightly to each other. Here are pictures of one of the damaged modules. One LED was clearly torn off and embedded in the cover, or else I would have been tempted to power it up just to see if it works. (The LEDs are not powered in the picture, they appear bright via reflected ambient light.)

LED module with ruler

I considered trying to repair that module, by adding a blob of solder to bridge the gap where the damaged LED used to live. But it proved beyond my skill level to work at such sub-millimeter scales. Here is one of the successfully removed modules next to a ruler showing millimeters.

LED module with 3 soldered wires

There are three solderable contacts at the bottom of each module where I expected just two. So they would be positive, negative, and… something else? To try to figure out which pad did what, I soldered a small wire (trimmed from the end of a resistor) to each pad. This turned out to be even more difficult than its small size suggested. The first wire wasn’t too bad, but when I tried to solder on a second wire I understood the challenge. This module is so small there’s very little heat dissipation between adjacent pads. As soon as I heat up one solder joint, it is hot enough to melt solder on remaining pads too. This was really designed for SMD soldering by machine, where the solder is supposed to all melt at once. Soldering one at a time by hand was hard.

Once soldered, I connected power to two of the three pins. It appears the center solder point is not for power. My best guess is that it is for heat dissipation and apparently a wire soldered to the pad does not offer enough dissipation to tolerate abuse. As a test I cranked up the power (over 30V and over 40mA). That heated up the LED enough to melt the solder and escape, falling off the wires onto my workbench.

LED module with 2 soldered wires

Which meant another opportunity to practice patience while soldering. This time I didn’t bother soldering to the center pad, and I didn’t crank the power up as high.

LED module illuminated

These LED modules give a dull glow at 24V, drawing less than 10 mA while doing so. They start growing brightly at roughly 27V, drawing approximately 20mA. I’ll need to provide better heat dissipation, connected to that center pad, before I push through power any higher again.

Successfully Ran Multi Hour Programs With bCNC

Once we added a crude but functioning third axis to our primordial CNC machine, we started testing it by running longer and longer G-code programs. Once we got to a test program that took roughly 25 minutes to complete, we encountered our first system failure: our computer running UGS (Universal G-code Sender) would lose its serial communication connection at unpredictable times.

As we intend to eventually run programs much longer than 25 minutes, this was unacceptable and UGS was removed from contention. We returned to the list of G-code senders in Grbl documentation and chose bCNC as our next candidate.

We are definitely giving up some nice features by moving from UGS to bCNC. We lose the ability to customize the arrangement of our control elements, and we lose the ability to preview our tool path from arbitrary directions. (We’re restricted to a few fixed projections.) But reliability is more important than eye candy, so we’re happy to give them up if it means a system that we can rely upon to run for hours.

To test bCNC, we take advantage of the fact this is an open loop system: the control board will run exactly the same whether it is attached to the salvaged industrial XY stage or not. This allowed me to run long duration tests using just the laptop and the prototype control board, away from the workshop where the machine hardware resides.

To establish our baseline: UGS is brought up to run this 25 minute test program again in the test configuration without hardware. Two attempts both failed with serial connection dropping offline at different times.

Then, using the same desktop test configuration, bCNC is brought up to run the same 25 minute test program. Five attempts ran to successful completion without losing serial connection.

Then we moved on to the challenge level: a G-code program that takes over 7 hours to execute. I would leave the laptop and prototype board running over most of a week. Every time I noticed the program had succeeded, I press “Cycle Start” again. This netted roughly ten attempts, and they were all successful. No serial connections were lost.

It looks like bCNC is the way to go. And with the new candidate software in place, attention returns to machine hardware.

Tool-less Corner Steering Motor Cover for JPL Open Source Rover

While building a JPL Open Source Rover, I would put the rover chassis in many different orientations in order to better access whichever part I was working on at the time. I’ve experienced recurring problems with the default corner steering motor cover popping off under sideways load, which happens when I have the rover on its side or on its back. The motors themselves are relatively robust but the wiring terminals at the end are fragile and difficult to repair if broken off. So I’d like to keep them protected as I work on other parts of the rover. I know I’m prone to accidental bumps that, thanks to Murphy’s Law, tend to impact the fragile and difficult to repair parts of my project.

Thus the motivation for this quick 3D printing project: an alternate design for steering motor covers. I had the following project goals:

  • Easy to print, without overhangs that would require support.
  • Tool-less installation and removal
  • Robust against sideways forces
  • Round shape to reduce chance of catching on obstacles.

In order to take advantage of nature of 3D printed parts, it was broken up into two pieces. The inner clip is printed at an orientation suited to clip onto the Actobotics aluminum rail without worrying about layer separation. The cap is printed at an orientation that makes it easy to print without supports. Separating the cap from the clip also makes it easy to create variants on the cap without worrying about compromising the Actobotics clipping capability.

With these caps installed on my corner steering motors, I was able to work in various orientations without worry of the cap falling off. I could also move the rover about and, thanks to the round surface, the cap is unlikely to catch on things and fall off. So even if a rover ultimately has plans for other caps, the round cap is still useful to have installed during construction and maintenance.

I’ve released this design on the JPL rover builder’s forum, hoping others would find it useful to build upon. The original CAD is a public document in Onshape, the read-to-print STLs have been uploaded to Thingiverse, and a video walkthrough explaining how it works has been posted to YouTube.