Closing the Loop: Actuator Load Capacity

The final component in my design loop-closing exercise concerns the load lifting capacity of my desk. My previous torque and power analysis had suggested that I would be able to lift the desktop with 20 kg of live load placed on top, and be able to comfortably do so at a rate of 150 mm/min without running out of power (using a 12 V, 1 A wall wart). However, in my testing, I had found that I could only lift up to 12 kg of live load before stalling the motors. This stalling behavior persisted even when I reduced the speed and tried out a power supply capable of supplying up to 5 A at 12 V, suggesting that the system is torque-limited rather than current-limited.

High-uncertainty parameters

Even though a desk that is capable of lifting 12 kg is perfectly usable, I sought to understand which part of my modelling went wrong so I can explain this discrepancy and learn from it for future designs. I am fairly certain I have the correct model form, so the error is likely to be in parameters that I have estimated. After reviewing my detailed engineering spreadsheet, I homed in on two high-uncertainty parameters that I thought could account for this discrepancy:

  • Coefficient of friction between leadscrew and leadnut
  • Coefficient of friction between teflon slider pads and interior surfaces of the boxway

These numbers were estimated from typical values from datasheets and other resources on the Internet, as I did not have time to carry out bench-level tests to accurately determine these coefficients. I am interested to determine how far off my initial estimates had to be in order to provide the observed performance.

Single-parameter sweeping

I had recently learned to use the Solver tool in Microsoft Excel (in a Sloan class) to run quick optimization routines, and decided to put this newly acquired skill to use here. Adding on to my detailed engineering spreadsheet (download here), I ran three scenarios to determine the effect of estimation errors of each parameter on desk performance.

I duplicated the underlying model relating input parameters to the key output variable — total life load lifting capacity and placed them into new worksheets. For the single-parameter variation scenarios, I set the coefficient of interest (either leadnut or slider pads) as a variable and ran a non-linear optimization program to drive lifting capacity to the observed value (12 kg live load = 118 N, 45 N dead load, 162 N total). In these two scenarios, I held the other coefficient of friction constant. These scenarios are in the “ls-friction-sweep” and “slider-friction-sweep” sheets in the spreadsheet. My optimization models indicate that, all else being constant, the desk would perform as observed if:

  • leadscrew coefficient of friction = 0.43 (initial estimate = 0.25); OR,
  • slider pad coefficient of friction = 0.54 (initial estimate = 0.2).

Both of these values are rather high — much higher than I expect them to be and out of the typical ranges reported by most sources. This analysis suggests that it is unlikely that I was wrong on only one of these parameters — I would have to be too far off to produce observe results. It is more likely that I was wrong on both of the parameters, but to lesser degrees in each one.

“Minimum-deviation” parameter sweep

Operating under the assumption that I was “equally wrong” on each parameter (i.e., spreading my total error evenly across the two parameters), I ran a scenario to arrive at the observed lifting capacity while driving the sum of squared adjustments to the two parameters to a minimum. Under these constraints, I found that the following parameter values would produce observed performance:

  • leadscrew coefficient of friction = 0.37 (initial estimate = 0.25); AND,
  • slider pad coefficient of friction = 0.28 (initial estimate = 0.2)

These values are much more plausible. It is important to note that this analysis by no means produces the actual realized parameter values. It is just an indirect form of a sensitivity analysis to show whether it is reasonable for me to observe the lifting capacity I did despite being “in the ballpark” with my estimated parameters.

Conclusion and lessons learnt

I think the clear conclusion here is that I did not have a sufficiently large design factor of safety built into my system to accommodate the high uncertainty in input parameters. While working on a project for another course (analyzing how safety factors can be used to compensate for uncertainty in material properties), I came to realize the importance of matching the degree of conservatism to the level of a priori knowledge one has about the system. More uncertainty required more conservatism to give acceptable probabilities of success.

A second lesson I learned is that simple “sensitivity analyses” like these optimization routines, or even more elaborate ones that are easy to write in MATLAB or other similar environments, are useful tools to have early in the design process. This is a fitting final lesson for this project:

Deterministic design is great for getting into the ballpark of a feasible design, but incorporating simple statistical/probabilistic analyses locally at the early design stage helps you account for some of the uncertainty and can help you converge more rapidly.

Project Wrap-up

With the class demo and functional testing concluded, the design and build process for my adjustable standing desk is just about concluded. This project (and the class) was a great learning experience for me, not in the sense of fundamental engineering principles or even how to model structures — I think most people who have gone through a typical undergraduate engineering course sequence knows all of that.

