Y-axis Pulley Misalignment on Monoprice Maker Select (Wanhao Duplicator i3)

After I tightened the X-axis belts by three teeth, most of the ringing went away. Not all, but enough for me to look elsewhere for the next improvement. The obvious thing to do is to try the same thing with the Y-axis. It was also pretty easy to do but since the improvement was not as dramatic. I still have ringing on both X and Y axis but at least the worst of it went away.

While working with the Y-axis belt, something felt a little bit off. A few minor details didn’t line up the way I would have expected. Pulling out the caliper confirmed the eyeball diagnosis: the Y-axis components do not line up.

I measured the distance between edge of chassis and edge of belt at the idler pulley sitting in front of the printer.

YPulleyWithout moving the caliper, I compared that distance with the equivalent in the back, between the chassis and the drive pulley mounted on the Y-axis motor shaft. We’re off by more than the width of the belt.

YMotor

The first question: Is there an adjustment I should use to fix this? The idler pulley in front is pretty fixed in its place with no room for adjustment. This is also true of the motor bracket in the back. So the answer seems to be: No, there is no adjustment.

The next question: Is there a quick modification I can make to address this misalignment? There’s no good candidate in the front – swapping positions of the idler pulley and the holding nut would just make things worse. In the back, we could try to flip the pulley around on the motor shaft, but the set screws were installed tight.

While I was debating how much force I should use before I risk ruining the set screw… I realized I forgot to ask an important question. This should have been the zeroth question, so to speak: Is this misalignment causing a problem?

Um… well, I guess it isn’t the biggest problem at the moment.

So we’ll leave this on the to-do list for now and revisit later.

 

Tightening Belt To Mitigate Vibration Artifacts on Monoprice Maker Select (Wanhao Duplicator i3)

Now that my open-box Monoprice Maker Select (Wanhao Duplicator i3) is up and running, it’s time to take a closer look at the less than perfect print output. This was totally expected at this terrifically low price point, and part of the point of this exercise was to learn how to analyze 3D printer problems and how to address them. This printer is not just a tool – it is a project in and of itself!

The first (and as it turns out, a recurring) issue is a vibration artifact in the print after a sharp movement. After some web searches, I’ve learned this was called “ringing” because it’s the after effect of a sharp impulse, like ringing a bell. Looking at the printer, I thought the obvious culprit would be the Y-axis movement. It has to move the build platform so it would have more inertia to overcome and cause problems.

To confirm this hypothesis, I wanted a test object to print in perimeter-only “vase mode”. I created one in Onshape that would cause the printer to take a lot of sharp right turns, which should expose ringing effects.

Here’s the part of the object where the print head moved in X, holding Y steady. The ripple on the left is the Y-axis ringing after making the sharp turn.

Y ringing visible but less bad

And here is the counterpart, where print head was travelling in Y and holding X steady. The ripple on the left is the X-axis ringing after making the sharp turn.

X ringing is bad

And this is why we do a test before blindly going in to fix a problem that might not actually be there. Despite the original expectation for Y to exhibit large ringing effects, it was actually the X-axis!

Now that we know, we’ll try the easy thing first: tighten X-axis belt. A glance behind the machine showed the belt is currently very loose despite effort of spring tensioner.

MMS X Assembly

The low-cost method of holding the belt, using a M3 bolt and zip-ties, also makes it easy to modify. In this case, we just need to cut the zip-ties, pull the belt tighter, and put on new zip-ties. A silver sharpie was used to mark the starting point.

Silver Sharpie Marks Starting Position

The marker is so we could clearly tell that we’re tightening it by three teeth (for overall length reduction of 1.5 teeth.) Now if we need to tweak this in the future, we know how the changes relate to the original out-of-the-box condition.

X Axis Belt Tightened by 3 teeth

This change didn’t completely eliminate ringing, but situation is a lot better than before. It’s good enough to move on to the next problem.

SharpHash

Using OctoPi To Avoid Monoprice Maker Select (Wanhao Duplicator i3) Usability Issues

The Monoprice Maker Select 3D printer is a re-branded Wanhao Duplicator i3. Which is itself part of a lineage of 3D printers that can trace their ancestry to the Prusa i3. Josef Prusa invented an effective design that has seen wide adoption, including manufacturers who are very inventive at cutting cost. Now a serviceable 3D printer can be purchased for iPad money. Or even Chromebook money if buying used/refurbished.

That’s not to say everything is great. There are some definite trade-offs made to hit this price point, and the customer sitting in these cheap seats has to sacrifice some nice features of more polished printers.

One infuriating usability problem is the microSD card slot. It is on the side of the control box whose sheet metal enclosure has an over sized slot to make sure manufacturing tolerance issues won’t end up covering the card slot. Great for cheap manufacturing, but it also means is there’s plenty of room for a card to enter the sheet metal opening and miss the microSD slot entirely. If the user fingers release the card, thinking it was in the slot, the card drops into the enclosure and the user has to open the enclosure to retrieve the card.

Another usability issue is the control panel. First, the LCD is a primitive dot matrix display with very limited viewing angle. Second, it doesn’t always respond even when tactile feedback was returned by its control knob. It’s not clear if this is a problem in the knob (tactile feedback without electrical connection) or if it’s a software issue, but it is annoying either way.

