Posts Tagged ‘ chilipeppr

New Commission: Denali

denali02_webWas recently commissioned to make another Denali cut on my X-Carve.  This time I swapped out the 1/4″ ballnose used for the rough cut for a 1/8″ ballnose on the finish cut:  Really helped the mountain detail pop.

I had split the rough and finish cuts into two files:  Only downside was that using Chilipeppr, it started to choke on the 4.8meg finish pass file. It would cut for 8 seconds, then pause for 4, etc, repeat… making it take waaay longer than it should (3.5 hour finish pass). Talking on the GoogleGroup, I guess this is a known problem, and the SPJS grbl code needs a port from tinyG. Next time I’m going to give UGS a shot…

I’ll give another shoutout to Terrain2STL, the great app I used to generate the terrain data.

Visual comparison of ballnose stepover values on the X-Carve

I built my X-Carve back in December:  It’s been a great new tool to learn.  I’m still very new to the world of CNC, and like to visually grasp the concepts.  So I decided to do a series of tests to understand how ‘stepover’ values effect the finish-pass quality of the surface both on X, and on the XY axes.

The MeshCAM blog does a great job of describing the fundamentals of stepover here.

Here are the stats for the cuts:

  • Hardware:  Inventables 1000mm X-Carve.
  • 1/4″ ballnose bit, 2-flute upcut.
  • Feedrate 60ipm, DeWalt set 1 to 2.
  • Wood type:  Unknown (came from an old bookshelf bottom), but if I had to take a guess, I’d say pine.
  • 3d Design Software: Autodesk Maya
  • CAM: MeshCAM
  • Sender: Chilipeppr

The specifics from MeshCAM below. All values for all cuts were the same except of the stepover, and either “Cut along X”, or “Cut X then Y”.


I wanted really extreme examples, so I set the following stepover percentages for my test: 100% (1/4″), 75%, 50%, 25%, 10%, 5% (only done on X, not XY).

I started by designing a model in Maya that incorporates a variety of surface angles.  The inside volume is just over 2×2″, by about 1/4″ deep.

stepoverCompare_maya (that’s a flattened sphere in the middle)

I then made multiple different gcode (nc) via MeshCAM, and started cutting them.

The whole piece for the X-cut:


And the whole piece for the XY cut:

stepoverCompare_allXY (note, no 5% test here)

Individual close-ups below.  X pass on the left, XY on the right.

Note the rough-cut for all pieces took just about exactly 2 minutes.  All the times listed below are for the X & XY-Axis Finish pass in min:sec.  So to get the total cut time, just add two minutes to the below values.

stepoverCompare_100 stepoverCompare_100xy

  • 100% stepover, .25″ : This is obviously super rough.  I honestly expected the segment to be closer together.
  • X Finish Pass Time:  0:47
  • XY Finish Pass Time : 1:34

stepoverCompare_75 stepoverCompare_75xy

  • 75% stepover, .1875″ : Not too much different than 100 really.
  • X Finish Pass time : 1:03
  • XY Finish Pass time : 2:03

stepoverCompare_50 stepoverCompare_50xy

  • 50% stepover, .125″ : Still really rough, but arguably could do something artistic with the ridges at this point.
  • X Finish Pass time: 1:30
  • XY Finish Pass time : 3:00

stepoverCompare_25 stepoverCompare_25xy

  • 25% stepover, .0625″ : Carry on, nothing to see here.  Even with the XY pass, it’s still pretty rough.
  • X Finish Pass time: 2:50
  • XY Finish Pass time : 6:40

stepoverCompare_10 stepoverCompare_10xy

  • 10 % stepover, .025″ : Now we’re getting somewhere: Ridges are still visible, but small.  Pretty smooth to the touch, but you can still make them out.  Sanding could take care of this.
  • X Finish Pass time: 7:10
  • XY Finish Pass time : 14:00


  • 5% stepover, .0125″ : Done.  Finished.  Can’t make out the ridges with the naked eye.  Very smooth to the touch.  No sanding needed really.
  • X Finish Pass time: 14:20
  • No XY pass done.  Not much point considering the quality already achieved.