Instead, my biggest takeaway from this class is the importance of sticking to the deterministic design process. I think for many people who like to build stuff (that’s why we became engineers, right?), it is more enjoyable to be mucking around in the shop doing the hands-on work instead of plugging away at spreadsheets working out equations. Throughout the design process for this desk, I have often found myself tempted to size some component simply based on gut feeling instead of making the effort to go through the analytical modelling process. This kind of instinctive design is fine — it’s how humans got along for centuries before all the analytical models came about, but it is a deplorable way to do engineering. It is the professional duty of the engineer to draw on the full extent of her knowledge to produce the best design possible using the minimal amount of resources, moving fast and iterating (and breaking things) is fine, but iterating on prototypes is much more expensive than doing the math properly and getting as close as possible the first time round. Iterative design has its place (e.g. when models don’t exist or are too complex to solve expediently), but one must be careful not to use it as a crutch against analytical laziness.

Enough of the philosophical musings for now. Here is a fun video I made by placing my camera on my rising desktop. It showcases the Hobby Shop’s quaint collection of mallets and hammers.

Adjustable Standing Desk: Vertical Panning Shot from Shien Yang Lee on Vimeo.

Next steps

While the precision design aspect of my desk is more or less complete at this point. There are few improvements I need to take care of before I can fairly call it a complete and usable desk. Over the coming weeks, I plan to clean up the wiring by burying it in slots along the columns and permanently attaching my control board to the desk. Then I plan to install limit switches and tilt sensors on the desk to allow it to self-home and to catch error conditions should the axes go out of sync or the desk threatens to tip itself over by descending onto a component below the desktop. Once these are in place, I think the desk will have the basic usability and safety features needed to be a functioning product. The final step would be to do a final sand-down of the surface and finish the wood.

Closing the Loop: Motion Repeatability Test

The next test I carried out on my desk was a motion repeatability test. For this test, I loaded the desktop with 20 lbs. of dead weight to simulate motion under a typical loading configuration. I then indicated the tip of the desktop to track the vertical motion of this point while I ran the desktop up and down.

Motion repeatability test setup

To stay safely within the 1″ measurement range of the indicator, I restricted the desktop motion to back-and-forth moves of 5 mm and 10 mm. The desktop reliably repeated to within 0.001″ (0.025 mm) on each move. From the footage I got of the tests, the actual positional uncertainty is likely less (in the tenths-of-thousandths). This is consistent with my expectations, given the step size of the stepper motors and the lead on my leadscrews. For the 200 steps/rev. motors and the 2 mm pitch leadscrews, I expected the positional “float” to be within a single step, i.e. 2/200 = 0.01 mm. This is approximately 0.0005″, which is consistent with the test results.

After doing these tests and filming the videos, I realized I could have done the test across a much wider range of motion simply by allowing the desktop to come off of contact with the probe for part of the move. I don’t expect the results of this test to differ significantly, since the error motions due to actuation is almost entirely due to this within-step float in the motors (unless the motors skip steps somewhere along a longer move). I may repeat this test if I have time next week.

The following two videos show the test in action:

Adjustable Standing Desk: Motion Repeatability Test 1 (Camera on desktop) from Shien Yang Lee on Vimeo.

Adjustable Standing Desk: Motion Repeatability Test 2 (Static camera perspective) from Shien Yang Lee on Vimeo.

Closing the Loop: Stiffness Test

Adjustable Standing Desk: Static Stiffness Test 1 (Bottom of travel) from Shien Yang Lee on Vimeo.

Adjustable Standing Desk: Static Stiffness Test 2 (Top of travel) from Shien Yang Lee on Vimeo.

The first test I did to close the loop on my design process is a static load test to determine the stiffness of my desk. I took differential measurements at the very edge of my desktop with a dial indicator while adding and removing dead weights (10 lbs. nominal). In addition to the two large weights you see me placing and removing in the videos, there is also a small 2.5-lb. plate that I kept on the edge of the desk throughout the test (out of shot). This is intended as a small preload to take up any geometric errors (i.e. slop) and give me a good structural stiffness reading.

