November 30, 2014

Robot Arm Z-Axis and Custom Servo Drive

Finally back to the robot arm!  I've been taking a break from rideable things recently to arm more robots.  Most significantly, the robot arm got much bigger and gained a degree of freedom.

Part 1: More Billet

I started out with a huge linear rail which I think was scavenged from a large format plotter.  I found it in a corner of MITERS while replacing a table earlier this year.  I conveniently was also able to scavenge four recirculating linear ball bearings for the same shaft diameter.  I made a pair of bearing blocks to hold the bearings and robot arm to the rail:


The robot clamps to the bearing blocks using the same mounting clamps I used on the temporary 80/20 frame.


The bearing blocks have set screws which allow me to adjust the preload on the bearings:


The actuator for the z-axis is another DC motor (not servodisc pancake-style, this time) coupled to a four start leadscrew.  This was found in the same corner of MITERS as the linear rail.  It also has a really neat steel membrane shaft coupling, unlike the helical shaft couplings I'm used to seeing:


The frame for the robot is yet another piece of cruft.  This absurdly massive aluminum frame, fashioned from 1" thick aluminum plates, was found by Nick and Bayley outside a lab:


The whole assembly clamped together:


To actually fix the z-axis to the frame, I drilled and counterbored a bunch of holes in the 1" thick aluminum:



The z-axis actuated with a drill:



To stiffen up the axis, I bolted it through two of the 1" thick plates.  This was by far the largest piece of metal I've ever put on the bridgeport:


I took care to get the plate square on the mill.  It was fairly easy to get it within about 1/2 a thousandth per foot, which will be much smaller than the slop in the clearance bolt holes anyway:



Part 2: Diving into Power Electronics

This term I'm taking 6.131: Power Electronics Lab.  The class has been a very different experience from most of my other classes here.  It's very focused on learning how to actually design and build power converters of all sorts, rather than analyzing them to death.  Everyone in the class does a final project, which can be pretty much anything within reason (where reason means it can't be dangerous, for the professors' definition of dangerous).  

For my final project, I'm building a servo drive for the robot arm.  Basically its two H-bridges on a board with current sensors, encoder inputs, and an interconnect to a separate microcontroller board.  What makes it interesting is the motors I'm trying to drive.  The shiny Kollmorgen ServoDisc motors, due to their corelessness, have practically zero inductance.  When PWM'ed at standard motor controller frequencies (~20-ish KHz) the current through the motor is basically a square wave, since their electrical time constant is much smaller than the PWM period.  This means that RMS current, which determines resistive heating in the windings, is greater than average current, which determines motor torque.  Some motor makers (maxon, for example) fix this by actually putting series inductors on the outputs of their motor controllers.  I'm trying to fix this by switching really fast.

I designed the servo drive to switch at 200 Khz, using these neat CSD19531KCS logic-level FETs (7 mΩ, 37 nC gate charge, 100 V), IR2184 half-bridge gate drivers, and Allegro current sensors.  I put together a schematic and board layout in eagle:


And some time later a pile of PCBs appeared:


Here's a little mbed daughter board.  When I get sick of using mbeds and want to learn how to microcontroller for real, I can just switch out this board for another microcontroller breakout:



The board assembled, minus FETS:


And with FETs installed below the board:


This revision of the servo drive has a few problems, namely that it doesn't work properly with the originally spec'ed logic-level MOSFETS. The fast turn-on transient causes crazy ringing on the gates but it works well enough for the class with slower fets.  Further details on the controller and its problems will be documented in the future.

November 2, 2014

Roller Coaster Mechanical Design: How to Make Solidworks Really Sad

While I wrote about designing the shape of the track a while back, the shape design and detailed mechanical design actually happened somewhat simultaneously.  The roller coaster went through many revisions, as we got feedback from MIT and later some professional structural engineers about what we were allowed to build.

The first thing that vaguely resembled a cad model was this:


It was really just a 3D concept drawing, to get the idea across to all the people at MIT that would need to approve the structure.

Another quick pass at a variant of the looped design, missing most of the structure:



Having two towers would have been great, because it would have solved the problem of needing to get the cart back around the loop after each run.  In retrospect, there's probably no way we would have actually been able to build this design in a week.

After talking with MIT's Environment, Health and Safety office, we had to change things up a bit.  The basic points from the meeting were:

  • It's too tall.  No more than three levels in total.  This was actually a surprise, since the fort built last year had a fourth floor.  When asked why, the representative from EHS said he was worried about how fast people would be going at the bottom.  However, when asked, he did not have a specific limit for ride speed he could give us.  It was unclear whether the structure could not be more than three floors tall, or whether the ride itself was constrained to this height.
  • No upside down people.  We said a sad goodbye to our hopes for a loop.  Getting a loop approved was always a long shot, but it would have been glorious.  They did not seem to care that the cart would be fully constrained to the track (as in there is no way it could fall off the track at the top of the loop) or that the person would be harnessed into the cart.  
 They needed some sort of updated pictures by the next day, so I quickly came up with a rough version of the new (and final) track shape, and threw it into a Solidworks model with the same rough tower design as the previous designs.


