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.

Simplify3D Custom Supports for Lenovo L24q-20 Power Adapter Bracket

The Luggable PC Mark II project is built around the Lenovo L24q-20 QHD (2560×1440) monitor. One of the reasons I chose this screen was because its AC power adapter is relatively small and I thought I could package it within the enclosure. For Revision A, I didn’t do anything fancy: the power adapter is zip-tied to one of the aluminum extrusions. I should do better for Revision B.

Monitor PSU zip tie

The goal is to design a mounting bracket that can hold the AC adapter in place, look relatively elegant, allow easy removal of the adapter, and do it all while taking up minimal space. This is commonly solved by a bracket with flexible claws to hold the object in place, so I designed one of my own tailored to the dimensions of this adapter.

Monitor PSU CAD

My 3D printer can translate this CAD object into the real world, but it needs a little help. Deposition modeling type 3D printers like mine can’t put things in arbitrary locations in space, due to pesky things like gravity. The fastener screw hole in the middle has enough surrounding material for the 3D printer to build up the top of the hole despite gravity, but the tines at the end need to be supported while printing.

This is one of the strengths of Simplify3D as slicer – the ability to customize these printing supports. I wanted supports to help me print the fork tines on the ends, but I didn’t want any support for the fastener hole as they are unnecessary and, if present, would be very difficult to remove. In Cura 2.x (which came with the 3D printer) supports are an all-or-nothing proposition. I could not selectively choose what to support. Simplify3D allows me to do so.

Monitor PSU S3D

And thanks to this custom support, I have a clean fastener hole along with fork tines to hold the power adapter in place. I don’t use Simplify3D custom supports very frequently, but when I do, I’m very glad I have the tool at my disposal.

Plastic Bottle Upcycling with TrussFab

csm_chair_FEA-nolable-02_ea4ad9b60f
Image from TrussFab.

A perpetual limitation of 3D printing is the print volume of the 3D printer. Any creations larger than that volume must necessarily consist of multiple pieces joined together in some way. My Luggable PC project is built from 3D printed pieces (each piece limited in size by the print volume) mounted on a skeleton of aluminum extrusions.

Aluminum extrusions are quite economical for the precision and flexibility they offer, but such capabilities aren’t always necessary for a project. Less expensive construction materials are available offering varying levels of construction flexibility, strength, and precision depending on the specific requirements of the project.

For the researchers behind TrussFab, they chose to utilize the ubiquitous plastic beverage bottle as structural component. Mass produced to exact specifications, the overall size is predictable and topped by a bottle cap mechanism necessarily precise to seal the contents of the bottle. And best of all, empty bottles that have successfully served their primary mission of beverage delivery are easily available at quantity.

These bottles are very strong in specific ways but quite weak in others. TrussFab leverages their strength and avoids their weakness by building them into truss structures. The software calculates the geometry required at the joints of the trusses and generates STL files for them to be 3D printed. The results are human-scale structures with the arbitrary shape flexibility of 3D printing made possible within the (relatively) tiny volume of a 3D printer.

Presented recently at ACM CHI’17 (Association for Computing Machinery, conference for Computer-Human Interaction 2017) the biggest frustration with TrussFab is that the software is not yet generally available for hobbyists to play with. In the meantime, their project page has links to a few generated structures on Thingiverse and a YouTube video.

 

3D Printed Acrylic Fixture

3D Printed Acrylic Fixture CADSince my last fixture project was foiled by laser cutter kerf, I thought I’d try 3D printing the next fixture to avoid laser cutter kerf spoiling my fixture accuracy.

I started with the same idea as the previous project – just put two pieces together in a right angle joint. This time I put a hinge in the fixture. The idea is that the work pieces can be put in place separately (with acrylic cement already applied to joint surfaces) and then I rotate about the hinge to bring the pieces together.

I could have stopped there, but a single joint doesn’t do anything. If I’m using up acrylic, I prefer building something that can be nominally useful. So the ambition grew to building a little box: 5 pieces (four identical for sides and one for bottom) joined together by simple right angle joints. This is only a small box, just big enough to be useful for things like holding little screws, nuts, and washers. It seemed a suitable baby step since most of the projects I have in mind for acrylic (starting with the FreeNAS enclosure) basically boil down to acrylic boxes as well. So the fixture was designed in CAD, then multiplied to create three additional copies at right angles to each other, to create my box building fixture.

