Major Visual Progress

Greetings. I’ve finally had some time off to spend in the hangar lately so here’s a rundown on what I’ve been up to…

The base of the table is all welded. This was no small task, especially considering my still underdeveloped skill in out of position welding. I was having all kinds of problems with vertical and overhead welds.  I think it boils down to my trying to do overheads too cool and getting a bunch of spatter in the torch.  I’d think I had it all cleaned out and then run a vertical bead and get a bunch of porosity due to spatter deep in the torch obscuring the flow of gas.  The really distressing part of all of this was that the problem welds tended to be unreachable by my angle grinder, so I didn’t have any way of grinding them out and trying again.

Then I learned about the die grinder. It’s basically like an industrial strength Dremel Tool. I got a pneumatic model for about $30. There are electric versions that would be handy if you didn’t have a high capacity air compressor, but they’re a bit more expensive.


Vertical down gone awry. Was really stressed about some of these bad out of position welds in hard to reach places until I learned about the die grinder.



Die grinder saves the day.

Looking ahead to trying to level out the table, I was confronted with how I was going to mount leveling feet. The brackets I built for the corners were made for castering wheels, and I didn’t have anyplace to mount the feet. Eventually, I decided to scrap the corner wheels in favor of two giant non-castering wheels in the middle of the table. I’d put the leveling feet in the corners and they could be retracted when I needed to move the table. I’m going to use the die grinder to remove the wheel brackets and replace them with tapped leg end caps so the feet can just screw into the bottom of the legs.


Base is pretty much welded. New wheel arrangement works great!



Once the table’s functional, I’ll make some top brackets for these. For now the U bolts work fine.



Temporary arrangement of leveling feet.

Once I had the landing gear all figured out, it was time to think about the risers. This was my first time doing 45 degree beveled joints. I started by tacking opposite corners. I clamped them onto the edge of the table so I had access to 3 of the 4 corners of the joint. This way I only had to flip and re-clamp once.

When I first started running beads, I blew out a couple of the outside corners because I was running too hot again and not traveling fast enough.  Did my usual penance of grinding and came back and had some success.


Getting ready to tack up a couple of risers.



This was just terrible. I was way too hot and blew a giant hole in the outside corner. Had to build it back up and do a bunch of grinding, but at least it was accessible.



Amazing what a good night’s sleep and a clean torch nozzle can do for your beads.

When it came time to tack on the risers, I used a couple of strong 90 degree magnets and a bar magnet to get it close and tweaked it with a good digital level.


Used a few good strong magnets to line up the risers before tacking them onto the frame.



Couldn’t help laying the rail on once I’d tacked up a couple of the risers. Starting to get a sense of the scale of this beast…



Using the rail as an alignment guide for the middle riser before tacking it on.



All 6 risers tacked on. Looks very close. Still lots of work to do.

It’s pretty cool to have the frame pretty much completed! I’m excited for the upcoming challenge of mounting the gear racks and v rail. In the next post I’ll show how I drilled and tapped mounting holes in the top horizontal beams and brackets.

Mesa Setup Part 2: Software

Once I had the hardware set up, it was time to get things configured in Linux CNC.  I had already downloaded the live cd from  The CD can be booted from in order to test LCNC on your system or you can use it to install Ubuntu and LCNC onto your hard drive. I took the latter course since there was no operating system pre-installed on my computer.


The IO and Stepper config is done in a program called “LinuxCNC Pncconf Wizard.” The version I installed didn’t come with the 5i25 firmware preloaded, so I had to download it from Mesa’s site here. Then I copied the 5i25 folder containing 7i76x1.xml (among others) to lib/firmware/hm2.

A couple of notes for folks new to linux: It’s really picky about permissions. In order to copy the directory and make sure Pncconf Wizard has permission to use the files, you’ll want to open a terminal window and type sudo nautilus. You’ll be prompted to enter your password and then a browser window will open and you’ll have root (godlike) privileges. Once you copy the folder, you’ll have to right click the xml file for the 7i76 and click properties. Then click on the permissions tab and change the owner from root to whatever your username is. There’s also a handy little linux reference here.

