The Good And The Bad Of Living With Azteeg X5 Mini WiFi

Once the Azteeg X5 Mini was properly installed in my Monoprice Maker Select, the printer went right back to work making parts for Sawppy. I’m extremely happy about how quiet the stepper motors are running. The loudest noise by far is the power supply cooling fan, which is at least a steady white noise that more easily fades to the background versus the constantly varying sound of stepper motors printing an object.

The first test print with X5 Mini in control showed signs of under-extrusion. Tuning extrusion parameters is a continuing challenge but I blame the printer hardware and not the electronics control board for that issue. This was eventually solved by upgrading the entire print head, a story to be covered later.

While the core functionality is pretty solid, some of the auxiliary features of a Azteeg X5 Mini are rather less so.

The most irritating problem is its WiFi feature. Out of the box it acts as a WiFi access point with default name and password. There is a menu to change the default name and password so my printer wouldn’t be vulnerable to pranksters in range. After changing those menu values and rebooting as recommended, I can see my new “AP SSID” and “AP Password” values in the menu. But the actual access point continued using the old SSID and password as if the menu had no effect. I’d like to think such a glaring security issue would be patched by now, but I just have to wait for them to fix this.

Separate from the WiFi issue, there are some problems upon startup, manifesting itself in one of three ways:

  1. Upon power-up, the status LEDs usually start blinking. But every once in a while, the onboard LEDs are solid on and not blinking. The board does not respond at all in this state.
  2. Even if the LEDs start blinking and the board responds, it may boot into a state where all control communication looks OK but nothing moves. It will talk to my OctoPi as if everything is OK: The board will accept G-code and show progress processing them and return “OK” after every command… but no motor movements occur.
  3. Even if the board responds to movement, occasionally the homing cycle at the beginning of a print job fails for no reason I could diagnose.Homing error

In all three cases, the workaround is to turn off the printer and turn it back on again. This can get annoying at times because it sometimes require multiple on/off cycles to get there. Once printing actually starts, everything performs well. And the best part – no smell of stress electronics threatening to burst into flames.

 

Azteeg X5 Mini Finds A Home In Monoprice Maker Select (Wanhao Duplicator i3)

After an Azteeg X5 Mini passed the nondestructive test of driving a Monoprice Maker Select, it was time to turn the jury-rigged nondestructive test configuration into a more permanent installation. The first step was to clip off all the old connectors and replace them with proper types to match their corresponding locations on an X5 mini.

MMS Brain 03 - Connector switch

Then our new brain needs to be installed inside the enclosure. Since the old and new control boards are shaped nothing alike, this required new mounts at new locations. I drilled four holes to install half-inch long #6-32 standoffs.

MMS Brain 04 - 6-32 Standoffs.jpg

This position was chosen mainly so the power supply exhaust fan blows air directly onto the heat sinks. A secondary bonus of this position is that the X5 mini’s USB port, microSD card, and WiFi antenna are exposed through the opening previously used by the factory brain’s control UI screen, which will not be missed.

MMS Brain 05 - New home

A few zip-ties to organize the wires and the printer is up and running on its new brain!

The primary objective was accomplished: the printer no longer smells like burning electronics when heating up its print bed.

The unexpected bonus was the silence while printing. These motor driver chips are far quieter than their predecessors. I used to be able to tell by sound when a print has completed, but not any more. Now I would walk into a room thinking a print has completed because it was quiet, only to see it was still printing away.

The biggest downside of this upgrade is the fact all my previous STL slicer profiles are now obsolete. I have to create entirely new profiles and start tuning them for the new brain. It’s work, but I was willing to make this tradeoff for a control board that is so much quieter and doesn’t threaten to burn down my house.

Trying an Azteeg X5 Mini on a Monoprice Maker Select (Wanhao Duplicator i3)

The first step of this process was to determine if an Azteeg X5 Mini would even work with an Monoprice Maker Select. We’ll find out by trying to run the printer with the board with minimal (ideally zero) modifications to both. This way, if an unsurmountable deal-breaker is encountered, everything can be restored to the way they were.

When the printer control box was opened, there was no visual indication what was emitting the smoke scent. I had expected to see some discoloration on the circuit board or component, but this is fine: it’s a good thing we’re taking on this project before anything goes seriously wrong.

MMS Brain 01 - Before

The upgrade was done incrementally. Connectors were moved over in associated groups and tested with each group. The first group to move over were the X and Y axis motors and associated homing switches. A ViKi 2 LCD display was borrowed for the duration of this test.

MMS Brain 02 - Incremental Move.jpg