3D Printed Acrylic FixtureThe end result demonstrated that, even though a 3D printer does not have cutter kerf to compensate for, it introduces other errors in the system. Maybe expensive industrial 3D printers would have enough accuracy to make this fixture work, but my little hobbyist level printer definitely did not. The corners of the box did not mate together as precisely as it did in my mind. The gaps are too wide and uneven for acrylic cement to bridge.

After this experiment, I decided I should go back to laser cutting and learn how to compensate for kerf and/or design around it.

 

Fusion 360 Foundational Concepts Tutorial

foundational-concepts-iconI went back into Autodesk’s Fusion 360 learning resources for a refresher and to set myself up to learn the Fusion 360 CAM modules. The last time I went through the tutorials, I had skipped the CAM functionality because I had no machine tools and were not likely to get time on anybody else’s machinery. Now that I might be able to access Tux-Lab fabrication machinery, I wanted to make sure I won’t break the machine from doing anything stupid in Fusion 360.

Before I got to CAM, though, the “Foundational Concepts” section caught my attention. I either didn’t see it the last time or it made no impression on me at the time. I went through the set of short videos and they were surprisingly informative. Most tutorials for Fusion 360 (and most other software packages in general) are happy to tell users how to accomplish their tasks. This is a slightly different twist – the foundation concepts talk about why Fusion 360 is the way it is. About how they tried to restructure a CAD package for the cloud-based future, about how they restructured the workflow to take advantage of today’s level of computation power at our fingertips, so on and so forth.

I come from a software engineering background and I’m all too aware of the fact that the end user typically has no idea what the software developer had intended as they built the piece of software. It can be argued that the end user doesn’t need to know anything about the intent if the software is sufficiently well-designed. But for something complex like a CAD package, I believe there is value in learning the motivation behind the design.

And even if the user doesn’t need to know, sometimes the user is curious and wants to know. I appreciate the Fusion 360 user education team for putting this information out there available for those who want to know.

Fusion 360 vs. Onshape: Raspberry Pi

raspberry-pi-logoAnd now for something completely silly: let’s look at how our two competing hobbyist-friendly CAD offerings fare on the hobbyist-friendly single-board computer, the Raspberry Pi.

(Spoiler: both failed.)

Raspberry Pi

I have on hand the Raspberry Pi 3 Model B. Featuring a far more powerful CPU than the original Pi which finally made the platform usable for basic computing tasks.

When the Raspberry Pi foundation updated its Raspbian operating system with PIXEL, they switched the default web browser from Epiphany to Chromium, the open-source fork of Google’s Chrome browser. Bringing in a mainstream HTML engine resulted in far superior compatibility with a wider range of web sites, supporting many of the latest web standards, including WebGL which is what we’ll be playing with today.

Autodesk Fusion 360

Fusion 360 is a native desktop application compiled for Windows and MacOS, so we obviously couldn’t run that on the Pi. However, there is a web component: Fusion 360 projects can be shared on the Autodesk 360 collaboration service. From there, the CAD model can be viewed in a web browser via WebGL on non-Windows/MacOS platforms.

While such files can be viewed on a desktop machine running Ubuntu and Chromium, a Raspberry Pi 3 running Chromium is not up to the task. Only about half of the menu bar and navigation controls are rendered correctly, and in the area of the screen where the actual model data should be, we get only a few nonsensical rectangles.

Onshape

Before this experiment I had occasionally worked on my Onshape projects on my desktop running Ubuntu and Chromium, so I had thought the web-based Onshape would have an advantage in Raspberry Pi Chromium. It did, just not usefully so.

In contrast to A360’s partial menu UI rendering, all of Onshape’s menu UI elements rendered correctly. Unfortunately, the actual CAD model is absent in the Raspberry Pi Chromium environment as well. We get the “Loading…” circle and it was never replaced by the CAD model.

Conclusion

Sorry, everyone, you can’t build a web-based CAD workstation with a $35 Raspberry Pi 3.

