Shapeoko Software Adventures

I finally got a little time to work on the Shapeoko V1 to V2 conversion.  I made a video to document for my future self what settings I used for things with explanations of why I used those. I hadn’t previously made many notes so I had to basically start from scratch and I lost a lot of time redoing things. I tested some software and did a quick comparison.  Details of my experience and links to the software are below. I also had a bit of trouble from the top software choice, Chilipeppr that I hope someone could shine some light on.

Software:

1.  http://chilipeppr.com/grbl

UPDATE: John Lauer, maker of Chilipeppr , showed me the error of my ways and addressed most of my concerns with it.  He made an update feedrate modification update that I have yet to test.

Chilipeppr seems to be the best interface by far with full 3D display, code simulation, and lots of neat widgets and macros.  While testing my first milling job, however, I ran into some trouble.  I haven’t really watched all the tutorials on this so it is probably something I’m doing wrong, but when I used the feedrate multiplier on the Gcode widget, I typed a value in by hand and hit “enter.”   I entered 0.15 into the feed rate window, hit the enter key, and tested it out.  This did not work at all.  You can only modify the feed rate by clicking the up and down arrow buttons on the Gcode widget in Chillipeppr. You can verify the feed rate change by watching the lines in the Gcode change when you click the buttons. I noticed that if I watched these values while typing an input, they don’t change, unless I mouse over the Gcode line.

I ran a simulation to verify it would work.  The simulation was slow as expected since I was only going 15% of the full speed. Simulations do not take into account feedrates. When I went to run the real job, I broke a bit almost immediately.  The very first line it cut was at the feed rate I specified (15% of the default speed)  but immediately on hitting the next line command in the Gcode, the speed went back to 100% breaking my bit.

Something I loved about this app was the ease of modifying the positions, zeroing and such.  A couple of improvements might be to add options to only zero one axis at a time, and to add a custom offset to each axis if needed. This can be done manually by entering the appropriate G92 code with the wanted offset, but a button similar to the “Move By” would be nice.  You can zero a single axis by clicking the little triangle next to the axis name (ie X, Y or Z) and select “Zero Out Axis”.

I would also like the “Move By” to default to 0 when you change from one axis to another. I mistakenly drove a bit 10mm into my workpiece after adjusting my Y axis first. I had used 10mm for Y, but meant to change it to 0.1mm on Z.  That was totally my fault, but a “stupid-proof” option would be nice for that.

2. Gcode-Sender Chrome plugin

This neat little app is a chrome browser plugin. It is very basic. (this link is that video cued to exactly the point I’m testing this software). It autodetects and connected to my GRBL device instantly. I didn’t have to install any executable alongside this.  An issue is that there is no visualizer for the gcode so you can’t really see what it is going to cut or graphically how far along it is in the cutting job.

3. Universal Gcode sender

You can see in the first video of this post (this link is that video cued to exactly the point I’m testing this software)that I detail this app.  I couldn’t get to display correctly. I have java 1.8 and for some reason, none of the buttons or objects display correctly. I also couldn’t get the visualizer working at all. I tried version 1.04 and 1.07 with no joy. I was able to manually move the machine, but I couldn’t trust it with a cutting job since I couldn’t really see what the button said and couldn’t get the visualizer working.

4. Grbl Controller

Here is the video cued to this software.  This is the software I ended up using in for my first mill job after I couldn’t get the chillipeppr feed rates to scale with its default Gcode.  I created my own code quickly in easel.com and threw it into GRBL Controller to mill.  I liked the simplicity of the  interface.

I have a few gripes:

The serial terminal portion is really slow on my machine and I don’t know why. it takes 5 full seconds to connect to the serial port and print the GRBL stats.  When I send commands manually, there is a definite delay of a couple of seconds before the machine moves.

The visualizer is good, and I love that it prints the extents of the design.  I dislike that it is a 2D only viewer. While it is a good viewer overall, if it was 3D, that would make this tool much better.

The GRBL Settings under the “advanced” tab really messed up my settings.  Since I am running GRBL0.9g, when I loaded this window, it populated the window with my GRBL settings, but when I changed a value ($110 for instance) in this window, it actually wrote it to the OLD GRBL setting number for that setting.  This really confused me for a while. I’m not sure why this happened.  I fixed it in a serial terminal and decided not to use that option again.

 