I carried out two stiffness tests with the desktop at the two extremes of its travel. The results of my stiffness tests are summarized in this spreadsheet. In summary, my error budget overestimated the stiffness at both positions (by 57% at the bottom of the travel and 34% at the top of the travel). I think there are a number of reasons for this:

  • My coarse estimates for contact stiffnesses (both linear and rotational) at bearings and joints were significantly overoptimistic. One issue with designing structures in wood is that these numbers are not well-documented in the literature. The anisotropicity of wood also makes it much more complicated to calculate these values analytically. In future, I am likely to resort to quick first-order FE simulations to get better estimates for these contact stiffnesses early in the design process.
  • The aggregate material properties I used are likely to have significant uncertainty due to natural variation in biological materials. But I think this is a minor contributor to error in this instance because the clear beech I used is probably quite uniform.
  • In my error budget, I treated most members as pure Euler beams for simplicity. In hindsight, this probably contributed significantly to the prediction error for deflections due to flexing of my boxways/columns, since they have such heavy cross-sections. The fact that there is a much bigger deviation from predictions when the desktop is at the bottom of its range of motion (57% vs. 34%) supports this hypothesis — shear deformations become more influential as the beam spans shorten.

Despite the significant deviation from predicted stiffness values, going through the error budgeting process and using first-order analytical models in the design process has put me in the ballpark of where I need to be. Had I relied on “intuition” or the famed “hackathon approach” to size components, I would have made a few members significantly smaller… Even considering possible modelling errors, deterministic models are invaluable in quickly getting into the neighborhood of the optimal solution.

Composite Bracket Stiffness

Offending bracket

One of the first observations I made after successfully mounting my desktop was how compliant in torsion it was. This error motion was previously a source of concern — I decided to make fibreglass-reinforced nylon brackets because it turns out the 12-gauge steel framing brackets I was planning on using would have yielded at the corners under full design load. Some preliminary testing with 20 lbs of dead weights on the edge of the desktop showed that the brackets were significantly less stiff than I expected.

Error in Analysis

Going back through my error budget spreadsheet, I realized that I had made the mistake of using material properties for fiberglass instead of the composite material, resulting in my modulus being off by a couple of orders of magnitude. Looking back, this is really a juvenile error — the Markforged printers lay down continuous-fiber reinforcement instead of extruding chopped-fiber filled polymer, so the resulting part stiffness really depends on how much reinforcing fiber you put into your print and where you put them. I should have taken more time to do a sanity check when designing this part.

Remediation Plans

Fortunately, I managed to finish my desk about a week before the demo, so there will be time to fix this. Simply making the same part out of aluminum would give me all the stiffness I need and more. The easiest way to do this would be to reproduce the sandwich structure by stacking two aluminum angle sections to give the two parallel projections. However, I didn’t like the aesthetics of this design, so I decided to machine my replacement brackets out of some scrap aluminum stock I found at the Makerworkshop. This is obviously not the most efficient way to manufacture these parts, but they are going to be highly visible, and this desk is going to be a onesie, so I decided to do it anyway.

The print for this part can be found here.

Assembly and Integration Testing


Last week, I finished building the two linear motion axes and tested them individually. See this post for more on the repeatability test. After some quick work contouring the desktop and drilling the bolt hole pattern, it was time to assemble the desk. To ensure a nice fit and absorb dimensional errors built up from previous manufacturing steps, I dry fitted the desktop to the brackets and cut the cross ties to fit. In the photos above, I am using angle plates and the cast iron bed of the table saw to keep the two linear motion axes parallel to each other and vertical. The measured cross tie length was 3 mm shorter than my designed length. I think this kind of cut-to-fit approach is very useful for building small runs of precision products as the in-situ cutting/grinding/scraping work is more economical than having to hold much tighter tolerances elsewhere to allow interchangeable parts. The final assembly process went smoothly.

Axis Synchronization Test

Desk Axis Synchronization Testing from Shien Yang Lee on Vimeo.

One of the risks of using two parallel axes is jamming due to unsynchronized motion. I decided to synchronize the axes using the stepper controller instead of coupling the two drive systems mechanically. If significant racking occurs with the desktop installed, large forces could be applied to the bearings and drivetrain. I didn’t want to risk damaging components so close to wrapping up the project, so I did my initial axis synchronization test with a spirit level placed on top of the brackets without the desktop bolted in. As expected, I had no problem keeping the two axes synchronized with the CNC controller and keeping the brackets level throughout the range of motion.

Desktop Clearance Issue

The final step after verifying that my linear axes sync up successfully with each other is to install my desktop. Unfortunately, I found that the desktop is running on the outer surfaces of the keeper rails at some points along the travel, causing it to bind up. The reason for this is that I had started off with 4/4 beech boards, which were approximately 20 mm thick instead of the 18 mm board thickness I originally designed the desk for. This is not a critical dimension (exterior faces of boxway) and the problem can be easily remedied by skimming off the excess on the planer. However, this does mean I have to break down the assembly to do that. Lesson learnt: be more careful with tolerance stack-up analysis in future!


Closing the Loop: Linear Motion Axis Powered Test

This past weekend, I managed to finish assembly on one of the linear motion axes that will go into my desk and carry out a motion repeatability test. Based on the error budget, I know that the most significant source of random error motion in my sensitive direction (height) is rotation of the slider within the box way due to radial clearance. Here I am using the familiar “laser pointer method” to determine the actual angular error in my axis by measuring the resulting sine error as projected on a surface a known distance away.

Desk Linear Motion Axis Repeatability Test from Shien Yang Lee on Vimeo.

This time, I am projecting onto a wall 2770 mm away from the most proximal position of my slider (measuring from the most proximal position is conservative since it overestimates the angular error at more distal positions along the axis). I ran my slider from end to end three times and recorded the location of the projected beam at each end position. The most extreme vector displacement between projected points I observed was 20 mm, corresponding to end-to-end motion along the axis. Points projected from the same position along the axis were consistently within 3 mm of each other. Part of these deviations could be attributed to the cosine error coming from not squaring the axis perfectly to the wall, but the bulk of it comes from sine error due to slider rotation.

These results indicate an angular error of 0.4° from one end of the axis to the other, and less than 0.065° at any one point along the range of motion. Theoretically, most of the end-to-end error will be systematic and mappable since it is due to straightness and parallelism errors in the boxway, while the errors observed when the slider is at the same position are due to clearance and therefore random or non-mappable. In this instance, however, I do not plan to map the errors in my desk, so I will continue to lump the systematic and random errors together in my error budget spreadsheet. I also updated the random translational error for the attachment point of my slider to my boxways to match the observed end-to-end angular error. The new random translational error is 0.22 mm (assumed to be the same in all three directions). This is significantly greater than the 0.1 mm I initially specified, but still keeps my overall height error within the apportioned 5-mm range.

Linear Motion Axis Build Update and Updated Part Drawings

Linear Axis Build Update

Pattern Routing

I took advantage of the Hobby Shop’s hours on Tuesday (while there are no classes) to make some more progress on my linear axis builds. I chose to mount the free-end bearing block for the leadscrew to the foot instead of the boxway body in order to make my system as compact as possible at the bottom end of its travel. This meant that I had to make the feet before I can complete my linear motion axes.

I decided to cut the curved outer profile of the feet using a laser-cut template and a flush trim bit on a router table. The mass production option would have been to set up a job on a CNC router and do the hole pattern as well as the exterior profile at one go. However, I think my approach made sense for the short run I was doing since it takes a lot less time to laser cut a template than to fixture and program a CNC router job with the amount of care necessary to get good results.


After discussions about fasteners in class and during peer review meetings, I decided to move to cross dowels and mating bolts (a.k.a. Chicago screws, sex bolts etc.) instead of using axial threaded inserts like I originally intended. This mitigated the risk of fasteners pulling out of the material due to preload or loads encountered in service, which allowed me to design all my bolted joints as slip-critical joints. This is advantageous because the critical shear area is described by the large head diameter of the bolt or nut in slip-critical joints, whereas the critical shear area in shear joints are described by the projection of the much smaller bolt shank. This is especially important in wood as the strength of most joints is limited by the shear strength of the wooden members instead of the tensile of shear strength of the fastener (I am using class 12.9 socket head cap screws, but almost any steel fastener would be much stronger than wood).

Detailed analysis of the bolted joints in my desk can be found here.

Updated Part Drawings

I also spent some time regenerating my part drawings to bring them up to date with recent updates to the CAD model. These changes were mostly additional details that were omitted the first time round, such as counterbores for bolt heads and seating holes for the cross dowels I recently adopted. I also prepared a preloaded slider design in case I run into trouble holding the 0.2 mm of straightness and parallelism I budgeted for the boxways. This is a backup option. To maximize stiffness and minimize actuation force, I intend to stick with plain sliders with radial clearance.

Updated part drawings can be found here.

Safety Review

Since I am designing a desk that is meant to be operated by laypeople without specific training, so it is important to minimize personal injury hazards and making the device as robust to improper operation as possible. Natural selection has plenty of mechanisms through which to operate — no need for engineered products to create new ones.