LinuxCNC Point and Click Configuration Wizard

Setup for Mesa hardware is done through the PNCconf Wizard. This is a program under CNC in the Applications menu. The online documentation for this wizard is pretty good and answered a lot of my questions as I was clicking through it. I’ll just highlight a couple points I thought were interesting or difficult.

Computer Response Time

One is on the Computer Response Time box on the “Base Machine Information” window. There’s a button to test the latency of your computer, i.e. how long a request might wait before getting to the CPU. Here’s what the manual says about this box:

LinuxCNC requires and uses a real time operating system, which just means it has a low latency ( lateness ) response time when LinuxCNC requires its calculations and when doing LinuxCNCs calculations it cannot be interrupted by lower priority requests (such as user input to screen buttons or drawing etc). Testing the latency is very important and a key thing to check early. Luckily by using the Mesa card to do the work that requires the fastest response time (encoder counting and PWM generation) we can endure a lot more latency then (sic) if we used the parallel port for these things…

If you press the test base period jitter button, this launches the latency test window … We need to look at base period jitter. Anything under 20000 is excellent – you could even do fast software stepping with the machine 20000 – 50000 is still good for software stepping and fine for us. 50000 – 100000 is really not that great but could still be used with hardware cards doing the fast response stuff. So anything under 100000 is useable to us.

Other places in the documentation also refer to “software stepping” vs. “hardware stepping” where hardware stepping is when you have the system timing coming from the 5i25 clock instead of the cpu. This is all very interesting and it’s good to know that it’s not as critical since I’m not using software stepping.  However, it’s confusing that they call the parameter “Actual Servo Period” when it appears to also apply to systems using stepper motors. I still have a lot to learn about all of this…


My latency test results.

My latency test results.

Driver Timing

Another item I spent some time on was on the “X- axis configuration” page. There are parameters called “step on time”, “step space”, “direction hold”, and “direction setup.” These parameters are different for different stepper motor drivers. There’s a table here that lists quite a few drivers and their respective values. The KL5056 however is not on the list so I was left scratching my head. The documentation says you can make a high guess on these numbers and you’ll just be limiting the top speed of your machine. I was thinking I might have to try that until I found another driver that looked identical that WAS on the list. Further inspection revealed that even the datasheets are the same. Only the name is different, so I entered those values.

Edit Post ‹ CNC Table Build — WordPress

It’s ALIVE!!

When I was done with the wizard, I powered up the 48V power supply and opened LinuxCNC. I was able to deselect the emergency stop button and turn on system power. When I clicked the limit/home switch, I got a limit error exactly like I should.  Then I clicked on the x axis jog buttons and the motor buzzed to life! I have to say this was pretty gratifying after the amount of time I spent reading manuals and double checking connections and settings.

Later, I ran the default cut file and was able to watch the tool moving around on the screen corresponding to the movement of the x-axis motor I had hooked up.  I have no idea if it was turning at the right scale or the optimum speed. Like I said in part one of this post, the point of this test was just to make sure I could get the pc talking to the motors and switches. I’m counting on there being more hurdles and fine tuning after I get the rest of the fabrication done on the table and finally mount the gantry. Now I’m even more excited to get on with that part of the project!

Mesa Setup Part 1: Hardware

This will be a 2 part post outlining the set up for testing of the hardware and software I plan to use with my CNC cutting table. The Mesa 5i25 is a PCI card that communicates via parallel cable with the 7i76 breakout card. The 7i76 sends step and direction signals to the stepper motor driver which then energizes the appropriate winding in the stepper motor to move the gantry. The 7i76 also has IO capabilities that I’ll use to set up limit and home switches on my table. Limit switches open when the gantry reaches the end of its travel and I’ll configure LinuxCNC to stop motion when the switch is opened. Home switches are used to re-reference the tool to a known position (say 0,0 on the table’s coordinate system).

