It’s ORD Camp time again this weekend. Every year I have done a gonzo build of some type of CNC machine. This year I only had a few hours to spare, so I wanted something simple. These are never meant to be practical machines, just conversation starters.
This was hacked together and programmed in about two evenings with stuff I had laying around, but working at Inventables means there is a lot of cool stuff “laying around”. It was inspired by the RepRap Wally 3D printer, but vastly simpler in construction. This only uses a couple of fabricated parts. There are (2) sets of indentical actuator arms. The inner arms are hard mounted to small NEMA 14 stepper motors. The other end is attached to a wood base, but free to rotate on a bearing. The outer arms are mounted to the stepper motor shafts using Actobotics hubs. The other ends have 1/4″ I.D. flange bearings. These are bolted together, but free to rotate using a screw with a holed drilled for the pen. That is basically it for the mechanics.
The stepper motors are driven with some high resolution stepper drivers. These are driven by stock grbl 0.9 firmware running on an Arduino UNO. The UNO does not know what the heck it is driving though. The resolution is done in degrees. I wrote a quick conversion tool that converts Cartesian gcode to bipolar gcode using these formula.
L = 150mm
A = 90mm
I have my CAM software output circles as multiple lines, so circles don’t need to be dealt with. It has an odd, shield, shaped work area that you need to stay within. Before powering on the steppers, you place the pen at the top middle of the work area. You then tell grbl that both angles are at 51 degrees with G92 X51 Y51.
Here are a few more pictures taken at this weeks Beer and Making session at Inventables.
The shield has a solenoid driver that I was going to use for pen up, but I never got around to that. I kind of like how it runs so silently.
Here is a video of it running. It is rerunning over an old plot to show the repeatability. I think if I used true inverse kinematics the plots would look even better. Maybe Machine Kit on a Beagle Bone is in its future.
A few people have asked if the motors could be moved to different locations. Yes, I think you could put the (2) motors on any (2) joints and still have a controllable machine. Not all work areas would be the same size and some might have issues with much higher torque requirements. I believe separating the the motors by one linkage, like this one, yields the best results.
We build a lot of skateboards for fun at Inventables. Some of the guys even sell them at local craft fairs. They thought it would be cool to have a CNC router optimized for skateboards that was easily portable. I first thought about putting wheels at one end, then realized the machine itself could be a skateboard. We thought it would make a perfect Gonzo Build.
A Gonzo Build is something we came up with at Pumping Station OneCNC Build club. The concept is that we try to build an original, “one off”, CNC machine in one evening. They also tend to have a whimsical aspect to them, so we don’t take ourselves too seriously. We usually get about 8-12 people to help build. If parts need to be fabricated, they must be done that night on -site.
Building a stock Shapeoko 2 in one night is a challenge in itself, but we decided to up the challenge by totally tricking this out with every feature we could think of. We did have a few master CNC building ringers in the group, like Tait Leswing and David Ditzler.
Here are the stats of the machine.
1200mm x 250mm work area
Skateboard specific wasteboard supported by additional extrusions. It is narrower than a stock Shapeoko 2 and about 3 times as long.
Portable dual 24V/48V power supplies with master power switch.
Most of the Shapeoko parts came from reject area at Inventables, so there are a few dings and scratches.
The wasteboard was cut from 5/8″ particle board on the PS1 Shobot. It has a grid v carved into the work area. There are threaded inserts for clamps, primarily around the perimeter, but there is a truck bolt pattern strategically placed so a cut out board can be flipped or remounted accurately . It is supported below by 2 additional MakerSlide pieces and tied to the MakerSlide rails above. It is the bed turned out very rigid. It does deflect a little with heavy rider but pops right back. After the build, I added several coats of spar varnish to ward off the dusty footprints. Biggest guy to ride it so far tips in at about 230lbs.
We set our selves a goal of completing before midnight. Done or not, I was going to ride it at midnight. We thought we were finished about 20 minutes early. Everything worked fine except the Z axis was not moving correctly. It had the classic stutter and random motion of one coil wire not connected. We tried to find the problem, but over 2 meters of drag chain slowed us down. Midnight came some we dropped it to the floor and I rode it across the shop.
As a skateboard, it is pretty much a joke. On the first ride, we didn’t even have long board trucks, so the turning radius was huge and you can easily scrap an edge. The front has a handle cut into the nose of the bed. The ideal way to move it around is to lift the front and drag it on the back wheels.
When our Hackerspace, Pumping Station One, had it’s mini router repossessed by a member who was leaving, I decided to design a replacement. As always, I wanted to try out some new ideas on the build. I also wanted a project made primarily in metal to force me to get up to speed on using my CNC Bridgeport. The result is Bridgie.
Bridgie was inspired by the Bridgeport’s sliding X axis, so the working name became Bridgie. The other inspiration came from a sliding chop saw. This was used on the Y axis. The Y axis is remarkably stiff and makes the Z far stiffer than many other routers I have used.. All rods except for the Z are 20mm hardened steel and the 12mm ball screws add strength. The X is even stronger and the bearings always stay directly under the spindle. The entire machine weighs about 45 lbs..
I wanted a very clean design, so I designed it so it is totally self contained. The power supply, controller, limit switches and motors are totally contained inside the body of the machine. The only external interfaces are power and USB on the back. There is also a fan on the back that blows directly on the motor drivers and flushes any hot air out of the interior.
Spinning Ball Nuts
It uses 12mm ball screws on the X and Y axes. In order to bring the motors inside, I decided to use spinning nuts and stationary lead screws. This actually simplifies things because you don’t need to put expensive bearings on the lead screw, you just firmly attach it to the end plates. The lead screw becomes a structural member in the machine. The bearing on the nut is important for reducing backlash, so I used a large dual angular contact bearing. These were about $10 each from VXB. I did not take too many pictures during assembly, so here are some screenshots and renderings of the design.
Exploded view of the nut assembly.
Top view of X axis nut area
Bottom view of X axis
Controller and Firmware
The controller is an Azteeg X3 with a Viki LCD. I have used the X3 on a lot of projects. It worked really well on this project because it has the on board SD card and works well with the Viki LCD. The firmware is a highly hacked version of Marlin. Here is what I changed.
Totally altered the LCD menu system to be right for a router.
Tore out all the temperature stuff.
Left in the extruder features in case I want to add a rotary axis. I have used the extruder as a 4th axis successfully on other projects.
Added a Z zero touch plate feature.
Added a G54 machine offset like feature in EEPROM. You you set a 0,0,0 for your workpiece, you can recall this later if there was a power failure or other crash.
The arrow keys on the Viki jog the machine. In jog mode the up and down keys jog in XY. The rotary encoder is still active and sets the rate of the jog, so you can jog XY in fast, slow and micro mode all from one screen. Z can be jogged as well on it’s own screen.
There is a feedrate override feature on the main screen to speed up or slow down the feedrate.
All features are accessible via gcode, so pendant use is not required.
Homing and Work Offsets
The machine can be homed at any time. The Z homes first at the top of travel before homing the X and Y so this is less likely a chance to hit a clamp. Homing at the top of Z is not too useful for setting up your job, but the machine will now know the limits of travel and will never crash into the ends of travel.
The machine then homes at minimum X and Y. There are also two other configured locations called “park” and “access bit”. Park moves to center X, zero Y and top of Z. The head is out of the way in this spot so it is easy to clamp the work piece in this location. It is also has the minimum footprint in this mode for easy transport. It also has an access bit location that moves the spindle to the front for easy access to change the bit.
You can jog and set a work 0,0,0 anywhere you want. The machine resets it’s soft limits so jogging or G Code cannot crash at either end of any axis. If you restart the machine, you can recall the last work 0,0,0 so a previous job can be completed accurately.
Work area 12″ x 8″ x 3.5″
T Slot table (larger on all sides than the work area for clamping).
Sliding X table – Like a Bridgeport.
Spinning lead screw nuts.
Jogging with the pendant arrow keys
Z touch plate. You can manual set the Z zero on the top of the workpiece or it can be done automatically with a touchplate.
X,Y,Z limit switches.
Park feature that moves the machine into it’s smallest size for transport.
Weight: heavy…about 45lbs
Soft limits. If you set a new work zero, the machine still knows the new limits of travel.
Does not need a PC. It can run completely off the SD card with control via the pendant.
No exposed wiring.
Super quiet DC spindle.
Cooling Fan directed on drivers, but flushes the whole interior.
“Park” command shrinks the size to smallest footprint to help with transport.
Freaking heavy at over 45lbs
It would be nice to have easy access the the SD card. It is buried inside the unit now and you need to upload files to it via USB.
Add a real feed hold (immediate deceleration like grbl does now)
There a few thing I would do to make it a little easier to fabricate. A few holes were difficult to drill and tap and some simple changes would make that a lot easier.
I added an e-stop button since taking these pictures that cuts the DC power.
I wrote a couple post processor files for the Southwest Industries TRAK AGE3 CNC controller for my Bridgeport mill. The post processors should work for all Vectric programs, like Cut2D, V Carve Pro and Aspire. My Z driver has an problem, so I am currently working in AGE2 (2 axis) mode and these were written for that mode. There is an inch and a metric version of the post processor.
The files are output with a .CAM file name. They need to be saved with a numeric filename, so they can be read by the controller. Once imported, they are editable like standard hand input AGE programs. I think AGE is limited to 2000 events. You could have the post processor limit it to that many lines, but I did not do that yet.
Warning: Test this with air cuts and a hand near the e-stop.
Every year I make a new thing for ORD Camp. This year I made a delta router. The ORD contraptions I make, have one primary function; to spark conversation. This means they have to be interesting, a little whimsical and a little cool looking. They are generally rather small for portability and to keep the costs down. Practicality and suitability are way down the list, so go ahead and snark away. If you do, you are missing the point.
This year there happened to be a session on creativity with constraints. The question we debated for an hour was, do constraints help or hurt the creative process. Constraints can move you out of your comfort zone and maybe that is a big part of creativity. The topic was perfect for me because I had intentionally challenged myself with a few constraints on this project.
Use non captive stepper motors. Not a lot of people have seen these in use, they are cool to watch and they simplify the design.
Limit myself to 3 unique fabicated parts. People keep thinking deltas are more complicated than . This was to demonstrate the simplicity. Go ahead, design a Cartesian machine with only 3 unique fabricated parts. All other parts had to be commonly available parts.
Use stock reprap software. I could only touch the configuration files.
I met all the constraints except for one. I designed a common top and bottom bulkhead, but at machining time I decided it was silly to to spend the time to add holes only used on the top to the bottom and the same with the top. So the four unique fabricated parts are the top, the bottom, the carriages and the end effector. The top and bottom are 3/4 inch Baltic birch. The other fabricated parts are 3mm carbon fiber. All parts were setup and cut in less than 30 minutes on my homemade CNC router. A 3D STEP of my design is here.
The vertical rails are MakerSlide. I used steel V wheels because I had them laying around. The rest of the mechanical parts are Actobotics parts from Servo City. I thought they were an awesome discovery and then the next day I saw that Sparkfun started to sell them. They really worked out great. My only complaint is that they are imperial thread based parts. I prefer all metric on my designs.
The non captive stepper motors are really cool. The thread is a 2 start 8mm trapoidal, so it moves 4mm per rev. They are quite fast and strong. I custom ordered them at Robot Digg. The only drawback is you cannot move them by hand. You can’t spin the rod or the motor. In this design they are a little vulnerable too. If they get banged hard they could bend.
I used some mini arcade style switches for the limit switches. They are pretty nice snap acting switches, but probably a little less accurate than microswitches. I chose them because they would be super simple to mount without adding mounting brackets.
The controller is my favorite reprap controller; the Azteeg X3.
The spindle is a brushless DC hobby motor. It is a Turnigy Trackstar. The speed controller is a Turnigy Plush 30. The shaft is 1/8″. I used a simple shaft coupler to mount the bit. This added a lot of vibration so the motor could not run at full speed, but that was OK becuase the full speed is close to 30,000 RPM and 550Watts!. I eventually manually balanced the coupler and it runs a lot smoother now. I did it by drilling through the existing set screw holes to the other side with a small bit. I enlarged that hole until it was balanced.
Later when I got home, I thought it would be cool to add a rotary axis to it. The challenge was going to be using the extruder motor logic for the rotary axis. I had this attachment laying around that was bought from eBay a few months ago. A typical 4 axis machine simply disables one of the axes while using the rotary. That is not possible with a delta, so all 4 axes need to run at the same time. It is quite fun to watch.
It was perfect because it was so small. It has a 6:1 reduction gear inside. I made a simple base for it that would allow it to be quickly mounted to the router.
The firmware changes to Repetier were pretty simple. Extruders use millimeters as the feed unit, so I just converted that to degrees. The motor is 200 steps/rev with 16x microstepping plus 6: 1 gear reduction. This yielded 53.333 steps per degree. I changed the safe extruding temperature to a very low value and then just wired a 100k resistor across the thermistor pins so it read a constant value above the safe temperature.
I don’t have any high end CAM software that does anything really cool on a rotary. I did have an evaluation copy of DeskProto, but that timed out. I did have Vectric V Carve that does have a wrapped rotary feature. That would be good enough to do my Hello World project. I had to write a post processor for it. I basically hacked the Mach3 wrapped rotary post processor. I had to make it really simple and tell it convert “A” moves to “E” moves. There were a couple other changes too. The post processor is here.
Changes and Issues
I really need a tail stock to support the stock and help set up the job level.
The feed rate on rotary axes are tricky because millimeters per minute is quite different than degrees per minute and there is no way to deal with that in GCode. The actual feed rate through the material depends on the radius (Z). Programs like Mach3 can compensate for it. I could really hack the firmware or maybe write a post post processor to compensate the speed based on the Z.
I need to get some real software to some interesting carving with this thing.
People often ask me why the edges of their laser cuts are not square. The laser beam is being focused at an angle to a spot, so no cut can be perfectly square, but there are things that can make it worse. Note: All of the images are exaggerated to show the affects.
You first need to understand how the lens works. Laser cutters use a collimating lens. This means it takes parallel rays from the beam and focuses them to a single spot. For a couple of complicated physics reasons, it can never do this perfectly, but it should do it close enough not to be a factor in this discussion. Below is a picture of a collimating lens. A typical beam width is usually about 5mm-8mm and a typical lens is about 20mm-25mm wide.
You can see that the beam forms an hour glass shape. This can cause a little angle. With a 6mm wide lens and a 50mm focal length, this angle is typically 3-4 degrees.
To get the least affect on your part, you might want to center the focus in the middle of your material.
If you are getting a bigger angle than a few degrees, it is more likely because the beam is not in the center of the lens. The lens will still focus to that same point, but the hour glass is at quite an angle to your work piece.
This type of angle is offset in one direction, so you may see it more in certain directions of travel. If the beam is moving from right to left in the above image, you might not notice the problem at all.
Does a longer focal length help? It can, but due to the complicated physics issues I referred to earlier, a longer focal length creates a larger spot size, which reduces power density. See this calculator.
3D Systems recently acquired Geomagic. Several years ago they acquired Alibre. Alibre is a parametric CAD program. It appears that they are simply re-branding the existing version of Alibre as Geomagic, but will incorporate feature of the Geomagic product line over time. Here is the basic product line.
I have used Alibre and Cubify Invent and find them to be quite capable. Some day I may loose my easy check out access to Pro/Engineer and these products are on the radar as possible solutions. I found the even Cubify invent could do a few little tricks that are a pain in Pro/E.
In a couple weeks we are going to do a CNC V Carving night at Pumping Station One. We hope to fabricate a number of designs on the CNC router. This blog post will serve as a basic introduction to the concept and will help people get artwork ready.
What Can V Carving Do?
V Carving uses a V shaped bit to to “carve” a design into the material. Because the bit has a v shape, you can cut narrow shapes with the tip or wider shapes near the bottom.
You can even cut shapes wider than the widest part of the bit by doing multiple passes of the bit. The depth of the cut is proportional to width of the cut, so you need to make sure your material is thick enough. If you have very wide areas, you can set a depth limit and you can make that area have a flat bottom with a second flat bit.
Normally routers cannot cut square inside corners because you are cutting with a round bit. V Carving can get around this limitation because the bit can rise up into the corners until it gets to the zero radius tip.
V Carvings can look great simply cut in the natural material, but they can really pop when you put a contrasting finish in the carved areas. This is a time consuming process and can be difficult to do well.
You can often shortcut this process by using masking materials. You start by applying a background finish to the work piece. This is then masked with tape or specialized masking material. The router then cuts through that as it is cutting the design. Now, only the cut area is exposed and you can simply spray paint the exposed area. If the design has multiple colors you can cut one color, paint, remask and repeat the process.
The files should in in DXf, DWG, AI, EPS or PDF format. Many programs like InkScape and CorelDRAW can output these formats. If you have hi resolution bitmap, some of these programs can convert to a vector format. Feel free to try that, but help with that will be beyond the scope of the session.
The quality of the masking material comes into play with very fine details. If your design will leave tiny isolated dots of masking, some materials may not stick well enough and break free during cutting. If that happens, you can manually touch up those areas later. I like to use Avery Paint Mask, but plain masking tape, adhesive shelving paper and materials for vinyl cutters also work.
What is good artwork to start with
Avoid very thin lines lines. The material needs to be needs to be perfectly flat and consistently thick for this.
Very large areas to cut will take a long time, so avoid them for this session.
Multiple colors. Multiple colors is OK, be each color needs to be separated from the other color so there is masked uncut area between them.
This logo would work. The red would be the base material and all other colors would be cut and colored.
This one would be very hard to do because of the adjacent colors.
How to bring the artwork to the session.
To save time, the artwork should be as ready to import as possible. Problem artworks will be pushed to the back of the queue and might not get cut.
The artwork needs to be in a digital, vector format. By digital I mean you can sent the file electronically. Vector files are created with actual geometry. Lines are lines and not a string of pixels. Scans and photographs are not usable. If you zoom in and the image gets pixelated, it is not ready to use. The shapes also need to be closed. If you have a square, for example, all the corners need to meet or the software cannot determine inside from outside. Tiny gaps can be closed in the CAM software, but if you can see them, close them.
Try not to be too complex or have large cut areas. These will take a long time and will limit how many people we can accommodate in one session. We can still create G-Code, but you many need to cut it at a later date.
If there is time I my cut small PS:One snowflakes for the people who did not bring any artwork.
The idea material is a smooth, pre-finished piece of wood. It needs to be as least as deep as 1/2 the width of your widest feature if you are not planning a flat bottom. The material should be as flat and consistently thick as possible or the results can be distorted, because the depth of the cut is so critical. Avoid oily or wet finishes because the mask material may not stick well. Plywood does not look well and often interior layers have voids.
I met programmer and maker, Joe Walnes, through a few local Chicago maker groups. He showed me a really cool web based G-code viewer he wrote to preview his 3D printer G-code. It used WebGL for super smooth motion of the model. It also allowed you to drag and drop your own files right into the page. It worked great, but really only worked with 3D printer G-code. He posted the code on GitHub.
I have a couple programming projects in the works that need a G-code viewer, so I decided to update his program to handle more types of programs. Joe had a really nice UI and design pattern for the code, so I left that alone. He also helped me out with a few issues as I worked.
A parser is a bit of code that breaks down text into tokens, or the basic grammer of the G-code. He was working with very well formatted G-code so his parser was pretty simple.
G1 X5 Y5 Z6 E0.124
I was dealing with really Fugly lines of G-Code like this, so I needed to totally rewrite the parser.
Reprap 3D printers basically use G1 (straight moves) for everything. I needed to add the code to handle G2 and G3 (arc moves). This was a little tricky because there are no arcs in WebGL. I had to break them into small line segments. Joe also treated each Z level as a separate layer. That is nice for printers, but not for general G-code. I changed that and the way the color of the lines worked.
A Work in Progress.
It works on all my CAM generated 3D printer and CNC router G-code, but I want to add code to deal with more advanced features that are often hand coded like incremental moves, machine offsets, parameters, math functions and subroutines.
I will post the source code soon.
You need a WebGL capable browser like Chrome, Opera or Firefox. I hard to turn on WebGL in my Firefox. I got it to run on my Android phone in Opera, but could not spin/zoom the model with the screen controls.
To view your own files, just drag and drop the G-code into the browser. It will use the zoom settings for the previous model, so if you drop something that is a different size or offset to the side you may need to zoom around to find it.
The subject of skateboards came up about 2 weeks ago at meeting of local makers. One of the PS:One Hackerspace guys confessed he wanted to buy a longboard for getting around town. Longboards are more about basic transportation and carving smooth turns than doing tricks. The large size also encourages design and graphical creativity. I thought it was the perfect opportunity to get the creative juices flowing. It was a fun project that cost less than $50 to complete.
Once I get these ideas in my head I am totally obsessed with them. The only way to clear my brain is to actually build the thing whether I need it or not. I finally got some time between 2.x Lasers and ORD Bots orders on the CNC router last Sunday night.
3/4″ baltic birch deck.
Logo inlay on top near the front in a contrasting wood type.
The inly would be 1/4″ thick so minor dings and chips would not wreck the inlay.
Pockets cuts on the back to look cool, reduce the weight and give the board a little flex.
Miter the edges of the pockets for a cool look, make it more comfortable to carry and make it less prone to chipping.
Round the perimeter edges.
I really like the drop style truck mounting, but I would stick with a conventional bottom mount to start with.
Drop through mounting – Image from Moose
I found a whole bunch of longboard PDF templates here at Silverfish Longboarding. I started with the ST11 version. I felt the exposed wheels would allow more wheel, truck and mounting options without the wheels “biting” the board. The outline had a few sharp corners that I smoothed out. I didn’t want the line that is produced when you round the edge with the sharp corner. I imported an SVG of the snowflake logo from the PS:One wiki and sketched in some pockets on the back that looked cool, but still preserved the strength off the board with hope for a little flex.
I bought a truck and wheel kit off eBay for about $35 (free shipping). I only did basic research into what made a good choice. I just bought something that fit the basic requirements and looked cool (wide, reverse kingpost, big red wheels).
The basic deck is 3/4″ thick Baltic birch plywood.. The local high end lumber yard, Owl Hardwood, had some really nice 13 ply material. The top side is perfect. The back side is really good with only a few small blemishes and all the inner layers are high quality with no voids. Most plywood has knots and voids on the inner layers. The exposed edge and the pockets would show the inner layers so I wanted them to look good.
Cut the inlay piece out of 1/4″ thick oak.
Mount the Baltic birch on the router and check for Z flatness in the inlay area. I mounted it on a sacrificial particle board. This board was clamped by itself, so unclamping the plywood would not affect the position of the sacrificial board.
Cut the pocket for the inlay slightly under sized. I then continued to profile the edges larger until it fit tightly.
Glued the inlay in place.
Cut the bolt holes for the trucks.
Cut the deck outline. I purposely cut extra deep into my sacrificial base so that I would have a clear outline of the board. This would allow me to flip it squarely to do the back side.
Cut the back pockets 1/4″ deep.
At the last minute I decided to add the the PS:One logo to the back as a 1/8″ deep pocket. It turned out to be my favorite detail.
Used a 1/2″ 90 Deg V bit to miter the edges of the pockets. I did a profile pass on the pocket lines set inside the line 0.02″ to make sure the tip was always inside the edge for a clean cut. The depth was set to leave 1/16″ of the original pocket wall.
Unclamp the deck.
I used a 3/8″ 1/4 round bit with guide bearing on the router table to round the edges.
Stained using Minwax Golden Oak stain. It is a light colored stain that varies quite a bit with the wood type.
Sealed. Minwax Satin Poly Urethane.
Design, research, ordering parts…about 1 hour.
Total time on the router…about 1 hour.
Sanding and Finishing…about 1.5 hours.
$10 worth of baltic birch
$5 1/4″ x 8″ oak for inlay
$35 trucks and wheels.
Already had all bits, stain and varnish
I want to laser cut a bunch of little PS:One snowflakes out of grip tape and sprinkle them on the deck.
I am not super happy with the way the baltic birch stained. Woods like that can look blotchy due to varying wood density. I might have done better pre treating with a wood conditioner the birch or going without stain.