You can, however, use these WebGL sites as a stress test of the Raspberry Pi. I had three different ways of powering my Pi and this experiment proved enlightening.

  1. A Belkin-branded 12V to 5V USB power adapter: This one delivered good steady voltage at light load, but when the workload spiked to 100% the voltage dropped low enough for the Pi to brown out and reset.
  2. A cheap Harbor Freight 12V to 5V USB adapter: This one never delivered good voltage. Even at light load, the Pi would occasionally flash the low-voltage warning icon, but never low enough to trigger a reboot. When the workload spiked to 100%, the voltage is still poor but also never dropped enough to trigger a reset. Hurray for consistent mediocrity!
  3. An wall outlet AC to 5V DC power unit (specifically advertised to support the Raspberry Pi) worked as advertised – no low-voltage warnings and no resets.

OpenSCAD for Motion Visualization

Now that I’ve climbed the initial learning curve for OpenSCAD, it’s time to start working towards my goal for doing this: I want to visualize arbitrary motion between components as a rough draft to see how things move in virtual space.

This is not an unique capability in CAD packages. Both Fusion 360 and Onshape have ability to define object hierarchies and visualize their motion. However, they are both focused on the assemblies that have been mechanically defined in CAD. If I wanted to visualize a  hinge-like motion between two objects, I first need to build that hinge in CAD or the software would “helpfully” tell me I’m trying to perform an impossible motion in my design.

In contrast, OpenSCAD does not care. I can place a rotate() operation anywhere I want and it won’t care if there’s no hinge in the design. It is happy to let me rotate about an arbitrary point in 3D space with no hardware around it. This makes OpenSCAD ideal for trying out how wild ideas would (or would not) work in virtual space, before getting down to the nitty-gritty about how to build the mechanisms to implement those wild ideas.

This means some cool-looking ideas would turn out to be impossible to implement, but that’s OK. I wanted something with a lot more freedom than I can get in the CAD packages that limit what I can do for (in their view) my own protection.

But that’s still in the future. For now I’m still climbing the learning curve of moving objects around in OpenSCAD in a way that ties into the built-in animation capability and generating animated GIF to illustrate concepts.

As a learning exercise, I’ve re-implemented the motion of the Luggable PC hinge. Thanks to OpenSCAD flexibility, I didn’t have to spend time building the hinge before I move it!

lug3

Hello OpenSCAD! You remind me of an old friend…

HelloOpenSCADOpenSCAD is a very popular 3D modeling tool in the 3D printing community. Many of the projects available to print on Thingiverse were generated from OpenSCAD. This is most obvious when authors uploaded their .scad files for sharing with the community, but also visible as a core pillar of the “customizable things” section. The customization capability is made possible by variables the author made adjustable in OpenSCAD.

I started designing for 3D printing with the GUI CAD tools, Onshape and Fusion360, so the text-based approach of OpenSCAD seemed strange and foreign at first glance. The official OpenSCAD web site documentation pointed to several tutorials. Not knowing the comparative advantage of one versus another, I just clicked on the first in the list How to use OpenSCAD. It linked to several other tutorials, the most notable one being Know only 10 things to be dangerous in OpenSCAD as having the most compact words-to-content ratio.

I had initially approached it as “Boy it’s going to be hard to completely change my thinking” but as I got along in the tutorial I realized things didn’t feel as foreign as I thought it might be. Digging through musty memories, I realized I had encountered this type of 3D modeling (CSG or Constructive Solid Geometry) before many years ago in the form of POV-Ray. Back in the days when a 20-megahertz 386 was a pretty speedy CPU, and the floating point processor wasn’t a standard part of every PC. I had to upgrade my computer with the purchase of a 387 math co-processor in order to render my POV-Ray projects at a reasonable speed.

Editing CSG files for rendering in POV-Ray was my first exposure to 3D computer graphics, and I chose it because it was free. I couldn’t afford GUI graphics software (the flagship at the time was Autodesk 3D Studio) so I started with the basics and I learned a lot that way. In time, I might appreciate the straightforward simplicity of OpenSCAD in the same way.

Fusion 360 vs. Onshape: Multiple Views

Advantage: Onshape.

When working on a CAD project, the majority of my time is spent focused on a single view of my subject. But when it comes to align parts into an assembly, it is very useful to have multiple views, and this is where Fusion 360 falls behind Onshape.

