February 2019's Guitar Of The Month is now open - ENTER HERE!
Search the Community
Showing results for tags 'linuxcnc'.
Found 2 results
2D or even 3D CAD software is familiar to the majority of people, with packages like AutoCAD or TurboCAD. being more or less universally known. CAM software on the other hand is not so familiar. The simplest difference is that CAM takes work produced in CAD and uses it as the basis for a real-world manufacturing process. In this instance, a CNC machine. Numerous CAD and CAM packages are available to the user, from free to painfully expensive. For this tutorial we will focus on QCAD by Ribbonsoft. The software is relatively inexpensive (licenses start at 33EUR) and is available for a resettable trial period. This enables users to get to grips with the basics, and is reasonably easy for a CAD novice to understand. QCAD is also cross-platform compatible available on Windows, Mac or Linux machines, and it includes a basic CAD -> CAM interface adequately servicing our needs. On opening QCAD the user is presented with a blank document. I am working in Metric, however if you choose to work in Imperial units it is easy to switch between the two units of measurement in the program Preferences. The underlying methods are unchanged of course. To begin with, we will draw a rectangle with dimensions of 35mm by 45mm. The keyboard shortcut, typing 're' activates the 'Rectangle' command. The cursor will change to a set of yellow crosshairs, indicating a command has been invoked and is active. The command line at the bottom of the screen indicates that the rectangle command is waiting to for the user to specify the coordinates of the lower-left corner of the rectangle. With the rectangle command still active, click in the command line window where it requests 'First corner:' and type '0,0' (note the comma separating the two zeroes) and press <ENTER>. To complete the rectangle command we also need to specify the coordinates of the upper-right corner. In the command line window type '35,45' and press <ENTER>. The rectangle is drawn on the screen with the exact dimensions of 35mm x 45mm. Often when drawing in CAD packages, it is useful to add guidelines to help you work. These are erased when the drawing is complete. In this example it is handy to draw a centreline for our trussrod cover. Click the right mouse button to cancel the Rectangle command or press <ESCAPE>. Same as we did to invoke the 'Rectangle' command, type 'li' to activate the 'Line' command. By moving the yellow cursor near the top edge of the rectangle you will note that the word 'Middle' appears. This is an automatic object-oriented snap that allows us to select a key property of items already drawn on the screen with absolute accuracy. Other object-oriented snaps include the centre of a circle, an intersection between two objects or the end of a line, amongst others. In our case we will draw a line from the middle of the top edge to the middle of the bottom edge of the rectangle. Click the middle of the top edge to start drawing the line and click again on the middle of the bottom edge to complete the line. Right-click to stop drawing additional Line segments and right-click again to cancel the Line command. To give the trussrod cover a bit more visual appeal we will curve the sides in a kind of bullet shape. To achieve this we will take advantage of object oriented snaps again. Type 'a2' to start the 'Arc With 2 Points and Angle' command. Using the object oriented snaps click on the top of the centreline to start drawing an arc. While the end of the arc is 'attached' to the cursor, click in the Angle box at the top of the screen and type '45'. To complete drawing the arc click on the lower-left corner of the rectangle. The mirror image can be drawn while the Arc command is still active. Left-click the lower-right corner of the rectangle and click again at the top of the centreline. Note that this time we have gone from bottom to top. This is because the Arc command relies on an anticlockwise rotation when being defined. Clicking top to bottom would generate an arc facing the opposite direction. While this can be reversed so that the arc is drawn clockwise by changing the drawing preferences, it is quicker to remain in anticlockwise notation while the command is still active from the first arc. Right-click to cancel the Arc command. Now that the trussrod cover is starting to look roughed out, lets refine the shape a little. The three corners of the cover can be rounded over slightly by invoking the 'Round' command. Type 'rn' to start it. In the radius box at the top of the screen type '2.5'. Left-click one of the two arcs on the trussrod cover near the peak. Note that as you go near each entity it changes colour to grey. Move the cursor near to the other arc. Notice how QCAD offers 'suggestions' as to where the round-over will be if you left-click again. Click when the round-over of the peak becomes one of the suggested options on the screen. The two remaining bottom corners can also be rounded over using the same process. Right-click to cancel the Round command when finished. To finish off the cover we'll add some screwholes at each corner. The easiest way to achieve this is to use the existing outline and offset the edges inwards to provide some useful guidelines (we'll delete these once finished). Type 'lp' to invoke the 'Parallel Lines with Distance' command. In the distance box at the top of the screen type '2.5'. As for the 'Round' command, hover the cursor near each edge of the trussrod cover, and when QCAD's suggested location for the parallel line appears inside the boundary of the cover, click the left mouse button to create the new parallel line. Repeat for all three edges. Cancel the Parallel Lines command when finished. The screwholes are simply circles placed at the intersections of the parallel guideline we just created. Type 'ca' to start the 'Circle With Diameter' function. In the diameter box at the top of the screen type '2'. Move the mouse over each of the corners of the parallel guidelines and left-click when the object oriented snap 'Intersection' appears. Cancel the Circle command when complete. All the unwanted guides can now be removed from the screen. To do this simply select all of the unwanted entities in turn while holding the <SHIFT> key to create a multiple selection. When all have been selected (indicated by the colour changing to brown) press <DELETE>. So we now have the drawing of the trussrod cover complete, but there is still a little more work to do before we can pass it on to the CNC machine. The main issue we have to resolve is that the diameter of the cutter needs to be compensated for in order to properly cut the outline of the cover. Without any toolpath compensation the cutter will follow the outline of the part and create a profile too small by the radius of the cutter. This is perhaps best illustrated by overlaying a representation of the cutter on top of the trussrod cover. In the above image the green circle represents the diameter of the cutter we want to use on the CNC machine. If the cutter follows the outline of the cover it will create a part that is represented by the yellow dotted line, which is obviously smaller than we want and also encroaches on the screwholes. What we need to do is offset the outline of the cover by a distance equal to the radius of the cutter and have the cutter follow this path instead. The other issue to be dealt with is the drilling of the screwholes. Again, if no compensation is performed with our basic drawing the CNC machine will simply move the cutter in a circular motion around every screwhole and leave us with oversized holes. What we really want to do is use a cutter with the same diameter as the holes we want to drill and simply plunge the cutter in and out of the centre of each screwhole location. Turning first to the outline path, we need to create a separate drawing layer that contains only the toolpath we want the cutter to follow. To create a new layer click the red '+' button in the Layer List menu box on the right of the screen. In the popup dialogue give this layer the name 'Toolpath' and change the colour to red. Click OK when done. Make sure the new Toolpath layer is selected in the Layer List and invoke the Parallel Lines command ('lp'). We will use a 2mm diameter cutter on the CNC machine, so we want the toolpath to be offset from the outer edge of the trussrod cover by the radius of the cutter. Enter 1 in the Distance box. Hover over each of the outline entities and click to create an outside offset. Cancel the 'Parallel Lines' command when done. The screwholes are easier to deal with. Assuming we continue to use the same 2mm cutter on the CNC machine, this will drill a 2mm diameter hole when plunged in and out of the workpiece. To create a toolpath that only moves the cutter in a vertical drilling action we simply place a Vertex or Point in the centre of each screwhole. Type 'po' to invoke the 'Point' command and using the 'Reference' object snap, click in the centre of each screwhole. We can now export the drawing as a G-Code file that can be interpreted by the CNC motion control software. Hide the original drawing of the trussrod cover by clicking the 'eye' symbol in the Layer List next to the '0' layer. The original white outline disappears from the screen leaving only the red Toolpath layer visible. Click on the 'CAM Export' button on the toolbar to bring up the CAM Configuration dialogue box. Select the 'LinuxCNC' configuration from the dropdown menu and set the other options as shown below. The important settings to take note of are: Cut inner paths before outer paths - the order that the CNC machine cuts the object from the material can be important. For this reason we want to drill the screwholes before the outline is cut out. If the outline were cut first there is a risk that the part may move as it becomes free of the surrounding material, rendering the drilling of the screwholes innacurate. Z Safety - the distance the CNC machine raises the cutter by to a safe amount from the workpiece to allow for the machine to be started and stopped. Z Clear - the distance the CNC machine will raise the cutter above the workpiece when rapidly jogging between different areas of the workpiece. Z Cutting - the distance the CNC machine will plunge into the workpiece when performing a cut. As we are wanting to cut the full thickness of the trussrod cover material and drill all the way through for the screwholes, this depth should equal the thickness of the material we are attaching to the cutting bed. In our case we are using some black plastic pickguard material 0.095" thick. Feedrate - The speed at which the CNC machine will move the tool when cutting through the workpiece. In all the above cases the units are expressed in inches or inches per minute. Once all parameters have been set click 'OK', specify a file name and select a convenient location on the computer to save the G-Code to. Start LinuxCNC and open the G-Code file for the trussrod cover. You will notice that the program is drawn such that all cuts are made in one pass at the full depth of 0.095". Doing such a heavy cutting manoeuvre with the tiny bits that the CNC machine uses is likely to destroy the cutting tool. The forces involved are too great for a small machine and such fine cutters. While the three screwholes are fine to be cut to full depth in one go, the outline is not and would be better performed if the cut was made in several passes. Fortunately this can be achieved with some minor tweaking of the G-Code file within LinuxCNC. Different modifications or approaches can be used to achieve the same end result. For the purposes of simplicity, we'll use the easiest approach. With the truss rod cover G-Code file loaded in Axis click File -> Edit... A text editor window opens with the G-Code loaded. The section of code that details the outline cut is highlighted below, beginning with the G1 plunge to Z-0.095 at line 14 and ending with G3 X0.0982 Y-0.0394 I0.1378 J-0.0026 at line 20. By repeating this section of code several times over and incrementally plunging a little deeper each time we can complete the cut in several passes without stressing the cutting tool. The easiest way to achieve this is to simply copy this block of G-Code several times over and increment the initial Z depth a little during each pass until the final depth is achieved. With the above code modified as shown click the 'Save' button in the text editor. Return to Axis and click the 'Reload' button or press <CTRL-R>. The G-Code is reloaded into Axis, but notice that the truss rod cover outline now contains three identical tool paths stacked on top of each other. Leave the CNC machine switched off at this stage, home all three axes and run the G-Code. By running the code with the machine switched off it is possible to see a simulation of what will be cut before committing the cutting tool to the material. As the program runs note that the outline cut is made in several progressive layers; each time the tool passes the start of the outline at the lower-left corner it plunges to the next depth and continues around again until the final, lowest outline is completed. If the simulation appears OK turn the CNC machine on, fit a fresh piece of material to the cutting bed (double-sided sticky tape is sufficient for such a small piece), install a 2mm diameter cutter to the collet, home and touch-off the tool and run the G-Code again. In a couple of minutes you should have a perfectly formed truss rod cover ready to be fitted to an instrument. ---------- Over the course of this four-part series we have demonstrated how the compact CNC machine can open up a whole new world of possibilities in guitar construction. While we have created a rudimetary truss rod cover from scratch, we have barely scratched the surface of what the CNC machine can achieve - from carving out custom pickup rings, creating workshop tools and aids to assist with instrument building and setting up, to engraving and carving intricate designs onto headstocks and fretboards. For a modest outlay of money it is possible to have a device in the workshop capable of precision that, up until the last 15 years, was the domain of the largest manufacturing firms. After mastering basics such as those described above, experimenting with more complex ideas and demanding designs quickly allows a small CNC to transform your working procedures.
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.