V carve inlays with Carbide Create v6

Carbide Create v7 has a v carve inlay toolpath feature added. But I don’t want to pay for v7 as I run my own home-grown CNC. Also Carbide dropped GCode output from v7 so… v6 it is…

So after much trial and error I’ve worked out how to get v6 to generate gcode for V Carve inlays.

Design Preparation

Clean up the vector nodes

Some fonts have overlapping sections. These need to be removed.

Select the text, go to the text tool and ‘Convert to Curves’

Then, with the text still selected perform a boolean union

NOTE: You can no longer edit the text – it is now just nodes and curves in Carbide

V Carving with Area Pocket Tool

The blue dotted lines represent the edges defined by the vectors. Multiple passes of the pocket and V bit may be necessary to clean out material to the desired depth.

For this example I am choosing a depth of 4mm

There is not always room to get the pocket bit in first. Where this happens Carbide Create will use the V bit which is less efficient and may need some manual clean up of wood fibres that hang on.

Left: Material removed by an end mill ; Right: V bit used to remove material. Note that the bottom of the V bit is not the same as the cut vector. Carbide calculates the offset based on depth of cut and the angle of the V bit.

Key to cutting plugs is the use of ‘Start Depth’ to get Carbide to cut beyond the vector line.

Machining the Socket (pocket?)

Use the ‘Advanced V Carve’ toolpath at the desired depth and ‘Enable Area Pocket Tool’

Don’t worry too much about how much of the cut is being done by the V Bit. Changing to a smaller pocket tool is better at getting into the corners but doesn’t yield much of a time saving as the bit runs more passes or runs slower. As the bottom of the socket is never seen I prefer a larger cutter that is less likely to break and pick out the fluff manually. 23 minutes for a 1/8″ end mill vs 21 minutes for 1/16″ end mill.

Machining the Plug

Copy the EXACT vectors used for the Socket

INVERT / FLIP THEM – Very important and easily forgotten

Create a 10mm offset vector around the inlay. You can go smaller but I like to cut my plug out on a bandsaw and a little extra wiggle room helps.

Delete unwanted vectors from the offset vector creation. They’ll stop the socket fitting properly

Machining the plug will require multiple passes. Select both the inlay vector & offset vector for each pass. We need to use the ‘Start Depth’ feature in order for Carbide to over-cut the vector lines so that the plug fits the socket. Going straight to the final pass will result in a very aggressive cut, probably chip out and a poor surface cut.

Plug shown in brown – this is what we want

A small gap at the bottom – space for any excess of glue and a little tolerance to ensure the plug can be pushed firmly into the socket without interference. Try 0.5mm

A larger gap at the top – again so there’s nothing getting in the way of pushing the plug home. Also space to cut off the excess material by hand or bandsaw should you choose not to cut it away on the CNC. Try 2mm

First Pass

Start Depth 0mm ; Cut depth 1.75mm – See middle step why 1.75mm is chosen

You will notice the V carve top edge is aligned to the vector lines in blue. If we cut full depth using only the first pass we will end up with a plug like this. Keep hammering I’m sure it’ll go

So… end of first pass looks like this. The green line is where we want to get to.

Middle Passes

Each pass uses the previous pass Max Depth as its ‘Start Depth’

Start Depth 1.75mm ; Cut depth 3.5mm

I’ve chosen 1.75 as the first cut so for the middle pass the depth can be 3.5mm – remember that small glue gap of 0.5mm? That is set by the final middle pass.

NOTE: For a 4mm socket only one middle pass is needed. Deeper sockets may require more than one middle pass. Just remember that the depth of the final middle pass should be your socket depth minus the glue gap.

Middle pass should look like below. Note the effect of the changing the Start Depth. The V bit is now beginning to cut beyond the vectors lines in blue.

Final Pass

As before Start Depth 3.5mm ; Cut depth 5.5mm

Adding an extra 2mm for the top clearance and we finally get our plug machined as below

All in one file (.c2d)

Using layers for the design and a toolpath group for sockets & plug allows for a single carbide file. Worth looking into but I’m not describing that here.

Enable/Disable visibility and groups works quite well. But a separate socket & plug file are also an option.

GCode

I use the GRBL or Basic GCode post processor for my home-made machine. I have no fancy tool changer – that’s all manual.

So, for me, the Carbide GCode is a real pain requiring multiple bit changes. So I developed a Tool Consolidator utility to parse the Carbide GCode and split it into separate files. One for each tool. It’s pretty simple – it looks for the M0 ;Txxx commands. Of course there’s some risk of aggressive cuts breaking bits etc as the cutting paths are essentially run out of sequence. No liability accepted – use at your own risk.

