Skip to content
Snippets Groups Projects
README.md 17.6 KiB
Newer Older
  • Learn to ignore specific revisions
  • Jake Read's avatar
    Jake Read committed
    # Machine Design
    
    
    Jake Read's avatar
    Jake Read committed
    jake: ctrl+f TODO
    
    
    Jake Read's avatar
    Jake Read committed
    ## Intro
    
    Jake Read's avatar
    Jake Read committed
    
    
    Jake Read's avatar
    Jake Read committed
    *Machines in a week*  
    *It's easy, so to speak*   
    *In minutia is mayhem*  
    
    Jake Read's avatar
    Jake Read committed
    
    
    Jake Read's avatar
    Jake Read committed
    OK, welcome to Machine Week.  
    
    Jake Read's avatar
    Jake Read committed
    
    If you're reading this, chances are you're about to design a machine, and then build it, and then 'bring it online', and then do something with it. Exciting! There's a great deal of complexity here! I have done this a few times now<sup>1</sup>, and every time it's a new adventure.  
    
    
    Jake Read's avatar
    Jake Read committed
    The type of machine you build is your discretion. Besides making a straightforward 3-axis CNC Machine (a-la Shopbot, as documented in the following guide) - there are a few cool variations you can explore:
    
    [5-axis CNC Machine](https://www.youtube.com/watch?v=CqePrbeAQoM)
    
    [A Delta Machine (3-axis and neat kinematics)](https://www.youtube.com/watch?v=v9oeOYMRvuQ)
    
    [Scara Arms](https://www.youtube.com/watch?v=3UF_lYx5qcY)
    
    [Hot-Wire Cutters](https://www.youtube.com/watch?v=yKpq9FZMPqQ)
    
    [Pick and Place](https://www.youtube.com/watch?v=CRSLbo_8nTQ)
    
    [Lathes](https://www.youtube.com/watch?v=eipyve8xv24)
    
    etc!  
    
    This document will serve as a guide for how to make a 3-axis machine. In linear time, I'm going to run through my design and fabrication processes, including links, resources and asides when relevant. You should read through it as a launching point for your machine. As a default, you are free to use all of the resource here to replicate the machine, and develop an end effector of your own.
    
    *!ALERT! ~ This is a design process ~ !ALERT!* so please bear with any ambiguities and nonlinearities. When possible, I will take asides to explain my reasoning<sup>2</sup>, but overall, I hope to demystify CNC D&B<sup>3</sup>. Good luck, have fun!
    
    Jake Read's avatar
    Jake Read committed
    
    ### In this order, we will do:
    
    #### Design:
     - Draw a Layout (Rhino Suggested)
     - Detail the Axis
     - Detail Interconnects
    
    #### Manufacturing:
     - Do Material Layout in Rhino
     - Program CAM in Fusion
     - Do the Milling
    
    #### Assembly:
     - Put it together!
    
    #### Electronics Assembly:
     - Plugs, Switches, Power, oh my!
    
    #### Motion Control 
    
    Jake Read's avatar
    Jake Read committed
     - TinyG with a Big Heart (and second-order acceleration curves!)
    
    Jake Read's avatar
    Jake Read committed
    
    #### Machine Communication
     - Chilipeppr 
    
    Jake Read's avatar
    Jake Read committed
     - GCode
    
    Jake Read's avatar
    Jake Read committed
    
    #### End Effectors
     - Open Season: Design your own!
    
    Jake Read's avatar
    Jake Read committed
    
    
    Jake Read's avatar
    Jake Read committed
    ## Layout 
    
    Jake Read's avatar
    Jake Read committed
    
    
    Jake Read's avatar
    Jake Read committed
    First thing, you'll want to get a hang of what rough sizes / shapes / orientations your machine is going to have. In this case, I'm interested in designing something of an 'everything machine'. I.E it should be useful for a few different processes: 3D Printing, CNC Milling, Flat-Sheet Cutting (a-la the ZUND), and (maybe) eventually Laser Cutting. Normally I would not advise this<sup>4</sup>, but here we are.  
    
    
    Jake Read's avatar
    Jake Read committed
    I'm going to aim at a roundabout bed-size<sup>5</sup> of 12x24"<sup>6</sup> - largely this just feels like a happy medium between large format and small format work. It's a fairly common size for sheet stock, or at least bigger sheet stock can be broken down into these sizes with minimum work. In Europe, sheets also commonly come in 1250x2500mm stock - a factor of 1.025 over the NA 4'x8' standard. I'm going to add 1" to each of these dimensions to account for that, and for general design-fudge-space, and for fixturing. I feel like 5'<sup>7</sup>is a great Z-travel value - this will handle lots of stock, and lots of tools (in milling) - also, this is relative movement, and I plan on making the overall bed height / end-effector mount locations somewhat adjustable.   
    
    Jake Read's avatar
    Jake Read committed
    
    SO: 13x25x5" moving area.  
    
    W/R/T Layout, there are a number of permutations of how to go about adding axis together in order to get 3D motion. I'd like to cover a few of these in examples, and I'll leave a TODO here: - bridgeport x-on-y with beefy-z style, shopbot and laser 'H' machine w/ dual y-drive (note laser BED moves, not head), omax and fablight 'drafting-square' hella-stiffness gantries, ultimaker t-config, corexy, flexural stages. I really like [this machine](http://archive.fabacademy.org/2017/fablabverket/students/100/web/projects/diy_cnc/index.html) developed by one of Jens' students. I should explain why<sup>8</sup>. OK, enough talk - let's see an example of a machine layout - 
    
    I tend to 'work out' from the Z-axis, towards the edges - this way I can keep track of where I need extra offsets (length of travel != length of gantry). Here's the layout with the Z-and-X axis group moved around to the extents.
    
    
    Jake Read's avatar
    Jake Read committed
    ![machine layout extents](https://gitlab.cba.mit.edu/jakeread/machineweek/raw/master/images/layout-extents.jpg)
    
    Jake Read's avatar
    Jake Read committed
    
    And the layout as representative of a real machine...
    
    Jake Read's avatar
    Jake Read committed
    
    
    Jake Read's avatar
    Jake Read committed
    ![machine layout](https://gitlab.cba.mit.edu/jakeread/machineweek/raw/master/images/layout-machine.jpg)
    
    Jake Read's avatar
    Jake Read committed
    
    
    Jake Read's avatar
    Jake Read committed
    *NONLINEARITY ALERT* You can tell I already have some sense of what the details in my axis system are like, which has informed (in a big way) how I laid the rest of the machine out. HOWEVER - as this stage, I took no time to carefully align things, set thicknesses, etc. I was simply trying to get a *general sense* of what-goes-where. This will inform my next spiral, where I detail axis. 
    
    ![machine layout extents](https://gitlab.cba.mit.edu/jakeread/machineweek/raw/master/images/design-space-cone.png)
    
    Good design is kind of like this - you are starting far away from your desired goal, and in limited time, you approach *the destination*. Deviations you make early on have big effect on your final location - even though this is when you have the most limited amount of information. It's important, during the early space, to properly explore as much 'design space' as possible - this way you are better off later on - sometimes in categorically better or worse positions. SO: don't jump too early, be curious, be cautious, think as carefully as you can as you make these initial decisions.
    
    Jake Read's avatar
    Jake Read committed
    
    ## Parametric Axis
    
    Jake Read's avatar
    Jake Read committed
    
    Jens Dyvik is on some [wonderful machine building sprials (link!)](https://github.com/fellesverkstedet/fabricatable-machines) and we're going to put them to work this week. In particular, the [chamferrail system](https://github.com/fellesverkstedet/fabricatable-machines/tree/master/chamferrail). Take a look at his documentation to get an overview of the machines! 
    
    
    Jake Read's avatar
    Jake Read committed
    I'm using his Chamferrail Generator in Rhino and Grasshopper - included in this repo under /cad/axis-generator/ and in [Jen's Repo here](https://github.com/fellesverkstedet/fabricatable-machines/tree/master/humphrito-medium-format-cnc). 
    
    Links to these files are under /cad/axis-generator/ - you can open the Rhino and Grasshopper file there TODO: Link Grasshopper Tutorials and get to work inputting your parameters. 
    
    You can make a linear axis:
    
    ![linear axis](https://gitlab.cba.mit.edu/jakeread/machineweek/raw/master/images/linear-axis.jpg)
    
    Jake Read's avatar
    Jake Read committed
    
    
    Jake Read's avatar
    Jake Read committed
    Or a rotary axis:
    
    Jake Read's avatar
    Jake Read committed
    
    
    Jake Read's avatar
    Jake Read committed
    ![linear axis](https://gitlab.cba.mit.edu/jakeread/machineweek/raw/master/images/rotary-axis.jpg)
    
    Jake Read's avatar
    Jake Read committed
    
    
    Jake Read's avatar
    Jake Read committed
    Use Grasshopper to adjust the parameters - you'll find them all on the left. There's a huge swath to get through, try experimenting so that you understand the different parameters. Critically, adjust Axis Length, Axis Width, and Axis Type (Rotary or Linear). The Motor Size & Material Thicknesses are set already for the materials we have on hand for machine week, and the Tooth Size variables are set up for the milling capabilities we have in our shops.
    
    Once I have my parameters set up, I use the 'bake' command to pull the geometry out of grasshopper and into Rhino.
    
    Jake Read's avatar
    Jake Read committed
    
    
    Jake Read's avatar
    Jake Read committed
    ![generating the x axis](https://gitlab.cba.mit.edu/jakeread/machineweek/raw/master/images/generate-x-axis-bake.jpg)
    
    Jake Read's avatar
    Jake Read committed
    
    
    Jake Read's avatar
    Jake Read committed
    I'm going to do this for each of my axis: X, Y and Z - and then bring those into another Rhino File so that I can start composing them into a machine.
    
    
    Jake Read's avatar
    Jake Read committed
    - Observations on Build
     - Tricky to coordinate X / Z Axis as rails really need to be adjustable
     - Setting Z Height and Thicknesses during fab is VERY important! Face your Bed!
     - Countersink Bolts for Motor Mount, or bring hole size down so that you can tap
     - Bring Motor Flange Hole size ++
     - Bring Motor Mount Screws -- to thread
    
    Jake Read's avatar
    Jake Read committed
     - Get Flat Head SHCS for Motor Mount, do Chamfer
    
    Jake Read's avatar
    Jake Read committed
    
    
    Jake Read's avatar
    Jake Read committed
    ## Axis Blocks
    
    Jake Read's avatar
    Jake Read committed
    
    
    Jake Read's avatar
    Jake Read committed
    OK, I have my axis:
    
    ![generating all axis](https://gitlab.cba.mit.edu/jakeread/machineweek/raw/master/images/generate-all-axis.jpg)
    
    Critically, I coordinated mounting holes (there's an option for 'custom hole pattern' in the Glideblock Geometry Section) so that my X and Z axis would comfortably overlap:
    
    ![coordination x-z axis](https://gitlab.cba.mit.edu/jakeread/machineweek/raw/master/images/coordinate-x-z-axis.jpg)
    
    Now I'm going to bring these into my layout:
    
    ![begin-layout](https://gitlab.cba.mit.edu/jakeread/machineweek/raw/master/images/begin-layout.jpg)
    
    What I'll do now is compose axis 'from the action-out' ... i.e. I'm going to set up my Z->X relationship up, and then my X->Y relationship up. I'm working 'out' from where we do the business: at the Z axis, with the end effector.
    
    ![layout-z](https://gitlab.cba.mit.edu/jakeread/machineweek/raw/master/images/layout-z.jpg)
    
    Now is when we start deviating from the parametric axis. I'm going to make on major concession: my Y axis (the long ones) I have split, and I'm going to put one side of the rail on either, and link them with a rigid member along the x axis... I'm also going to bring one of the adjustable-sides of the chamferrail across.
    
    ![layout-x-y](https://gitlab.cba.mit.edu/jakeread/machineweek/raw/master/images/layout-x-y.jpg)
    
    I'm feeling ready to start 'boxing it out' - i.e. adding some structure to these so-far so-flappy axis. Here we go:
    
    ![layout-ready](https://gitlab.cba.mit.edu/jakeread/machineweek/raw/master/images/layout-read.jpg)
    
    And the X-Axis... Stiffness is king! But weight is not your friend...
    
    Jake Read's avatar
    Jake Read committed
    
    ## Doing the Milling
    
    Jake Read's avatar
    Jake Read committed
    
    Once I'm ready to do some manufacturing, I start by laying the pieces out - grouping them by material. Most things are in HDPE (or ABS - TBD!). The 'rails' are made with Delrin<sup>9</sup> of a similar thickness, and the pinon is made of thicker Delrin, about 3/4". Here's a chance to optimize your layout for the size of sheet stock you have. Keep in mind you'll want clearance between items for cutout tools, etc.
    
    ![laying out the x axis](https://gitlab.cba.mit.edu/jakeread/machineweek/raw/master/images/generate-x-axis-layout.jpg)
    
    Now I brought this into Fusion to do some CAM. From Rhino, select the geometry for one material and Export as a *.step* file. Then you can upload this into Fusion.
    
    ![generating the x axis](https://gitlab.cba.mit.edu/jakeread/machineweek/raw/master/images/machine-x-axis-setup.jpg)
    
    
    Jake Read's avatar
    Jake Read committed
    I go to the CAM section right away, and setup some stock. First thing, our Shopbots are setup in Inches, so check that in the 'units' in the top of the tree. I'll use a 0" offset on top of the model, 0.05" on the bottom (then we can be sure to cut through later on) and a 0.75" offset on the sides - I want to be sure to clear the screws I'll be using to fixture my HDPE sheet.
    
    Jake Read's avatar
    Jake Read committed
    
    
    Jake Read's avatar
    Jake Read committed
    For tools, I set up with a 1/8" 'O-Cutter' - as in, one flute. This is going to be my detail workhorse - it'll cut teeth and holes. I also have 1/4" O-Cutter to do profiles and cutouts. My two other tools are a Chamfer Endmill, used for, well, the chamfers, and a 1/16" 2-flute endmill for some detailing on the pinion. Here's a quick table of the tools, and their feeds and speeds. I used [the CBA Feeds and Speeds Calculator](https://pub.pages.cba.mit.edu/feed_speeds/) to ballpark these, and I'll dial them in as I test the first axis.  
    
    A note on plastics - TODO heat, why single flute, sharp bits, what chips should look like
    
    #### HDPE: 
    
    Jake Read's avatar
    Jake Read committed
    
    Type | Flutes | Diameter | What For | Feed, XY (IPM) | Feed, Plunge (IPM) | Spindle Speed (RPM)
    --- | --- | --- | --- | --- | --- | ---
    Endmill | 1 | 1/8" | Most Details, Holes | 55 | 25 | 13500
    Endmill | 1 | 1/4" | Cutouts, Grunt | 55 | 25 | 7000 
    Endmill | 2 | 1/16" | Pinion Detail | 75 | 25 | 20000
    
    Jake Read's avatar
    Jake Read committed
    Chamfer Mill | 2 | 1/2" | Rail Edges | 100 | 50 | 5000 
    
    #### Acetal: 
    
    Type | Flutes | Diameter | What For | Feed, XY (IPM) | Feed, Plunge (IPM) | Spindle Speed (RPM)
    --- | --- | --- | --- | --- | --- | ---
    Endmill | 1 | 1/8" | Most Details, Holes | 55 | 25 | 13500
    Endmill | 1 | 1/4" | Cutouts, Grunt | 55 | 25 | 7000 
    Endmill | 2 | 1/16" | Pinion Detail | 75 | 25 | 20000
    Chamfer Mill | 2 | 1/2" | Rail Edges | 100 | 50 | 5000 
    
    I also have a tool library for Fusion 360, include TODO here.  
    
    The quality of your work on the Shopbot will directly influence the quality of work your CNC Machine will do! A few important points: 
     - Face your Bed!
      - The chamferrail system relies on a consistent chamfer size. If your bed is slightly tilted in any direction, the size of the chamfer will change along the length of the cut. This means that along some sections of the rail there will be too much friction, and at others, it will be lose!.
     - Carefully Zero the Z!
      - Same as above, thicknesses of varying parts are vary (haha) important. Rather than using the shopbot's z-touchoff plate, I like to dial the Z in myself by dropping the height in 0.1 -> 0.01 -> 0.002 increments, while checking if the tip of the bit is scoring an edge on the material.
    
    ![milling teeth](https://gitlab.cba.mit.edu/jakeread/machineweek/raw/master/images/milling-teeth.gif)
    
    Jake Read's avatar
    Jake Read committed
    
    
    Jake Read's avatar
    Jake Read committed
    ![milling chamfers](https://gitlab.cba.mit.edu/jakeread/machineweek/raw/master/images/milling-chamfer.gif)
    
    Jake Read's avatar
    Jake Read committed
    
    ## Assembly
    - Careful on Blocks! Trim and Align
    
    Jake Read's avatar
    Jake Read committed
    - 
    
    Jake Read's avatar
    Jake Read committed
    
    ## Plugging in Motors
    
    Jake Read's avatar
    Jake Read committed
    - Coils are connected
    - One and two
    
    Jake Read's avatar
    Jake Read committed
    - Link Datasheet from StepperOnline
    
    Jake Read's avatar
    Jake Read committed
    
    ## Configuring TinyG
    
    Jake Read's avatar
    Jake Read committed
    - https://github.com/synthetos/TinyG/wiki
    
    Jake Read's avatar
    Jake Read committed
    - Do Power to the board
    - Should enumerate on a serial port
    - Use https://github.com/synthetos/TinyG/wiki/TinyG-TG-Updater-App to flash new firmware
     - Make sure you don't have the serial port open anywhere else
    - Now complete setup
    - Open in a serial terminal (Arduino has one built in, or see Neil for links) TODO
    
    ![its alive](https://gitlab.cba.mit.edu/jakeread/machineweek/raw/master/images/axis-moving.gif)
    
    ## Chilipepper
    - It's Rad
    - Like Mods, Chilipeppr uses a local serial server to pass messages from the browser to your serial port.
    - Download the Serial Port Json Server after configuring TinyG
    - http://chilipeppr.com/tinyg
    
    Jake Read's avatar
    Jake Read committed
    - Steps / mm
    - Acceleration
    - Travel, etc
    
    Jake Read's avatar
    Jake Read committed
    
    ## Talking to, loading firmware on, TinyG
    
    Jake Read's avatar
    Jake Read committed
    - Arduino, I hope?
    
    Jake Read's avatar
    Jake Read committed
    - Chilipeppr (rad alert!)
    
    Jake Read's avatar
    Jake Read committed
    
    
    Jake Read's avatar
    Jake Read committed
    ## Gcode Basics
    
    Jake Read's avatar
    Jake Read committed
    - may it RIP
    
    
    # Bill of Materials
    
    ## Controller
    
     - [TinyG](https://github.com/synthetos/TinyG/wiki)
     - [buy on Adafruit](https://www.adafruit.com/product/1749)
    
    ## Power Supply
     - [24v 14.6A switching PSU](https://www.omc-stepperonline.com/power-supply/350w-24v-146a-115230v-switching-power-supply-stepper-motor-cnc-router-kits-s-350-24.html)
    
    ## Motors
     - [4x NEMA 23 57x57x56 w/ 6.32mm Shaft w/ D w/ 400 Steps / Rev](https://www.omc-stepperonline.com/hybrid-stepper-motor/nema-23-bipolar-09deg-126nm-1784ozin-28a-25v-57x57x56mm-4-wires-23hm22-2804s.html)
    
    ## Tooling
     - 1/8" O-Cutter Upcut - https://www.bhid.com/itemdetail/HARVEY%2051908 or Onsrud PN 65-013 
     - 1/4" O-Cutter Upcut - https://www.bhid.com/itemdetail/HARVEY%2044916 or Onsrud PN 65-023
     - 1/2" 90deg Chamfer Endmill - https://www.bhid.com/itemdetail/NIACUT%20N76595
     - 1/16" O-Cutter Upcut - https://www.bhid.com/itemdetail/HARVEY%2051162
     - M5 Tap  (McMaster)
    
    ## Hardware
     - SHCS M5x12 (Motor Mounting) - 91292A125 
     - SHCS M5x20
     - SHCS M5x30 (Rails Mounting) - 91292A192 
     - Washers M5 - 93475A240
     - Set Screws M3x6 (Pinion Safety) - 92605A100 
    
    ## Material
     - Rails / Structure etc: 3/8" x 24x36" of HDPE or ABS (TBD)
     - Glide Blocks: 3/8" x 12x24" Acetal (Delrin) Sheet
     - Pinions: 1" x 2x6" Acetal (Delrin) Bar 
    
    ## End Effector Showdown
     - A Router 
     - A Laser Diode (haute)
     - A 3D Print Head (also haute)
      - Heated Bed ?
     - Ceramic Printer
     - Pick-and-place-ish
     - Drawing
     - Camera / Scanning
     - Cutting
    
    
    
    Jake Read's avatar
    Jake Read committed
    # Footnotes
    
    
    Jake Read's avatar
    Jake Read committed
    1. [Five Axis](http://ekswhyzee.com/index.php/project/tinyfive/), [Metal Laser Cutter](http://ekswhyzee.com/index.php/project/mako/), [and here](http://3dfablight.com/), [Dual Head 3D Printer](http://openassemblies.com/index.php/fdm4md/), and [Ongoing Robot Arm Adventure](http://openassemblies.com/index.php/rsea/)   
    2. Asides will be relegated to the footnotes when not strictly necessary.
    3. Design and Build
    4. Things work very well when they are designed to do only one-thing. For example, vise grips *will* turn just about anything, but no one would say they are *good* at turning *anything*. A building designed for Helsinki may not make so much sense in Dubai. In another example, a laser cutter has a motion system that is optimized for speed, and takes advantage of the fact that it has very little mass to move around (a few mirrors) in order to carry through on this optimization. A milling machine is engineered for stiffness, and trades speed for the mass required to carry through on that optimization. In trying to have one motion system do all of these things, we'll go a little 'soft' in the middle, but we'll also be able to offer a lot of variety in a single system.
    5. Relative Scaling: 10^4 of length scale is a common machine, 10^6 is good - lookup slocum ?
    6. ~ 305x610mm 
    7. ~ 127mm
    8. So I want an H-style layout, because I want to keep the machine small relative it's total work area. One of the biggest drawbacks with an H-machine is that the two sides of the Y-axis are not always set up parallel. The result is what's called 'racking' - i.e. imagine opening a screen door, and the top or bottom exhibits more friction - the 'jam' that this causes happens in CNC Machines as well. A drawing. By cutting both Y-axis rails out of the same 'frame', Jakob gets around this issue - the parallelness of the two rails is a mirror of the parallelness of the machine which cut them. It makes it a bit bulletproof to novice assemblers. He has also done a really good job of keeping the X-axis loads really close to the Y-axis rails (so, a small structural loop). 
    
    Jake Read's avatar
    Jake Read committed
    9. AKA Acetal, AKA POM
    
    Jake Read's avatar
    Jake Read committed
    
    to be linked - dan gelbart
    talk about resolution vs. accuracy - repeatability vs absolute accuracty - global vs. local resolutions