One way to avoid both usability issues is to control the printer using OctoPi, the prebuilt image to run OctoPrint on a Raspberry Pi. The web-based interface eliminates the need to deal with the knob and LCD UI. And OctoPi’s G-Code upload/management functionality means never having to use that microSD slot.

Personally, I didn’t feel OctoPi delivered a lot of value for my Monoprice Maker Ultimate (Wanhao Duplicator i6) because the Ultimate had a well placed memory card slot for full SD cards and a decent control panel. In the case of the Maker Select, though, an OctoPi has saved a lot of aggravation.

Maker Select with OctoPi

 

OctoPiUI

Replacing Printing Surface on Monoprice Maker Select (Wanhao Duplicator i3)

The default printing surface that shipped with a Monoprice Maker Select feels similar to BuildTak. It is a good general purpose surface but some other materials will work better for specific plastic filaments and/or better fit personal preferences. Upon recommendation of this Hackaday printer review, I tried a PEI surface. My experience using it for printing Monoprice PLA has been stellar. So now that we have a second hand open-box Maker Select printer whose print surface was well used by the previous owner, the solution is obvious.

PEI 0 - scuffed surface

We could try to squeeze a little more life out of this surface, or replace it with a fresh sheet that came with the printer, but now that the printer has proven to be sufficiently functional we’re going straight to a sheet of PEI purchased from GizmoDorks’ Amazon store.

The first step is to remove the sheet. Historically most adhesives are easier to remove when warm and this is conveniently a heated bed. Setting the bed temperature to 40 degrees C warms things up a bit without risking skin burn. It peels off leaving only minor residue behind to be cleaned up.

PEI 1 - Peel

The PEI sheet is 8″ x 8″ which is only a tiny bit larger than the official 200mm x 200mm print area. It is definitely smaller than the sheet of aluminum on the printer. This means we should put in a bit of effort finding the proper position for the sheet on the bed. Fortunately the well-used surface clearly shows where the hot nozzle touches when homing at the start of a print, giving us our axis origin which we can mark off with a bit of masking tape.

PEI 1a - Zero

The PEI sheet is then placed against this origin to test for fit. We see that the upper-left corner conflicts with the screw used to level the bed.

PEI 3 - Align

PEI is brittle enough we can use a knife to cut the surface of the sheet at that corner and breaking a little bit off to clear the screw. After that we can peel off the adhesive backing and stick the PEI sheet on the bed. When doing this – check twice and commit! I hesitated and tried to adjust, which put a little wrinkle in the adhesive. This is visible towards the upper left. Thankfully the wrinkle didn’t noticeably affect top surface flatness, so I just have to live with a slightly crooked PEI sheet and a cosmetic blemish wrinkle.

PEI 4 - Stick

Monoprice Cleaning Filament Doing Its Job

I bought a secondhand “Open Box” entry level Monoprice Maker Select 3D printer to augment my rover printing factory. As expected, there were cosmetic blemishes on the machine, but that’s not important at all. The next task is to level the print bed. The wear on the print bed shows the printer to be well used, but the bed not remotely close to level. This is not a big deal – it is highly probable that something shifted during shipping.

After the print bed was back to level with the print axis, a test print attempt was foiled by the next problem: a clogged nozzle. This is also fairly common in 3D printers, so out came the unclogging tool: a 0.4mm diameter drill bit. It immediately restored filament flow, but only briefly. The nozzle quickly clogged again. Whatever is causing the clog, it must not have been broken up by the drill bit, only pushed aside and maybe rearranged.

Which means it’s time to bring out the next tool: Monoprice Cleaning Filament. For small clogs that can be cleared by the drill bit, it’s fine to just use whatever printing filament was on the machine. But when we start looking at a more serious clog, using filament formulated for the purpose hopefully makes the job easier.

The material causing nozzle jam was fortunately a dark color, making it easy to see when the white cleaning filament manages to dislodge some and carry it out of the nozzle. After some small bits were removed, the nozzle would quickly jam again requiring a push with the 0.4mm drill bit to rearrange the pieces and hopefully breaking apart the debris for more removal.

Cleaning Filament

This cycle was repeated several times. Each time the drill bit was used, a little more debris is removed by the cleaning filament, and we could run a little longer before nozzle jams up again. Eventually the nozzle was clear enough for the cleaning filament to extrude unimpeded for five minutes, and also coming out clean.

The cleaning filament did its job, the printer is back in business.

 

Monoprice Maker Select (Wanhao Duplicator i3) As Rover Workhorse

The story told so far of Sawppy the Rover is about its development and construction, and that story has reached the point where Sawppy is running into shortcomings of PLA plastic. The next step in that story is to look into rebuilding Sawppy in PETG plastic, but before we take that step, I’m going to rewind a bit and tell a different aspect of the story.

The story of the 3D printers behind the rover parts.

A very deliberate design goal for Sawppy is for it to be accessible to interested builders who don’t have a high end expensive 3D printer. Designing to be printable on low-end machines means avoiding printing parts that demand tight tolerances, so Sawppy uses pre-made gears and bearings instead of printing them. I’ve been pretty happy with my Monoprice Maker Ultimate (Wanhao Duplicator i6) but I know it is a few steps up from entry level. To make sure Sawppy can be printed on entry level machines, the best thing is to buy one and use it to print Sawppy.