One expected annoyance is that these two boards used different connectors. Fortunately they were the same pitch so most of the connectors could be persuaded to fit (even if not properly) for testing purposes. The only nontrivial electrical work was for our Z-axis. Prusa i3 style printers like this one have two Z-axis stepper motors driven in parallel, but Azteeg X5 mini only has a single Z-axis connector. This required soldering up an Y-connector to electrically connect the two motors in parallel.

Several items in Azteeg X5 Mini’s configuration had to be modified for this particular printer chassis. Number of steps per millimeter, how to properly interpret temperature readings, all fairly normal items for configuring a 3D printer. There were no deal-breakers which is great news.

At the end of the day, all connectors were (crudely) hooked up and printer configuration updated. Heating up the nozzle and print bed allowed verification of temperature control by double-checking their temperature readings using a separate temperature probe. And finally, it was time for a test print!

The test print showed that X/Y/Z axis are working correctly, but the print exhibited signs of under-extrusion so the extruder needs tuning. This is a minor flaw which means we’ve successfully confirmed that we can use the Azteeg X5 Mini in this printer.

Next task: replace crude connections with proper connectors, and find a way to physically mount the Azteeg X5 Mini in this printer.

Smell of Smoke Prompts Monoprice Maker Select (Wanhao Duplicator i3) Upgrade to Panucatt Azteeg X5 Mini

Making parts around the clock for Sawppy was a stressful tour of duty for my 3D printers. Yesterday I described how my Monoprice Maker Ultimate burned out its relay, the second one since I bought the printer. Fixing it and bringing it back online gave me two printers… until the Monoprice Maker Select started smelling like overstressed electronics upon print bed warmup.

My first round with this product ended with a room filled with smoke. Back then I didn’t know enough about printer internals to diagnose what went wrong, I just sent the whole thing back on the generous Monoprice warranty. (For store credit that I used towards the Ultimate.) This time around I know a bit more, enough to understand what people are talking about on the forums. The controller board on these machines have some noted weaknesses and smokey smell is the least of my worries. This problem needs to be addressed before something really bad happens.

The easiest thing is to send it back to Monoprice for another replacement, but we’re not going to do that this time. I bought this open-box unit with the expectation I’ll use it to learn more about 3D printer internals, so let’s start hacking away and do a brain transplant instead.

I could replace the brain with an identical unit, but based on the internet forum information, the problem is a design weakness of the board itself which means I’m likely to end up with the same problem again. It was certainly the case with my Maker Ultimate relay problem, so let’s do something else.

On recommendation of a local 3D printing enthusiast (and enlisting his help in the upgrade process) I will try replacing this printer’s brain with a Panucatt Azteeg X5 Mini with SD2224 drivers based on Trinamic’s TMC2224 chip. There will be no control UI, I’m going to skip the Viki 2 LCD board as I plan to control the printer via OctoPrint.

Next step: test to see if Azteeg X5 Mini is compatible with the Maker Select chassis.

Azteeg X5 Mini

Monoprice Maker Ultimate (Wanhao Duplicator i6) Kills Another Relay

I was willing to stop at “good enough for now” on modifying my open-box Monoprice Maker Select because I needed printers up and running. In the process of designing and iterating Sawppy‘s 3D-printed components, I kept both printers busy pumping out prototypes to see how the designs in my mind survived the translation into real world pieces.

Sometimes there was enough work to keep printers busy around the clock, and this was too much stress for the control boards inside these affordable printers. It’s an inevitable tradeoff between price tag and robustness. In the case of my Monoprice Maker Ultimate, the weakest point in the chain is the main motor relay that controls power going to all the motors (both stepper motors and fan motors) and heaters.

This relay has failed once before, and under the constant workload, another one has kicked the bucket. It has started failing intermittently which shows up as brief interruption in motor power. Since the electronics are not powered through this path, these brief interruptions ruined prints, making them look like the motor drive belt had skipped a few teeth when the reality was the motors stopping briefly as the electronics continued onwards.

Last time this happened, I kept trying to diagnose belt skipping. Wasting a lot of time looking over mechanical parts that were working well. This time I recognize the symptoms and pulled out the control board before the printer failed completely.

Since it wasn’t completely burned out yet, the relay exterior didn’t look bad – only a minor discoloration that might have gone overlooked if we didn’t know exactly where to look.

Relay exterior discoloration

Cutting away the relay’s blue enclosure exposed a familiar sight: the interior is fried.

D6 Second Failed Relay

It’s always easier to do something the second time, but addressing my second fried relay is still time spent not working on the project itself.

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.