Fusion 360 can toggle between the standard single-view mode and a quad-view mode. In quad-view mode, the window starts with four equal-sized views and the user can adjust the relative sizes within the window.

F360MultiView

This is a bare-bones baseline level of functionality. I can work with it, but I’m not happy with it. Onshape does it better.

Onshape takes advantage of the fact it runs in a browser. You can have multiple browser windows open on the same Onshape project, and each window can be a different view. Onshape infrastructure keeps all the windows in sync – any change made in one view is immediately reflected in all the others. Want four views? Open four windows. Want 6 views? (top/bottom/left/right/front/back) Open six windows.

And since these Onshape views are all separate windows, they can be placed on different monitors to build a great multi-monitor workspace. Fusion 360 is limited to a single window. Trying to use Fusion 360 across multiple monitors means manually scaling the application window across them. Toolbars get cut in half, resolution doesn’t match, problems left and right. It is not ideal.

What about opening multiple instances of Fusion 360, one for each monitor? It turns out that doesn’t work because the instances are unaware of each other. Change made in one instance is not reflected in the others until the user hits “Save” in one instance and “Reload” in all the other open instances.

The obvious conclusion is that Fusion 360 works best on a single high-resolution display instead of multiple screens. Sadly this is also false. As mentioned in my first Fusion 360 vs. Onshape comparison, Fusion 360 does not scale to high-resolution displays (4K, Retina, etc.) whereas Onshape takes advantage of the fact browser makers have long since handled the problem of scaling for high resolution.

Since the time of my first comparison Autodesk knowledge base published a workaround for running Fusion 360 on high-resolution displays. With these workarounds, Fusion 360 now runs poorly at 4K, which I guess is an improvement over not running at all.

With more multi-view options, including multi-monitor, plus superior support for high-resolution displays, Onshape handily wins this comparison, and they know it.

Luggable PC Project Complete!

The Luggable PC project page on Hackaday.io has been fully documented for anybody to build their own home-built 3D-printed computer chassis. All the components required for assembly have been listed, and all the steps of assembly documented with pictures taken at each and every step.

I expect to continue to make small tweaks to the design, improving little things here and there, but the machine is usable enough that I should stop tinkering with it and actually start using it. This means no new versions rebuilt from scratch for the foreseeable future. But if inspiration strikes, there will be!

When I’ve taken my Luggable PC to various maker events in the local area I’ve received generally positive reception and appreciation. Now I wait to see if anybody actually takes me up on the information compiled and build their own.

LuggablePCAssembly640

Luggable PC Drive Bay Revisions

Here’s the 2.5″ drive bay in the initial iteration of the threaded-box Luggable PC design. It is a simple, basic place to hold one laptop-sized drive, but not a very efficient use of space.

IMG_20170228_090310 - Copy

The most obvious thing to do is to vertically stack another drives adjacent to the existing drive. Easy to do in CAD, but has problems in the real world.

Problem 1: How do you access the fasteners? The laptop storage market have mostly settled around two basic fastener schemes: four screws on the bottom of the drive, or four screws along the sides. If we use the side fasteners, they would not be accessible for drive replacement without taking the whole case apart. The bottom fasteners would be accessible, except that bracket would be impossible to print on a FDM 3D printer.

Problem 2: How do you connect the wires? While at first glance there is enough space to physically accommodate the drive and its plugs, it fails to take into account the wires. The wires for the existing drive barely clear the edge in the picture. Stacking another drive into that space (even if moving it another cm or two to the right) would demand wires make relatively sharp right-angle turns. This would place strain on the connectors including the fragile unsupported SATA connectors on the drive itself.

After some experimentation with the available space, keeping in mind the requirements above, I decided to angle the two stacked drives:

IMG_20170228_091421 - Copy

Now the Luggable PC has two independent drives: One for Windows 10, and another for Ubuntu Linux 16.10.

This design solves the fastener issue: in this arrangement, it is possible to 3D print the drive bay so both drives are held in place by the shape without use of any screws on the sides or on the bottom. Both drives are held in place by a single 3D printed clamp that is secured with just two screws. The downside is that the design only works when both drives are present. It is unable to hold a single drive in place.

This also solves the initial wiring issue: By angling both drives, the wires do not have to make sharp turns and would not place unreasonable strain on the connectors. However, this comes at a cost of usable interior volume. By angling the connectors, and avoiding sharp turns, the cables consumed more precious interior volume than the previous design.

Going back to the idea of drives stacked in the available volume, we revisit the problem of forcing wires to make sharp turns. The turns can be relaxed if we can find more room for the wires without angling it into precious interior volume. The solution turned out to be… turning the drives instead! By rotating 90 degrees a drive can be positioned to make room for the cables’ turns. It also allows two drives to exist side-by-side, allowing the bay to work with a single drive or dual drives.

This design was incorporated into the following iteration of the chassis, built using aluminum extrusions instead of threaded rods as the metal structure.

DriveBayV3

 

Luggable PC Feet Design Considerations

After some time using the assembled Luggable PC prototype, I wanted to adjust the screen ergonomics. While the screen has been raised to a height much more comfortable compared to a laptop, after a few hours of use I wished I could tilt the screen upwards a few degrees.

At first glance this would have been impractical – the screen hinge design is already complicated and adding a tilt adjustment mechanism would only make it more so. So instead of tilting the screen, let’s achieve the goal by tilting the entire Luggable PC by adding 3D printed feet that can be bolted to the bottom of the machine.

The easiest approach would have been to print a simple solid wedge with the desired angle, but I decided to be a little more experimental. I played with Fusion 360’s spline tool to sketch out feet that are designed to move and flex a tiny bit. The flexibility adds two features:

  1. Shock absorption: We still need to be careful setting it down on a surface, but the minute bit of flexibility we gain will help cushion the harshest part of initial impact and make it feel less like we’re breaking the machine every time we set it down.
  2. Flatness compensation: With a bit of flexibility in the feet, the Luggable PC can now conform to surfaces that are not perfectly flat. Previously, the solid bottom means it will rock on 3 out of 4 feet on any surface that isn’t perfectly flat (which is most of them.)

Here is the first iteration, which accomplishes the desired goals:

IMG_20170228_173547 - Copy

Unfortunately it also has a problem: by moving the contact points inward, the front feet are now uncomfortably close to the center of gravity. A slight push from the rear will send the whole thing toppling forward. The design needs to be adjusted to have a wider stance… but we are constrained by the fact the fastening nuts still need to be accessible.

In this case, the short-term fix is to move the feet as far front as possible while still allowing wrench access to fasteners.

IMG_20170228_174620 - Copy

The real solution is to redesign the bottom of the case to accommodate the feet while maintaining a sufficiently wide stance. This idea was incorporated into the following iteration of the Luggable PC. As it used aluminum extrusions for backbone instead of threaded rods, the new wider feet were installed on the bottom extrusion.

FeetV3

A Tale of Three Corners: Design Evolution

The use of threaded rods to hold the Luggable PC case together was borne out of necessity: The print volume of the 3D printer is much smaller than the volume of a PC case so it must be printed in pieces then fastened together. A threaded rod provides strength along its length, but how do we best handle the inevitable corners?

The key constraint is the strength of a 3D printed part, especially the adhesion between layers. This is an unavoidable fact of life for FDM-type printers: the part is weakest between layers, so designing for 3D printers must consider the layers similar to how designing for wood must consider the grain.

Version 1: basic asymmetric

In this design (as used in the “Easel PC” iteration) two of the rod axis are aligned with the direction of the layer. Stress along those two axis would mostly be held in check by the strength within each layer, but a fraction of the force would try to push the layers apart. To guard against this, the third axis is orthogonal so its fastening nuts would also try to hold the layers together.

Corner 1 B
Two of the rods are co-planar with the print layer. (Rod pointing left, and rod pointing down.) The nuts fastening the third rod (Rod pointing away) also exerts a clamping force on the layers.
Corner 1 A
Same hinge viewed from a different angle.

The problem with this design is that the corners are asymmetric by nature. Not just in appearance, the loads it can tolerate are also asymmetric.

Version 2: symmetric but space consuming

The goal of a corner that handle loads symmetrically across the plastic layers means finding a way to make sure the plastic grain is equally strong across all three axis. The solution is to print at an orientation that lies at the same angle to all three axis.

CornerCura
The corner laid flat on the print bed for slicing in Cura.
Corner 2 B
Results in a corner that is equally strong across all three axis.

While this design solved the problem of symmetric appearance and strength, it introduced a new problem: by printing this way, the hinge consumes a lot of the enclosed volume making it unusable. When the goal is to pack the computer components inside a minimalist PC case, every cubic centimeter counts!

Corner 2 A
Angle showing the problem with this design – it consumes a lot of space inside the enclosed volume.

This hinge was used in the “Threaded Rod Box V1” and the space it consumed severely hampered the packaging of that layout. It is definitely not the optimal solution so the search continues.

Version 3: Let’s All Huddle Close!

The previous two designs both depended on the plastic to take some part of the load and hold on to a few steel rods. These rods were a few centimeters apart because we needed room for a wrench to tighten the nuts. We needed the nuts to sit inside the corner because…

… um, why do we need them inside? The key for version 3 is the realization that we don’t need that. By offsetting the rods slightly, we can extend the rods past the corner so the fastening nuts are outside of the enclosed volume and not competing for space with the components inside the box.

When the nuts (and the required wrench clearance) are no longer inside the volume, it allows the rods to sit much closer to each other. Now the closest distance between rods are measured in millimeters instead of centimeters. It also means the three sets of fastening nuts help exert a clamping force across all three axis, compressing everything together. This compression means the alignment of the print layers become much less critical allowing significantly more freedom in designing the rest of the case.

This corner design was used successfully in Threaded Rod Box V2 as shown. (In these pictures, some of the threaded rods have yet to be trimmed to length.)

Corner 3 BCorner 3 A

Fusion 360 vs Onshape, Round 2

fusion-360-logo31After using Autodesk Fusion 360 for a few weeks on the Luggable PC project, I’m getting more comfortable with it. Here are some thoughts and updates on a few items I mentioned in the “Round 1” post:

Constraints: Onshape has very good constraint notification and management. I know exactly when dimensions are fully constrained, and when things are over-constrained, I can see where the conflicts are. In the current default configuration for Autodesk Fusion 360, none of that is available.

However, if one goes into the Preferences menu and go to the feature preview section, there’s an option to turn on the work-in-progress support for constraint notification. This feature, while far from parity with Onshape’s excellent design, goes a long way to easing the pain.

A360 Preview

The complaint about over-constrained situation still applies: an error box is still all we get without any further details. But at least we get a color change to notify us when a feature is fully constrained, even if it isn’t completely reliable yet. Sometimes a feature’s color changes even though it hasn’t been fully constrained, and sometimes a color doesn’t change even when fully constrained. I am still occasionally surprised by how features would move unexpectedly later on in the workflow. Still, it is far better than nothing.

Advantage: Still Onshape, but by a much thinner margin.


Share Design PublicSharing: I was unhappy with the complex access control system, making it difficult to just share a design to everybody. But they have since added (or I just noticed) an option on every design in the project navigation tab: “Share Public Link”. It will generate a link to share publicly. This one is actually a step above Onshape, where I can choose whether the sharing link is a snapshot or a live link to the current state. Choose whether the design itself is downloadable.

And best of all, the design is visible without creating an Autodesk account. Unlike Onshape, where people have to have an Onshape account to access public documents.

Advantage: Fusion 360 takes the lead from Onshape because no account creation is required.


Offline: And now, a sour note. Since Fusion 360 is a native application, with an option to “Work Offline”, I had fully expected it to continue functioning when my internet connection failed. Unfortunately this was not the case! It appears that one needs to be online to enable offline work. I guess they need to download some information before the application can function offline. This make sense when the scenario is to prepare in the office before taking a computer on the road. But when the internet connection is unexpectedly severed, such preparation stage is not possible and things grind to a halt.

Advantage: Nobody. Inopportune network outage renders both useless.

Luggable PC Screen Hinge