So off we go to Monoprice.com to buy an open-box Maker Select (Wanhao Duplicator i3) which is one of the most affordable Prusa i3 clones available on the market. There are cheaper printer kits, but ready-built printers don’t come much cheaper than these either in price or quality.

This is actually my second go at one of these printers. I had purchased a new (not open-box) Maker Select before as a relative 3D printing beginner and it printed well for a month. But a few days out of the 30-day satisfaction guarantee period, the control box started filling the room with smoke of burnt electronics and it never powered on again. I returned that machine under the 1-year warranty and used the store credit towards the Maker Ultimate I have now.

This time around, in exchange for the open-box discount, I fully expect a problematic printer. People don’t return 3D printers for no reason, so it’ll be a complete luck of the draw on the particular…. personality… of an open-box 3D printer. And this time around, with a year of 3D printing under my belt, I hope to better able to deal with printer issues.

I expected an adventure, and I got one! This is the story of an open-box printer that was (eventually) able to print PETG parts for Sawppy the Rover version 1.0.Monoprice218641

Cat Treat Toy

And now a change of pace from rover design: a cat toy! The intent of this project was to build an enrichment toy for a cat. It provides a bit of physical activity and also provide rewards in the form of an occasional cat treat.

The design goals were:

  • Printable on inexpensive 3D printers.
  • Spherical exterior so a cat can bat at it and have it roll around.
  • Hollow interior to hold some bits of cat treats.
  • Holes in the exterior so treats would occasionally drop out as the cat plays with it.
  • Can be pulled part for treat refill.
  • Can be printed without print support material.

Cat Treat Toy

The simultaneous demands of spherical exterior, accessible hollow interior, and no support is a challenge for low-end hobbyist level 3D printers. Mid- and high-range printers have features like water-soluable support material which makes arbitrary shapes easy to build. Low end printer projects need to be designed to print on a flat print bed. In this case, the ball has to be printed as two hemispheres.

If each hemisphere had equal thickness walls throughout, the polar parts of the hemisphere would have been a challenge to print without supports. The top of the sphere will almost certainly sag due to overhang and ruining the spherical shape. Fortunately there was no requirement for the interior to be spherical and we could work around this issue by making the interior into a cone that can print without supports.

We then move on to the next challenge of joining two hemispheres. This was solved by printing a third piece – a springy clip that sits inside of our sphere’s “equator” and shaped to hold the two halves together. Here’s a cross-section view of the clip and the two hemispheres.

Cat Treat Toy Cross Section

If this springy clip was too weak, the sphere will fall apart as the cat plays with it. If it is too strong, the human will have a hard time pulling it apart for refill. So it requires some tuning to find a sweet spot as every printer is a little different. Thanks to Onshape’s ability to adjust parameters, the lucky cat’s owner could fine-tune how much surface area to put on this clip and how much bending spring to put into its shape.

This cat toy is freely accessible in Onshape’s Public Documents library to be copied and modified, which is exactly what happened for at least one cat.

DSO 138 Simple Case by chibikuma2

The DSO 138 purchase was ultimately decided by seeing one in person, assembled by a local maker. That unit was first encased in an acrylic case, which cracked under use and was replaced by a 3D-printed case. Learning from the pioneer’s experience, I’ll skip the acrylic case and go straight to the 3D-printed one. If it works out, I’ll have something useful to protect the DSO 138. If it doesn’t, at least I could see one in action and decide what improvements to make.

The printer is the Monoprice Maker Ultimate, and the STL files were sliced into G-Code using Cura 3.1, printed on top of a Cura-generated raft.

DSO138 Case Bits

The author of this particular case is Thingiverse user “chibikuma2“. And the dimensions of the design looked good – all the pieces lined up well with parts on the DSO 138. The top and bottom parts of the case is held by friction. There were no fasteners and no clasps or hooks. 3D printers with loose XY accuracy may have problems creating this tight fit – if the XY “ooze” is too large, the pieces would not fit together at all. And conversely, if the printer under-extrudes, the two halves would be too loose to hold together.

The fit is good enough on the Maker Ultimate printer to fit together tightly. Once assembled, a putty knife or similar tool would be needed to pry the halves apart again.

The other printer performance dependency is first-layer performance. The labels for the controls in this design were done as lettering recessed into the surface. For these words to be legible, the first layer must be accurately positioned since slight movements are enough to spoil the lettering. Cura’s raft is what I usually use when first layer is important, sadly in this particular case it was not enough.

DSO138 Case Reset

The lettering is cosmetic, but there’s also a functional requirement for first layer precision: the 3D printed sliders that cap over the multi position switches on the DSO 138. The square hole at the base must match up to the square peg on the switches. If the holes are too large, there will be unpleasant slop in switch operation. If the holes are too small, the slider would not fit. Again this printer fell short of ideal, and had to be cleaned up with a small sharp blade.

DSO138 Case Slider