Other CAD/CAM tools I surveyed

Easel.com is the CAD/CAM software package from Inventables designed for their machines.  It only works with GRBL 0.8c directly, but there’s a way to export the Gcode so you can use any gcode sender.

I ran a job I created in Easel. I had to make sure I selected the correct bit size and on Machine–>advanced I created, then exported the Gcode.  I brought the Gcode into “Grbl Controller” to send the job.  Since I milled with a 0.5mm bit, and I wanted to go 1.5mm deep, that takes 3 passes (rule of thumb is to only cut as deep on a single pass as the width of your bit).  This worked pretty well because Easel generated the multiple passes without telling me anything about it.  I had manually entered 30mm/minute as a feed rate into Easel.com, but it seems to have automatically calculated the feedrates based on either the Gcode it exported, or used the GRBL defaults for each axis because it cut much faster than that.  I would have really liked to have some kind of stats or a note about the number of passes or the approximate mill time based on traveled distances and feed rates.

MakerCAM.com is kind of a precursor to easel. It allows you to import SVGs and do things like pockets or outlines. It then generates toolpaths based on your entered tool values.  It is really easy to use and what is great is that you can download the whole things so you can use it with a device not connected to the internet. There are some great tutorials here.

GRBLweb is another browser-based gcode sender. I didn’t try it out, but the video on the webpage makes it look like a good tool.

JScut is a tool that GRBLweb and Chillipeppr use. JScut is a browser-based CAD/CAM package that helps you create toolpaths. It is similar to Makercam but being JS-based, other browser-based tools can interface and use it.

 

 

Miscellaneous notes about my setup and justifications:

I’m using GRBL 0.9g as I wanted to take advantage of the 4th axis in the future. this has a different pinout than version 0.8c.  0.8c Is what Easel.com uses when you click the “Carve” button on their interface (they use a server app to send the gcode to the machine from the browser, for some reason, I couldn’t get this to register correctly, even when I had 0.8c and the website kept telling me to download and install the server app. The settings I used for the 0.9g setup and justifications for these values are at the bottom of the post.

 

Grbl 0.9g [‘$’ for help]
$0=30 (step pulse, usec)
$1=50 (step idle delay, msec)
$2=28 (step port invert mask:00011100)
$3=2 (dir port invert mask:00000010)
$4=0 (step enable invert, bool)
$5=0 (limit pins invert, bool)
$6=0 (probe pin invert, bool)
$10=3 (status report mask:00000011)
$11=0.050 (junction deviation, mm)
$12=0.100 (arc tolerance, mm)
$13=0 (report inches, bool)
$14=1 (auto start, bool)
$20=0 (soft limits, bool)
$21=0 (hard limits, bool)
$22=0 (homing cycle, bool)
$23=0 (homing dir invert mask:00000000)
$24=100.000 (homing feed, mm/min)
$25=250.000 (homing seek, mm/min)
$26=250 (homing debounce, msec)
$27=1.000 (homing pull-off, mm)
$100=5.470 (x, step/mm)
$101=5.470 (y, step/mm)
$102=320.000 (z, step/mm)
$110=300.000 (x max rate, mm/min)
$111=300.000 (y max rate, mm/min)
$112=50.000 (z max rate, mm/min)
$120=250.000 (x accel, mm/sec^2)
$121=250.000 (y accel, mm/sec^2)
$122=50.000 (z accel, mm/sec^2)
$130=290.000 (x max travel, mm)
$131=290.000 (y max travel, mm)
$132=100.000 (z max travel, mm)

Here are the justifications for these settings:

Note: GRBL 0.9g runs at 115200 baud.

I needed to change the X and Y steps/mm based on the following:
Motors have 1.8degrees (200 steps/revolution)
MXL belt has 2.03mm pitch
My belt pulleys have 18 teeth on them
I’m single-stepping my stepper motors
I used these values in the following calculator: http://prusaprinters.org/calculator/#stepspermmbelt
= 5.470 step/mm for both X and Y

To test this, enter the following code
G01 Y-10 F300
Which means “Move Y axis -10mm at a speed of 300mm/min”
I confirmed this motion with a micrometer
My Z axis seems fine using the values from the shapeoko website (I meanured about 1mm when I sent it the command to move 1mm.)

I’ve had to invert my direction on a couple axes:
https://github.com/grbl/grbl/wiki/Configuring-Grbl-v0.9 ctrl+f “$2 – Step port invert mask:binary”

 

Adam-Atom

My Shapeoko Version 1 to Version 2 Conversion Adventures

whole machine Forgive this messy rant….

After obsessing over CNC machines for about 10 years, and having some misadventures from time to time designing my own hardware and software, I jumped at the chance to order the original Shapeoko CNC mill mechanical kit as soon as it came out. It took me a year to find time to put it all together. After it was assembled, I connected up my old HobbyCNCPro Motor driver board to it. This driver board is for Unipolar motors, so I searched for some that would work.  I found these NEMA 17s from pololu <<LINK>>

 

On a previous attempt at making a CNC machine, I used Mach 3, but this time I went with LinuxCNC.  The main reason I wanted the machine was to mill PCBs. The workflow was EaglecAD–>pcb-Gcode–>autoleveller–>linuxCNC.<<LINK>>  I made a few really horrible PCBs with the machine before realizing it simply wasn’t the tool for the job. The gantry had way too much play.  The eShapeoko community was constantly updating and improving on the designs, so I waited it out until the V2 came out before the obsession hit me again when I saw how they doubled the gantry slides to improve strength.

 

After a year of V2 being on the market, I searched forums for a conversion pack but none was to be found. So I spent a while trying to define the differences between the machines. In the end, I spent probably just as much as buying a whole new mechanical kit, but here’s my process.

First, instead of buying all new motor mount plates, I only bought 2.  I then modified a couple of my plates from my original machine.  IN the image below, you can see the original plate on the right, the new plate on the left, and the modified one in the middle. I basically just had someone with a drill press line up the new plate with the old and drill out a two holes at the top that could attach the 70mm machine screws through to make the carriage assembly (pictured further down.)

plates1

The V1 Y rails became my new gantry, leaving me with something like 375mm in that dimension. After I mounted the carriage assembly, I saw that the Z axis had no holes to mount to.  To remedy this, I simply used the V1 Z plate as an interface between the new Z axis and the carriage.  In the image below, you can see the bolts I had to extend with short nylon spacers so they could mount the old Z plate and line up with the original eccentric nut circled in green while the four 70mm long spacer screws are circled in blue. (I had to buy 4 70mm M5 bolts on amazon as inventabes doesn’t sell them for some reason).

plates2

Zplate

Below you can see the spacers and everything inside the carriage assembly. This is a “bottom-up” view after the Z axis has been mounted.

Carriage1

I was able to use the belt and the belt standoffs from my V1 on the gantry with no problem, but the lower profile of the new motor mount plates that became my new Y axis required the belt to be clipped to the slide itself.  Instead of buying them, I just laid my V1 standoffs for the belt flat and mounted them that way. This reduced cutting area, but the first thing I will cut will be smaller belt clips.

I ordered a 1000mm piece of Makerslide and cut it directly in half, leaving me with about 500mm rails.  I mounted these up with new end mount plates and some 80 X 20 aluminum.  I was disappointed to see that I couldn’t use readily available half-inch MDF as spoilboard on top of the extrusion, so I just mounted the entire machine on a 500mm X 500mm piece of half-inch MDF.  This gives me a bit more Z depth.

I was not very excited when I saw that my cutting area is less now than it was with the V1. I’m contemplating ordering more makerslide if I need to in the future.

Another change I made was to get a unipolar stepper with the shaft sticking out of the back for my z axis, and used a 3d printer to print a thumbwheel to attach to it. Now I don’t have to struggle to adjust the Z axis by hand anymore. I hadn’t used this company before, but <<LINK HERE>  stepper world?  was cheap, shipped fast and packaged everything great. The only problem I found with the datasheet they included is that they had labeled the brown wire “BLW”  for some reason.

 

If I can find another NEMA23 aound the house, I will replace my Y axis motors with NEMA23s for added power.

 

I’m also hacking on the electronics. I added the 4th axis motor driver to the HobbyCNC Pro board and would like to use it to drive a 3d printer extruder. Since the HobbyCNC Pro board interfaces with a parallel port, it isn’t very practical for my laptop, so I decided to slap an arduino on there running GRBL to simplify the entire process. After seeing a demonstration of chillipeppr for GRBL, I’m thinking of using that.  I kind of dig the browser-based tools available for controlling the machine for their simplicity.I don’t wanna use my PhD to make PCBs I just want to click a button and be done with it. It shouldn’t be such a pill to make things on the CNC. For using GRBL with 4 axes, I’m looking at using the spindle speed control as my extruder, or using a slave ATmega328, or even just getting the timing set for strapping my 3doodler onto the thing.  The interfacing of the driver and the arduino should be pretty straightforward, I just need to wire X direction on one to X direction on the other, etc. for the most part.

My tool tip wobbles as the Z goes up and down, which sounds to me like I have a bent leadscrew somehow. I’ not sure about this and will have to hack on it later.

Anyway, that’s my progress so far. Any more info and I’ll post it when I get the chance.

 

Adam-Atom

Zooming in on LabVIEW (and fixing Windows Magnifier)

My students keep complaining about not being able to see the connections and icons in LabVIEW.  I decided to write a post with some solutions to this.

  • Using Window’s Built-in magnifier:  Windows 7 and up has a built in magnifier installed.  Simply hit the start button and type “Magnifier” and run it.  By default, mine was in “Docked” mode and I couldn’t get it out of that mode which basically made the program useless.  I found a tweak to the registry to fix it  at this site  but it did not work with my version of windows. I decided to write a short fix for it.
    1. My regedit was at the same path, but my options were different. Open the start menu and type” regedit”  then click “continue” or whatever at the next nag screen to actually open the registry editor.
    2. Navigate to Computer/HKEY_CURRENT_USER\Software\MicrosoftScreenMagnifier
    3. Doubleclick “Classic Doscked” and change the number from ‘1’ to ‘0’. 
    4. Open Magnifier again and you should now have a non-docked window.
    5. For fun, play with the key called “CLASSIC DOCKED POSITION” to make the dock appear to the top, left, right, bottom, etc of the screen.
  • Download a windows app called Zoom It, which has a bit more options then the built-in software.
  • For taking good screenshots of your code, you can use the LabVIEW Code Capture tool. This will be useful for student reports or webpages.

That’s it, hope this helps!

via NI forums

Adam-Atom

Backsplash Edging Tips

In June of this year we moved into a new house. It was a foreclosure and unlike our first house, we had to tackle quite a few projects to get this place back into shape.  Some of the things we’ve done so far aren’t really required, but make us feel better about the space.   One of those projects was  to put in a glass and tile back splash in the kitchen.

The color on the walls when we first moved in was actually a tinted primer and it was was on every wall.  The problem with primer is that is kind of absorbs oils and such when you touch it and there were several paces that had shiny spots from this.  Jess painted the entire downstairs in almost the same colors as our first house.  She stopped short and only did edging in the kitchen.  I should have known something was up…

One day I come home to find she’s bought a bunch of glass tile and grout. We didn’t really discuss it beforehand in depth, it was one of the many things on the list of things we eventually wanted to get to, but it wasn’t very high on the list. Neither of us had done tile before but it seemed like it might be fun and literally  cost about $250 in total so it wasn’t a hugely expensive project.

Though it took us one and a half complete days (literally like 18-20 hours of work) for the entire tiling job, I think it best to break down the task into several logical subtasks.  I learned a lot while edging the area we planned to tile. The tools required include:

edgingTools

Jess wanted to just start tiling and then use some of the extra tiles to make an edging for the back splash.  I disagreed and wanted a more finished look.  We agreed to try out some edging material and see what it looked like. The edging we got was an extruded aluminum in brushed nickle finish.  The brushed nickle has browner finish to it.  We chose this because while the other walls in the house were painted light gray, the light fixtures were a dark bronze color.  The appliances and interior doorknobs are brushed stainless steel.  The brushed nickle somehow ties all of these together.

We discussed different placements of the edging because the counter tops and upper cabinets were not placed in vertical alignment with one another. We chose in most cases to align the edging with the counter top.  I began cutting the edging for test fitting.  To cut the edging, I used a hacksaw and an aluminum miter box from a hobby shop.  This proved to be invaluable for making accurate 45-degree cuts! Always use a sharp blade and you can put the blade on the hacksaw so it will cut on either the push or the pull stroke of the saw. For this kind of precision work, I find it easiest in most cases to put the blade on so it cuts with the pull stroke.  The way to tell which direction the blade will cut, simply look at the teeth. Usually one side of every tooth is angled with a gentle slope and the other side has a harsher slope.  The harsher slope is the cutting edge.  By flipping the blade in the hacksaw, you can determine which stroke (push or pull) will be the cutting stroke. Typical saws cut on the push stroke, but some saws (especially those used for precision cuts like the Japanese pull-saw) cut on the pull stroke.

TIP: Use a miter box and insert the hacksaw blade such that it cuts on the pull stroke for more precise cuts.

sawteeth

Once the sections were cut, we placed them on the wall.  We chose to edge the entire top of the tiles where they meet with the cabinets.  When tiling, you usually have your tile starting at the bottom of the wall, then tile as high as you can until you hit the bottom of the cabinets above.  Then you cut the tiles to make them fit to the edge of the cabinets. It is usually OK to do this because people don’t usually see that last row of tiles, but in our case the tile we chose was very thin and hard to cut.  When we measured the distance form the counter top to the cabinets, we found we were off by 1/4-inch in some places.  This would make it very hard to cut the tiles lengthwise to fit.   The edging, on the other hand, has about 1/4-inch of space that you can use to make up for any gap.  So we decided to edge under the cabinets as well.

TIP: Edging material can be used to give you a tolerance of 1/4- inch so you won’t have to try to cut tiles length-wise.

We held the edging in place on the wall with tiny tack nails.  The hardest thing about edging was what to do in the corner.  We had to do a miter cut of 45 degrees, but we had to do so on the face of the edging material.  I simply turned the edging material in the miter box so I could cut the angle I needed.

 

In the picture below, you can see the two types of miter cuts. The top one is the cut on the face of the edging (This part if for the corner of the room). The bottom one is just a regular 45 degree miter cut that is used in all other places.

cornerMiterCut
This is a cut on the face of the edging.
normalMiterCut
This is the normal 45 degree miter cut
differentMiterCuts
The top is an example of a face cut, and the bottom is the regular cut.

In the spot under the microwave oven, the cabinet was off by more than 1/2-inch from the counter top.  To fix this without making it look crooked, we simply split the difference.  We angled the edging 1/4-inch to the right on the bottom (at the counter) and 1/4-inch to the left at the top (where it hit the cabinet).  This made it look good on both ends with no excess space and the edging didn’t look obviously out of the vertical.

TIP: When edging, split the difference between places that are slightly not aligned and match the counter top, not the upper cabinets for places that are largely misaligned.

misaligned
This picture is a bit of an optical illusion. The vertical piece looks crooked, but in fact when you see it with the rest of the room, it looks perfectly straight. You can see how the top of the counter and the bottom of the cabinets aren’t aligned.

There is still a lot of work to be done, but the finished edge will definitely help give this back splash a professional look.

Adam-Atom

Doctoral Dissertation or Master’s Thesis Template

I’ve already mentioned one good tool for research papers, so here’s another that might be helpful.

Most schools have a set format for their dissertations and theses. My school was the same.  They provide a manual showing what they expect your formatting to be.  Many people have trouble with this. You must make a meeting with a specific faculty member in the graduate school and she will take a ruler and measure your margins, and go over in extreme detail the spacing, numbering, etc. of your document. Many many people get rejected and I’ve even talked to people who pay lots of money for other people to format the documents for them.  They don’t provide an exact template for any specific software, but using the google machine can help you find Microsoft Word or LaTeX tempaltes.  Personally, I like LibreOffice it is completely cross-platform (works on windows, mac, and linux systems)  completely free, open source, has lots of great plugins and it lives in the world between Microsoft Windows and LaTeX. It is GUI-based (WYSIWYG, visual) like Microsoft Word, but also much more powerful like LaTeX.   I dislike LaTeX because it is incredibly buggy and you have to program your text documents.  I program other stuff all day long, I am sick of that!

Anyway, I made my own template and write up a very detailed explanation on how to use it and my best tips and tricks for modifying the basic template if you want.  I also have a chart of suggested plugins to make your papers look amazingly good and professional. Again, I used LibreOffice, so it can be used in OpenOffice as well. This is specific to my school, so be sure you double check your school’s documents to see exactly what kind of margins and page numbering they require.  (Note it is in Open document Format and though I haven’t tested it, it *might* work in other programs like Microsoft Word).

Download my template here!

Adam-Atom