Once we had a vague "We will probably let you build this if a professional engineer approves it" from MIT, we started designing for real, down to the 2x4.

Behind general structural integrity, the strongest force directing the design was Design for Assembly.  We would have a week to build the entire structure, and the labor skill of the students and incoming freshmen who would be doing much of the construction would range from extremely competent to which direction does the drill point?.  So the entire giant assembly would have to be fairly tolerant of sub-optimal construction quality, and possible to build rapidly, with only two people (Wesley and myself) overseeing most of the construction.

Everywhere possible, the frame of the roller coaster uses stock lumber lengths (mostly 8')  As I found out from building the climbing wall (which had almost no uncut pieces of lumber), processing all the lumber with chop saws is a big time sink.  

The frame supporting the track is made up of about 20 frames of varying height, but similar construction.  These frames could all be built on the ground independently of each other, and then assembled one-by-one once they were finished.

The track would be supported by about 100 2" long segments that interpolated the curve of the track.  These track sections could be fabricated in an assembly line-type system using chop saw jigs and assembly jigs.


As you can see from the above rendering, the roller coaster's frame also had built-in work platforms, so the track could be assembled without ladders or scaffolding.  In the final construction these platforms had railings which were not shown in the rendering.

The actual track surface was designed to be bent from three overlapping layers of 3/8" thick plywood.  The layers of plywood are easy to bend one at a time, but when three layers are sandwiched together the resulting surface is very stiff.  The plywood overhangs the frame supporting it by 6" on each side.  The cart that rolls down the roller coaster had wheels underneath the overhang, to make it impossible for the cart to fly off the track.

With the design as pictured below, I went to the Cambridge building commissioner to let him look at the plans.  He was pretty un-phased by the roller coaster, and gave feedback like make sure your railings are at least 42" tall and your stairs need to have 7" of rise and 11" of run per step.  


With those changes made, we had to find a structural engineering firm to sign of on our designs, in order for both MIT and Cambridge to okay the plans for construction.  Before sending the plans to a professional engineer, we did some 2.001-level analysis on the critical parts of the structure - the joists and spandrels supporting the floors, the tower posts, the track structure beneath the high-load areas, and the track surface itself.  

Eventually a local structural engineering firm (started by some MIT alums) willing to look at our plans for free was found.  They gave us a bunch of feedback about our design and structural calculations.  Most of our design choices checked out with them, although there were a few features they asked us to add, like diagonal bracing on some parts of the frame.  They went through our calculations thoroughly as well, and pointed out some spots where we could have made different or better assumptions about the loading of the structure.

They also asked us to make some kind of absurd changes to the roller coaster's tower.  In the original design, we spec'ed 5/8" bolts to hold the spandrels supporting each floor to the posts of the tower.  Citing some wood-loading vs bolt size chart, they asked us to make all our spandrel-supporting bolts 1" in diameter.  Early East Campus wooden structures used 1/2" threaded rod as bolts.  My freshman year, they used 5/8" bolts.  The year after that, the (different) structural engineering firm that review their design asked them to use 3/4" bolts on the fort.  This year: 1".  At this rate, there won't be any wood left in the structures in a few years.  

Here's a look at the structure supporting a floor f the roller coaster tower:


The diagonal braces on the tower also had to be significantly beefed-up.  In the past, these have consisted of sketchily screwed in chunks of 2x4.  Now, they had to have 2 1" bolts at the post, and 4(!) 3/4" bolts at the spandrel. Seriously, why don't we just build this out of solid steel next year?


Despite my personal opinion that these changes were unnecessary and frankly absurd (in addition to costly: 1" bolts cost around $10 apiece), we didn't really have any choice but to make the changes.  After all, for the Cambridge and MIT to let us build this thing and have people ride it, we absolutely needed our plans to be signed off by a professional engineer.

It was worth it though when we got a letter to the Cambridge building commissioner, approving our structure:


Here's a pile of renderings because I felt like playing with PhotoView360 in SolidWorks:







Also some sneak-peaks of the actual roller coaster, as compared to renderings:







Photo credit: Rachel Davis
And finally, a shot of the roller coaster plus fort (designed by Lauren '16 and Amanda 15').  I was doubtful that we would be able to build all of this given our time and labor constraints, but somehow we did: