May 22, 2017

[2.70] Final Testing & Documentation

Last 2.70 post woooo!
After assembling the vertical axis, all that was left was bolting on the wooden desktop and testing.

laptop posed on desk at seated-height setting
pretty computer on pretty desk
For the purposes of this class, I kept power & software fairly rudimentary. The motor is powered from a 12V supply (using alligator cables) and driven with an H-bridge/Arduino/USB setup hooked directly to my laptop. I'm just running the generic stepper library and not trying to use microstepping, so the motor is ridiculously loud and inefficient compared to its potential.

Between assembly and testing the HobbyShop staff started storing stuff on my desk...

bike helmet and attire piled on desk with motor power supply and cables underneath
HobbyShop staff trust my desk as a shelf.
Powersupply below. Foam cup only holds screws (no liquid don't worry)
 It goes up and down! Tuning the Arduino code to behave with a not-actually-a-stepper-driver at a reasonable speed while not causing ridiculous vibrations took some time.

I conducted some repeatability abbe-error tests with a laser pointer. The laser fixture was clamped to the desk and pointed towards the wall, 1m away (there was a brick column in the way!).

Laserpointer assembly clamped to the center of the desk.

The test shown below has the desk commanded to move between two set points 14cm apart. The laser-projected locations of the lower setpoint were marked on a piece of paper, from which positioning error can be determined from average deviation. This positioning error (unweighted) ended up being an average of 2.39mm over the 1m distance, so 0.33mm error over the 14cm travel.

This desk therefore has an unweighted positioning error of 2.4 microns per mm-travel.

An unweighted desk is an unused desk. The desk-requirements allow for an unweighted desk when moving, but it still needs to hold stuff.

I grabbed 2.5lb (1.134kg) and 10lb (4.536kg) weights and observed their effects when placed on different areas of the desk relative to the rail-ballscrew shafts. 
2.5lb weight at (-430, 420)

Experiment with 20lbs at (0, 250)

Coordinate system for desk tests
After adding HDPE skids (see vertical axis build post), I experimentally determined max yaw displacement by pushing on the corner of the desk until it hit the hardstops. These projected errors were +19.83mm and -22.24mm for a vaguely 10lbf push.

Using the same Abbe error equations as the previous linear axis testing,

$\alpha_{pitch} = \frac{\delta_y}{L}$
$err_{pitch} = \frac{\delta_y y}{L+y}$

$\alpha_{roll} = \frac{\delta_x}{L}$
$err_{roll} = \frac{\delta_x x}{L+x}$

where I'm making the approximation that vertical displacement only comes from pitch and horizontal displacement from roll since I have so few samples and since the measurements are reasonably close within sets.

Using these error calculations, I calculated pitch, roll, and yaw stiffnesses of the desk, where roll stiffness > pitch > yaw by approximately an order of magnitude each.

I also did some qualitative testing, and discovered that my system is too low-friction and too backdrivable for my motor to support loads as predicted by the error spreadsheet. That's kinda expected, given that my system uses a high-pitch ballscrew.

However, an unfortunate consequence of this is that a load of ~7lbs (laptop + 2.5lb weight) is the most this actuator can take while traveling up and down at speed, and it sounds terrible doing it. I could have tuned the system to run at a lower speed, but this is somewhat difficult to do with my software setup. Soooo... meh.

Desk happilly traveling with 20N loads, then getting upset at 30N load.

This means I can type on my laptop and put my elbows on this desk, but putting my legs on the desk backdrives the motor (no power). If power were turned on, it would likely hold more; however putting 20lb on the desk draws 3A current, at which point I start to worry about thermal dissipation in my H-bridge driver setup.

Even small dynamic loads lower the desk.

The desk holds laptop and legs in static-loading just fine
Adding a gearbox between my motorshaft and the ballscrew would help make my desk sittable, but in its current setup I doubt it would hold close to bodyweight before either my motordriver overheats or my rails break. So, no-go on the "Real Desk" functional requirement.

The desk does hold at least static-108N (laptop + 20lb weights) without failing, so it does meet the class calculation-standards with 100N loads (albeit barely; it probably wouldn't meet the expected 2x safety factor). 

Circling back to the original error predictions for a 100N load, I had expected to get 0.23mm displacement from the theoretical desk. Instead, I got 2.87 - an order of magnitude higher.
What went wrong?
Searching through the error spreadsheet, I found a problem with my model.
Linear stiffness of the carriage in the model equals bearing stiffness
I had included flexures in my carriage to account for parallelism-errors with the rails, and had discovered that the rail-shafts bend before the flexures do when I was assembling the vertical axis. And that makes sense - the rails are only 8mm in diameter and have an unsupported length of ~350mm, whereas the ball-bushings are set in a thick block of aluminum.

I had considered shaft stiffness before (in that post, actually), but at the time I was only concerned with whether deflections approached yield stress. Returning back to those calculations, and changing rotation and linear stiffnesses in the spreadsheet to be an average of ballscrew and rail shaft stiffnesses, I get some more reasonable results.

Shaft compliance calculations

new results. Note the F = kX displacement.
Reality only matches models when the models are accurate - shaft stiffness is where my order of magnitude discrepancy came from.

That's it for the 2.70 desk!

Desk being a desk.

No comments:

Post a Comment