Unorthodox Home-made CNC Machine

Here’s a rather unorthodox home-made CNC machine we haven’t seen before!

[ModHappy] recently accepted a challenge to design and build a CNC machine out of cheap and readily available components from a hardware store.

Wandering around the store he noticed the plumbing isle and he started playing around with PVC pipes on the floor, greatly confusing the store employees. He had a frame constructed, but still needed a way to achieve linear movement. His calls were answered in the electrical isle, where he made use of conduit wall-mounts! They only required a minor modification to go from gripping the pipe, to sliding along it. A few fasteners later, some stepper motors from a broken scanner, a CD-ROM drive for the z-axis, some hacked together couplers using set screws, and the mechanical build was complete.

On the controls end, he made use of a cheap Chinese TB6560 CNC driver board off eBay, which he modified slightly to increase reliability. The whole thing runs off LinuxCNC (which is free) on his old laptop — good to note, it can also be run live if you aren’t yet enlightened with a Linux OS.

Stick around after the break to see it in action, drawing out an awesome site’s logo!

If you’re looking for a DIY CNC machine that is a bit more robust, here’s a bolt together version that uses metal tubing instead of PVC pipe.

60 thoughts on “Unorthodox Home-made CNC Machine

      1. I have used both expansion foam and a sand/epoxy mix to stiffen PVC based construction. The expansion foam works great and is easy to use. It adds a bit of mass and a fair amount of additional stiffness.
        Mixing a combination of sand with two part epoxy works great. Use slow setting two part epoxy for a good working time. Mix the epoxy up then add as much sand as you can but still keep it pour-able, Think oatmeal consistency. The sand/epoxy mix adds a huge amount of mass and dramatically stiffens the structure. The downside is it can be messy and the sand will settle a bit. The sand reduces the issue of overheating so you can fill fairly large volumes, just be aware of the settling issue. Sand/Epoxy is amazing at vibration dampening which could also be a big help in a CNC machine.

  1. May need some slight improvements to suit any particular purpose.. doesn’t seem strong enough to actually mill anything besides styrofoam, and may be too slow for 3D printing.. Otherwise very interesting use for PVC pipe.

      1. This was my thought as well. Either concrete, or maybe epoxy/granite. Just something to damp it and provide some rigidity. I’m pretty sure if you tried to run any kind of end mill bigger than about 1/16″, it would be a vibrating nightmare.

    1. You could also use metal pipes instead of PVC, I guess. Personally, if I were to build this, I wouldn’t consider it a be-all-end-all machine; it’s rather more of a stepping stone machine I can use possibly to mill parts for a better one.

  2. Whilst it’s definitely good seeing these sorts of projects being built, I’d love to see an equivalent article on how to get them WORKING and calibrate them. I don’t know much about CNC software but I imagine that must take a very long time to work out the software needed and tailor it to your specific build, This is the main thing that puts me off seriously thinking about building one of these.

    Does anyone have any good links/guides about this that I and others can read up on?

      1. Ollie, just learning the speeds and feeds of different cutting bits on different materials is as much a challenge as learning to configure linuxCNC, so get off your ass and learn it already! If you get stuck, contact me, I’ll help you out.

    1. I’ve just got my first CNC machine running (a clone of the Mantis 9.1, running GRBL to control it: and I too was worried about the lack of articles about calibration and setup. I was surprised how little there was to it in the end. I’ll blog about it shortly and add a link here, but it amounted to the following:
      1. Power up driver board and connect it over USB (using Universal GCode Sender)
      2. Power off (do this every time you change any wiring)
      3. Plug in steppers.
      4. Tell GRBL how many steps per mm you have (using 1mm/turn threaded rod makes that easy, it’s just the number of steps per turn).
      5. Tell GRBL how fast to move by default (100mm/min is a safe starter)
      6. Manually move the machine to the middle of its travel in all axes
      7. Power up. Hover one fringer over the reset switch in case things go wrong
      8. Type G01 X1.0 and your X axis should move 1mm
      9. Swap any pair of stepper wires over if an axis moves in the wrong direction

      Hmmm, now I write that, there’s more to it than I remembered. I’ll write it up properly. It’s not too bad though and so rewarding when you get the thing moving properly

      My only other bit of advice is build limit switches into your machine, or have something that will slip before the machine damages itself. You can guess how I know that :)

    2. Actually setting up the control software for the machine (LinuxCNC or Mach3) isn’t too hard if you have a board that is known to the software, tuning isn’t that bad either if you aren’t dealing with an axis that uses dual motors (unlinked/no stall feedback) to drive it, that is the only real stress I have had with building 5 machines in 5 years.

  3. My god, that’s slow. While it may be a great way to win a bet, it looks like any real CNC job is going to take entirely too long. Also, with a feed rate that slow, you can guarantee that the cutter will burn and melt whatever you are trying to cut. It’ll also experience very short tool life due to the heating of the cutter. I suspect that the marler will also dry out before completing a reasonable sized drawing so it likely isn’t very good for that either.

  4. “if you aren’t yet enlightened with a Linux OS.”

    Enlightened? Like Buddhism where you have to put yourself through hell to reach enlightenment? Yeah, that sums up linux pretty well. I am in the middle of doing a LinuxCNC install and it is fighting me every step of the way.

    Where Apple has “It just works”, Linux has “It just works if you tweak this in the command line here, recompile this, and reconfigure that.”

    I still maintain linux is worth every cent you pay for it.

    1. I had linux CNC installed from a live disk and controlling my router in under 2 hours including installing linux. not bad for free when you consider the alternative (Mach3) is something like $180.

      1. I cant run this machine from Mach3 and I cant use a parallel port. I need a massive amount of IO just to control the laser. Something like about 32bits of parallel IO at 15v logic level. That means I need to use a Mesa 5i25 with a 7i76 and 7i69 to get enough IO for this machine. First machine with low latency would not work right with the PCI card, second machine had high latency. I have it running so-so on another mobo. Waiting for another to show up that I am hoping will work better.

        Then there was trying to get the touchscreen to work. Had to fight drivers specificially for this rev of the OS for a week to get it working.

        Next there was trying to get the firewire camera I need for focusing to work without crashing the machine.

      1. Linux runs on everything and with everything only because it treats everything as generic hardware. I.e. it only uses the bare minimum set of features unless you hack and tweak it to.

      1. Ive got linuxcnc controlling a four axis mill (bridgeport interact) via parallel port breakout cards, soon to be five when I finish the mechanical build of the pivots on my trunnion table. And, Ive never had to recompile anything.
        I have had to configure and understand a lot of concepts and spent some time researching selecting a motherboard and dual parallel port pci card for low latency before starting (this is os independant but a lot of people use a controller such as a mesa board instead), and now I have ventured into using a centering microscope (cheap twoeyes b002 usb), two speed spindle with mechanical changeover gearbox with a microswitch to sense gear position but a vfd controlling the spindle motor, automated offset touchoff probing on toolchange, touchscreen (using a old elo till monitor), wired up my conversational joysticks to the insides of a old usb keyboard to jog the machine etc. They are edge cases, but, they are possible. And thats the thing, you can roll a working install out without delving beyond the needed by using a live cd and running stepconf gui, But when thats good and working and the euphoria dies down a bit and you want to tinker more and improve what you have, the capability and configurability is there and there has been some very helpful people on the #linuxcnc channel on freenet when Ive been struggling to understand some concept. In fact when I get more space finished and ready, I plan on a much larger cnc mill with a bad control and convert it Im so impressed, meanwhile I can carry on with the “little” interact. It helps I already run a linux based lan and have nfs for sharing etc, so I can just drop .ngc files in a network drive then wander in and use it. I have in the past ran the gui over a ssh X tunnel back to a machine in the office and observed it via a webcam and used it remote.

        Ive used mach previously on a lathe, next cnc lathe will be linuxcnc after my mill experiences. Its the tinkerers control. Im a mix of a geek and a mechanical engineer, its a easy choice. I have a wire edm machine with a older commercial control, and I wish that was linux cnc too, one day Ill be confident enough to change the control on it because I’d really like to add turn while burn, network it instead of crappy floppy diskettes and other capability that it doesnt have…

    2. I use mach3. It’s not perfect, but it’s pretty good, and tremendously flexible. I think the largest barrier with any software is really understanding what’s going on so you can tune it to your particular machine. I also like that I can use it without building a dedicated machine and having it take up extra space, that I don’t have.

  5. I had an idea to PVC, but time is my enemy. The only thing I’d pass on to this guy is using PVC as your glide. The wall mount connectors are a good idea, and would still be used. If you use a 3/4 PVC, it fits perfectly around 1/2 pvc and slides very nicely. Attach the wall mounts to the 3/4 pvc without modifying them and there you have it.

    gonna try this.

  6. Anyone who is interested in building their own CNC should check out CNCZONE.COM. There are hundreds of DIY cnc builds. Many using wood,angle iron, metal conduit pipe, skate bearings and treaded rod. Stuff that can easily be purchased at the home center, hobby shop. There are also DIY CNC examples using expensive linear rails, ballscrews, and extrusions. Homemade CNC’s that can be as good or better than some commercial versions selling for several thousand. Lots of information and the guys there are usually very helpful.

    Before I built my very first CNC, I spent many hours reading that site.


    1. It doesn’t have to be slow. They use a fine pitch lead screws, 20 threads per inch, and that slows things down a lot. Their stepper motors are somewhat undersized as well. They don’t say what power supply they’re using but I’m going to guess some lousy ATX conversion delivering 12 volts. That low voltage would have severe adverse effects on performance. TB6560s are a bit tricky to get to perform very well in the best of circumstances. I’ve a bit of experience working with the TB6560 driver ICs as I’ve built my own motor drivers with them.

      I’m getting 72 inches per minute travel out of mine addressing issues as best as I can. Which is still somewhat slow, but not terrible. I’d hazard a guess their machine probably doesn’t break 6 inches a minute travel speed. That’s slow! But like I said it doesn’t have to be.

      OK I just watched the video, maybe they can’t even do 6 IPM.

      Here watch this for something a bit more lively

  7. To all those who say my machine is slow. . .
    your right in that particular video it was slow i was really excited to have something together and it was set at 2.5 inches per min. but it is fully capable of 60 inches per min and it it cuts thin plywood with an 1/8 bit. I will send HaD an updated video soon. . keep a lookout :)

    1. 60 IPM? So that means you’re running your 1/4 X 20 thread lead screws at 1,200 RPM? That *is* pretty impressive. I’ll be looking forward to seeing that video. I can run stepper motors up to 2,500 RPM off TB6560 drives but they have no useful torque at that speed. Useful torque for me runs out at around 800 RPM.

  8. My first thought was: “What’s with the cordless phone? Is he using some kind of crazy DECT-based wireless control?”

    I mean, really … surely its not a normal phone sitting back there, impossible to reach. It must be hooked up somehow! :D

  9. I know this is old, BUT I saw this and I am using this design as a 3D Printer. I spent about $60 on all the PVC I needed I have the controllers from and old CNC machine that was not built too well, and instead of the plastic sliders I am using drawer slides I had laying around. So far the printing dimensions will be X & Y = 16″ and Z = 11″ (subject to change). I will be using a J-Hot End and Bowden extrude to keep the weight down.

  10. I am having trouble getting good latency out of a dell latitude. I was hoping the builder of this machine could share with me how to get the lattitude working well as a machine controller.

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s