Posts Tagged ‘ cnc router

Digital to wood : A new X-carve piece

New piece I made on the X-Carve:  It measures just under 12″ square, by 1/3″ thick, birch plywood, with some ‘natural’ stain applied:

final_piece

So how did I get there?

Years ago, like ’98-2000-ish, I was really into building shader networks in Maya.  I loved their ramp shader, so versatile.  Later Maya introduced their ‘layered shader’, which is a lot like a layered file in Photoshop.  Over the years my career in CG has taken me away from shader creation, but I always remember how much fun it was ‘back in the day’.

Fast forward to now with the X-Carve :  I know that I can turn a grayscale height-field into mesh, and MeshCAM will turn it into a toolpath, so this was my first attempt at doing just that, via a shader network in Maya:

shader_network

This visualizes (from right to left) the shading group (which the mesh is assigned to) that has both a lambert (just for mesh visualization) and displacement material (for later conversion to displaced polys) assigned.  They’re in turn both fed by a layered texture, that has inputs from a ramp (on top) that defines the border, an ocean texture (that makes the ripples), and another ramp that makes the circles.  I authored a Python script that automates this whole creation process and mesh assignment, with a simple window so I can repeat this process easily.  Iteration is king.

From there, I had something that looked like this, assigned to a flat, tessellated polygonal plane:

heightField

Which I then converted into displaced polygons (Maya: Modify -> Convert ->  Displacement To Polygons)

polygons

Exported as an stl, and brought that into MeshCAM for toolpath generation as a two-part cut:

  • Rough pass with a 1/4″ two-flute upcut endmill.
    • 60 inch/min
    • DOC .0625″
    • Stepover .125″
  • Finish pass with a 1/8″ two-flute upcut ballnose.
    • 60 inch/min
    • DOC .0312″
    • Stepover .025″ : Should have doubled this to get rid of the scalloping.
  • Had the DeWalt 611 router speed set to 1 on both based on rough chipload calculators:  Seemed to do fine, occasionally had some stuttering on the rough pass.

I sent the gcode to the X-Carve via Chilipeppr, and over the next 2.5 hours watched the magic ensue:

finish_pass

The above pic shows the final pass emerging from the rough.

Until the final product appeared:

route_complete

All the hold-downs are overkill, but I realized I had told MesCAM to machine the entire stock, so I had to move them around as the progressed from bottom to top, or I would have machined the clamps themselves.  Noob move.

Pretty happy with the end-result:  It’s actually quite confusing to the eye in person as the shadows dance around it.  Great test though, and a lot learned.

Making The OneHundred

I always found it, humorous, when some Instagrammer got ‘X number’ of people and made some crazy post about it:  “LOVE you all, hugs and kisses”, etc.  I recently hit 100, and figured this would give me a good excuse to combine both my 3d-printing and newfound CNC-routing skills:

I’ve been wanting to do a piece that combined both 3d printing and CNC routing, some came up with idea of a routed background, with 3d printed text.  “The OneHundred” was thus created:

beautyShot

Info on the techniques used to make it:

3D Modeling

The model was created in Autodesk Maya:  I wrote a super simple tool to randomize the rotation and position of simple poly cubes that made up the background.  A 3d model of the text was generated, and Booleaned out of the background.  An stl was generated for both the background, and the text.  The piece is 12″ square, by 3/4″ deep.

3D Printing

The text model was sliced using Simplify3D, and printed on my C-Bot directly off the SD card (I recently was printing something via Octoprint, bumped the RaspberryPi, and it lost USB connection half way through a multi-hour print… don’t like that at all).  Settings:

  • Filament: Makergeeks Orange PLA
  • Extruded @ 230deg (hot for PLA, but per manufacturer recommendation), bed @ 60 deg
  • 1.2mm E3D-v6 Volcano nozzle
  • 600 micron layer heights, 1 shell, 20% fast hexagon infill.
  • Print speed is 45 mm/sec : Sounds slow, but that’s a volume of 32.4 mm3/sec extruded.  For those keeping score, a the volume extruded of a .4mm nozzle with 200 micron layer heights at 90mm/sec is 7.2 mm3/sec:  Volcano is printing 4.5x as fast, crazy.
  • Took about 1.5 hours.  (so, based on the above specs, it would have taken 6.75 hours on a ‘normal’ printer).

