Skip to main content
Posts tagged:

design

Simple 4×8 workbench

In building out my workshop, I was tired of setting up sawhorses the garage and realized that I needed to better use the floor space of my shop. Setting up a 4×8 workbench is a right of passage for the aspiring maker. They are quick to make and super useful.

Most of them are pretty simple:

Some are just epic:

My main goal was to make an outfeed table and a common surface to cut with my festool track saw. I also wanted a cabinet makers vice and a holddown system based on t-tracks or MFT hardware.

I went with t-tracks and these clamps and these tracks. These have been incredible and I use them with nearly every project. Initially, I bought these intersection kits, but found I could use my miter saw with the right blade to cut all the intersections.

I was initially excited about making the top out of Valchromat, but the pain of sourcing that in a covid19 enviornment was too much of a stretch and I settled on Home Depot MDF for the top. To be able to swap out the top, I glued everything but the top which I used about 10 pocket screws to attach.

I was inspired by April Wilkerson to build the workbench completely out of plywood with pocket screw joinery and I’m really glad I did. I needed the workbench to be mobile and incorporated a Workbench Caster kit that retracts to give me the benefit of firmly planting the workbench to the ground. Unlike other designs, I planned for the bottom base of plywood to directly touch the ground, since I didn’t see a benefit to having space underneath the table and I wanted 100% rock solid surface.

Before building the design I came up with the following requirements:

  • Important storage needs were for my spare wood, my growing collection of jigs and saw blades and framing supplies.
  • Storage for:
    • store foam for framing (30X40 acid free mat boards)
    • saw blades and push sticks
    • Festool tracks (The rail is 183mm wide, plus additional 2-3mm plastic lip)
    • My large and small T-squares
    • All my small parts bins
    • Spare wood
  • The surface needed to be covered with t-tracks for easy workpiece clamping or MFT (pattern of holes 20 mm in diameter, and are spaced 96 mm center to center) (I chose t-tracks)

The sole complication of my design was incorporating my table saw that wasn’t meant to be surrounded by plywood. The goal of the design was to save a lot of space and provide me an outfeed table, but getting the top flush and level was challenging. (I had to use my car jack and shims.) The most difficult part was cutting out the voids for the guide rails and the lever for the riving knife. This was really hard because both of them intersected the tabletop so I had to use a router and a chisel to carve space out of the tabletop. I was inspired from others who built similar designs, but I thought I could signifcantly improve on them.

To get me thinking through my design, I did a quick design in Sketchup.

Once it was time to get serious, I used Fusion 360 to build a refined design. Fusion 360 (free for hobby folks) uses parametric modeling which gives me the ability to modify the model as I take measurements. One of the important impacts of parametric design is the ability to keep tweaking the design as I optimize cutting out of the plywood. Also, I can start designing without measurements, and in this case I did most of the design in the car on the way home from the beach.

Once home, I was able to get some key measurements:

Fusion 360 is a serious modeling solution and I added more detail, like the ability for the fence to go to the left of the saw.

For all joinery, I used Kreg pocket screws with 2.5 inch cabinet screws. I tend to like McFeely\’s and square drive, but Home Depot is so much easier, and they store GRK Fasteners with star drive heads that don\’t strip.

One of the best features of Fusion 360 is the Map Boards Pro extension that allows to generate a cut-list and creates all the relevant bodies as a flat-pack.

This gets me a rough feel of all the boards I need to cut, then I like to use cutlist optimizer which is easy because I just upload the cutlist exported from MapBoards pro.

Mistake

The casters were perfect and rated for 880 lbs each, but the bottom screws couldn’t hold the weight and ripped out of the workbench. More engineering was needed!

I designed a flat plate of aluminum (1/4 inch thick) in which I would tap M5 threads (5mm hole) to bolt the casters into. I made six other holes 5.5mm in diameter for longer m5 bolts that would allow me to bolt them on from the back.

I purchased four Aluminum Flat Bar, 1/4″ x 4″, 6061 General-Purpose Plate, T6511 Mill Stock, from Remington Industries and used my Shapeoko CNC to cut the first 4 mm but I finished them off with special drill bits on my drill press so I could ensure highly accurate hole diameters. To cut the aluminum on the CNC, I used Kodiak Cutting Tools KCT166406 1/8 End Mill. I was cutting a 5 mm holes using 10k rpm with a feed rate of 500 mm/min and plunge of 120 mm/min for a boring operation in fusion 360 with a pitch of 0.5 mm.

Working with metal is just awesome, for one it helps me claim I’m an engineer and maker more than a woodworker only.

For reference, I was able to use
this site for hole sizes and this tap and die set.

Mistake #2

In tapping the threads for the M5 bolts, I used the fine pitch tap (0.75 mm pitch) not the 1mm pitch I should have. This was a problem since you can’t easily find fine threaded bolts. Thank you McMaster Carr for saving me out of this one.

Finished Product

Seriously, this was a super fun project that came together exactly as planned. The t-tracks and clamps are my favorite feature, but I love the huge storage for framing supplies. (I love making custom canvases and frames.)

The metal supports for the casters at the bottom worked out really well.

By 0 Comments

Kids Lego table: Case study in Automation for Design

[mathjax]

Motivation

I had to upgrade the Lego table I made when my kids were much smaller. It needed to be higher and include storage options. Since I’m short on time, I used several existing automation tools to both teach my daughter the power of programming and explore our decision space. The goals were to stay low-cost and make the table as functional as possible in the shortest time possible.

Lauren and I had fun drawing the new design in SketchUp. I then went to the Arlington TechShop and build the frame easily enough from a set of 2x4s. In order to be low-cost and quick, we decided to use the IKEA TROFAST storage bins. We were inspired from lots of designs online such as this one:

lego-table-example

However, the table I designed was much bigger and build with simple right angles and a nice dado angle bracket to hold the legs on.

table_with_bracket

The hard part was figuring out the right arrangement to place the bins underneath the table. Since my background is in optimization I was thinking about setting up two-dimensional knapsack problem but decided to do brute-force enumeration since the state-space was really small. I built two scripts: one in Python to numerate the state space and sort the results and one in JavaScript, or Extendscript, to automate Adobe Illustrator to give me a good way to visually considered the options. (Extendscript just looks like an old, ES3, version of Javascript to me.)

So what are the options?

There are two TROFAST bins I found online. One costs \$3 and the other \$2. Sweet. You can see their dimensions below.

options

They both are the same height, so we just need to determine how to make the row work. We could arrange each TROFAST bin on the short or long dimension so we have 4 different options for the two bins:

Small Side Long Side
Orange 20 30
Green 30 42

First, Lauren made a set of scale drawings of the designs she liked, which allowed us to think about options. Her top left drawing, ended up being our final design.

lauren designs

I liked her designs, but it got me thinking what would all feasible designs look like and we decided to tackle this since she is learning JavaScript.

Automation

If we ignore the depth and height, we then have only three options $[20,30,42]$ with the null option of $0$ length. With these lengths we can find the maximum number of bins if the max length is $112.4 \text{cm}$. Projects like this always have me wondering how to best combine automation with intuition. I’m skeptical of technology and aware that it can be a distraction and inhibit intuition. It would have been fun to cut out the options at scale or just to make sketches and we ended up doing those as well. Because I’m a recreational programmer, it was fairly straightforward to enumerate and explore feasible options and fun to show my daughter some programming concepts.

$$ \left\lfloor
\frac{112.4}{20}
\right\rfloor = 5 $$

So there are $4^5$ or $1,024$ total options from a Cartesian product. A brute force enumeration would be $O(n^3)$, but fortunately we have $\text{itertools.product}$ in python, so we can get all our possible options easily in one command:

itertools.product([0,20,30,42], repeat=5)

and we can restrict results to feasible combinations and even solutions that don’t waste more than 15 cm. To glue Python and Illustrator together, I use JSON to store the data which I can then open in Illustrator Extendscript and print out the feasible results.

results

Later, I added some colors for clarity and picked the two options I liked:

options

These both minimized the style of bins, were symmetric and used the space well. I took these designs forward into the final design. Now to build it.

final_design

Real Math

But, wait — wrote enumeration? Sorry, yes I didn’t have much time when we did this, but there are much better ways to do this. Here are two approaches:

Generating Functions

If your options are 20, 30, and 40, then what you do is compute the coefficients of the infinite series

$$(1 + x^{20} + x^{40} + x^{60} + …)(1 + x^{30} + x^{60} + x^{90} + …)(1 + x^{40} + x^{80} + x^{120} + …)$$

I always find it amazing that polynomials happen to have the right structure for the kind of enumeration we want to do: the powers of x keep track of our length requirement, and the coefficients count the number of ways to get a given length. When we multiply out the product above we get

$$1 + x^{20} + x^{30} + 2 x^{40} + x^{50} + 3 x^{60} + 2 x^{70} + 4 x^{80} + 3 x^{90} + 5 x^{100} + …$$

This polynomial lays out the answers we want “on a clothesline”. E.g., the last term tells us there are 5 configurations with length exactly 100. If we add up the coefficients above (or just plug in “x = 1”) we have 23 configurations with length less than 110.

If you also want to know what the configurations are, then you can put in labels: say $v$, $t$, and $f$ for twenty, thirty, and forty, respectively. A compact way to write $1 + x^20 + x^40 + x^60 + … is 1/(1 – x^20)$. The labelled version is $1/(1 – v x^20)$. Okay, so now we compute

$$1/((1 – v x^{20})(1 – t x^{30})(1 – f x^{40}))$$

truncating after the $x^{100}$ term. In Mathematica the command to do this is

Normal@Series[1/((1 - v x^20) (1 - t x^30) (1 - f x^40)), {x, 0, 100}]

with the result

$$1 + v x^{20} + t x^{30} + (f + v^2) x^{40} + t v x^{50} + (t^2 + f v + v^3) x^{60} + (f t + t v^2) x^{70} + (f^2 + t^2 v + f v^2 + v^4) x^{80} + (t^3 + f t v + t v^3) x^{90} + (f t^2 + f^2 v + t^2 v^2 + f v^3 + v^5) x^{100}$$

Not pretty, but when we look at the coefficient of $x^{100}$, for example, we see that the 5 configurations are ftt, ffv, ttvv, fvvv, and vvvvv.

Time to build it

Now it is time to figure out how to build this. I figured out I had to use $1/2$ inch plywood. Since I do woodworking in metric, this is a dimension of 0.472 in or 1.19888 cm.

 $31.95 / each Sande Plywood (Common: 1/2 in. x 4 ft. x 8 ft.; Actual: 0.472 in. x 48 in. x 96 in.)

or at this link

So the dimensions of this are the side thickness $s$ and interior thickness $i$ with shelf thickness $k$. Each shelf is $k = 20-0.5 \times 2 \text{cm} = 19 \text{cm}$ wide. All together, we know:

$$w = 2\,s+5\,k+4\,i $$

and the board thickness is $t$ where $t < [s, i]$.

which gives us:

st width
s 1.20
i 3.75
k 19.00
w 112.40

Code

The code I used is below:

References

By One Comment