This is especially helpful for the multi-pass plugs. I run all the end mill operations first, then V bit.

I don’t think I have a virus but be sure to scan the files BEFORE running the exe.

How to use the consolidator. Firstly unzip the files – put them somewhere you’ll find them.

Then right click on a gcode file (.gcode or .nc) and click ‘Open With..’. Pick ‘Choose an app on your pc’ and select the ToolConsolidator.exe in the folder you unzipped to.

Windows remembers the exe after you’ve done it once. Go to open with and you’ll see the tool consolidator listed.

Once run the Tool Consolidator will create a new folder named the same as the source GCode file and write separate files for each tool used.

Txxx is the tool number and _1, _2 is the order that the tools appear in the source GCode.

Tool numbers can be seen in Carbide Create – make sure to load the right file for the tool in your machine

3D Printing Tool Chain

Step 1: Create or download model

Create Model

Use software such as Fusion 360 or TinkerCAD to create your 3D model. The software will usually save the model in its own format. When you’re ready to print you’ll need to export it as .STL so your model can be sliced into layers to be printed.

Download Model

Models can be downloaded from Thingyverse and many other online respositories. Other file formats can be used but the standard is .STL

Step 2: Slice model

Again, lots of software out there… I recommend Cura but also found Slic3r very capable.

The slicer software has settings to allow you to specify nozzle size, temperature, bed temperature layer height, brim, wall thicknesses……… and a few hundred other settings.

Cura has default settings for lots of printer models. You will need to tweak the settings though based upon what you’re printing, in what material, in what quality.

So the slicer takes the input file (.STL) and processes it based on a few hundred setting to the output file (.GCODE). The GCODE file contains instructions that your printer should follow, it is this file that you send to the printer

Step 3: Print Model

Print from SD/TF card

Simplest way to print on the Ender 3 V2 is by writing the GCODE file to a TF card, insert card, select print, find the GCODE file and wait…..

Print over USB

It is also possible to print directly from your computer over USB, for this I use Pronterface. If you choose to do this remember to turn off power saving on the PC (sleep mode, screen savers etc) and preferably windows update.

With this method the GCODE is buffered & streamed live to the printer. If the PC stops or stutters your print will be affected. This will often cause the printer to pause / stutter usually resulting in a blob of filament just where you don’t want it.

Also recommended not to use the PC while printing as some processes take enough time to interrupt the transfer of GCODE.

Update Ender 3 V2 Firmware

See tail end of Compiling Marlin for Ender 3 V2 and copy the Firmware_########.bin created after compiling Marlin to your TF card. But first reformat the card (not always necessary, but if the update fails, reformat for sure then try another TF card if it fails again. Update can be finicky). If you choose not to reformat be sure to remove any old firmware .bin files.

‘Safely’ remove your TF card (don’t just take it out, files get corrupted that way).

With your printer turned OFF insert the TF card.

Switch printer ON, it’ll take a little longer to boot up as it will be updating your firmware. If all goes well you have updated your firmware – Congratulations.

NOTE: If you rename the firmware before putting on your flash card be sure to name it something different each time else the printer will ignore it.

Configuring Marlin for Ender 3 V2

BL Touch Configuration

If you haven’t already set up Visual Studio Code or something to compile the Marlin firmware see these instruction Compiling Marlin for Ender 3 V2

Configuration.h

NOTE: The original Creality firmware allowed the z-offset adjustment to move the Z axis while the printer was idle. These settings don’t allow this – not sure why yet.

// BL Touch with 5 pin header

//#define Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN

#define USE_PROBE_FOR_Z_HOMING

#define BLTOUCH

// you probably want to pick your own values (X, Y, Z)
// if you know your z offset you can enter it into Z, otherwise set once the firmware is installed
#define NOZZLE_TO_PROBE_OFFSET { -44, -6, 0 }

// Changing printer movement speeds
// Slower takes long but is ultimately more accurate
#define XY_PROBE_SPEED (100*60)
// Homing speeds (mm/min)
#define HOMING_FEEDRATE_XY (50*60)
#define HOMING_FEEDRATE_Z (8*60)

// set method used to evaluate Z axis height
#define AUTO_BED_LEVELING_BILINEAR

#define Z_SAFE_HOMING
#if ENABLED(Z_SAFE_HOMING)
// sets homing XY position to near the middle of the bed
#define Z_SAFE_HOMING_X_POINT ((X_BED_SIZE - 10) / 2) // X point for Z homing
#define Z_SAFE_HOMING_Y_POINT ((Y_BED_SIZE - 10) / 2) // Y point for Z homing
#endif