CNC-Routing

MeshCAM was used to generate the toolpath cut from the MDF background.  The gcode was sent via the Chilipeppr GRBL workspace.  MeshCAM settings:

  • Roughcut:
    • 1/4″ 2 flute upcut endmill
    • DOC: .0625″
    • Stepover: .125″
    • Feedrate: 60″/minute
    • Took about 1.25 hrs
  • Finish Pass:
    • 1/8″ 2 flute upcut ballnose
    • DOC: .0312″
    • Stepover: .025″
    • Feedrate 60″/minute
    • Took about 3.25 hours

The above settings are completely based on previous trial and error, and could be improved no doubt.  Things I noticed while cutting:

  • Got some chatter on the roughcut, even when I turned up my DeWalt 611 speed all the way.  Guess I was cutting to aggressive.
  • The final piece has more scalloping than I’d like:  Think I need to lessen the stepover next time.
  • Having to babysit the machine for 4.5 hours was… not fun.  But I got to read some magazines I needed to catch up on.

Final Thoughts:

Great learning experience, I’m really getting the two-cut process down using my touchplate.  Can’t wait to do more!

X-Carve CNC learnings : MeshCAM, touchplates, Chilipeppr, & multi-pass cuts

It’s been great having two weeks off over the holidays, and a newly assembled X-Carve.   Following up on previous posts, this is more learning, saved on the web for my future reference.  Current CNC skill level = noob.

MeshCAM