One of major risks associated with the desk is having it tip over due to a lateral load from a user leaning on the edge of the desktop (e.g., leaning in to check out a particularly interesting data point, perhaps). The strategy to address this risk is place the center of gravity and coefficient of friction between the adjustable standing desk and an existing table such that lateral loads would cause the desk to slide instead of tip. The tipping analysis can be found in the “tip vs. slide” sheet in this document. Using nominal values for these parameters, the desk will start sliding when subjected to a lateral load only 60% of that required to tip it over. This translates to a safety factor of 1.6, which doesn’t look like much for structural design, but is sufficient in this case because of the small number of input parameters (coefficient of friction, center of gravity) which are known with high certainty.

Loss-of-Power Events

Another risk is for the desktop to fall when power to the motors is unexpectedly lost. This idea was previously addressed in the concept generation phase where I did some analysis on the self-locking, leadscrew-free design (and ultimately rejected it in favor of a conventional leadscrew design). By using a relatively low-helix, single start, and sliding contact screw, I was able to make my drive system self-locking. Regardless of the loads placed on the desktop, it is impossible to back-drive the screws. The detent torque in the motors provide an additional factor of safety, but is ultimately not needed in this case.

Pinch Hazards

Having moving components in the desk means I also need to consider the presence of pinch points. The two critical pinch points are between the sides of the desktop and the exterior surface of the keeper rails, and between the bottom of the desktop and the cross ties. The clearance gap between desktop and column is approximately 2 mm. This comfortably protects against the ingress of objects above 2.5 mm in characteristic dimension. This is a IP3X rating!

The other pinch point between desktop and cross tie has a gap width that varies depending on where the desktop is within its range of motion. This does mean that bodily appendages can plausibly be trapped in this space. However, this risk is mitigated by the fact that this pinch point is obscured by the 250-mm overhang of the desktop. That is, in order to have a finger pinched within this gap, which occurs when the desktop is within 50 mm of the base, one would have to stick one’s arm below the desktop at a really awkward angle.

Detailed Engineering and Component Sizing

Before this week, I have been focusing on modelling compliances and geometric error motions to arrive at a design that could deliver the desired level of spatial precision. This past week, I focused on verifying that the component sizes dictated by stiffness requirements would provide adequate factors of safety in terms of strength and stability (i.e. not buckling).

I evaluated each structural components and joint for the various loads it experiences and considered all the failure modes I could think of. As expected, due to wood’s high stiffness-to-strength ratio (compared to, say, steel), the sizes dictated by my error budgeting resulted in large factors of safety in the 10’s for most of my wooden components. The spreadsheet I developed for these analyses can be accessed here. The most critical area I have identified as needing further attention are the steel L-brackets connecting each end of the desktop to the sliders.

Slider Brackets

One of the things I discussed with Prof. Slocum last week was the planned use of angle brackets to attach my desktop to the sliders. He pointed out that the thin (12-gauge sheet steel) leg of the angle bracket would have very low stiffness and load capacity when cantilevered like that. However, in my use case, the desktop bridges two of these brackets and behaves like a quasi-pin-ended beam. This minimizes the moment loads transmitted to the cantilevered legs of the brackets. Additionally, the attachment point to the desktop is just 25 mm away from the root of the cantilever. The conclusion of that discussion was that it will be okay in bending. This is true of both stiffness (error budget) and strength (see detailed engineering spreadsheet) requirements.

However, my detailed analysis this week revealed that the angle brackets don’t have enough load capacity against torsional loading resulting from objects or body parts placed on the desktop offset from the plane passing through the two boxways. The long, thin, rectangular cross section of the framing bracket I was planning to use is an extremely inefficient way to resist torsional loads. I was able to get away with using it from a stiffness perspective but not from a load capacity perspective. My analysis suggests that the bracket would yield at the corners — an unacceptable outcome.

I am considering a couple of new designs for the bracket, one of which could be easily fabricated by cutting and bending rectangular steel tubing. Using a hollow section would improve torsional load capacity dramatically (roughly proportional to the area enclosed by the centerline of the wall) and also bring about improvements in bending strength and stiffness. An alternative I am considering is a custom angle bracket with two parallel legs projecting out from the slider. These legs would slide into notches cut into the top and bottom of my desktop and be secured with bolts passing through the assembly. This design is attractive as it exploits sandwich theory and could give a cosmetically superior result with the use of countersunk fasteners.