This is a decently functional case for the DSO 138, but this experience has motivated thinking towards creating a different design. Some items on the feature wish list are:

  • Move away from 3D-printed lettering. We have a label maker and we’re not afraid to use it.
  • Expose the loop of wire that generates the test square wave form.
  • Include a battery pack to supply the 9-12V DC power, with associated auxiliary components like an on/off switch.
  • A removable screen cover to protect the screen while in transit.
  • Storage for the probes.

Overview: Fusion 360 vs. Onshape Scripting

My fascination with gears led me to the scripting mechanism in both Fusion 360 and Onshape. Both CAD packages offer only minimal gear generation capabilities, and not even built-in to the main software: Spur gear generation was given in the form of an external add-in. This meant they are ideal introductory entry points to examine the different design philosophies.

The Onshape team invented their own scripting language called FeatureScript. It has some superficial similarities with C-style languages which helps a software developer get up and running more quickly on the new language. The code libraries are designed specifically around designing parts within a Onshape feature studio.

In contrast, Autodesk did not try to invent a new language. Instead, they decided to support multiple existing languages and let the user choose the one that best suits their purpose. C++ or Python. (Fusion 360 used to also support JavaScript, but support has been deprecated.)

Readability: Because FeatureScript was designed specifically for its task, the code is much more direct and readable. All API are designed to fit with FeatureScript because that’s the only language supported. Fusion 360 C++/Python code must call into the Autodesk library code which had to be adapted to be usable across languages. Advantage: Onshape.

Performance: C++ can be compiled to native code and executed on the local computer. For small tasks, this will be the fastest possible option. Python code running locally wouldn’t be quite as fast, but unlike FeatureScript, it does not have to deal with network latency. Advantage: Fusion 360

Security: FeatureScript executes in a secure sandbox on Onshape server, and thus limited in risk for exploitation by bad actors. In contrast, a native C++ binary can easily host hostile code. Python is slightly better in this regard, but it’s not clear how much effort (if any) Fusion 360 puts into running Python securely. Advantage: Onshape

Development: Like the rest of Onshape, all work with FeatureScript takes place within the user’s web browser window. If the developer does not like the Onshape FeatureScript editor, they are unfortunately stuck. In contrast, Fusion 360 presents many options. C++ development takes place on a platform-appropriate IDE (Visual Studio for Windows, Xcode for MacOS) and for Python the Spyder IDE is provided. Advantage: Fusion 360

Evolution: FeatureScript is owned by Onshape and any future evolution is fully under Onshape control. Since all FeatureScript written by users are stored on Onshape servers, they can validate any future changes for compatibility. In contrast, Autodesk owns neither C++ nor Python and could not direct future evolution. And since Autodesk does not host the plug-in code, they have no visibility on breaks in compatibility. Lastly, as history has shown, Autodesk can choose to abandon a language (JavaScript) and all the users on it. Advantage: Onshape

Capability: FeatureScript is constrained to feature creation in a parts studio. Autodesk API is currently roughly similar, focused on the model designer portion of Fusion 360, but they are starting to branch out. As of this writing they’ve just started rolling out some basic scripting capabilities for the CAM module and stated intention to do more. Advantage: Fusion 360


Python LogoFor the immediate future, I intend to focus on Fusion 360 scripting via Python. I’ve wanted to become more proficient in Python, and this would be a good way to look at Python through a lens entirely different from writing Qt code on a Raspberry Pi. I also have ambition to write Fusion 360 plug-in that leverages external libraries to provide novel services, and that’s not possible when stuck inside the FeatureScript sandbox. I will just have to keep a careful eye on the Python library imports in an effort to keep the security risks under control.

 

Fusion 360 and Onshape: Spur Gears via Scripts

I’ve been learning Onshape and Fusion 360 as they are two of the cloud-based CAD solutions with a subscription tier that’s free for me. They each have their strengths and weaknesses and it’s always interesting to compare and contrast between them.

One item they share that I found surprising is that neither of them has built-in capability to add gears into the mechanical design. I’ve always thought of gears as a critical part of any nontrivial machinery. So I had expected to find a significant section of the CAD package to be devoted to creating various types of gears for different applications, simulating and analyzing their suitability to the task, but there was nothing.

For basic projects, a simple spur gear would suffice. Thankfully, both companies have heard the user requests and made simple spur gear creation available as an add-in created with their own respective scripting mechanism.

Extending Onshape requires learning to write code in their custom language FeatureScript. A member of the Onshape team used it to create the spur gear script and made it available in the public documents library. One downside of this approach is the fact that (1) Onshape users needs to make a copy of a public document before they could use it for their own purposes, and (2) all documents created with the free subscription tier of Onshape are public. These two factors combined means many, many copies of the spur gear script in the public documents library. Correction: Custom FeatureScript can be added to the toolbar without making a copy. Thanks [FS] for the comment!

OnShape Spur Gear

Fusion 360 did not declare their own scripting language. They expose their extension API to two languages: C++ for the high-performance native code crowd, and the Python interpreted scripting language for the less performance-focused audience. They used to also support JavaScript, but as of July 2017 they have moved that into maintenance mode due to lack of usage.

The spur gear script is part of the sample script library installed alongside Fusion 360, so I didn’t have to find a separate download nor was copying of public document necessary. They presented it in both C++ and Python format. I found the Python version in the “Scripts and Add-ins” menu and clicked “Run”.