meshCAMWhile Inventable’s Easel ($ = Free) is great, I’ve quickly exhausted it’s capabilities.  Specifically, I want to model 3d objects in Autodesk Maya, and mill them on my X-Carve.  Currently Easel does 2D (cutouts) 2.5D (cutouts at multiple heights) but not full 3D objects.  Reading the forums there appears to be several popular software packages out there that do what I’m after, two of which include MeshCAM ($250-$500) and VCarve ($350-$700).  My issue is I’m on a mac, which is very limiting in the world of CNC as I’ve learned, so I can’t even test V-Carve :-(  MeshCam it is!

MeshCAM does give you a nice fully featured trial period (couple weeks) to check it out.  And it does exactly what I’m after:  Creates multi-pass (roughing, finish) toolpaths based on my 3d objects.  Pros is that it does that well!  Cons is that the UI feels a bit antiquated compared to most 3d software I use, and I can’t really find any robust instructions online (they do email you a tutorial a day once you get the trial though).  But it gets the job done.

List of tutorials I’ve found:

Other Links:

And, it exposed the first issue that prompted this whole post:  Since it provides for multi-pass cuts (requiring a tool change), how can I actually implement them?

Touchplates

To dotouchplate a multi-pass cut (as I’ve been learning), you generally use a big fat bit on the roughing pass to remove a bunch of material, then a finer bit on the finish pass to make it look all nice.  But this obviously means you need to swap bits.  And if you swap bits, how can you guarantee that the Z-height is the exact same on the finish pass as it was on the roughing pass?  Since when you remove bitA and add bitB, there’s no way a human can guarantee the tip of bitB is at the exact same location that bitA’s was.

Reading the forums it quickly became apparent that I needed a ‘touchplate’ : A chunk of metal of a known thickness you can use to effectively ‘close a circuit’ with the spindle bit:  When that circuit is closed, you know you’ve hit the top of the material you’re about to mill (with the bit a known distance above it).

I fashioned my touch-plate out of a scrap of 1/8″ aluminum my father had given me from a previous boat build:  Drilled a small hole in one end, affixed a wire to it through a bolt tapped into it.

From there, per the forums, I connected that to the Arduino Uno’s A5 pin, and another wire with an alligator clip on the end to it to the gShield’s ground.  The main issue is the analog headers on the Arduino are hard to get at because of the gShield on top, but I was able to get a small lead plugged in (see below image).

wiring

But once it was all wired up, how to test, and ultimately use?

ChiliPeppr

ChiliPepprchillipeppr is something I only recently learned about:  A tool for sending gcode to your device, supporting tinyG and Grbl (which the X-Carve uses), and ‘generic serial’. The Universal GcodeSender (Grbl only?) was a close second (and I got it up and running, which required a frustrating update of Java on my mac), but honestly ChiliPeppr just looks cool while you’re using it.  While Easel allows you to send gcode to the gShield, I couldn’t actually get it to execute the (below) touchplate gcode:  The machine would just make a weird vibrating sound.  Could be my complete lack of knowledge on the subject, and I wanted to learn how to use ChiliPeppr anyway.

The first stumbling block was figuring out how to connect ChiliPeppr to my X-Carve (since there are no instructions for ‘first time users’ I could find) : As it turns out, based on the smallish screen of my Macbook Air, the menu on the bottom right that lets you “Download Serial Port JSON sever” wasn’t visible.  You need to install and run that server (a shell pops up to let you know its running) to allow ChiliPeppr to talk to the X-Carve.  Once that was done, I was in business.

One thing I’ve noted about ChiliPeppr every time I’ve used it to make a cut (total of three times now) : It seems to randomly pause.  I have to “unpause” it, and it happily goes along it’s way.  Not sure what is causing this, nor can I find any errors/warnings shown.

Other ChiliPeppr links:

Multi-Pass Cuts

Being the CNC noob that I am, since I couldn’t find any docs for this (meaning, using a combo of MeshCAM, Chilipeppr, and doing multi-pass, tool-changing cuts) anywhere.  So below is a rough outline of my experience doing just that:

  • In MeshCAM I created both a rough and finishing pass, and saved out the gcode using the “Shapeoko GRBL-Inch” postprocessor.
  • I drag & dropped that .nc file into ChiliPeppr.
  • In ChiliPeppr, I used the jog controls to move my toolhead to the bottom-left corner of where I wanted the cut to start.
  • Using the touchplate, I put it under the toolhead, connected the alligator-clip to the it, then created a ChiliPeppr JavaScript macro:
    • macro.sendSerial(“G20\n G92 Z0\n G38.2 Z-.5 F1\n G92 Z.124\n G0 z.25”);
    • The above (modified) code is thanks to a X-Carve forum post by user CharleyThomas.  The raw code on a single line looks like:
    • G20; G92 Z0; G38.2 Z-.5 F1; G92 Z.124; G0 z.25
      • G20 : set to inches
      • G92 Z0 : Zero the Z axis, I added this later:  Before I added this, there was a bug that the first time I’d run the macro, the toolhead would go up, not down.  There was some speculation that since the coordinate system wasn’t set yet, the machine thought the toolhead was too low, and would auto-raise it.  Regardless of the issue, this command solved it.
      • G38.2 Z-.5 F1 : Move the spindle down half an inch max looking for the touchplate
      • G92 Z.124 : Set the z-height to the thickness of the touchplate (mine is .124″)
      • G0 z.25 : Raise the spindle to 1/4″ above the material.
    • Note, as I was authoring this, I realized ChiliPeppr has a ‘Touch Plate’ widget, but I have yet to investigate it.
  • From there I turned on the spindle, and fired off the gcode.
  • When it paused for toolchange, I swapped the bit, then re-executed the above steps with the touchplate and macro to re-zero the z-height.  Then unpaused it to continue the work.

Worked like a charm:

final_pass

In the above pic you can see the finish pass emerge from the rough.

All in all, a pretty rewarding experience.

 

X-Carve : Configuration & troubleshooting

This page will be an evolving repository for myself, to collect bits and pieces of X-Carve configuration, troubleshooting, etc.


Configuration

Steps per mm

After I built the X-Carve and got a few test cuts in, I found it odd there was no tuning step.  With 3d printers, it’s important to make sure you get their “steps per mm” set so when you say “make this 10cm”, it really is 10cm.  I found the “Calibration Test Pattern” project and started cutting.  Immediately I noticed something was wrong:  The circle (labeled #13) it started with was an oval, not a circle.  After searching the forums, I found this great vid showing how to calculate the steps per mm (just about the exact same process as on a 3d printer), and how to update the settings via Easel:

As it turns out, my Y & Z seemed pretty spot on, but my X was way off.  Fixed!

Motor current

Just like on 3D printers, you need to tune the steppers current so it’s not too little (so that you miss steps) or too great (so you miss steps).    All three of my stepper pots were off from the factory (which is normal, really), and to get started I manually twisted the pots until they started behaving correctly.  But I figured there was a more accurate way, like tuning the stepper drivers on my C-Bot.  And there is: Again, another great vid:

I have the Nema 23’s from inventables, which are 2.8A per phase.  Using the method from the above vid I set them all to 2V.   Seems to work just fine so far.

Troubleshooting

Forum post with a variety of troubleshooting videos:

https://discuss.inventables.com/t/x-carve-maintenance-troubleshooting-videos-add-your-own/13405/5

Understanding GRBL

I somehow got my limit switches broken.  Follow the thread here for the nitty gritty.  As of this authoring they still don’t work:  Worked fine for a day, and then… dead:  Those pins on the Arduino constantly read 0v.  But in the process of debugging this I learned a lot about grbl.

This forum post got me started on talking to grbl.

The easiest way for me to talk with grbl is through the Arduino IDE.  It was a little twichy at first, here’s what I had to go through:

  • Make sure your board is set to Arduino Uno (since right now grbl requires an Uno).
  • Make sure you have the right port selected (obviously).
  • When the serial monitor is up, make sure your baud rate is 115200.
  • If it connects properly, you should see it say something like > Grbl 0.9j [‘$’ for help]
  • You issue commands to grbl by prefixing them with the dollar sign: $.  If you issue the $ command and nothing happens, change the baude rate to 115200 again.  I had to connect a few times before it would let me issue commands to it.

grbl links:

Building the X-Carve CNC Router

Disclaimer:  I have no affiliation with Inventables.  I’m writing this review purely as my initial experience with this tool.


xcarve_assembled

I’ve been 3D printing for over 3.5 years now, and it’s been an extremely enjoyable hobby:  The transition from my virtual work in video-games to tangible objects has been surprisingly fulfilling.  Which has lead me to aluminum sand-casting, and I dabble in wood-working in my spare time as well.  The more I 3d print, sandcast, and woodwork, the more I want to make… more things, with new methods.

Over the past few years there has been an emergence of desktop CNC machines, and after much research (thanks to Make Magazine, and the internets) I settled on the 1000mm X-Carve kit, by Inventables.  It arrived earlier this month, and I’ve been spending a few hours a day putting it together.  Finally, on Christmas, I finished it up and made my first cuts.

Why did I choose it?

  • Honestly, I really liked how it looked.
  • Had the biggest footprint of the popular kits.  I don’t know what I want to make yet, but I don’t want to feel limited in a year.
  • Amazing online instructions and videos I was able to research ahead of time.
  • Active user community in the forums.
  • Their CAD/CAM software, Easel.  Sort of like CNC training-wheels:  I can imagine eventually growing out of this software, but in the beginning it gives you a great, gentle introduction into this world, and was a huge selling point.
  • A good collections of projects to start with.
  • Entirely Open Source.  While I really have no problem with closed-source, I give them kudos for this.

At first I considered doing a series of blogs like when I assembled my C-Bot 3D Printer.  But very quickly I realized I don’t think it would have been a value-add to the internet:  Inventible (as mentioned above) has amazing online instructions, for which I have very little to add.

Inventables claims you can assemble the whole thing in eight hours:  I believe that is possible.  While I didn’t time myself, I’m guessing I took around twelve total, really taking my time.

Things that impressed me during the build:

  • As mentioned above, the great online instructions and videos.  It assembled exactly as described.
  • Packaging of all the parts:  Everything was individually bagged with a serial number, making it easy to confirm I’d collected the correct parts for each step.
  • Nothing missing:  Every piece accounted for (but a single damaged nut, see below).

General Gotchas:

  • One nylon lock-nut was damaged.  Looks like during manufacturing it got squished beyond usability, and was missing its nylon insert.  Since they give you exactly the number of parts you need, I ended up one nut short.  Luckily my parts bin had something that worked.
  • If you use a router like the DeWalt 611 that has ‘manual spindle control’ (I didn’t even know what that meant until building this), but ordered the wire for ‘automatic spindle control’, you can get confused, if you’re a noob like me:  Since the overall instructions are done so well, when something doesn’t make sense (what is this wire for?  How do I hook it to my router?), it’s actually even more confusing because you think you’re missing something.  In this case no, I wasn’t missing anything, the instructions just presume you know a bit more in this area than I did.
  • While you can order a toolkit with it (which I did not do), nowhere I can find do they list the tools you need.  For example, you’ll need a soldering iron, to do some (pretty simply) solders.  I can imagine that if you’ve never soldered anything before, this may cause anxiety.  Plus you need a number of metric hex-wrenches, a carpenters square, etc, etc.  A tool-list would be nice.  Maybe I’m just missing it…?
  • No dust-shoe.  I find it surprising they don’t provide one (for purchase), considering how much dust this thing makes.  There are a multitude of DIY ones the forums though, and will be one of the first things I build to accompany it.
  • In Easel, I have yet to find a way to manually jog the steppers, other than going through the “Set up you machine” phase.  In the 3d printing world, manual stepper control is pretty commonplace to help move the toolhead around the bed.  Maybe I’m missing this too?
  • The top of the DeWalt 611 router hits the top of the Z-assembly, near where the leadscrew affixes to its belt.  Reading the forums people claim you can turn it to move the colliding bits out of the way.  I was unable to achieve this, and used my belt-sander to grind off a good 1/8″ of plastic and metal.  Problem solved, but seems a bit clunky.
  • The shipping cost of the 1000mm wasteboard is crazy (That sized wasteboard + hardware is $128, and the shipping is more than that).  Being a CNC noob, I didn’t know how important it was to get that wasteboard, are all those holes needed, etc?  Because of that, I ended up ‘just getting it’ (thanks to a $100 off special before Christmas, which I mentally ‘applied to shipping’).  They do provide the cad files online (being open source and all) so you can make your own, presuming you have access to a… CNC router.  And there is discussion on the forum over wastebord options, but it’s a bit scattered, and not entirely clear to a new user.  I think if Inventables provided a way to manually build your own wasteboard using say, a table-saw or circular-saw and some MDF, it’d go a long way to attracting new users that couldn’t afford the shipping.  Are all those holes needed?  No.  But they are handy.

First Cut:

xcarve_firstCut

After the machine was assembled and I ran through their Easel tutorial, I created my own “Merry Xmas”/snowflake combo (shown above).  Affixed a 5.5″ x 5″ x .75″ block of scrap wood to the wasteboard, installed my 1/8” dual-flute ball end (which as it turns out, is the smallest bit I ended up buying), and started cutting.

Thoughts:

  • Cutting seemed slow (based on my CNC Experience Level 1).  I have a feeling the software was just being safe using the defaults.
  • I’m still learning Easel, and got the order of the snowflake and text wrong, so the snowflake blocked the text, rather than the text cutting the snowflake.  Live and learn.
  • All things considered, super simple to do.
  • I need to get a dust-shoe setup.

Final Thoughts:

Overall, I give this build and initial use a solid A.  Far less work than my C-Bot build (which admittedly was muuuuch more DIY).  I really look forward to learning the world of CNC, and how it can compliment my 3D printing.