I’ve spent the last several days reading (and re-reading) the manuals for Linux CNC, the Mesa IO and breakout cards, and my motors and controllers. I’ve also read a lot of forum posts and IRC logs. The goal was just to get the hardware up and running and see that the software is communicating with the switches and the motors. Last night I got a test motor and limit switch to function within LCNC. I could jog the motor both directions and the home switch functioned when I told LCNC to home the X axis. The following is a distillation of the process I followed to make that happen.

Installing the Mesa 5i25

Before installing the 5i25, make sure to move jumper W2 to the up position if you want to have 5V supplied to the 7i76 through the parallel cable. After reading the 7i76 manual more than a few times, I still haven’t figured out where else you would wire in this 5V supply- not that I see any reason to.

Sometimes in the documentation, you’ll see the 5i25 referred to as the “FPGA.” This stands for Field Programmable Gate Array, in case anyone was curious.


Move Jumper W2 to the UP position to have the 5i25 supply 5V power to the 7i76.


Getting ready to plug in my 5i25. Note I haven’t changed the W2 jumper yet..


5i25 installed in the Dell Optiplex 745’s pci port

Hooking up the Mesa 7i76

Once I had the 5i25 installed I moved on to the 7i76. There are two power levels on the board.  The pulse and direction signals that go to the stepper driver are 5V. The homing and position switches get hooked up to “Field Power” which you can supply with anywhere from 8V to 32V. For testing purposes, I just hooked it up to a 9V battery.  Each  bus has a status LED that lets you know it’s getting power.  Both LED’s should be lit. The diagram below is annotated to show how I had the card wired for testing. 20130910-140314.jpg

Home Switch

The switches I got for home and limit switches can be wired as either normally open or normally closed. The 7i76 manual suggests hooking them up as normally closed so an “open switch wire or wire shorted to ground will cause a detectable machine fault.” I connected the common terminal to Field input 0 on terminal bank 6 and the NC terminal to field power.


Testing a home switch.

Connecting the Keling 5056 Stepper Motor Driver

The pulse + and – terminals are wired to the pins labeled “step +” and “step -” on the 7i76 diagrams. The 5056 manual advises that the “ENA” (which stands for “enable”) pins are normally left disconnected. DIR + and – are labeled the same on both devices.

The A and B winding terminals are connected to the stepper motor. The data sheet for the motors should tell you which colors go to which terminals. If you can’t find that information, you can also do a continuity test between the wires to see which ones are paired together.


KL 5056 Stepper Driver. Arrows point to my dip switch positions.

Info supplied with the gantry kit specified 1/10 microstepping, and the stepper motor manual called for 5.0 Amps. I used the table printed on the 5056 to set the dip switches as seen below.


Dip switches correspond with values from the table.

Power supply

I hooked up the power supply with a 15 amp rated extension cord with one end stripped off. I connected the DC 48V side to the KL5056 with 12 gauge wire.


AC connection to power supply. Stripped 15 A rated extension cord.


All set up for testing.

In the next post I’ll go through how I installed the Mesa firmware and set up LinuxCNC using the Pncconfig Wizard.

Fab Week

I was off work last week, so I tried to get as much welding done as possible. I had the sides and ends of the table’s base done, so all I had to do was cut some mitered gussets, prep the joints, clamp everything together and start tacking… How hard could it be?


Sides, ends, and spans ready to be fit up.

First of all, there are a LOT of joints that needed prepped. I spent the better part of one afternoon just getting all the bevels ground and removing the oily coating that comes on the tubing from the areas to be welded. I could see how if you were doing this sort of thing all the time, it’d actually be worth it to get another angle grinder so you wouldn’t have to spend so much time switching back and forth between the grinding wheel and the wire cup brush. It’s only a minute each time, but it adds up and gets tedious.

My initial thought was to try to get everything squared up and clamped together before I did any tacks.  I used the long pipe clamps to hold the ends on and tried to use C clamps with scrap tubing to hold the rest of the joints square. As square as I thought I’d made the side and end assemblies, I couldn’t get it all to match up at the same time. I felt like I was playing whack-a-mole with a rubber mallet. I’d get one end squared up and the other end would come undone. I even got some 90 degree clamps from Home Depot. They looked a little light duty, but I thought it was worth a shot. It wasn’t. One broke as soon as tried to clamp it on, and another stripped out its threads as I tried to tighten it up.  Happily, HD gave me my money back with zero hassle.