F360 Script Addin

Onshape and Fusion 360’s spur gear scripts present their gear parameters in slightly different formats, but both should suffice for simple projects. If I want to do something more complex, I will have to dive into coding my own extension script.

I’ve wanted to learn more about what is and isn’t possible in an extension script anyway, so… challenge accepted!

F360 Spur Gear

 

 

 

LA Times Writer’s Take on 3-D Printing

As a Los Angeles Times subscriber, I generally appreciate their coverage of technology. I may not always agree with the accuracy or their assessments, but I appreciate their effort to make technological topics accessible for non-techies. A few months ago they ran an article on 3D printing. The writer borrowed a MakerBot Replicator for six weeks and wrote about their experience.

LA Times 3D Printer
Follow the link for the full article.

Most technology articles tend to be printed as part of the Business section. This article ran in the Home & Garden section because the writer was evaluating a 3D printer in the role of a home appliance. As soon as I realized this, I said to myself “oh no” and my expectation for the article went downhill.

Over the course of this six-week experiment, the author downloaded progressively more complex and ambitious designs off Thingiverse and printed them. The author then wrote about the experience of printing and the (lack of) usefulness of the results. The author was less than impressed by the current state of the art in 3D printing. One sentence from the conclusion: “I merely toyed with the machine for its novelty without finding a conclusive use for it.”

Reading through this, the voice inside my head was screaming: “You’re doing it wrong!” The author never explored printing their own creation. Something new and novel just for themselves. This is, in my view, the most important point of 3D printing and this article’s missed it entirely.

Here’s an analogy with a 2D paper printer commonplace in homes and offices: A writer borrows a laser printer for a few weeks, goes on the internet to download progressively longer PDFs of books written by other people. The writer never explores the freedom of printing books of their own writing. After printing a few books written by others, the author concludes there’s no reason to have a printer at home when it’s cheaper and faster to just buy already-printed books.

I can understand how this article went off on the wrong track due to the flawed premise, but I still disagree with it.

Building a Tiny “Joule Thief”

Yesterday I got a “Joule Thief” (a.k.a. Armstrong self-oscillating voltage booster) circuit up and running on a breadboard. The circuit was more complex than it needed to be, with a tangle of wires, because things got messy while debugging. But now that I know which parts connect to which, it’s time to simplify.

The goal is to make it small and compact enough to package together as a single-battery LED flashlight. That general goal broke down to the following parts:

  1. Minimize physical size. Since the coil is the largest single piece (other than the AA battery) it makes sense to align the diameter of the coil to the battery and pack everything else as tightly inside as I can.
  2. Minimize component count. Most Joule Thief examples on the internet (including the top picture on the Wikipedia page) soldered the legs of the individual components together. No circuit board needed.
  3. Friendly to hand soldering. There are some ready-made Joule Thief circuits for sale on the internet using surface mount components and a circuit board. I wanted something I can build by hand and maybe use as a soldering teaching project to be shared on the internet.

After a few iterations, I have something I’m happy to share with the world. This is purely about the mechanical assembly – the electronic schematic is identical to the one in the Wikipedia article linked at the top of this post.

An overview in words:

  • The resistor for the NPN transistor base is installed between the collector and emitter. The resistor acts as physical separation in order to avoid a short-circuit.
  • The transistor and LED are pointing in opposite directions, allowing their pins to point towards each other and soldered together. The aforementioned resistor keeps the LED anode and cathode separate.
  • The transistor is stuffed into the middle of the coil, utilizing the center volume.

The build sequence in pictures:

1 - Transistor
Transistor with the base bent in preparation for resistor installation.
2 - Transistor Resistor.jpg
The 1K Ohm resistor is installed on the base, between collector and emitter.
3 - Transistor Resistor Coil
The coil has two wires wound together. One end of this dual-coil is facing the camera, the other end facing away. Since we need to wire up the coil in opposite directions, we’ll bend one wire of the front pair towards the back, and the opposite back side wire to the front.
4 - Coil prep.jpg
The two wires now facing away from the camera are soldered together to become the positive terminal of the circuit. One of the two wires facing the front will be soldered to the resistor, and the other to the emitter.
5 - Transistor in Coil
Transistor in the center of the coil. Now the coil wires can be soldered.
5a - Resister soldered
Resistor soldered to one coil wire, all the others have been trimmed short in preparation for attaching the LED.
6 - LED
LED is soldered to the circuit, as is a wire to act as negative (return) wire.
7 - AA
Install the whole assembly in front of a 3D-printed AA battery tray: Let there be light!

Relay Replaced Instead of Bypassed on Monoprice Maker Ultimate (Wanhao Duplicator 6)

After the due diligence investigation of my broken Monoprice Maker Ultimate (a rebadged Wanhao Duplicator 6) I determined my unit has indeed suffered the known common failure of the main 24V relay. I was also satisfied as to the cause of the failure – it was the consequence of engineering design decision I disagreed with, driving a relay far above its rated rating of 10 amps. But I was unsatisfied with the internet forum wisdom of bypassing the relay when it fails. I thought it had a useful purpose to serve and should be replaced instead of bypassed.