Final thoughts:

  • Notice on all X-cuts that the lower-left section of the hemisphere is rough.  Must have to do with the direction of the toolhead (left<>right on X) and the spinning of the bit (clockwise).  The XY cuts removed these issues.
  • If you are ok with sanding, 10%/.025 stepover is ok.  If you want to avoid sanding entirely, go with the 5%/.0125″ stepover.
  • Even though the 5% X-only stepover and  10% XY stepover took the same amount of time, the X-only has a far better surface quality.  You’d still need to sand the 10% XY one.
  • What do I take away the XY Finish pass?  The XY Finish Pass times are generally 2x the X-only times, but don’t really increase the quality.  Not much point unless you’re looking for ‘that look’ in the cuts.
  • I feel like the speeds could be greatly increased on the finish pass:  I was only running the router on speed 1 to 2.  The smaller the stepover, the smaller the amount of material you’re removing, so arguably the faster the toolhead could move to compensate for this under load:  There’s a lot of speed left in the router…. sounds like another good test to try.

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:


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:


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:


Which I then converted into displaced polygons (Maya: Modify -> Convert ->  Displacement To 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:


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

Until the final product appeared:


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:


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).


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!

Burning an Arduino Bootloader, reflashing Grbl

X-Carve has been working great, other than the fact the limit-switches only worked for one day:  On day one, they worked as expected.  But on day two, I installed Chilipeppr (which I’ve been continuing to use successfully), and they switches suddenly stopped working.  You can see my thread on the forums here talking about the issue.

After much discussion on that thread and others, it sounded like something was wrong with the Arduino Uno that shipped with the X-Carve.  No problem, I have two other Uno’s, I’ll just upload Grbl to them.  But the problem was, via the “Compile Grbl to the Arduino” page (based on this Inventables Grbl fork), it wouldn’t load.  Note, I’m on OSX 10.10.5

I would get these errors constantly:

avrdude: stk500_paged_write(): (a) protocol error, expect=0x14, resp=0x0d
avrdude: stk500_cmd(): programmer is out of sync

And sometimes this:

avrdude: stk500_recv(): programmer is not responding

Super frustrating.  After more searching, it sounded like the bootloader on the older Uno’s was out of date, and I needed to update it.  I’ve done a lot of Arduino programming in the past, but never had to burn a bootloader.

Arduino has a tutorial here:  Arduino as an ISP  :  It shows how you can use Arduino A to act as an ISP (in-system programmer) for Arduino B.  Problem is, I couldn’t get it to work.  Followed the directions perfectly, but would constantly get errors.

After more searching online, I found reference to “Atmega bootloader program by Nick Gammon”:

I downloaded the source sketch, followed the directions, and it worked!  The only gotcha was, after I uploaded the sketch, I had to open the Serial Monitor to see all the text listed under the “Example Output for Uno” section (that wasn’t terrible obvious for me to do based on the instructions).  I was then able to issue the remainder of the commands, and complete the burn.  So a huge thanks to Nick Gammon!

Once the bootloader was re-burned, I was able to “compile Grbl to Arduino” per the above link, and it actually worked.

But, querying the default grbl values via the $$ command looked really weird.  I learned you need to issue this command to reset to factory defaults:


In addition, programs like Chlipeppr and UGS won’t send the ‘?’ command to grbl over their serial connection (which you need to print your limit switch settings) : I had to issue that via the Arduino IDE’s Serial Monitor.

I was able to test voltage on the digital pins for the limit-switches (D9, D10, D12), and they all had positive voltage, meaning they now work.

But unfortunately, it wouldn’t work in the X-Carve.  From my forum thread above:

Update on this: I checked the digital pins on the new grbl loaded uno: They all read close to 5v, which tells me they should actually support the limit switches. So that’s good…

However, the whole thing doesn’t work: Even though (on the ‘old but updated Uno’) I can query the grbl firmware vals from both the Arduino IDE & from the ‘Advanced settings’ in Easel, when I go to do the machine setup, I can’t jog the steppers at all. No sounds, nothing. I unplugged the limit-switches, but that didn’t make a difference. Swap for the ‘shipped with x-carve’ uno\gshield combo and it scoots all over. Swap back to the ‘old but updated’ uno\gshield, and dead in the water.

Comparing my ‘old but updated’ uno to the ‘shipped with x-carve’ uno, I notice the x-carve one has more header pins the gshield plugs into. At this point I’m guessing that Arduino Uno’s aren’t created equal, and the other ones I have are ‘just too old’.

Maybe I’ll get around to buying a ‘newfangled uno’ eventually, but since right now I’m cutting just fine without the limit-switches, that’ll be a future project. Thanks for all the help though!

SOOOOOooo… no limit-switches for me right now.  But at least I can still carve :)