Early attempt to get everything clamped together at once.




This Jorgens 90 degree clamp from Home Depot might be useful if you’re building a balsa wood birdhouse.


Pipe clamp in place trying to help square things up.

I wasted way too much time before I realized that I could square up one end, get it tacked together and do one corner at a time on the other end. This left all the warping and twisting to be corrected on the last joint. I got it pretty close, but I was about an inch out of square when measuring the whole table diagonally both directions. I used a ratchet strap from corner to corner to bring it back into square before securing the spans with pipe clamps and tacking those into place.


Ratchet strap holds everything square while pipe clamps hold the spans in place for tack welding.

Then it was time to start making some gussets. The saw’s manual recommends cutting square tubing tilted up on one edge so the blade’s going through a minimal amount of material. I realized that it wasn’t possible to get the cut I needed without laying the material flat in the miter clamp. I’m sure this reduced the life of my blade, but there was no way around it. I just took it slow when cutting through the flats.

Another issue I had when cutting the gussets was that they were too short for the clamp. That is to say that the short side of the gusset wasn’t long enough to extend beyond the pivot of the clamp. I wish I could say I was smart enough to see this coming, but I did end up shooting a gusset across the room before I wised up and added another clamp.

Also, don’t assume that just because the last number on the scale is 45 that if you rotate the clamp to its stop that you’re at 45 degrees. I made this mistake on my first cut and the piece didn’t fit right in the corner because it was more like a 50 degree cut.


Cutting shorter mitered gussets requires supplemental clamping to prevent the possibility of projectiles.

And then more grinding and clamping…


Gusset ready to be tacked.


Measure, Measure, Cut, Grind, Grind, Clamp, Repeat.

Once all 8 gussets were tacked into place I moved on to the surface. While not part of my original drawings, I decided to put some braces made of scrap 3/16″ x 2″ x 2″ angle on diagonals across the surface. This should help support the water table since I reduced the number of ribs on the frame from 3 to 2. I decided to do that after looking at some other similar sized tables that only had 1 rib and deciding 3 was overkill. The angle braces will also help keep the frame square. I left the ratchet strap in place till after I tacked them in place.

When cutting the first one, I cut the angle iron to length and then laid it in place on the table and marked the apparent angle of the cut.  This turned out not to be nearly accurate enough, so I had to resort to trigonometry despite it being after 10 pm. I figured out what angle I needed and used my trusty metal protractor to mark the angle.


High school trig saves the day.

Once I had cut the correct angles, I realized my usual clamping strategy wasn’t going to work to hold this in place.  There may be a more elegant solution, but this is what I came up with after some head scratching.


Had to get a little creative clamping the angle braces.



Must have been a productive day with all that saw dust!

The next day I cut the other two angle braces and tacked them into place. On both of them, I had one tack that looked as if it had no shielding gas at all. It’s taken me a while to figure this out, but that day was sunny and I had the big hangar door open. I’m thinking a breeze came through and blew away the gas?


It was as if there was no gas, but the valve was open.


Tacking on the second angle brace.

Before I tacked the third angle brace into position, I checked the squareness again. It took me way too long to figure out to use a welding magnet to hold the tape measure in place when checking the diagonals.


Functional fixedness would be a detriment to progress while working alone.

After it was tacked in, I finally removed the ratchet strap and checked squareness again. It was within 1/16″.


Look Ma! No clamps!


I’d really hoped to be further along than this after my week off, but I’m happy to be taking my time and making sure everything is done as well as I know how (which may not be saying much…).  I got a little bit of the actual welding done, but there’s still a lot to do. I’ve gotten some good hints on out of position welding after my last post. I’ll let you know how that goes.

Also, all the electronics have arrived and I have Ubuntu and LinuxCNC installed on the PC I’ll be using, so expect some progress there over the next couple weeks. Don’t forget you can enter your email in the box to the right to get updates as they happen. Thanks for reading!