I ordered a replacement (or more accurately a pack of them, since it makes little sense to buy or sell a single unit of something so cheap) and got to work once they showed up. The first order of business was to get out the label machine and label all the wires connected to the control board so I know where everything plugged back in. The wires were held in place with dabs of hot glue to resist them from being shaken loose in transit, those globs had to be removed before I could disconnect the wires. After that’s done, the board came out easily.

Before I started de-soldering anything, I performed a quick verification test on the new relay: I connected 5V across the control pins and heard a reassuring “click”. Multi-meter confirmed that the continuity shifted from the NC (Normally Closed) to NO (Normally Open) pin as expected.

After that, it’s time to heat up the soldering iron. Normally I would label the old component “BAD” before starting on the project, to make sure I don’t de-solder a broken component and inadvertently soldered the bad item right back onto the board. (This is the voice of experience speaking.) But in this case, the melted hole is a pretty good way for me to tell which is the bad one.

NewOldRelay

It takes some effort to de-solder a component with 5 large pins like this relay, but nothing tricky. It just requires a lot of patience with the de-soldering tools at hand. And once done, the new relay soldered into place easily.

With this replacement, my 3D printer is back in action with all original functionality intact.

 

Investigating the Infamous Relay Bypass for Monoprice Maker Ultimate (Wanhao Duplicator 6)

This week my 3D printer stopped working mid-print. All motor movement, heating activity, and cooling fans stopped simultaneously. However, the control panel is still responsive and so is the LED light strip. Time to hit the web and see what I can find.

My printer is a Monoprice Maker Ultimate, which is a rebranded Wanhao Duplicator 6. Which is in turn a knock-off of the Ultimaker design, though not a literal clone of any specific Ultimaker model.

A web search of my symptoms found a known point of failure with this product: the main 24V relay. The popular explanation is that Wanhao cloned somebody else’s circuit board, removed the features that would use the relay, and used a cheap relay that’s always on. So the recommended workaround is to solder a wire to bridge the legs of the relay and bypass it. “It doesn’t do anything anyway.”

I was skeptical of this explanation because if Wanhao is really just cutting costs, they would skip the relay entirely: no relay is cheaper than any relay! There must be more to this story.

But first, a check to see if the relay is indeed the fault. A quick visual inspection confirmed that there’s a problem with my relay, indicated by the melted hole in the side.

D6 Relay hole

For additional confirmation, we temporarily bridged the pins as recommended by forum posters. When done with the power on, it brought the always-on heat break and circuit board cooling fans immediately to life. Relay failure confirmed.

What does the relay do?

Turning off this relay cuts power to all 24V components: Motors, fans, and heaters. In normal operation, there’s no situation where the 5V components (micro-controller, display, LED strip) are running without the 24V components, so the answer must be related to abnormal operation. Our best hypothesis: this relay is a safety switch in place to halt the system if the 5V subsystem should fail. If that happens, it makes sense we’d want to shut down all the 24V parts too. And now that we have a plausible description of the relay as a safety feature, bypassing it with a soldered wire seems like a bad idea.

Why did the relay fail?

This part was easier to figure out. When I ran my printer with my Kill-A-Watt meter, it indicated the power draw jumps by over 300 watts when both heaters are active. So even ignoring the cooling fans and motors, the print bed and filament heaters together draw over 12.5 amps from the 24V plane.

Typing in the designation on the relay “SRD-05VDC-SL-C” found its datasheet, which says the relay can handle 10 amps. So the printer was designed such that the relay exceeded its rated capacity anytime both heaters are active. Not exactly a great design. The relay tolerated this overworked condition for many months but this week it could take no more.

The correct solution, then, would be to replace this relay with a higher-rated unit that can handle 15+ amps continuously. (12.5 for heaters + motors and fans + margin.) Unfortunately relays are not standardized in their footprint so I failed to find a drop-in higher-capacity replacement. (I found the Omron G5LE series with the same footprint, but with the same 10A maximum for DC so I’d be no better off.) Hooking up a beefier relay to the circuit board via wires is a possibility but intimidating. 300 watts of electricity is very good at finding minor flaws and turning them into big problems.

What do we do?

To summarize, the candidate solutions are:

  1. Bypass the relay with a wire as per internet forums: Seems like a bad idea to bypass a potential safety feature.
  2. Install an exact replacement: Known to work until it doesn’t.
  3. Install a higher-rated drop-in replacement: Great idea but such a replacement could not be found.
  4. Install a higher-rated unit elsewhere in the box, connect to the circuit board via wires: Adds many points of potential failure and >300W of power is unforgiving of flaws.

I’d love #3 but I couldn’t find a beefier relay with identical footprint. #1 and #4 are asking for trouble. For the immediate future, I choose #2 as the least-bad solution.


UPDATE 1: After the original relay was replaced with an identical unit, I cut open the original relay to see inside the failure.

UPDATE 2: As expected, the identical unit eventually failed in an identical way.

A 3D-Printed Enclosure to Take My LED Project On The Go

For the Connect Week event put on by Innovate Pasadena, the Hackaday LA group is hosting the “Bring-A-Hack” event where attendees are encouraged to bring projects (in any stage of completion) for show and discussion. Since I’ve been building my LTC-4627JR driver board as a learning project, I wanted to bring it in for show-and-tell.

