Cut2D is 2D CAM program from Vectric. It is designed to quickly and easily import DXF plus several other vector formats and create G Code for CNC cutting. It is primarily designed for traditional mills and routers. While I would not recommend purchasing it to only use on a laser, people who have both a CNC router and a DIY laser will find this to be a very capable and inexpensive product.
I have used Vectric products for years. I started with VCarve, then upgraded to Aspire. A forum member recently asked for help using Cut2D. Vectric was gracious enough to give me free evaluation copy. This is probably due to the fact that I already own their top of the line product. They did say that they are not really interested in selling it for laser use only because the program may be confusing to them and they only want 100% satisfied customers.
The Vectric products ship with 100+ pre-made post processors. There are several flavors of Mach3 post processors that will work right out of the box for most mills and routers. It is also very easy to customize your own post processor. I created one for Aspire last year and found that it worked perfectly for Cut2D as well. I wrote a blog post about it and the file is available here. All Z movement is removed from the post processor, so the actual Z values used below are not going to affect your machine while cutting.
I am not going to explain how to use Cut2d. Vectric does a great job of that. I will just explain the differences when using a laser cutter.
Creating a Laser Tool
The first step is to setup a “tool” in the tool library for the laser beam. The beam can be thought of as an end mill. It is basically a cutting cylinder with a fixed width. The major difference is that it has an “infinite” depth of cut. In reality most lasers are not going to cut anything thicker than an inch or so due to beam divergence.
Many values you set are just default values and can be changed when you use the tool for a cut.
Tool Name
I called my tool “Laser Beam 0.003″. If you want to go crazy, you could setup dozens of tools with default values that work well with certain materials. You could name the tools “1/8 Plywood laser cut” or “6mm Acrylic laser cut”, for example. This way you do not need to remember what speeds and feeds are needed for each material.
Tool Diameter
Cut2D will use this when calculating how much to offset the cut line from the geometry when cutting inside or outside features. An easy way to determine this is to cut out a 1 inch square on the geometry lines with no offsets. Measure the actual size of the part. The amount you are less than the inch will give you the beam diameter. If you want to be as accurate as possible, you could define multiple tools based on different materials and thicknesses.
Pass Depth.
You cannot realistically use Cut2D to control the depth of a laser cut. Therefore, this value is not important. You do want to make sure this value is larger than any value that you will use when specifying tool paths so the cut is always one pass. I suggest setting this to a value of 1 inch. This default value can always be changed when you are setting up a toolpath if you actually want to play games with multiple passes.
Stepover
This does not apply for lasers, because we will not be doing pocketing. Just set it for 45% to keep Cut2D happy.
Spindle Speed
This value is also not really important at this point. You could use it to control beam power if your laser supports that. If your laser can use this for beam power then set it for the number that would yield max power, otherwise a value of 1000 should be fine.
Feed Rate
Again, this is a default number that can be changed at each tool path, so pick number that is close to t typical number you might use.
Plunge Rate
This does not apply so just put in any reasonable value.
Here is what a typical laser might look like.
Usage
I will explain one cut using the wing_spar example file that comes with Cut2D. The cut will be the inside features of the wing spar.
Select all the inside features and then click the Create Profile Toolpath icon on the toolpaths flyout menu on the right.
Cutting Depths.
These values do not matter. You just want to make sure the cut depth is less than the pass depth set for the tool. This will insure that only one pass is done. Advanced user could of course use this to setup multiple passes.
Tool
This is where you select your laser tool. Use the edit button to set the actual cutting speed you want.
Machine Vectors.
Use this to tell Cut2D what side you want the tool offset to. The direction setting (climb or conventional) is primarily for spinning tools, like end mills, but if you care which way the cut goes around the loop, you can change this.
Ramp moves
Don’t use this.
Tabs.
Tabs are primarily used to keep parts in place with spinnig tools, but you might want to take advantage of it to keep light parts from blowing around, or if you want all the parts to stay on the material after cutting.
Outputting the G Code file.
The last step is to output the file using the custom laser post processor. A copy of the file is available here.
Good luck. You might want to try a few dry runs with the laser disabled and you hand on the e stop button to make sure it works for you.
Mach3 is a great program. People have used it to control a vast diversity of machine, but it has some issues when controlling lasers. This is especially true when it comes to the beam control.
The beam can be compared to the spindle of a mill. It does the cutting and has an on/off state and power level (like RPM). On a mill, the spindle can safely stay on during rapid moves above the work and dwell at points without issue. A laser cannot do that because it does not retract from the material. It must only be on during G1 feed moves and must not dwell at any point or excessive burning will occur. The normal spindle logic does not work well with lasers.
I thought it would be a fun experiment to try to enhance the control using a Modbus slave device. Modbus devices are basically remote device that allow a host to read and write data registers. The remote device can then use the data registers to give information to the host or do a task when a register is written to by the host. The devices typically communicate using a serial port or Ethernet. You can view the Modbus protocol here.
There are a lot of commercial Modbus devices like ModIO and the Automation Direct PLCs, but I wanted a cheaper home grown version. I thought an Arduino would be a good choice because it has a built in USB to serial port, it is less cheap (less than $20) and it is open source.
My first task was to see if an existing Modbus library existed. I found a extremely well written and documented one by Juan Pablo Zometa written here. I read the code and determined that I could start by testing it as is without changing anything. I would setup Mach3 to match the port settings and try to read and write to the default memory register setting. I loaded the program into my Arduino Duemilanove.
Setting up Mach3 Modbus
I created a new Mach3 profile by cloning an existing working profile. Modbus is turned on via the Ports and Pins dialog. Check the Modbus dialog. Skip the second check box for now. I used the simpler old Modbus plug in
I needed to restart Mach3 to make the changes available. Next, go to the plugin dialog. Setup the serial ports to match the Arduino settings.
Now try to read from the Arduino using the Test Modbus button. The arduino starts at register 1 and initially has only 1 register.
Setup the Comm Port setting per above, but don’t bother with anything else. We will manually test the Modbus now.
I set the Slave Addr to 1 the Start to 1 and the Num Regs to 1. I clicked read and got 0000 with no errors. All registers are 16 bit integers and by default they are displayed in hex format. I changed 0000 to 1100 and clicked Write. I then cleared the number and clicked Read. I got 1100 back. This meant both read and write were working.
Modifying the Arduino code.
I changed some Arduino code to allow more registers by adding “ = 6” after MB_REGS.
enum {
MB_REG0,
MB_REG1,
MB_REGS = 6 /* total number of registers on slave */
};
Now I was able to read and write multiple registers. To have a little more fun a wrote a function that runs every time a write command was received. One register toggled an LED and the other set the value of a PWM. That worked perfectly.
Automating the Modbus
That is all cool and fun, but manual control is not gaining us much. Now it is time to put Mach3 in automatic control of it. To do this we will write a macro that is triggered from G-Code. I wrote a macro the would run whenever Mach3 encountered a special bit of G-Code. I chose to use an M666 code. I would use that with a “P” parameter for the PWM value. So “M166 P50″ would set the PWM value to 50.
The code is very simple. It reads the parameter. Param1() always gets “P” parameters. It then sends the value out via the second register in the slave Modbus device.
Edit the post processor
The next task is to create a post processor to create the custom G-Code. I used Vectric Cut2D as my CAM program for this exercise.
First I setup the spindle speed to output as Pxxxx. The + sign comments out the original post processor line.
+VAR SPINDLE_SPEED = [S|A|S|1.0]
VAR SPINDLE_SPEED = [S|A|P|1.0]
The next change is to add the new M666 line before each first feed move to set the power level.
begin FIRST_FEED_MOVE
“[N]M666 [S]“
Next steps
The next step is to use a Mach3 feature called “Brains”. This is a ladder logic type programming method that works much faster than macros and can run in parallel with Mach3. This can allow some really interesting ideas.
Possible Future Ideas.
Tie power level to feed rate. When a move starts out it accelerates to the desired feed rate. Therefore the power per speed is not constant. A Brain could adjust for this.
Control beam enable on with “is move G1″ logic. Rather than using the E1P1 method common with many laser users, you could have a Brain toggle the beam on whenever the code is in a G1 move.
Return water temp to Mach3. The Arduino could read water temp and Mach3 could display it on in a DRO. Mach3 could act on a high temperature value and do a feed hold and turn off the beam.
LCD display. The Arduino could control a simple LCD display of feed rates, power levels, axes positions.
Jog buttons. A simple jog button panel could be implemented.
Feed rate offset. A pot could be used to adjust the feed rate plus or minus while the job is running.
Feed hold with beam off: A feed hold button could be implemented where the motion stop and the beam goes off at the same time.
This little product from egg-bot.com has been showing up all over the web lately. It is primarily designed for coloring eggs and other small sphere-ish items. For the simplicity of it, it does a fantastic job and produces some amazing results.
With the recent discussion thread on the buildlog.net DIY laser forum about making an open source rotarty attachment for lasers, this has a whole new appeal. There are even some discussions on the eggBot FAQ about using this for lasers.
On the Egg-bot website, they down play the suitability of it and mention safety issues. To be fair, it is not really too suitable to laser use because of the size limits (1.25-4.25″ Dia and 6.25 max. long) and the special interface. The cost of $195 is also a little high, but that is due to the included controller and pen motors, etc. But lets get past all that and assume we have one and we want to hack it for lasers.
The first thing that comes to mind is dumbing it down to a simple rotary attachment to run inside the laser. This would be rather simple. Lets say you want to engrave a 1 inch square logo on a little 1.5″ diameter anodized flashlight. First you would strip it down to just the basic mechanism and the rotary stepper motor. The controller and pen controls are not used. You would then plug the stepper motor directly into your Y axis stepper driver. Be sure to dail down the current to what the Egg-bot stepper can handle. You now need to create your logo image. The image will be 1 inch tall, but the width needs to be stretched/squashed to fit the work piece. Since linear surface motion is dependant on the diameter of the item, a little calculation needs to be done.
Say you have a 200step/rev stepper, a 10 microstep driver and a 1000dpi laser controller. Your new resolution will be (Motor Res * Driver Res) / (Dia * PI). In this case (200 * 10) / (1.5 * 3.14159) = 424.4 dpi. Your laser thinks 1000 steps will go an inch, but in reality it is going to go (1000/424.4 = 2.36) inches. The solution is to make squash the image narrower by that amount, so your image is 1000 pixels high by 424.4 wide. That is it. 424.4 dpi is probably a decent enough resolution for a logo, but that is going to drop quickly with as the diameter gets bigger. If your stepper driver can increase the resolution, that will help.
image credit: http://dnashopper.com
The second hack the comes to mind is letting the EggBot control things. It has a controller capable of running two small steppers. Hook the laser’s X axis up to the EggBot controller and let it do the work. That might work, but it would require some serious hacking to get the laser enable to work right. The pen control is probably the candidate to do this. You might even be able to just hook up a push button that clicks when the pen is in the drawing position. I think a really low power level on the laser would be needed.
The third hack might ditch the whole rotarty thing and keep just the controller. Actually you can buy the controller on it’s own from Evil Mad Science (out of stock for a while). I’ll bet you could hack the open source software to make it become the complete laser controller. It has two built in stepper drivers, a USB connection, a voltage regulator and a whole lot of other useful things. I am sure you could get it to be a cutter controller and you might be able to get it to do some simple engraving. The data transfer of the image data might be tricky with limited memory, but it is probably doable. It has hobby servo drivers which might be a good source for PWM power control.
I would love to get one for the pure hacking fun of the project, but I don’t have the time right now. If someone has a laser, has the hacking cred to tackle a project like this, I might consider a donation to the project.
I cut a lot of parts on my home built machines. These machines were never designed for production work, so I have developed strategies to get the most productivity out of my work. My goals are to get the best yield out of my material, have the shortest run times, spend the least time babysitting the machine, minimize tool breakage and get the highest quality parts. This post is primarily focused on routers, but some of it also applies to laser cutters and other machines.
Modern professional, production machines will have vacuum hold downs, tool changers and automated clamping, etc. This post is about optimizing basic machines. A lot of this is obvious to many people, but recently I have seen some videos where I saw poorer strategies and even examples where part quality is going to be hurt.
Don’t Break the Tools.
For me, as a hobbiest, my time is cheap compared tool costs. The first priority is preventing tool breakage. I usually run with a 1/16″ dia. 1/2″ cut length carbide bit. This minimizes material loss. These babies are brittle. One mistake and it will break. With that said I have cut continuously in Acrylic for 6-10 hours with one bit. When cutting out parts, my number one cause of breakage is getting caught on a loose part or scrap. I design my cutting to prevent pieces the might break the bit from flying around.
Analyze The Part.
The first thing I do is look over the part to see the issues I might face during while cutting. The first issue I see is the large oval internal piece. This piece will come loose and is big enough to cause problems. It might try to jump out of the hole and catch on the tool or it could land somewhere where the tool will come down later. The smaller circles won’t be a problem. The cooling blower on the spindle will whisk those away. The small slot could be a problem. Long aspect ratio, small cutouts often start to fly away, but get hung up if they tip on the way out. If a rapid move happens to cross this, it could break the bit. I would probably address this by choosing a rapid move height of about a material thickness above the surface. Maybe a little higher if the slot is longer. An excessively large rapid move gap will seriously waste time, so I want to choose this carefully.
Keeping things together.
There are several methods to keeps parts from flying around. One popular method, if your software supports it, are “tabs”. These are small uncut or partially cut areas that are left behind. Ramped tabs like I show above are a lot faster because they do not require the move to stop and retract at each tab. This method works well on parts like wood that will probably get cleaned up and sanded later. On some parts like aluminum or plastic, it may not give you the even finish you want. The second method I use when the cut will require multiple passes is to leave the final pass to later. All parts are cut, unattended, down to a small remaining amount. Then all parts are cut out with me there. This can often be done at very rapid rate if not much material is left. I usually use a soft wooden, hand held ”chicken stick” to hold the parts down during the cut.
Clamping
Clamping can be a challenge on large sheets. You can clamp from the edges but the center might bow up a little. This gets worse as the parts are removed and only a thin web of material remains. Bowing causes two problems, you can get chattering of the material which impacts cut quality and your zero Z point is not consistent. I use two strategies to deal with this. If all the cuts are through and a little Z variance is not a problem, I try to cut out parts from the center and work my way out. This keeps a stronger path of material to the clamps.
If I have blind pockets to cut and the depth is critical, the Z need to be accurate. In this case, I will usually run the though hole toolpath first, then add a few wood screws through the material and into the spoil board in the central areas of the material. Make sure your rapid Z will clear the screw heads or the rapid path avoids the screws.
Cut Order.
Obviously you want to cut all internal part holes and features before you cut out the part because the part needs to be held firmly in place. I chose to not cut any parts out until all internal features on all parts are done. This keeps the material ridged as long as possible. This applies to laser cutters as well. People are not as conscious of cut order because parts are less likely to move, but on really small parts on thin material the assist air or exhaust blower can move the parts a little. I see cutouts before internal cuts all the time on videos and I can see the parts move.
I optimize my cut order to minimize my babysitting time. I cut all large internal part features first and monitor that. I then combine a lot of unattended toolpaths. First is the cutout of all small internal feature. Next I cut any blind pockets. Next, I cutout all the parts almost through. This is generally the longest run. The machine will stop and wait for me. I then completely cutout all the parts working from the center our while watching the machine to prevent problems. I will use my “chicken stick” on parts I think might jump out.
Cut Speed.
Don’t be afraid to raise the cutting feedrates. Most tools are optimized for certain chip sizes and speeds. You are not doing the tool any favors by running it slowly. If the tool cannot make decent chips, it will run a lot hotter and will dull and fail sooner. You need to experiment with speeds to get the highest reliable speed. Home built machines are not perfect and things like runout (wobble on the tool) and tram (Z out of square) problems might come into effect before ideal speed is reached. With high speed router spindles consist single flute tools. Don’t be temped by cool looking 4+ flute tools. They are more expensive and will give you a worst cut and will fail faster.
Slicer3 is a new plugin for Google Sketchup from TIG. It allows you to slice an object into pieces that can be cut and re-assembled into the part drawn in Sketchup. This would be great for a laser cutter.
In high school I did several architectural models and cutting the terrain was fun (for a while), but always very time consuming. This tool would have saved me many hours of cutting and one nasty cut to my index finger.
Here are some images from the Google Sketchup blog that show some terrain being sliced in 3 different ways.
I decided to try a simpler example. This is a little project box, that I might cut out of Acrylic or foam board. If you subtract the time spend on screen shots and writing the steps, it probably took about 3 minutes to do. Here was my process. Continue reading ‘Slicer – Google Sketchup Plugin’
I saw this post over at the Make Magazine Blog. This is an interesting method of containing the exhaust gas on a particularly nasty material. It basically puts the work in a box with an IR transparent window. The box has a fitting to suck out the fumes. It uses a polished silicon wafer as the laser window that was bought off eBay.
I probably would have put it in a Tupperware box, because the seal might be better and it is probably more resistant to the nasty fumes. I could have used this when I tried my vinyl record cutting.
I recently got my laser to do 3D printing via RepRap electronics. I thought a fun exercise in hacking would be to get the ReplicatorG program and the RepRap controllers to control the laser. Is this practical? It is probably not the ideal solution, but if you are trying to make a dual purpose machine with the ultimate lowest cost it might work. The biggest drawback is that RepRap does not do acceleration (yet). This means there is a limit to how fast you can go before you loose steps or shake the crap out of your machine. Also, there are not any fail safe features, like if you stop the machine in the middle of a run, does it turn the laser off. This would be added to the ReplicatorG configuration, but was not done for this experiment. Bottom line – no snarky, comments please, this was done for fun and learning only at this time.
I already had RepRap controlling the 3 axes for 3D printing, so that was done. The next part was to figure out how to turn the laser on and off. I needed to find something in RepRap flavored G-Code that would do this. In G-code, there are Gxx codes and Mxx codes. The Gxx codes generally control motion and geometry setup and the Mxx codes control things like spindles and coolant devices.
Replicat.org has a partial list of the M-Code here. The fan on/off M106 and M107 commands looked promising. I wrote some quick G-Code to test this. BTW: You can just type in G-Code in ReplicatorG and click the Build button to run it.
The Buildlog.net Open Source Laser cutter/engraver just added 3D printing to it’s capabilities. The printer system uses the existing CNC motion system of the laser cutter along with standard RepRap electronics. A quick release plastic extruder carriage is added to the existing gantry.
The upgrade project is called the Chimera Project because this is a hybrid of two self replicating machines. The parentage of the parts gets a little blurred. A Chimera is a animal descended from two genetically different animals. The laser is self replicating by making all its non off the shelf parts. Adding 3D printing takes that another step forward. The electronics were packaged outside the enclosure for development, but will be moved inside soon.
Changing modes is quick and simple. Swap the control cable, attach the extruder carriage and you are ready to print. You can even leave the printer carriage in place if you don’t need to use the full width machine when laser cutting. The total upgrade cost is less than $200.
The RepRap electronics can actually control the laser cutter with no modifications to the hardware or software, but the lack of acceleration parameters in the RepRap control system limits the speed the laser carriage can move before it becomes to jerky.
Already in the works are a tangential knife cutting head, Pen plotter and Dremel tool head. The entire system is open source and well documented. Starter kits for the laser are available and the 3D printing parts are coming soon.
I saw this while checking up on the progress of his selective laser sintering (SLS) project. Basically his idea was smaller power lasers might be able to cut through thicker material by “sawing” through it. The required power density might only be high enough at the exact focal point of the laser. Therefore, if you move the focal point through the material vertically, you might be able to cut it. He did it using a reciprocating motion, but you could also simply run the same outline at multiple levels, which is what us mill and router people have done for years.
The machine is actually a beautiful work of hacker art. He build it out of CD/DVD drives. He only gets about 1.5″ of travel on each axis, but that is all he needed.
James Williamson posted this on his REDTOROPE blog. It sounds like he was looking for an alternative to the really expensive TherMark laser marking ink.
Basically he used some spray paint intended for use on wood stoves. He did a lot of preparation to make sure the paint was perfectly adhered to the matal. He then created an image by laser etching away paint to reveal a negative image. I looks quite good with fine detail. I do not know how well the metal will hold up to corrosion though.
I often wondered what would happen if you painted ceramic glaze on metal and hit it with a laser. Would it cure to the metal.