#define NOZZLE_PARK_FEATURE

Configuration_adv.h

#define BABYSTEPPING

// The BL Touch 3.1 may or may not be 5V compatible.  My printer suppliers suggested using this setting instead of BLTOUCH_SET_5V_MODE
#define BLTOUCH_FORCE_SW_MODE

Z Axis Quick Stop Button

I mounted the original Z Axis switch on the base facing forward. This config change results in the switch activating the KILL mode.

After pressing the switch the printer stops (seems to leave fans running which is good). The stepper motors, nozzle heating and bed all switch off. Turn off the printer to reset back to normal – but leave it a while first to allow the nozzle to cool else you’ll find the heat travel up into the purposely cooled filament guide and this could cause a problem.

This saves me scrabbling to get to the power switch at the back which would stop the fans (not ideal) or frantically navigating menus to stop a rogue print.

Configuration.h

//#define Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN

// add these lines under the commented line above
// Use original Z input as a KILL switch
// The actual pin needed will vary between controller boards.  
// Find the pin currently assigned to Z_STOP_PIN in the config that relates to your printer look in Marlin\src\pins\.......
#define KILL_PIN PA7
#define KILL_PIN_STATE HIGH

Configuration_adv.h

No change

Compiling Marlin for Ender 3 V2

Why?

Presently Creality release only a few pre-compiled firmware versions. If your Ender 3 V2 upgrade is supported by firmware provided by Creality then use theirs – it is easier.

If you update your printer to something not supported you will need to compile your own firmware or find one somebody has already done.

I wanted to install a BL Touch. This replaces the z-axis switch so I decided to re-purpose this switch as a quick stop button.

If you have already set up Visual Studio Code & Marlin and successfully compiled see Configuring Marlin for Ender 3 V2

How to compile

You’ll need software to compile the source code. For this use Visual Studio Code from Microsoft.

I found Visual Studio Code very difficult to use. It is not intuitive as it is crammed full of features and options. Luckily after the initial set up it is mostly just used as a text editor.

Downloading Marlin

Current version is 2.0.7.2 and available from GitHub

Marlin comes in two parts: The Marlin source code itself and another set of Config files.

The Marlin zip contains source code with tons of features to drive pretty much any printer

The Config zip contains specific configuration files for loads of different printers. These config files map processor pins to functions and enable/disable appropriate features that the printers controller board support. The default config for any given printer should enable support for a vanilla printer (one not modified yet).

Setting up Visual Studio Code for Marlin

Install Visual Studio Code (VSC). Simply download from Microsoft and accept all the default installation options.

Install PlatformIO Extension

PlatformIO is an extension inside VSC. Go to VIEW => EXTENSIONS in VSC

Prepare Marlin

Create a folder in a location of your choice named something like Marlin 2.0.7.2

Unzip the content of the Marlin source code to the above folder

Should look something like this:-

I dropped the two Marlin files in here to keep them all together

Add printer configuration

Now locate the base configuration for your printer. In the example above these are in the Configurations-release-2.0.7.2.zip (the second file you downloaded earlier)

Navigate into this zip, all the printer configs can be found in here. Follow the path config -> examples

Printers are ordered by Manufacturer/Type then Model

When your printer folder is located copy all the files in the folder and paste them into the Marlin folder found in your working folder (NOTE: This is the folder called Marlin inside your working folder – not the working folder itself). The paste operation should replace the default Configuration.h and Configuration_adv.h files among others.

Adding Marlin to CSV

With PlatformIO and your Marlin folder prepared you’re ready to create a workspace in VSC – Fancy talk for pointing VSC to the Marlin working files.

In VSC select FILE => OPEN FOLDER

Open the Marlin 2.0.7.2 folder you created earlier. Should see something like this:-

I occasionally lost this view of the file system. Go to VIEW => EXPLORER to get it back.

Edit platformio.ini

Shown highlighted above, this file needs to be edited so that PlatformIO knows what kind of processor your printer uses.

Settings shown are for the Ender 3 V2 with the 4.2.2 Controller Board

Ender 3 V2 Settings highlighted

Compiling Marlin

VSC should be ready to compile. Give it a go by clicking the tiny tick at the bottom of the screen.

Tiny tick highlighted starts the compiling process

With luck the firmware will compile. If not check the errors and google a solution.

Where is the firmware?

VSC writes the firmware file to .pio / build / yourprocessortype /

Each time you compile another firmware.bin is created

That’s the default firmware compiled for your printer. Editing the Configuration.h and Configuration_adv.h files custom firmware can be created.