Now I could just bring the assembled circuit board and pass it around as an inert object, but what fun would that be? I wanted to bring in something that shows it doing something, and provide some way for people to interact with the whole contraption. Looking at my parts on hand, it seemed easiest to rebuild my thermometer test project. I can have a simple Python program run on the Raspberry Pi, reading temperature from the Tux-Lab Si7021 breakout board, and sending it out to my display. That makes 3 circuit boards, plus they’ll need portable power. I will enlist my Amazon purchases: the 3-cell lithium ion battery pack protected by a S-8254A IC, and the MP1584 buck converter to translate the battery pack’s power into Raspberry Pi friendly voltage.

They present a logistics challenge. There are many parts and while it’s fine to just connect them with wires on my work table, it’s too unwieldy to carry on the Gold Line to Pasadena. I’m going to need some kind of enclosure to carry the whole thing.

To Fusion 360 we go! I just needed a simple enclosure so it was pretty fast to draw up. The bottom tray is for power: it holds the battery cells, their protection board, and the buck converter to 5 volt output. The upper tray holds the Raspberry Pi. The lid of the tray holds my custom LED circuit board, and a few clamps holds it all together. The clamps should be easily removable so I could disassemble the box to show people what’s inside.

ShowandTellBox

I had originally intended to mount the Si7021 breakout board as well, but ended up deciding it would be more fun to have it dangling out for people to play with it. Here are the layers without the clamps, so they can be taken apart and show off the insides.

IMG_5273

And here’s the “travel configuration”, with clamps holding the pieces together.

IMG_5274

This setup worked well. I was able to carry it in my backpack without worrying about tangling up or shorting out wires. Once I arrived, the project was fairly well received and lots of people had fun playing with the thermometer.

Rev. B @ Hackaday LA August Meetup

There’s nothing like a deadline to drive progress, so I’ve imposed deadlines on myself to keep things moving. For Luggable PC Mark II Revision B, the self-imposed deadline was to get it finished (enough) to show at the Hackaday LA August Meetup. It was a mad scramble towards the end, cutting fancy feature ideas in favor of simple ones that can be done quickly within the deadline. But I made it! I took it on the Metro Gold Line train to the meetup venue SupplyFrame DesignLab. Here’s a picture somebody took of rev B sitting on the projects show-and-tell table.

highres_464139891

Luggable PC Mark II Revision B sitting on the projects show-and-tell table along with project from other people. I’m not visible in this picture by [SpencerSkelly]

I always forget to take pictures of my own project while at a Hackaday meetup… I’m too excited talking about my project. I’m not visible in this picture. The location I spent most of my chatting time is blocked by the person with white polo shirt on the right.

Many Hackaday LA regulars are familiar with my Luggable PC Mark I, and might even be getting tired of it. Mark II was a fresh take and attracted a new wave of attention. It is always fun to share my projects with like-minded people.

RevB_Backjpg

RevB_Front

A downside of mad scrambles to meet deadlines is overdose. I’m enthusiastic about Mark II and there’s still lots to problems I need to fix with rev B…. but after the deadline scramble I’m ready for a break before I start working on rev C.

I was planning to go back to learning Python, but they had a giveaway at this meetup and I was granted a Microchip MPLAB Xpress PIC16F18345 Evaluation Board. Getting some basic familiarity with these low-power (in both computation power and electrical power) microcontrollers had been on my to-do list for some time. Now that a PIC microcontroller board has dropped in my lap, I might as well run with it!

Make a Flexible Bracket With 3D Printing Vase Mode

Due to real-world inconveniences like gravity and manufacturing tolerance, the monitor sags relative to the aluminum extrusion frame of Luggable PC Mark II Revision B. We’ll have to compensate for this by adding something to help hold the monitor in the frame.

This Lenovo L24q-20 has barely any bezel around the screen, which was a tremendous plus when I was shopping around monitors. The tiny bezel makes for compact dimensions which makes it easy to package, and the lack of excess material contributes to weight. But now the lack of bezel means I need to be careful with the bracket that we’ll need.

When there’s physical stress on a LCD screen, it distorts the layers inside and show up as visible color distortions on-screen. It isn’t good for the screen and doesn’t look good, either. We want something that can spread this stress evenly over a large area. Ideally something flexible so high-stress areas can give way to balance the load.

 

I started designing rigid 3D printed brackets with stick-on foam strips for flexibility, but then remembered “vase mode”. This is an option in 3D printing where, instead of printing a solid object, the plastic is only extruded on the perimeter. This results in a thin shell of the shape, the thickness of the wall is the 3D printer extruder nozzle diameter, and the center is empty.

Thingiverse had a few objects to be printed in “vase mode”. It was good for showing off something 3D printers can do easily that is difficult for other manufacturing methods. But while it was good for these Thingiverse trinkets, I didn’t see a functional use for this technique… until today!

I designed the shape I wanted in Fusion 360 (as a solid) and printed a short segment using vase mode to prove the idea is sound.

Monitor top test clip
Short test piece of clip printed with vase mode

