Introduction: CNC Data Maps for a Kinesthetic Climate Change Exhibit
At the SWEET Lab at Portland State University, we’re building interactive exhibits to give students and lab guests a window into our field: Development Engineering. The field is focused on using engineering skills and tools to help solve problems like lack of access to clean drinking water, safe sanitation, and reliable electricity and lighting. Our own role in this space is to use Internet of Things technology to measure the impacts of health and environmental interventions. We help answer questions like, “Do people use water filters if they are distributed?”, "Can remote sensors help keep water pumps supplying clean drinking water?", and “How do we know if an environmental intervention led to reforestation?”
Climate change is a really important part of development engineering. In the areas where we work, we are already seeing the effects of rising temperatures, especially affecting water resources and agriculture. This exhibit takes data from the International Panel on Climate Change (IPCC), who used computer models to project temperature change and sea level rise based on two possible scenarios: “Business as Usual”, or “Strong International Response.”
The exhibit uses motion sensing lights to encourage people to physically interact with 3D data. The idea is to give people a new way to see and touch information: I’m converting temperature and sea level rise maps from the International Panel on Climate Change into physical contours that can be felt. The images start as color-coded maps, and become topographical objects.
It's a different way of interacting with data: more kinesthetic, and more inclusive.
This was a big project, so I’m going to take it step by step. This Instructable is Part I: CNCing the temperature maps. It will cover:
Step 1 – Materials, Software and Overview
Step 2 - Image conversion from the IPCC’s original .pdf
Step 3 – Material Preparation and Fixturing
Steps 4 and 5 - Use of MeshCam and Fusion 360 to generate CNC toolpaths
Step 6 – Use of a Carbide3D Nomad 883 to detail and cut the 3D temperature maps
Upcoming Instructables for this project are planned as,
Part I: CNCing the temperature maps
Part II: Using Fusion 360 to design the laser-cut parts
Part III: Using an Arduino to make the lights respond to users
Part IV: Using a 3D Printer to make braille labels and tweak the lights' response
Step 1: Materials and Software
To make these parts, you’ll need these tools:
A Carbide 3D Nomad 883 or similar 3-axis CNC mill.
A 1/8” ball endmill and a 1/16” ball endmill.
One 8” x 8” machinable plastic sheet per map. I used 0.265” colored Delrin.
Bolts to clamp the workpiece down. For a Nomad 883, use four M6 machine screws.
A waste board beneath the workpiece to protect your mill’s table.
And you’ll need this software:
Inkscape. Free, open-source vector graphics software.
MeshCAM. License included with Nomad 883.
Autodesk Fusion 360. Lots of licensing options, free for students!
Part I Overview
We’ll convert a color-coded .pdf to greyscale. That will let us generate 3D toolpaths using MeshCAM. We’ll make some fixturing holes in the workpiece, and clamp it to the CNC table. Then we’ll use MeshCAM to convert the image to a 3D toolpath, and Fusion 360 to cut some mounting holes and outline contours.
Step 2: Image Conversion Overview
We’ll be converting an image into greyscale, so that the CAM software can transform different shades into 3D surfaces. Note that this process isn’t only useful for this particular type of image. Other machines do something similar. Here’s a topographical map of Oregon some friends and I made using basically the same process on a 500W laser cutter, set to “raster.” This means that the laser was adjusting the power of the beam based on how light or how dark the pixels of the image were. Most lasers are capable of rastering, so this is really a useful thing to know how to do.
To solidify how this works, take a look at the example image. If we feed the image on the left into MeshCAM, the software interprets different levels of grey as different heights, resulting in the 3D model on the right.
Step 3: Image Conversion: Starting With a .pdf
We’re in luck, because the IPCC offers these images in .pdf form. This isn’t just an image, which we would have to turn into vector art – it’s already a set of vectors! So we’ll just directly import this page of the .pdf into Inkscape. Then, we’ll clean up everything we don’t want – like all those pesky grey dots – and cut out the parts of the temperature scale that don’t show up on this map. The result is the stripped-down temperature map that just contains color-coded segments and some continent outlines.
This cleanup process probably took around an hour, because I was also grouping shapes into Layers. You can see these on the right side of the screenshot. This isn’t a tutorial about how to use Inkscape or Illustrator, but take it from me: you want to learn to use layers! In my case, I can easily switch between two of the climate scenarios I’ll be CNCing just by turning two layers on and off.
Note: If we hadn't started with a .pdf, we could have converted an image into vector objects manually using Inkscape. You can make this project work with pretty much any image, but it will be more difficult if the image is more complex.
Step 4: Image Conversion: Preparing Greyscale RGB Values
Now, we’re ready to convert into greyscale. But first we need to plan ahead about how dark each color will be on the final map.
Here’s what I did: I took the number of colors that need to be scaled to greyscale – in this case, there are 11 bars. In RGB colors, you’ll get some shade of grey if you set all three colors to the same value. We want 11 linear steps between (0, 0, 0) and (255, 255, 255) to scale between very dark grey and white.
I used an Excel sheet to do prepare these numbers using simple formulas, and also added a macro that lets me fill in a cell’s color based on those formulas as a double-check.
I've also attached the tool in case anyone would find it useful.
Step 5: Image Conversion: Selecting All Objects of One Color
Now, we need to replace the colors, one by one. We’ll do this by selecting any parts that
match the color in the original scale, and converting their colors in a batch. Inkscape has a feature where you can right-click on an object, select “Select Same > Fill Color” – but I found that this doesn’t work, at least for this part. So we’ll have to go under the hood.
Every object in Inkscape has properties, including a code that defines what color it is. We’ll find the code the corresponds to the color of one of the bars, and then use a search function to select any other objects that have that same color. I’ll start with the second-darkest color, and select every object that has the same color. To get the screen shown below, select the color bar, then select “Edit > XML Editor…”. The value I have circled in red is what you’re looking for: the XML color. Copy it so you can paste it later.
Now, we’ll select anything in this document that has the
same color. Press “Ctrl + F” to open the Find/Replace panel. Then expand “Options” and tell the search dialog that you are looking for Properties, specifically in Style. Press “Find”, and they will all be selected.
Step 6: Image Conversion: First Grey Application
According to the Gradient Generator, this color should be defined in RGB as (46, 46, 46). With the objects highlighted, select “Object > Fill and Stroke…” and enter these colors. You should see both the color bar and the object(s) change to that shade of grey.
Step 7: Image Conversion: Other Grey Shades
Now, just repeat this process with all the other colors on the color bar! You’ll end up with this.
Save the file as a .png or .jpeg, and you’re ready to export it to your CNC or laser cutter software!
Step 8: Material Preparation: Drilling the Holes
For each map, we’ll be cutting all of the 3D map features and then carving out the outside and putting in mounting holes. We’ll use a simple form of clamping, where four corners of the workpiece will be clamped down. You should only clamp a workpiece this way if you’re never planning on putting a lot of stress on it with the cutter. We’ll be taking very small cuts the whole time, and the material will always have some remaining internal stability, so this fixture should work just fine.
Start by drilling 4 mounting holes at the corners. I find the easiest way to do this is to laser-cut a drill template and use it to guide a center-punch, which then let you drill the holes by hand. Alternatively, you could use a straight-edge and a sharpie to mark out hole locations, and then drill by hand.
To select the drill bit you need for your bolts, use a chart like this one. In my case, I'm drilling M6 fixturing holes, so I'll drill a 6.6mm clearance hole.
Use safety glasses when you're using a hand drill!
Step 9: Material Preparation: Deburring
In machining, it's hard to overstate the importance of deburring your parts and your workpieces.
If there are any little pieces of material under your workpiece when you clamp it down, it won't be flat against the plane of the table, and everything will be at an angle!
Step 10: Fixturing: Bolt the Workpiece Down
As you bolt a plate down to the table, you should use your other hand to put pressure in the center of the workpiece to make sure it ends up as flat as possible. Tighten all the bolts most of the way down, then finish them in a kitty-corner pattern.
Where and how you place your fixturing holes is going to depend on your machine. If you're lucky enough to be using a Nomad 883, you can pull the hole locations off of the Fusion 360 file I've attached here.
Another reminder: This type of material clamping doesn't provide much support to the material. It will only work for jobs where you are taking small cuts, and never putting lots of force on the workpiece. And as your material gets thinner, it will start to flex up towards the cutter, throwing your tolerances off. This is a special case!
Step 11: CAM Toolpaths: Introduction
I’ll be using MeshCAM to convert the greyscale image into a 3D contour map and generate toolpaths, but note that this can be done in other ways. For example, this guide (https://www.instructables.com/id/How-to-Get-Started-With-CNC/) shows an alternate method where a Fusion 360 script is used to generate the topography. I like MeshCAM because it’s very easy to use, and comes packaged with nicely optimized path options for the Nomad – but it would be great to do both of these CAM processes in Fusion 360, so consider giving that a try.
I’m going to open the .png file we made in Step 4 using MeshCAM, and I’m going to tell it what settings to use for the stock material. I want to cut 8.25in in X, 6.00in in Y, and 0.2in in Z.
Step 12: CAM Toolpaths: Smoothing the Contour Map
Because I put dark outlines around all the continents, the program projects jagged ridges there. I’ll use MeshCAM’s smoothing function to, well, smooth the model out. I select “Smooth Relief” and set smoothness level to 50. Before and after smoothing are shown below.
Step 13: CAM Toolpaths: Setting the Machine Origin
But the origin is in the wrong place. I want the CAM path to be produced relative the center of my material, and I want the origin to be directly at the top of my stock material so it’s easy to prepare the CNC. First, I choose “Define Stock” and input the values shown on the left. Then, I choose “Program Zero” and select the top middle of the stock.
Later, we'll physically move the tip the cutter to that origin and tell the CNC machine to treat that as its origin.
Step 14: CAM Toolpaths: Speeds, Feedrates, and Toolpath Types
Now I can generate the toolpath. This isn’t the right Instructable to spend a lot of time on machining fundamentals – it takes a lot of practice to really get those down. But if you’re using a Nomad 883 or a similar desktop 3-axis mill, these settings should work well for you.
Ball endmills are the right choice for detailed contours like these ones.
We’re using a 1/8” ball endmill for a roughing pass, and then cleaning everything up with a more precise 1/16” ball endmill.
We’re taking very small cuts, but moving at a high feedrate. The final program takes between 3 and 5 hours to cut away the contours with these settings.
Step 15: CAM Toolpaths: MeshCAM Program Output
When you're happy with your toolpath settings, press "OK". MeshCAM will generate the toolpaths, which will probably take some time.
You should then be able to see the toolpaths drawn out over your model. Check and uncheck different toolpaths so that you know what to expect when you run the program. You should be familiar enough with these paths that it will be immediately obvious if your CNC starts to do something unexpected.
Now, press "Save Toolpath" and save to a USB drive. I would name the file something like "Pr1_MeshCAM_Map.nc".
Note: MeshCAM has the ability to automatically apply Nomad 883 settings to a toolpath if you don't want to do it manually. You can get to this through "Tools > Carbide Auto Toolpath". Make sure to check the box next to "Review toolpath settings" so you can double-check all the inputs before running the program.
Step 16: CAM Toolpaths: Interfacing Fusion 360 and Inkscape
MeshCAM is great for these sorts of topographical jobs, but we want more precision when we cut these parts out, so we’ll use Fusion 360 to add mounting holes and cut the perimeter of the part. Here’s a screenshot of the text that will be laser-cut on the exhibit, along with the outlines of the 3D maps that we need to cut out following the CNC run.
In Part II of this Instructables series, I’ll talk about how I used Fusion 360 and some test cuts to generate all those red cut lines to let me press-fit structural components into the display. For now, just know that the red lines are cut holes, where the blue lines are engraved. The green outline is what we want the outline of our map to look like when we affix it to the exhibit, along with 4 mounting holes.
First, I made a Fusion 360 model of what I want the outline to look like. Then I made another component as the waste board, shown in orange. We’ll use Fusion’s CAM environment to punch 4 mounting holes, then cut the top and bottom lines of the display. Then we’ll punch 4 holes in the waste board and use them to mount the main display, cutting a contour line along its bottom edge.
Step 17: Fusion CAM: Setting Up the Stock
Fusion 360's CAM environment starts with creating a "Setup". A Setup is a unique set of workpiece material, fixtures, and toolpaths. Start by creating a new Setup, using the settings I've shown in these screenshots.
I didn't include my fixtures because I'm very comfortable with how my CNC acts, but if you're worried about crashing into those bolts, you can add them as modeled bodies in Fusion 360, and include them in simulations to make sure nothing terrible happens to your machine!
So we're telling Fusion that we have stock that is 8.5 by 8.5 inches, and 0.25 inches tall. We're placing the origin just where we placed it in the MeshCAM software: in the top center of the workpiece. This means we won't need to re-zero the machine to cut these holes and the outline.
I have annotated the image of the settings to help those who are new to CAM, or who are looking to learn new features.
Step 18: Fusion CAM: Drilling the Holes
Did you know you can drill holes with an endmill? You can!
...But not always! You need to look at the tip of the endmill to see if the blades stop near the center, or if they form one long blade.
Using an endmill to drill into material, instead of cutting it from the side, is called "plunging". You'll need to plunge more slowly than you cut. I've heard machinists say everything from 1/2 to 1/5 of your cutting speed when you plunge. I tend to take the cautious side, and usually plunge at about 1/4 of the surface speed I cut at.
I punched four mounting holes just using the 1/8" ball endmill I already had around.
To set this up in Fusion, make a Drilling toolpath by pressing the big "DRILLING" button. Select your four mounting holes. Choose "Tool", and find Fusion's built-in 1/8" ball end mill. But don't ever trust CAM software to set up your feeds and speeds for you! Do it manually, or use my settings here if you have a similar machine, cutter, and material.
Step 19: Fusion CAM: Cutting the Contour
Now we'll use the same cutter, the 1/8" ball endmill, to mostly cut our part out. We'll leave some tabs in place so that the workpiece doesn't fly off the table, and we'll clip them off later.
Remember what I said (a few times) earlier: we're okay clamping our part this way because we're not going to put a lot of stress on it, and make it deflect. So we'll be taking very small cuts as we go around the perimeter.
Start a Contour by choosing the big button "2D > 2D CONTOUR". A contour in CAM-speak is a single line that you want to cut around, or through. When you select the bottom line of the outline you want to cut, Fusion should chain it all together automatically, as shown in the screenshot.
The tool, feed, speed, heights, pass settings, etc. shown in this screenshot worked well for these edges.
Step 20: Fusion CAM: Simulating the Toolpaths
Fusion, like many professional CAM programs, lets you simulate your toolpath so you know exactly what the tool will do and can predict any unexpected behaviors or results. You should always, always simulate your toolpath before bringing the G-code over to the machine and running it.
To simulate the drilling and contour toolpaths, select your Setup, which will select both of the toolpaths and run one after the other. Right-click, and choose "Simulate." The first thing you should do is check the box next to "Stop on collision", and if I were you, I'd also change the Material to something that's a little easier on the eyes. Then, press play and watch the magic unfold.
Note that a simulation won't necessarily tell you if your program will succeed: for example, it won't give you a warning if your feed rate is way too high, or you're asking the machine to do cuts that are too deep for the material.
Here's another note about simulation: there are programs out there that will simulate your G-code even if the software you used to generate it doesn't support that feature. For example, I've used CutViewer Mill to simulate MeshCAM tool-paths with a good amount of success.
Step 21: Fusion CAM: Outputing Two Fusion 360 CAM Programs
We'll call the original MeshCAM program Program 1.
Program 2 will drill the mounting holes in the map. These holes will later be used to mount the map in the exhibit, but right now they're serving a second purpose: we'll mount the map to the wasteboard material behind it so that we can cut out the outline.
Program 3 will do the final perimeter cut once the map has been mounted to the wasteboard.
To output these programs from Fusion, we'll select just the parts of the program we want in each case.
Right click on the drilling toolpath. Select "Post Process." Change the "Post Configuration" dropdown option to "Generic Carbide 3D", shown in the screenshot. Then press "Post" and save the .nc file to a USB drive. Make sure to name your CAM programs very specifically: I would call this, "Pr2_MountingHoleProgram".
Then repeat this process with the outline cut program. I would call this other one, "Pr3_OutlineCut".
Your programs are now ready to run, once the machine has been set up.
Step 22: CNC Mill: Zeroing to the Workpiece (X and Y)
Now we need to tell the mill where the center and top of the workpiece is.
You need the origin that was set in the CAM software to exactly match the origin that is set on your CNC machine.
Most desktop CNCs should let you send the cutter to the center of the table, which in our case is also the center of our workpiece. Then, there will be some way to select "Zero X" and "Zero Y". Check with your Digital Read Out (DRO) that moving away from and back to that center point brings you back to zero in both X and Y.
On a Nomad 883, here are the steps:
(1) Open Carbide Create. Select "Jog." Let the machine measure the tool's length.
(2) Go to "Rapid Position." Select the center of the table as shown in the screenshot. The cutter will move rapidly to the center of the table.
(3) Press "Done", then select "Set Zero". Zero both the X and the Y.
Step 23: CNC Mill: Zeroing to the Workpiece (Z)
This method is pretty simple: Keep the X and Y locations from the previous step, and start bringing the endmill down towards your workpiece. As you get closer, decrease the step size. Hold a piece of paper beneath the tip of the endmill.
I like to move the piece of paper back and forth as I very slowly close the gap. Once the paper can no longer move without being cut by the endmill, you are roughly 5/1000 of an inch from the top of the workpiece.
Once again, select "Set Zero", and zero the Z value. Check your programs to make sure this origin matches up with the way you set up the software.
This method will give us pretty precise results, but if you really want perfect precision you'll have to take a little more time and use some more advanced methods. This method should get you within 5/1000 of an inch to the top of your workpiece, which is plenty accurate enough for an artistic product like this one.
Step 24: CNC Mill: Running the Program
The Nomad 883 has the ability to automatically measure the tool length of each tool, so we only need to zero it once. Now, run the program by selecting "Load," finding your .nc file, and pressing "Run."
Your first cut should take only a very small amount of material off the top of the workpiece. Pause your program to make sure it lines up with what you expect from MeshCAM.
You'll need to do one tool change during the run. If you're using a Nomad, there is no need to re-zero. If you're using a different desktop mill, you will probably need to re-zero your Z measurement with the smaller finishing cutter.
After a few hours, you should have a 3D topographical temperature map!
But we still need to cut the map's outline with the toolpaths from Fusion 360.
Step 25: CNC Mill: Running the Outline
First, drill the mounting holes by running Program 2.
Then, use four self-tapping screws the mount the map to the wasteboard. Don't use normal screws, because they can't remove material as they are screwed in!
Once the center map is secure with these four screws, run Program 3 to cut the map out.
Step 26: Part II Upcoming: Using Fusion to Design the Laser-Cut Exhibit
Part II will talk about how I used Fusion 360 and Inskcape to set this exhibit up for strong press-fits between ABS and wood parts. These skills are useful for all kinds of parts, from prototypes to final products.
I'll talk a lot about using user parameters to make your design future-proof, and let you experiment with different materials to get the look and feel you like.
Step 27: The Final Product
Here are a couple pictures of the current version of this exhibit, with one 3D map removed to show the engraving used to place it. The lighting system is fully active, and responds to human movement, fading in and out based on whether people are approaching or interacting with the heat and sea level maps.
Stay tuned for Fusion 360, Laser cutter, and Arduino lighting and sensor guides for this project!
Still to come for this exhibit: 3D-printed braille surfaces to make the data more inclusive and accessible, and 3D-printed lens covers to give more control over the sensitivity of the PIR sensors.