Entry for September 2018's Guitar Of The Month is open!
Search the Community
Showing results for tags 'milling'.
Found 6 results
curtisa posted an article in Workshop and ToolsAs regular readers here at ProjectGuitar.com you will have followed the first two parts of this series of write-ups regarding the machining of fret slots on a compact CNC machine; the kind of machine typically available for less than $1000 on various online vendors. Part 1 dealt with the construction of a special jig that allows the accurate positioning of the fret board blank such that precise alignment between the two milled halves can be achieved. Part 2 covered the necessary formatting of the CAD design of a fretboard created with the FretFind2D web application, such that the milling process was safely executed without damage to the fragile endmills. In this, the third and final article we will finally use the jigs and CAD/CAM files and complete the milling of a fretboard on the CNC machine. Endmill Choice Throughout this article I will be using a 0.6mm (or 0.023") diameter endmill to cut the fret slots. The width of this cutter determines the width of the slot being cut and should match the width of the tang of the fretwire being used. In practice a 0.6mm endmill will cut a slightly wider slot by perhaps a few hundredths of a millimetre, due to eccentricity and runout in the spindle. This is advantageous to us; if the 0.6mm cutter could possibly cut a slot exactly the same width as the fret wire tang it would be very difficult to seat the frets. A little bit of leeway will actually help the frets go in easily. You will recall from Part 2 that we limited the final depth of cut to only 1.5mm. It is probably quite obvious that if the fret slot is only this shallow, after radiusing the fretboard this will not leave much depth at the sides to fit the fret wire tang. There are two reasons for limiting the depth of cut on the CNC: The process of slotting the fretboard on the CNC machine is quite slow and wear on the tiny endmills is relatively high. Effectively we are only using the CNC machine to accurately start the fret slot, While it is possible to machine the whole board to the correct depth, it is recommended that cutting the final depth of the fret slot be performed using a hand fret saw with a depth stop. The final accuracy of the slotted board should not suffer from finalising the slots with a handsaw. The low-cost CNC machines may have poor eccentricity specs for the spindle. If this becomes too severe and the fret slot being milled widens too much at the full depth the risk increases of the fret wire not being securely held in place. As ironic as it may sound, it is better that we rely on the CNC as little as possible to maximise our success in this area . Finally, it is highly recommended that you purchase decent quality cutters for this work. Cheap cutters increase the risk of breaking partway through the milling process. They will also likely dull more quickly, and leave behind slots that gradually deteriorate in quality as the work progresses. The endmills I am using are 2-flute cutters made by Kyocera, and are available in bulk packs of 5 or more from several online outlets. Higher-quality endmills with three flutes are also available for a corresponding increase in price - $25 or more for each piece. Right. Enough talking. Lets get machining. Milling the Board Assuming you have a suitable fret board blank at your disposal, use some double-sided tape to secure it to the MDF jig. Position it such that it is centred on the plate as closely as possible. Good planning will dictate that your blank will be cut oversize to allow the excess to be cut off afterwards (it is cut oversize, right?). In this example I am using a piece of Tasmanian Oak. Fit the base plate to the CNC table and tighten it securely. Install the jig with the attached fretboard such that the two holes nearest where the highest fret will be cut are located on the forward holes on the plate. Install some 1/8" pins or spare 1/8" shank cutters in all four corners so that the jig is held securely on the baseplate. Remove the lower-left pin and set it aside for a moment. Turn on the CNC machine and start up the motion control software. Fit a 0.6mm diameter endmill to the collet and home the axes to the extreme minimum limits of their motion, ie X and Y at lowest-left corner of the table and Z at maximum height. Jog the cutter head to just above the centre of the lower-left hole. The and X and Y co-ordinates at this location will form the reference point for the whole milling operation. With the cutter head positioned here touch off the X and Y axes only - do not touch of Z axis yet. Retract the cutter head back from the table and reposition it such that the tip of the endmill just touches the surface of the fret board blank. Do this carefully as you do not want to snap the endmill by accidentally driving it down into the workpiece. Only touch off the Z axis to this position, Re-install the lower-left pin in the jig and load up the first half of the G-code for the fret board job. As we have the fret board blank positioned at the lower end of the table we will be cutting frets 24 to 9 first. If you analyse the toolpath for each of the fret slots on the screen you will notice that each slotting operation is represented as a series of shallow zig-zag patterns gradually increasing in depth until the final depth of cut is achieved. These are the G-code slotting subroutines we created in Part 2. If all appears OK on the motion control software, start the spindle and begin the cutting program. Watch the axis motion and spindle behaviour carefully to see if anything untoward is happening such as excessive vibration or slipping of the fret board on the jig, and be ready to hit the emergency stop button on the mill. Assuming the feed rate is set to around 300mm per minute the first 16 fret slots will take around half an hour to complete. It is a good idea to keep a vacuum cleaner handy while the cutting progresses, as a fair amount of dust and miniature chips will be generated during cutting. Keeping the fret slots clear of chips will also help with minimising wear on the endmill. When the final slot has completed you should have something similar to below. Switch off the spindle, but do not close the motion control software or turn off the power to the CNC machine. We need the machine and software to retain its home and touch-off co-ordinates. Remove all four pins from the jig and slide the plate down such that the first 16 fret slots are overhanging the front of the table. Re-insert the pins in the four holes to re-secure the jig to the bedplate. In the motion control software load up the second half of the fret slotting job. This file should contain the slots for frets 8 to 1, plus the nut position. With this file loaded, turn the spindle on and run the code. The cutter head should advance to the beginning of the 8th fret slot and begin cutting. Again, keep a close eye on proceedings and be ready to hit the E-stop button if things appear to be going amiss. As the number of frets being cut has reduced by half the job should take around a quarter of an hour to complete. With the nut slot cut and the cutter retracted to a safe distance from the workpiece, switch off the spindle and remove the four pins. The final product is shown below: All that remains now is to gently prise off the board from the jig with a paint scraper or similar, and cut the sides to match the taper of the neck you are building. Further thoughts While we have only machined the slots into the fret board lank, there's no reason why you couldn't perform further machining tasks while the fret board is attached to the jig. All that is required is to create the associated toolpaths from the original CAD drawing, split the toolpaths at the same point that the fret slots were split and run the extra stages as further two-part tiles: Using a larger cutter (say 1/8" diameter) the perimeter of the fret board could be machined to give you the correct taper, and also cut off the extremities behind the nut and beyond the 24th fret. If the truss rod you are installing in the neck is the spoke wheel type (with the adjuster at the heel) the notch at the end of the fret board that is normally cut to provide access to the adjuster head can be easily included in the fret board outline. A nut ledge or nut slot could be cut in place of the zero fret slot that we cut in the above example. If your build included a zero fret and nut this could also be incorporated. Multi-scale fret boards can also be machined using the same technique as outlined in these articles. The fret slots are still defined as straight lines, and the slotting subroutines described in Part 2 will work without any modification. Pockets for fret board inlays can be milled in the same fashion. With a little manipulation in CAD/CAM it is also possible to machine precisely sized inlays from contrasting timber, plastics or non-ferrous metals to match these pockets. The fret board radius can be roughed in on the CNC machine, either by progressively running the cutter head in an arc around the Y-axis up the length of the fret board, or by running the cutter head in straight lines parallel to the centre of the fret board in a "staircase" pattern that approximates the radius.
curtisa posted an article in Workshop and ToolsIn the previous article on fret slotting using a compact CNC machine we explored a sectionalised approach to milling a big object in multiple stages, also known as tiling. We also went through the process of constructing a jig that allowed us to accurately position the workpiece such that the end of the first stage of the milling process would align successfully with the next. In this week's write-up we will go through the process of generating a custom template using the online FretFind2D fret board designing tool and formatting the drawing and G-code ready for the milling process, Let's assume that we're in the process of making a guitar and, for whatever reason - be it ergonomic, tonal, a request from a client or sheer curiosity - the design has called for a slightly unusual scale length of 24.6" with 24 frets, made from some eastern-Martian Grumblebum wood we have laying around. No ready-made pre-slotted fret board can be found with this scale length in the timber that we want to use, so we're stuck with having to make our own. Designing a fret board with a particular scale length in itself presents no real challenges; there are several online calculators that will automatically spit out the a table of fret spacings based on an input of scale length It's just a matter for us to transfer this table of measurements onto a blank piece of timber and start sawing away. But in our case we want more precision than simply eyeballing the cut. FretFind2D is an excellent online tool to assist with laying out a graphical representation of a fret board based on some input parameters. It also includes a DXF export function that will generate a CAD drawing file that can be (almost) directly used to generate the G-code in order to drive the CNC mill. Based on our design requirements lets enter the appropriate values into FretFind2D and make up our fret board layout: Units = Inches Scale length = 24.6" String width at Nut = 1.375" String width at bridge = 2.125" Fret board Overhang = 0.125" Calculation method = 12th root of 2 Number of strings = 6 After entering the above data click on the 'DXF - Save to Disk' button and choose a convenient name and location to save this file as. Upon opening this DXF file in a CAD application it is clear that a little formatting work will need to be done before we can start milling; Along with modelling each fret position, FretFind2D also includes the generation of the strings and bridge location, which we won't need when milling the fret slots. Spend some time deleting the unnecessary components - the strings, fret board edges and bridge position lines are not required for our work. I also like to orient the drawing such that the nut is at the top of the screen rather than at the bottom (as FretFind2D positions it in the export), If you normally work in metric units of measurement, scale the drawing up by a factor of 25.4 or allows your software to convert it. You should end up with something that looks similar to this: You will recall in the previous instalment of this series we created a CAD drawing of the fret board holding plate, including the drill hole locations for the tiling jig. We need to now open this drawing and copy it into the fret board layout. When doing so ensure that the lower-left drill hole position gets inserted at X0, Y0. When this is complete re-position the fret slots such that they roughly sit in the middle of the fret board holding plate. Absolute accuracy isn't critical, just make sure you have roughly-equal space around the fret slots: Note the position of the middle drill holes on the tiling jig relative to the fret slots. When moving the fret slots onto the tiling jig, position them vertically such that an imaginary horizontal line drawn between these two holes would fall within the gap between two frets. One limitation of the drawing generated by FretFind2D is that it models each intersection of a fret with a string as a short 'fretlet', each one overlapping the next to give the impression of a continuous line. What we really want is each fret to be a single line. Depending on the CAD package used it may be possible to select each group of 'fretlets' and perform a union operation on them. Failing this we will need to manually rebuild the fret lines. Fortunately this is a simple task of using the existing outer end points of the 'fretlets' to draw straight lines utilising object oriented snapping. It is also a good idea to place the new one-piece fret lines on a new layer to assist with being able to delete or turn off the original 'fretlets' that FretFind2D generated. In the example below I have created two new layers - one for the redrawn frets below the midpoint of the jig (green) and one for the frets above the midpoint (yellow). Now we have our fret board formatted it is time to split it into the two tiles for our jig. Select the upper 8 frets and move them down using a middle drill hole as a start point and a lower drill hole as the end point. The result should look like this: While this looks messy at the moment, each layer can be independently turned on and off to display each half of the fret board. This forms the basis of the phyical alignment of the two tiles that need to be cut on the machine to complete the full fret board. In the above image, the green slots would be milled on the fret board blank in the position as shown. At the end of this milling operation the workpiece gets shifted down and the yellow slots are then milled at the positions shown. But because the fret board blank has been moved to a new position the remaining yellow slots get milled above the relative position of the green slots, thus completing the full fret board. Turn off any remaining layers and leave the (green) layer containing the lower 16 frets visible. Perform a CAM export of this drawing with a feedrate of 300mm/min and a Z depth of -0.3mm (or 12 inches/min, Z-0.0118" if you work in imperial units). Switch off the lower-16 layer and switch on the upper-8 layer. Perform a CAM export of this display with the same values as before. You should now have two G-code files describing the geometry of each half of the fret board. It is tempting to now simply run these two G-codes and complete the fret slotting operation, and indeed you could conceivably run these G-code listings and have the slots scribed onto a timber blank right now. The limitation is that we currently are only cutting the slots to a fixed depth of 0,3mm. We want the fret slots to be deep enough to accept the tangs of our fret wire, which could be a couple of mm tall. So maybe we could increase the depth of cut when we export the G-code from CAD? The problem here is that the cutters used to mill a fret slot are only 0.6mm in diameter and extremely brittle. Attempting to move such a tiny endmill through a hard material like ebony or rosewood at the full depth is likely to immediately destroy the endmill. So perhaps we could run the entire program multiple times and bit-by-bit increase the depth of cut on each successive pass? That is an option, provided your step change in cutting depth is quite small. The risk here is that even if the cutter is plunged in only a small amount the sudden lateral jerk as the endmill begins its traverse slotting operation can again stress the cutter too much and break it. The process of copying and pasting the entire run of code many times over is also very wasteful and hard to follow if something needs debugging. What we can do is gently ramp the endmill into each cut and zig-zag our way to the bottom of the slot. That way we can break up a deep slot into smaller steps that won't overly stress the endmill, and avoid the shock of suddenly forcing the cutter to remove too much material as soon as we move sideways after plunging: Anyone who spent time at school in the computer lab may recall programming FOR-TO loops or IF-THEN-ELSE evaluations using BASIC language. G-code features similar abilities to run repetitive milling operations and allow milling parameters to change based on variables. We can use this feature to implement our zig-zag slotting operation and make the code run more efficiently. Below is the first few lines of one of the raw fret slot G-code listings for our fret board. The code dealing with the first slot has been highlighted: Each fret slot is nothing more than a horizontal line between two points - X18.297 Y50.087 and X73.22 (the second instance of Y50.087 is not required as it only needs to be defined once when describing a straight horizontal line). Initially what we want is for the endmill to run repeatedly left and right between the two points . Using pseudo-BASIC code this could look something like the following (NB, there is no literal G-Code equivalent to a GOTO loop, this is just for illustrative purposes): Each subroutine must have a unique 'O' number. When the subroutine starts the cutter moves to X18.297, Y50.087. The next line plunges the cutter into the workpiece by 0.3mm. The slot is then cut with the endmill moving to X73.22 with Y unchanged. The endmill then moves back to its starting position of X18.297. (NB, the return X co-ordinate is simply copied from the original start point of the fret slot, three lines above it). The 'GOTO LOOP' command at the end of the subroutine returns us to the start and the process is repeated. Shuttle right. Shuttle left. Repeat. But we're still not moving the Z axis any deeper than 0.3mm, so no change in slot depth is being achieved. The other bug in this program is that because the 'G0 Z2' line falls outside the O100 LOOP it never gets executed, and the cutter remains stuck at a depth of Z-0.3mm. The next trick we need the cutter to do is gradually ramp the Z-axis down on each left-to-right run to increase the depth of cut. G-code allows the use of variables to substitue for direct co-ordinates. If we assign an automatically-changing variable to the Z-axis we could increase the depth of cut gradually to perform the ramping operation: Breaking this down line by line: A variable called #1 is assigned a value of 0 and a second variable #2 is created with a value of 0.3. On the first run of the subroutine the cutter will move to X18.297, Y50.087. The cutter then gets plunged to Z=0 (the value assigned to #1 gets substituted in place of the literal Z co-ordinate). The value currently stored in variable #2 (ie, 0.3) then gets subtracted from variable #1 (ie, 0) and the result stored back into variable #1, so now variable #1 has been updated to -0.3. The cutter then moves right to X73.22, and Z uses the new value of variable #1 as its destination. This creates the downwardly-ramping cut that we're after, starting from a depth of Z0 and finishing with a depth of Z-0.3. The cutter then moves back to its starting point of X18.297, but because Z is not listed it simply moves back at the last recorded depth of Z-0.3, flattening off the top of the initial ramping cut. The routine then returns to the top and runs again. Variable #2 once more gets subtracted from variable #1 and the result stored back into #1. But because #1 was set to -0.3 from the last run of the subroutine the new result of #1 - #2 (-0.3 - 0.3) is now -0.6. So when #1 gets used for the next Z co-ordinate it will ramp from -0.3 down to -0.6. With a bit of mental gymnastics it can be seen that on each successive pass of the subroutine Z will continually ramp down in increments of 0.3mm. But we still need some way of determining when we've cut the slot deep enough. At the moment there's nothing to stop the loop running for ever and giving us infinitely-deep slots. By changing our pseudo-GOTO loop to a WHILE/ENDWHILE statement we can place a limit on how many times the subroutine runs before it stops. Here's what the new version looks like: The WHILE/ENDWHILE loop will run until the expression evaluated by the WHILE statement is determined to be false. In our case we have specified that the G-code commands contained between the WHILE/ENDWHILE statements will run until the value stored in #1 is no longer greater than -1.5 ('GT' in the WHILE statement is short for 'Greater Than'). As variable #1 is being used to control the depth of cut within the subroutine and gets 0.3 subtracted from it on every cycle, when #1 eventually becomes less than -1.5 this will trigger the subroutine to finish and jump to 'G0 Z2' which retracts the endmill out of the bottom of the cut, ready to move to the next fret slot. Further refinement of this subroutine can be performed by removing or repositioning unnecessary or duplicated steps within the WHILE/ENDWHILE loop, giving: So now the only thing left to do is step through the remainder of the G-code listing, identify the start and end points of each fret slot and apply the same subroutines to them. Remember to use a unique O-number for each new subroutine. If you get stuck performing this manual G-code manipulation, both the raw and formatted versions are available to download at the end of this article to reference against, along with the DXF files used to generate the fret board geometry used in this article. ---------- In the next and final instalment we will get down to the nitty-gritty of using the fret slotting G-code and finally machine ourselves a fret board. We will also discuss some further ideas and applications of tiling on the CNC machine relevant to guitar building. Fretboard 24_6.zip
curtisa posted an article in Workshop and ToolsIf you're a regular visitor here at ProjectGuitar.com you may have caught our four-part series on using a compact desktop CNC milling machine and its application in lutherie. In the first instalment it was mentioned that a CNC is ideal for applications where precision and flexibility is required. One of which was milling fret slots in a fretboard blank, where positioning of the fret slots is crucial to the accuracy at which the resulting instrument can intonate, particularly in the higher registers where a small error in fret placement can result in a a major error in fretted pitch, The trade-off to owning a small CNC machine (or indeed any CNC machine) is that it has a practical limit to how big a piece of material it can fit within the confines of the milling area - the X, Y and Z axes can only move so far before they eventually run into the endstops, and no further reach of the cutter head is possible. If you take a guitar fretboard for example it will comfortably fit within the limits of one axis of even the smallest CNC machines - unless you are building some kind of 17 string monster most fretboards will not exceed more than about 70mm in width. The problem is that the fretboard length is usually in the vicinity of 500mm or more. To machine such a long object on your CNC machine in one hit obviously requires an axis with a reach of at least this length. There is, however, a way of expanding the reach of an axis so that you can machine objects bigger than the physical limits of your CNC machine. By milling the object in two (or even several) stages, moving and accurately repositioning the material midway through the process, it is possible to complete a complex milling operation on an object larger than the CNC router. This operation is known as tiling, and while it presents its own set of challenges and hurdles it is not unheard of to operators of CNC machines; tiling can be often be required no matter how big your CNC machine is - if the client requests an object bigger than your machine, if you simply don't have access to a larger CNC router you'll likely resort to tiling to complete the job. Successful tiling requires that the job be accurately repositioned partway through the milling process, such that the end of the first stage of milling aligns perfectly with the beginning of the next stage. This can be achieved through the use an indexing plate affixed to the CNC bed and a series of locating holes in the workpiece that align with matching holes in the indexing plate. Conveniently for us, we can use the CNC itself to create the indexing plate and holes to minimise any milling inaccuracies that may occur when changing positions. Creating the Jig Materials List: V-cutting engraving tool 1/8" diameter stubby rivet drill 6mm MDF sheet, approx. 600 x 450 12mm MDF sheet, large enough to cover table of CNC machine M6 or 1/4" nuts and bolts (20mm length) Four spare 1/8" drill bits, cutters or other solid rod material (to use as indexing pins) Glue, clamps, pencil, straightedge Patience Most CNC machine beds are made from slotted aluminium extrusions to allow the user to freely affix the workpiece to the bed using nuts and bolts. Our indexing plate will be rigidly secured to the bed and is made from a flat, smooth, easily-machined material - MDF suits our needs admirably. Cut a piece of 12mm-thick MDF large enough to cover the entire bed of the CNC. Neatness and squareness of this piece is not super-critical at this stage. With the MDF laid on the table carefully mark the locations of two outermost channels on the bed to allow us to drill some securing holes for the indexing plate. Drill a hole in each corner that aligns with the mounting channels used on the CNC bed. Use countersunk screws or otherwise recess the heads of whatever bolts you use to secure the plate to the bed. Once the plate has been drilled to accept the mounting hardware, return to the CNC machine and fit the plate to the bed. The slots on this machine will accept an M6 nut, the channels being narrow enough to prevent the nut from turning once the bolt is tightened. Mark a starting point about 50mm in from the left edge of the CNC bed. This will form the origin of a vertical line that will be engraved parallel to the long edge of the table. By using the CNC to scribe this line we ensure that the line engraved is square to the CNC machine's motion, rather than square to the table or MDF edges. This is essential for ensuring accuracy of the jig. Fit an engraver cutter to the collet. Home and touch-off the CNC to the indexing plate at the mark that was created. Most motion control applications include a manual G-code entry mode. This is useful if you want to perform some basic milling operations where generating a comparable G-code would be unnecessary or wasteful. If using LinuxCNC for example, click the 'MDI' tab in Axis (or press F5) to display the manual entry window. By typing G-commands one line at a time we can instruct the CNC machine to perform movements on a step-by-step basis. With the CNC machine homed and touched off to the MDF sheet, switch on the spindle and type the following lines into the MDI tab, pressing <enter> after each. Alternatively copy the below text into a blank G-code file, save and run it within your motion control software: G1 Z-0.5 F300 G1 Y280 G1 Z10 The above listing will lower the cutter to a depth of 0.5mm into the surface of the MDF, engrave a 280mm straight line up the Y axis and then retract the cutter out of the MDF to a height of 10mm, where the spindle can safely be switched off again. The line engraved on the MDF will form the reference to assist with assembling the next part of the jig. Using a piece of 6mm MDF cut a piece about 25mm wide and the same length as the CNC bed. Take care to ensure that one of the longest edges is as straight and square as possible (hint: the factory cut edge from a sheet of MDF is often very squarely machined - use this as the reference edge). This thin strip of MDF will form a fence for the indexing plate. Glue and/or screw the fence to the MDF indexing plate, lining up the square edge of the 6mm MDF to the engraved reference line as closely as possible. Be careful to ensure that the fence doesn't accidentally slip or move while the glue is drying. Using some more 6mm MDF, cut a baseplate large enough to comfortably hold a fret board blank with about 15-20mm overhang on all sides. For example, if your fret boards are nominally 60mm x 550mm, make the MDF plate about 100mm x 600mm. On one of the longest sides sand/cut/file/plane a nice, clean square edge. This edge will ride along the fence on the indexing plate and needs to mate with minimal gaps and bumps. For the next step we will need to create CAD drawing and resultant G-code program to drill the locating holes. The reason we do this is that the CAD drawing of the holes is subsequently used to determine the 'split point' of the fret slotting job when milling in two halves, Without an accurate reference for the split the two halves will never align properly when machined, no matter how well the jig has been constructed. In your favourite CAD program draw a rectangle representing the fret board holding plate at a scale of 1:1 (ie, 100mm wide by 600mm long) with a lower-left corner origin at X-5, Y-5. Make sure the rectangle is drawn vertically aligned such that the longest edge is in the Y-direction. Next, draw four vertexes/points in the locations shown - two positioned 5mm in from the bottom corners and two 5mm in from each side at the exact midpoint of the rectangle (hint: use object oriented snaps and draw reference lines to accurately position these points, and delete afterwards). The critical point is that by virtue of creating a rectangle with origin X-5, Y-5 and then offsetting each edge inwards by 5mm, the lower-left drill hole is at exactly X0, Y0. In the below example the points have been added on a new layer in red. The four points now need to be exported as G-code. When doing so, set the feedrate fairly low (say 50mm/min) and set the Z depth to -10mm. The resulting G-code should look something similar to the following. Note that I have broken up the listing a little and included some comments to better illustrate the four drill hole steps. Now we get to cheat a bit with the CNC machine. The collets on the smaller units are usually designed to accept 1/8" shank bits. A 1/8" 'stubby' rivet drill, with its short cutting flutes can also comfortably fit into the collet of the CNC machine, and can be used to accurately drill the workpiece locating holes for the jig. Re-install the MDF indexing plate and lay the fret board MDF plate on top with the reference edge hard up against the fence. Position the leading edge of the fret board plate flush to the front of the indexing plate and secure in place with some temporary clamps. Fit a 1/8" stubby drill bit to the spindle and tighten securely. Open the drill hole G-code in your motion control software. Home and touch-off the tip of the drill bit such that X0, Y0 is 5mm from the bottom edge of the fret board plate and 5mm from the left edge - this is where we want to begin drilling the four holes. Turn on the spindle and run the G-code - four holes will will be drilled into the holding plate and through to the indexing plate. The final step of creating the jig also serves to illustrate how the tiling technique is performed. Remove the temporary clamps and slide the fret board holding plate down such that the top two holes are now positioned over the bottom two holes in the indexing plate. Insert two spare 1/8" shank cutters or drill bits into these two holes, locking the holding plate to the index plate, and temporarily clamp the top of the holding plate in place to prevent it shifting from side to side. Open up the G-code for the four locating holes and edit out the lower two drill hole entries (hint: enclose the relevant lines within brackets to convert them to non-executable comments). We obviously don't want to re-mill the first two holes, not the least because we now have two pins inserted into them, but we do want to mill the second pair of holes again for the top section of the fret board holding plate. Note that the X90 co-ordinate has now been added to Y295. As the previously defined X co-ordinate has now been disabled it needs to be moved to the new 'initial' drill hole position, which is now at the upper-right corner. Save this file and re-open within the motion control software, but do not re-home or re-touch off the machine. Run this G-code again and note that only the top pair of holes are drilled into the holding plate through into the pre-existing holes in the indexing plate. The jig is now complete and ready to be used. By using four 1/8" pins and securing the holding plate at the lower position the first half of the job can be machined. When this operation is complete the pins are removed, the plate shifted down, the four pins re-inserted and the second half of the job run with perfect alignment between the two halves. ----==---- In the next installment we will delve into formatting and splitting an over-sized job into the requisite halves such that the milling of a fret board can be achieved, and also learn a little about optimising our G-code to run a little more 'intelligently'.
After going through the StepConf Wizard to set up our CNC router LinuxCNC will have created a shortcut on the desktop to allow us to run the CNC machine with our configuration. Double-clicking this icon will launch Axis, the default graphical user interface. Upon opening Axis the user is presented with a 3D representation of the physical machinable cutting area of our CNC machine. A default test cutting program is loaded on startup featuring the LinuxCNC logo and a small cone object in the preview window represents the position of the CNC cutting tool. The maximum bounds of movement of the CNC machine, as defined by StepConf Wizard in part 2 of this series, are represented as a rectangular cuboid object with dotted red edges. In our case the cube is 200mm wide, 300mm long and 50mm high, which aligns with the maximum limits of travel of our particular CNC router. Take a fresh piece of plywood, MDF or other flat material at least 150mm x 150mm and secure it to the table. Fit a small engraving cutter to the spindle and tighten the collet. Open a blank text document using whatever text editor you prefer to use on your system and enter the following G-Code. If your machine is set up for millimetres use the left column. If you’re running your machine in inches use the right column: Save this file as ‘100square’ with the file extension ‘.ngc’ to a convenient location on your computer. Using the metric version, let’s break the code down into its components: G21 – This command tells Axis that the units of measure contained in the following code is expressed in millimetres. If G20 is used then the units of measure are inches. G0 Z15 – the G0 command instructs the CNC machine to linearly move its axis or axes at maximum velocity. This is useful to speed up moving from one area to another in preparation for the next cut, but should not be used when actually cutting as the speeds and forces involved could damage the tool. Z is the axis that is to be moved and the number immediately following is the position the axis is required to move to. In effect this line is commanding the CNC router to raise the Z axis to 15mm above the surface of the workpiece at maximum speed. G0 X0 Y0 Z5 – The CNC machine is again required to execute a rapid move, but this time we have also included destinations for the X and Y axes (X0 and Y0). Z axis is also instructed to lower to 5mm (Z5). G1 X0 Y0 Z-0.5 F300 – G1 tells the machine to linearly move at a rate which is specified by F300, expressed in units per minute. Because the Z axis is required to move to a negative value (Z-0.5) we are now plunging the tool into the workpiece to begin cutting and a slower axis velocity is required. X and Y axes are set at 0, but because we already moved to X0/Y0 in the previous step there will be no change in these two axes. G1 X100 Y0 Z-0.5 F300 – G1 again instructs the machine to use the feed rate F300. The X axis is requested to move to 100 while maintaining Y at 0. This will result in the X axis moving to the right in a straight line to a distance of 100mm. The Z axis remains at the same value as previously commanded by the G1 instruction. G1 X100 Y100 Z-0.5 F300 – The machine will move Y up to 100 at low feed while keeping X at 100 and Z at -0.5. G1 X0 Y100 Z-0.5 F300 – The CNC router will move X axis back to 0 at low feed G1 X0 Y0 Z-0.5 F300 – The Y axis is reduced to 0 at low feed. G0 X0 Y0 Z15 – The Z axis is raised to 15mm above the surface at maximum rate. The cutter is withdrawn from the work piece. M2 – This command signifies the end of the program and the CNC can stop operation. Many G-Code commands and variables are ‘modal’ and remain in effect until another contradictory command is executed. As an example the above program could be re-written for maximum modality and provide the exact same output. The drawback is that it can become difficult to read to the user, as much of the detail is removed: You will note that the F300/F12 feed rate that originally appeared at the end of each G1 line now features at the top of the program. This is because each successive G1 command will utilise the last known feed rate, which is now defined at the beginning of the code. Returning to Axis it can be seen that on start-up the location of the cutting tool is exactly at the upper-left corner of the machine limits of travel (X=0 and Y=0) and the tip of the cone is positioned at maximum height (Z=0). This corresponds with the home position that was defined earlier while running the StepConf Wizard. In reality the cutting head could be physically located anywhere within the limits of travel, as is the case below: Before the CNC router can be operated it needs to be returned to its home position. On more advanced machines this procedure can be automatic, with the axes seeking their home positions when the user commands the machine to home itself. In our case we will home the machine manually. Click the File open button or press <O>, navigate to where you saved the G-Code program we created and load ‘100square.ngc’. You should be presented with the following in the preview window: Check the Emergency Stop pushbutton on the CNC router control interface has been reset, and press <F2> or click the ‘Toggle Machine Power’ orange button on the top menu bar. A number of greyed-out options under the ‘Manual Control’ tab become active. With the CNC machine connected to the PC and powered-up, use the four arrow keys on the computer keyboard to move the machine around the cutting bed in the X and Y directions. The <page up> and <page down> keys will also move the Z axis up and down. Manually moving the cutting head around the table is called jogging. As the cutting head moves around the display updates the position of the cone object and shows the path taken as a solid yellow line. In the below example the cutter has been jogged towards the front edge of the table by 31.739mm (Y axis), across to the left 21.547mm (X axis) and up 20.545mm (Z axis). These values appear in the upper-left corner of the display; the Digital Read-out or DRO: The CNC machine, having now executed the above moves is sitting with its cutting head physically home, but well away from the workpiece at a distance which does not yet correspond to the values shown in the preview window: Now that the CNC machine itself is at its home position Axis needs to be told that this is now the position that corresponds with the upper-left corner of the red dotted-edged cuboid object, ie the 'soft' home position. The ‘Home Axis’ button is then clicked for each of the X, Y and Z axes. As each axis is homed the DRO updates to indicate that the associated axis is at position ‘0’ and a symbol is added next to the readout. Note also that the position of the cutting head in the preview window returns to the upper-left corner of the work area box to reflect the fact that it has now had its home position reset. The second step to perform before we can run a job is to ‘touch off’ the cutter against the workpiece. This is the process of setting the position of the workpiece relative to the home position of the machine. With the CNC router homed the job can be run, but unless the tool is touched-off Axis does not know where the workpiece lies relative to the tip of the cutting tool. In the above example the square object looks as if it sits bang-up against the top of the limits of travel, when in actuality the workpiece is about 25mm below the tip of the cutter and a few inches inside the edges of the table. Without touching-off, at best the machine may run the job with the tool completely missing the workpiece. At worst the CNC may try to drive the cutting tool through the workpiece into the table, ruining the job, damaging the table and destroying the cutting tool. To touch off manually jog the cutting head to the point at which you require the origin of the job to be positioned on the material. In the below example the cutting head has been jogged right 34.071mm (X axis), jogged away from the front of the table 42.856mm (Y axis) and jogged vertically down by 22.156mm (Z axis) to place the tip of the cutter at exactly the spot where the job origin is required to be. In our case I have marked the workpiece with a cross to indicate where I want the square shape to begin: As each axis is moved into position click the ‘Touch Off’ button. A dialogue box opens to allow the user to manually specify an additional offset to the workpiece relative to the axis being touched off, but in most cases it is sufficient to use the default of 0. After touching off the axis the DRO updates to show the position of the cutter has now been reset to 0. Note also that the square object has now moved 'deeper' into the red cuboid object that defines the limits of machine movement. Click the ‘Clear Live Plot’ button or press <CTRL-K>. This clears the preview window of any paths that were created by the manual jogging of the cutting head. Manually jog the cutter away from the workpiece a few centimetres. With the machine homed and touched-off we are now ready to run the job. If the CNC machine has a manual spindle control turn it on and set the spindle speed appropriately. Click the blue ‘Play’ button or press <R>. The CNC machine and preview window will now begin stepping through the code and manoeuvring around the workpiece. Note that the movement of the cutting head in the preview window is indicated by pale red lines for slow cutting motions, and for rapid jogging motions between each cut the tool follows the cyan dotted lines without leaving a trail. After a few minutes the program completes and the cutter retreats away from the workpiece to a safe distance where the spindle can now be turned off. If all things have gone to plan you should now have the 100 x 100 square engraved on your workpiece. Take a good quality ruler or Vernier calipers and measure each of the four sides of the engraved square and confirm that they each measure 100mm. If the sides of the square do not equal 100mm then some tuning of the configuration file must be undertaken to correct this error. The most likely culprit is that the lead screw pitch has been incorrectly set. The correction factor to apply to bring the axis scale back to the correct value is: If the square is exactly out of scale by a factor of two the other possibility is that the 'Motor Steps Per Revolution' setting is out by a factor of two. Doubling the value of 'Motor Steps Per Revolution' will make the edge of the square twice as big, whereas halving this setting will reduce the length of the square’s edge by half. ---------- Now that we have the CNC router actually cutting something and each axis is scaled correctly, we can move on to creating something a little more exciting. In the next instalment in the CNC series we will create a truss rod cover from scratch using CAD and mill it on the CNC router.
So you’ve decided to launch yourself into the world of CNC machining. You’ve done some research and lurked around many online forums and resources looking for information regarding which model to choose and what features the unit needs. You’ve plonked down your hard earned cash and a big cardboard box has arrived in the mail containing a bright, shiny new CNC router. It’s been assembled and set up on your desk. Now what? Fundamentally, most basic CNCs will have a bed which workpieces are secured onto and a overhead gantry that travels the length of the table. Onto this gantry a secondary carriage travels over the width of table. The spindle itself is attached to this carriage and can move vertically. The spindle rotates a cutting tool at high speed to remove material from the workpiece. The three movement directions (side-to-side across the table, up and down the length of the table, vertically up and down perpendicular to the table) are the three axes of motion that the machine can operate in; X, Y and Z respectively. Each axis is independently controlled by specialised motors known as steppers, which are designed to rotate either direction by precisely known amounts. The rotation of these motors is translated into simple linear movement (backwards and forwards). Commonly, threaded rods ("lead screws") pulleys or toothed belts are used for this purpose. Larger machines can sometimes use these in combination (such as pulleys for X and Y, leadscrew for Z). Each have their respective advantages and disadvantages in accuracy, cost, speed, load capacity, etc. Lead screws are most common in small CNCs for all three axes. The precise rotation of the stepper motors is controlled through the application of electrical pulses. By co-ordinating the number, length and frequency of the electrical pulses, the CNC machine can be made to execute precise synchronous motions to move the cutting tool around the workpiece in complex paths. The generation of these control pulses is performed either by dedicated standalone control consoles or by software on a common computer. Non-production level CNC tends to utilise the second option; the steppers driven by a simple external interface unit that sits between the machine and PC which handles the translation of the software stepper signals into the heavier-duty control signals that drive the motors. Software generation requires that a motion control application be installed on the host computer. Two of the most popular motion control solutions at the moment are Mach3 or Mach4 (for Windows based computers) and LinuxCNC for (Linux-based operating systems). In this article we will use LinuxCNC to illustrate how to set up the desktop CNC router; fundamentally the operating principles are similar between the Mach-series software and LinuxCNC. Both options require the host computer to have a parallel port for communicating with the control interface. Laptops and USB-to-parallel adaptors are not recommended for software stepper pulse generation. The main advantage of favouring the "old" parallel port standard is that many signals can be sent simultaneously; despite being far faster, USB is purely serial and asynchronous; one piece of information at a time and "arrives when it arrives". Parallel is far closer to being a real-time interface, which USB to parallel adaptors do not reliably replicate. PCI parallel port cards on the other hand are a satisfactory option if your host computer doesn't feature a parallel port. Installation of a Linux operating system and the LinuxCNC application is beyond the scope of this article, however it is extremely simple; LinuxCNC is available as a LiveCD installation, whereby the user has the ability to boot a pre-compiled version of LinuxCNC from a CD, DVD or USB memory stick without installing the operating system onto the computer. This operating system image is available to be downloaded from the LinuxCNC website. A permanent installation of Linux and LinuxCNC can be performed from the LiveCD if the user so chooses at a later date. The first requirement in setting up the CNC machine is to create a configuration file. This contains the specifications of the CNC motors so that they are driven at the correct speed/rate, acceleration, direction, etc. From the menu bar Click ‘Applications’, navigate to ‘CNC’ and select ‘LinuxCNC StepConf Wizard’. If this is the first time that StepConf Wizard has been run a new configuration must be made. The user also has the option of opening an existing configuration to either adjust existing settings in their recently created configuration, or use another configuration as the basis for their new CNC router. In this case we will create a new configuration from scratch. Click ‘Forward’ to move to the next page in the StepConf Wizard. In the next screen the configuration can be given a meaningful name and basic setup parameters defined, such as units of operation (millimetres or inches), how many axes the machine operates with (in our case three axes – XYZ), parallel port addresses and driver signal timing. If your CNC machine comes with data or a user manual then use this to set the driver timing settings. If there is no data supplied you may have to search online to find some information regarding the suggested timing parameters, or experiment to find the best trade-off for reliable operation of the CNC router. Step Time and Step Space - the width of the electrical pulse applied to each stepper motor and the subsequent gap between each successive pulse, expressed in nanoseconds. Too small a step pulse or space and the motor will miss a step. Too long and the CNC axis movement can become unacceptably slow. Direction Hold and Direction Setup - In addition to the step pulses themselves, secondary signals are generated by the motion control software that change the order of the pulses being applied to the steppers. Changing the order of the pulses changes the rotation of the motors from clockwise to anti-clockwise. The "Direction Hold" and "Setup" parameters define the amount of time the direction signal applied to a stepper motor needs to remain activated after a step pulse has been issued, and the amount of time the direction signal needs to be applied to the stepper before issuing the next step pulse. Too small a direction hold or setup and the motor can miss a change in direction and overshoot its intended stop point. Too long and the CNC axis movement can become unacceptably slow. In most cases the values shown will work as-is and require no further adjusting. The last key item that requires attention on this page is the ‘Base Period Maximum Jitter’ setting. Instructions to the CNC (via the interface) are generated by software, so there is a potential that something occurring in the computer or operating system outside the control of the CNC machining application may interrupt the continuous supply of timely instructions (eg. graphics redrawing on the screen, hard drives being accessed, etc). Consequently we need to ensure that any interruptions that do occur do not interfere with the normal operation of the CNC machine. To find out what this minimum safety net should be the StepConf Wizard includes a ‘Jitter Base Period Test’ function. After running the test for a few minutes this returns a suitable ‘Base Period Maximum Jitter’ value. This states how much the system might be expected to be delayed during normal operation; the configuration then makes sufficient allowance to avoid interruptions in the generation of the stepper control signals. Click ‘Forward’ when all fields have been filled in. Leave the Advanced Configuration Options unchecked at this stage and click ‘Forward’ again. The Parallel Port Setup screen is where we define what each pin of the parallel port on the computer is expected to do when connected to the CNC machine. Again, consult any data or the manual supplied with the CNC router to determine how each pin is to be connected. As we are configuring a basic 3-axis machine the minimum required pins to be configured will be X Step, X Direction, Y Step, Y Direction, Z Step and Z Direction. The other important pin to configure is the Emergency Stop (or E-Stop) input from the machine. Nearly all CNC machines will be fitted with a large E-Stop switch that the user can hit in the event that the machine begins executing some unintended moves, and signals the motion control software to unconditionally stop moving the axes. The next three screens are used to configure the behaviour of each stepper motor; their speed, acceleration and limits of travel. Each axis is configured independently but the options presented are identical: Motor Steps Per Revolution – how many steps the motor needs to perform to complete one full rotation of the shaft. Manufacturers of stepper motors often express this value as degrees per step. If your stepper motor has this value specified as 1.8 degrees per step then Motor Steps Per Revolution is equal to 360 degrees divided by the degrees-per-step value, or 360/1.8 = 200. Driver Microstepping – the resolution of a stepper motor can often be increased by the action of microstepping. The basic degrees-per-step specification of the motor is enhanced by the driver forcing the motor to make an intermediate ‘soft’ step in between each 1.8 degree ‘hard’ step. In the same way that a picture with higher resolution can display more detail on a computer screen, a stepper motor with more resolution can perform finer movements. The trade-off is that the more microstepping you add the less torque that motor is able to generate. In practice a microstepping value of either 2 or 4 is a good compromise. Note that if you set microstepping to 2 it will require that Motor Steps Per Revolution be increased to 400 to maintain the relationship of the number of steps to complete one revolution of the motor shaft. Setting microstepping to 4 will require Motor Steps Per Revolution to be set to 800. Pulley Teeth – only required for CNC machines that use pulley systems to drive the axis. This is where you would specify the gearing ratio of the pulleys. We are using a lead screw in the desktop CNC machine so leave these two fields set to 1. Leadscrew Pitch – the pitch determines how far each axis will travel when the lead screw is rotated one full revolution, and its setting is critical to ensure that the axis travels the correct distance when commanded to do so. If the units of operation specified earlier were inches then the lead screw pitch is expressed as threads per inch. If millimetres were specified then this value is expressed as millimetres per revolution. Consult your CNC machine datasheet for information on the specifications of lead screw fitted. As an alternative most lead screw pitches can be measured reasonably accurately by using a ruler to count the number of thread ‘peaks’ within one inch, or the distance in millimetres between two successive thread peaks. Maximum Velocity and Maximum Acceleration – sets the maximum speed and acceleration of the axis before the CNC machine starts missing steps or losing accuracy when changing directions. As no real life object can accelerate from a standstill to full speed instantaneously, we need to specify a value in the ‘Max Acceleration’ field to limit how quickly the CNC motion control software tries to make the machine change its speed when either accelerating from zero, coming to a stop at the end of a manoeuvre, or changing directions suddenly when transitioning between two trajectories. In general this is set by experimentation with your particular machine, but the values presented here should work with the smaller desktop CNC routers as a starting point. Home Location – the default location the axis will set itself to when the machine is told to ‘return home’. The home location can actually be anywhere you like within the axis limits of travel, but is typically set at 0 (which would equate to the lower-left corner of the table with the Z axis at maximum height). Every time the software is started up the physical location of the CNC machine is undefined. Until the CNC machine is homed it cannot know where its limits of travel are (below) and therefore cannot commence a machining job. Table Travel – specifies the ‘soft’ limits of motion that the axis can move within, and is expressed as either millimetres or inches depending on how the units of operation were set earlier. For each axis this is typically set to the maximum travel that the axis can move to before reaching the end stops. When the motion control software detects that the axis has reached its soft limit it will not attempt to drive the CNC router beyond this value. Note that when setting the Z axis the Table Travel fields are normally set as a negative number to zero, rather than as zero to a positive number. The convention here is that the Z axis moves negatively with respect to the surface it is bearing down upon. The last option for each axis is the ‘Test this Axis’ function. Clicking on this will bring up a window that allows the user to see if the configuration created thus far is appropriate for their machine. With the CNC router connected to the computer and powered up the axis under test can be manually moved using the two ‘Jog’ arrow buttons, or the axis can be set to automatically swing back and forth by a set amount according to the ‘Test Area’ fields. This is useful for determining if the axis is moving by the correct amount based on the ‘Motor Steps Per Revolution’ and ‘Lead screw Pitch’ settings, and also if the ‘Max Velocity’ or ‘Acceleration’ settings are going to result in missed motor steps. Assuming that step direction was set up correctly earlier under the ‘Parallel Port Setup’ window for each axis, clicking the right ‘Jog’ arrow should make the X axis move towards the right of the table, the Y axis move away from the front of the table and the Z axis move vertically upwards. Clicking ‘Forward’ after configuring the last axis and then ‘Apply’ will create an icon on the desktop allowing the user to launch the motion control software using the created configuration file. And that’s it! If you’ve made it this far you’ve successfully created a configuration file to suit your CNC router. By double-clicking the 'launch CNC-router' icon on the desktop, the configuration file will pre-load all the necessary parameters for the CNC machine and start up the motion control software. ---------- In the next article we will begin creating a basic G-Code file to run the CNC router with. In doing so we will also verify that the machine operates correctly, and the axis motion is correctly scaled to create 1:1 cuts in preparation for applying the CNC machine's abilities to creating luthiery-related components.
Recently I made the decision to step into the world of CNC routing machines and augment my small workshop and tool collection with a modestly-sized unit. With the rise in quality of low-end Chinese-made machines in recent years it has become easier than ever to purchase a small CNC router for home use capable of high precision. A quick search on online auction sites will reveal a vast array of pre-assembled units for sale starting in price from less than $700, with cutting beds up to 600mm x 900mm in size. While I am still a novice at CNC, hopefully my experiences can help others decide if taking the plunge is for them too. So, why choose a small CNC router? There were several reasons why I personally decided to purchase a desktop machine with the intention of applying it to guitar work: I had a limited budget and a small area where I could set up such a machine. A CNC router capable of directly milling a guitar body from a timber blank is physically large, noisy and expensive; I was after a way to improve the appearance of my builds by including professional-looking headstock logos and markings, and had thus far been dissatisfied with many of the solutions that utilised decals or transfers; I wanted a quicker and safer way to create templates for routing smaller shapes and components used in guitar construction (eg, pickup cavities, headstock outlines, truss rod covers); Having decided to explore multi-scale instruments I needed a way to make accurate drilling templates for the individual bridge assemblies commonly used for these instruments; Despite wanting to automate some of the construction process, I still wanted to retain the hands-on nature of building an instrument rather than transfer the bulk of the cutting and shaping work directly to a machine; The increased accuracy afforded by the machine for particular tasks was attractive (eg, scribing fret slots directly onto a fretboard blank, creating perfectly-fitted control cavity covers). The CNC machine I eventually settled on was at the smaller end of the scale; a 3-axis desktop unit with a similar footprint to a mid-sized inkjet printer, having a cutting bed of 200mm by 300mm (X- and Y-axis respectively) and a vertical travel of 50mm (Z-axis). The spindle is rated at 200W, with a 1/8” collet which allows the changing of cutters using a wrench system similar to that used on many handheld routers. The build quality of the frame and gantry seems quite acceptable, although for the price paid I would expect some shortfalls in terms of frame flex and milling accuracy of the spindle due to runout and eccentricity. However if you don’t work the CNC router too hard any errors in the finished milling process will be minimal, and achieving sub-micron precision in a material such as timber is probably a moot point anyway. A separate controller interface unit is supplied featuring variable spindle speed via a dial on the front panel and PC connectivity through a parallel port on the back. It is worth noting that most of the models which utilise a parallel port to interface with the computer require a desktop PC rather than a laptop, as the battery power management features of the latter are not conducive to reliable operation of the CNC router. Commonly available USB-to-Parallel Port adaptor cables are also incompatible with these units. However, if your host computer does not have a built-in parallel port you can purchase and install an aftermarket PCI parallel port card, which is exactly the path I chose. The unit also came equipped with a selection of endmills, a set of rudimentary work piece holding clamps, a number of allen wrenches and spanners and an evaluation copy of the Mach3 CNC motion control software. While the supplied endmills are satisfactory for learning the ropes and experimenting with different cutting operations, you may wish to invest in a small collection of higher quality endmills, which afford a far superior finish and longer working life than the factory-supplied ones. The controller is connected to the CNC mill via several cables with locking collars to prevent them inadvertently working loose. An unexpected bonus feature of the particular model I chose was that the controller circuit board is fitted with several unpopulated connectors that allow the retro-fitting of axis limit switches. On more fully-featured units these limit switches are fitted to the moving components as a safety measure to prevent the software accidentally driving the CNC machine past its maximum limits of travel, or to allow automatic homing of the cutting head (more in this in future articles). On the subject of software, there are two main options for driving a parallel port-based CNC router; the above-mentioned Mach Series software which is for Windows-based machines and LinuxCNC (formerly known as EMC2) for Linux-based systems. As LinuxCNC is a well-supported open-source option for these machines I elected to take this option and install a Linux partition on my host computer. Conveniently, LinuxCNC offer several LiveCD versions of their software, which has the motion control software pre-installed on a Linux operating system. The operating system can be run directly from CDROM or DVD without having to be installed on the PC. If the user decides that they would like to continue using Linux, they can choose to install the operating system and motion control software directly from the LiveCD. As these machines are directly exported from China or imported via an agent, technical support tends to be quite limited. The units require some software configuration in order to move the axes in the correct direction at the correct rate. The machine itself is incapable of knowing where it is positioned relative to the cutting bed, or how many turns of the axis motors are required to move it an exact distance without some form of calibration data maintained by the host software. Fortunately there are several online resources to help users configure their CNC routers in order to achieve precise operation. Once configured to run from the motion control software, the user can load files into the application to direct the cutting head to manoeuvre around the work piece at pre-determined directions, speeds and depths in order to create the final object. The language used in these files is known as G-Code and consists of text entries directing the axis motors to move in a specific direction at a certain rate. Other specialised commands in G-Code are used to command the spindle motor to turn on and off, make the program pause at key steps in the routine, or cause the axes to move in predefined ways such as cutting an arc or drilling a hole. While it is possible to create a G-Code file from scratch by typing commands one at a time in a text editor, it is far easier and quicker to use a Computer Aided Drafting or Computer Aided Machining (CAD/CAM) application to draw the intended cutting paths and convert the subsequent drawing to its component G-Code commands. The user has the ability to quickly mock up an outline of, say a pickup routing template, export the resultant drawing as a G-Code file, open the file in the motion control package and cut out the routing template from a sheet of MDF with sub-millimetre accuracy in a few minutes. While some CAD and CAM applications are integrated into one common application, there are also many offered as separate software solutions. Some packages are open-source and free while others cost anywhere from a few tens of dollars to well in excess of $1000, all with varying levels of ease of use, feature sets and functional integration. Below are a few examples of what operations are possible using the small desktop CNC machine when applied to guitar building. This headstock logo was first engraved while being held in a simple jig to allow the workpiece to be accurately positioned without moving. The work was done in two passes, with the larger of the two pieces of text milled using a 0.8mm diameter endmill, and switching to a 0.7mm endmill for the smaller text. The resultant cavities were filled with black-tinted epoxy and sanded flush: Cavity covers can be directly cut on the CNC router from thin timber stock, including drilling the screw holes in one pass. To create a matching routing template for recessing the cover into a body it is a trivial matter to take the original cavity outline and scale it in CAD. The resultant file will create a perfectly fitting routing template for that cover. As I was unsure if the machine would struggle to mill such a thick piece of perspex, I milled a 'master' template from 6mm MDF and then used a handheld router fitted with a pattern-following bit to transfer the MDF template to the perspex sheet: If your router has a bushing guide or pattern-following plate attachment you can use it in combination with a small diameter bit to cut cavities with tighter radius corners than woud be possible using a typical 1/2" template bit with integrated bearing. The problem with using a bushing guide is that the template used must be created oversize by the radius of the bushing minus the radius of the cutter. Creating such a template in CAD and then milling it on the CNC router is simple. In the following example I have created a routing template to suit the bushing guide for my router. The cutter used was a 1/4" straight bit and the bushing guide is 16mm in diameter, so the template has been created with a consistent (8mm - 3.175mm) 4.825mm offset to achieve the intended cutting profile for a humbucking pickup cavity: Accurately positioning the independent saddles used on multi-scale instruments can be tricky, as the risk of misalignment is increased compared to a one-piece bridge. Determining the angle of the saddles for the differing scale lengths can be problematic, and if you are constructing instruments where the scale lengths used differ from build to build, making a drilling jig by hand is time consuming. This drilling template was milled and engraved into 1/8" perspex in about 15 minutes and includes the mounting holes for the saddles, the through-body holes at the rear of each saddle, a centreline to assist in positioning the template on the body and the intonation reference mark for the scale lengths used: The CNC machine can also be used to create simple tools for use in building and setting up instruments. The time taken to create this four-sided radius gauge was about half an hour, from mocking up the basic shape in CAD to removing the perspex sheet from the machine's cutting bed. If the tool was to get lost or damaged, creating a replacement should only take a few minutes: Pros: A ready-to-go solution out of the box with minimal assembly required Competitively priced with good accuracy and construction quality Excellent finish achievable on the object being machined Capable of machining a wide range of raw materials (MDF, plywood, timber, plastic, soft aluminium) Good support from open-sourced software solutions Small footprint for installations where space is at a premium Cons: Generally not suitable for direct cutting/shaping of the major components used in guitar construction (eg, cutting body outlines, neck profiles, cavity routing) or machining harder materials (eg, making custom metal components for bridges) Minimal after-sales technical support The control interfaces supplied with the smaller and cheaper units usually require a desktop PC fitted with an archaic parallel port. The software used can be challenging to get to grips with if you’re not familiar with Computer Aided Drafting principles and terminology. Hidden costs associated with using a CNC – purchasing good quality cutters and CAD/CAM software for example ---------- In future articles I will explore calibrating the desktop CNC router and covering some of the basic operations of the associated CAD, CAM and motion control software packages.