Once the short test piece proved successful, I proceeded to print enough segments to cover all available space on the extrusion bar. (Everything not taken up by the handle or the corner pieces.) They hold the monitor in place while distributing that pressure across almost the full width of the monitor.

Clip full width
Four segments of flexible clip (two on each side of handle) printed with vase mode

CAD World vs. Real World: Chassis Flex

On today’s episode of “why we build prototypes”: chassis flex.

In the digital CAD world, all features are exactly as drawn. Their dimensions always perfectly match the specified value. All surfaces mate perfectly. All fasteners are aligned to their holes. All dimensional values are static and never change, regardless of the physical stresses applied on them. Multiple objects are allowed to occupy the same space.

None of these things are true in the real world.

Digitally simulating all the messiness of the real world are hard. There exists software tools for engineers to simulate specific aspects. Interference checking can try to find objects occupying the same space, but it can be deceptive because they rarely take into account all the other factors such as manufacturing tolerance and physical stresses.

Finite element analysis can help understand how objects move in response to physical loads in the real world. It takes some level of expertise to properly set up an analysis, beefy computing resources to run the simulation, and then human expertise again to interpret the results. A badly set up simulation will tell the wrong story, a bad interpretation can do the same, and manufacturing tolerances can throw everything off in unexpected ways.

For a hobbyist project that is quick to build and failure is cheap, it is faster and easier to find out how things act in the real world by just building it in the real world. Hence the construction of Luggable PC Mark II Revision B. Seeing everything in the physical world highlighted some problems. Most of them are trivial, but one stood out.

The Lenovo monitor is attached in the lower back, using a metal plate I pulled from the original display stand. The plate goes to a 3D-printed spacer, which attached to aluminum extrusion bars, which attach to another 3D printed part, before it is attached to the bottom of the aluminum frame. All those less-than-perfect joints add up to a clearly visible problem. The monitor is supposed to sit within the aluminum extrusion frame, but when all the little errors accumulated, the top edge of the monitor does not sit in the frame like it did in CAD, it actually juts out over 20 mm from the frame.

Next: how to help the top of the frame and the top of the monitor stay together.

 

Screen frame separation

 

Maintain Relative Spacing Between M3 Nuts in Misumi HFS3 Aluminum Extrusions

In the previous post I described how to keep individual M3 nuts in place on a Misumi HFS3 Aluminum Extrusion. After I started using those little 3D-printed holders to keep the nuts in place, I ran into a related but different problem.

Some large parts require more than one fastener to hold them to the extrusion. And some of these parts get moved around as I revise the details of my design. A specific large bracket required four nuts and, after pushing the M3 nuts around (all four every time I moved the bracket) I started thinking about how to improve this process.

The first answer was to scale my existing design upwards. Instead of a tiny object that holds a single M3 nut, create a longer strip that holds multiple nuts in place. In practice, the friction of a longer strip causes many problems. When pushed, the strip will want to bend instead of move, which increases the pressure on the sides of the rail, which made it even more resistant to moving. And when pulled, the strip is not strong enough to stand up to the strain and would break apart.

The second answer is to reduce the size so there’s less frictional stress to bend or stretch and generally break the strip. But then the old problem came back: with less friction, the nuts would move around if the frame is jostled or tilted. It’s nice that they all move together, maintain proper spacing, but that’s not terribly useful.

The third answer is to combine elements from the previous two: the strip inside the rail is still loose and free to move, but I added a tab that sticks above the rail. This tab is large enough to provide friction against the rail edge. As the friction is at tab, friction would not cause the rest of the strip to bend or stretch. Since such a strip is customized for a particular part, the tab is also specialized to the mating part. When the tab is pushed up against the side of the mating part, all the nuts on the strip are at the appropriate places.

With the help of this strip, it is now much easier to move the brackets around to try out different ideas.

Nut locator strip

 

Make M3 Nuts Stay Put in Misumi HFS3 Aluminum Extrusions.

While putting together the exterior extrusion frame for Luggable PC Mark II Revision B, I got frustrated with another recurring headache. Aluminum extrusions (like the 15mm Misumi HFS3 I’m using) are shaped so I could put fasteners (in this case, standard M3 nuts) in a rail to fasten things at arbitrary locations along the extrusion. The fact the nuts can slide anywhere along the rail also meant they don’t stay still. If I place the nuts at the desired locations, I have to be careful not to bump or tilt the assembly or the nuts will go sliding out of position.

After too many episodes of nuts moving out of place, I decided to put some thought into the problem. I ended up with a small 3D printed part I can insert into the extrusion along with the M3 nut. It is large enough to rub against the edge of the rail and thereby holding the M3 nut in place, but small enough that it can still be moved with a little push.

Nut hold insert

It was a challenge to dial in the exact dimensions. The acceptable range is very narrow – in fact almost too narrow for a consumer-level 3D printer like mine to handle. Within the same batch I printed, some are extremely tight and some are too loose. If I print at a different time of day, some are entirely unusable. I also ran out of one spool of filament during a print, and the new spool (even though it is the same type from the same vendor, probably even the same manufacturing batch) returned different results.

So I have to keep adjusting dimensions and generate different files between batches. Fortunately, since they are small, it is not a huge loss of material to just throw away the unusable pieces. It solves my headache and that’s all I really ask of them.