In the previous post we have established all the desired traits of the ideal screen layout, and how it’s impossible to meet them all simultaneously. The only solution is to design a mechanism allowing us to convert between two different configurations, each designed to provide the traits desirable for its corresponding condition.

  • Closed: the travel configuration.
    • Compact: We want to be able to lug this around without too much worry of catching on things, so the screen should align with the rest of the case (vertical or portrait orientation.)
    • Protected: To protect the screen, it should be facing inward so the glass surface is less vulnerable to damage.
  • Open: the computing configuration
    • Landscape: Unlike phones and tablets, desktop computer applications are not designed for the possibility of vertical/portrait orientation, so the screen needs to be in horizontal/landscape orientation.
    • Ergonomic: Unlike laptop screens that sit at table height, we can turn our extra heft into an advantage as support to hold the screen up to eye height. Ergonomically superior to the tabletop height of laptop screens.

To transition between these two states, we need movement along at least two axis:

  • Flip: The screen needs to move from facing inward (protected) to facing outward (visible)
  • Rotate: The screen needs to move from vertical/portrait orientation to horizontal/landscape orientation.

My ideal was to devise a mechanism that can execute both of these movements in parallel, so the user sees a single continuous movement from one configuration to another. After quite some thought and experimentation without success, I decided to postpone this ideal for later. For now, I’ll implement a hinge that has two separate degrees of freedom so the two desired axis of movement can be accommodated.

front-open
The open in-use configuration, with the screen offset to the left instead of centered

Originally the open configuration would have the screen up and centered relative to the rest of the body, and I had a few overly complex mechanical linkages attempting to make this happen. But then I realized it isn’t really necessary: the body has enough heft to hold up the screen even if it is not centered left-right. If we accept that the screen can be offset to the left, the rotation axis becomes a very simple hinge, leaving plenty of room to implement the flip axis.

front-closed
The closed travel configuration

This “ah-ha!” moment of realization, letting the screen be offset, greatly simplified the design. With the side bonus of reliability as simpler designs tend to be more reliable.

 

closelid
Demonstrating the open-to-closed transition. (Animated GIF by Shulie)

In the back of my mind, I will continue to dream of a continuous single degree-of-freedom unambiguous movement between open and closed. Maybe I’ll have another “Ah-ha!” moment to make it happen. I’m happy with this as the first draft.

Luggable PC Screen Layout: Challenges

The previous two posts discussed the design reasoning behind the positioning for the power supply unit and the motherboard. Now we get to the most interesting problem: Where do we want to position the screen?

The easiest approach is to line the screen up with the existing components, so I tried that first. A 17″ screen is almost the same length and width as the ATX motherboard plus PSU. But that means the screen would be at a vertical (portrait) orientation. While common for phones and tablets, it is not a typical layout for a desktop PC. (Historical trivia: The Alto by XEROX PARC, recognized to be one of the first computers with a graphical user interface, uses a portrait orientation.)

threadrodboxisoThe easiest solution to that problem is to rotate the whole works 90 degrees. I tried it for a while and the upright screen sitting at table height level was ergonomically poor.

Laptops also have their screens at table height (one of my peeves against laptops) but at least their screens can tilt. I wanted to do even better than merely tilting: I aim for the OSHA ergonomic recommendation raising the top of the screen to eye height.

spaceThe wasted volume between the screen and the motherboard was another problem exposed by this prototype. The space looked small in CAD because the CAD model blocked out all the volume allocated by ATX spec. Since the actual motherboard consumed only a fraction of the allocated volume, the real world example had far more wasted space.

screenwingsI had the idea to solve both issues by raising the screen high to eye level, oriented horizontally, and tilt it into the empty volume. I never got as far as building it. Looking at the CAD layout, it is quite clear that the horizontally-oriented screen sticks out on either side of the case. This makes for a shape awkward to transport and also leaves the screen extremely vulnerable to damage. The screen height was good, but everything else was bad.

Plus, there was one more problem not addressed by any of these ideas: The screen glass surface is exposed while in transit. Laptops fold closed to protect the glass while travelling, but all these designs leave the glass exposed.

It became clear that no single static arrangement will have all of the desired qualities. Similar to a laptop, we will need some kind of mechanism to switch between two states.

  • Closed: A compact configuration for easy transport while protecting the screen from damage.
  • Open: An ergonomically desirable screen position.

Next post: The mechanism to address these challenges.