Want to build a CNC machine?

There is plenty of interest around here for CNC machines but I think GHI needs to support to make this simpler and more accessible to everyone, even for software developers!

So, we will be designing a gadgeteer stepper motor module along with all software needed to control the motors through simple command and all needed documentation to actually build CNC or stepper controlled machine. So, we are asking you for help… specs, hardware, software, gears…etc. The goal is for everyone interested to have their own professional-quality CNC for the lowest possible cost.

We need:

  1. Someone with experience in CNC machine structure and in sourcing the needed gears, belts…etc.
  2. Someone who knows g-code, parse the code and convert it into commands to the motors.
  3. Someone who understand the needed torque, amperage, size…etc.

Ideally, GHI will ship the stepper module with 3 suitable stepper motors and from there, the rest is all about building the mechanical part, from wood, plastic, metal, or just use the motors to control anything else! Note here that I am talking about decent size motors, similar to image below, except the controller board is made specifically for gadgeteer.

Questions:

  1. Interested? If yes, can you help us and how, and if not, will you be getting one kit?
  2. Should the stepper motors chip with the module or leave it to the user to buy stepper motors separately?
  3. What price range should we target?

I can help with G-Code parsing and command generation. I had previously written commercial DXF to G-Code converter.

  1. I will get one kit for sure!
  2. Having an option of get everything or everything without the motors would be nice.
  3. Cerb + 4Stepper Module + motors+(any other accessories)=?

Building a CNC has certainly been on my list of things to do. Sounds like a good year to do it :slight_smile: I don’t have any expertise in any of those topics but I do have a complete woodworking shop and can help build & test a prototype.

Some questions I have…

  1. What size CNC are we targeting? I have two needs - a) PCB creating (small enough to put in my office 1’x1’ ?) b) Small parts creation. (4’x4’)
  2. There are lots of CNC community projects out there that have been working on this for years. Should we consider a port to NETMF for one of their hardware designs?

I would prefer that none of the parts “chip”… :wink: As long as this is an open hardware design then I say that one kit that has all of the proven parts is sufficient. GHI should also sell the parts separately in case someone needs replacements or wants to incrementally build one and not incur all the expense at once. If someone wishes to use different motors they can do so using the OSH designs…

<$500 would be very attractive. <$300 for a smaller PCB only version would sell like hotcakes :slight_smile:

An example of a decent, inexpensive CNC machine is the ShapeOko. I’m building one right now. I also have an Egg Bot which is like a 2 axis CNC machine. Both use small NEMA 17 motors. The Shapeoko also uses the Pololu stepper drivers.

Photo of the partially complated shapeoko is attached. It’s pretty small with only an 8" x8" x3" work envelope; the makerslide is only 300mm or so. Makerslide can be hard to source, but it’s really nice:
http://store.makerslide.com

The sweet spot (for me) for CNC is something that will do decent sized robot bodies, and alumimum front panels for rack mount gear and synthesizers. That means apx 18" x 24" work area.

The problem with almost all hobby class stepper drivers I’ve seen is that they won’t come close to running anything serious. If the drivers can drive decent NEMA 23 motors you are severely limited in what you can do with it.

All CNC machines need an external power supply. Typical are 24v, 36v and 48v.

Support four steppers. Many gantry/router-style machines need to have a motor driving each side of the Y axis. In cases where you don’t need that, the fourth motor can be used for a rotary axis like I did on my Sherline (very old pics, see the bottom):

http://www.irritatedvowel.com/Railroad/Workshop/RotaryTable.aspx

So, I’d recommend that GHI figure out how big a driver you can make and still manufacture it while being cost-competitive with places like http://kelinginc.com . Unless you plan to offer a full motion kit, I would leave it at recommending some steppers you’ve tested, and be very clear about bipolar/unipolar and how many amps per coil. You could source compatible ones yourself, but they likely won’t work for many uses.

Keep in mind that the drivers should be suitable for driving steppers for:
[ulist]Small CNC machines (routers, non-ferrous metal), not full 4’x8’ routers as requirements are too high
3d Printer (on my list to make - requires very little out of the steppers)
Laser cutter (also on my list. Also requires very little out of the steppers)
The Imperial march played on stepper motors ;)[/ulist]

Ideally, to be a good controller board, you should have provisions for using two limit switches (optical is generally best, mechanical if you have to) per axis.

Finally, consider making it Gadgeteer-compatible, but not Gadgeteer-specific. If you create some good hardware, people can use it with the FEZ devices, Arduino etc. and you can sell a lot more of them.

Pete

PS, this (and the semi-related idea of a dedicated robot module/shield) is something I’ve had in mind for a long time, I just haven’t had time to execute on it. I’m happy to share any ideas.

Pete

I have a CNC router and have just ordered the parts to build a 3D printer. I didn’t get the electronics for the printer because I intend to make my own, but I did buy the drivers:
http://www.ebay.co.uk/itm/280820726145

CNC milling / router machines have a very different set of requirements to laser cutters, plasma cutters and 3D printers.

Milling / routing requires a very ridged machine and can require quite strong motors to get everything moving at the required speeds. (There is such thing as too slow when milling / routing.) These are usually powered by Nema 23 motors (Up to about 150Watts of power per axis.) or servo motors. (150Watts plus.) They are usually driven using lead / ball screws or racks and pinions. They are generally quite slow.

Laser / plasma cutters and 3D printers don’t generally touch the work piece much and generally use rack and pinions or belts. They can be setup to move very quickly and don’t need strong motors. Nema 17 motors are a good place to start, or Nema 23 motors for lager machines.

The driver I linked to is commonly used by the RepRap community and for the price you can’t really do much better. Because of the use of belt drives, stepper motors don’t have to spin very fast to make the machine quick. This means that the motors can be kept under the mid-band instability speed range without compromising speed.

The controllers used by the RepRap community seem to be either:

  1. Controlled by an Arduino
  2. Limited to 12V (The drivers I linked to can be used at up to 35V - Higher voltage means more power and speed for stepper motors)

For this reason I will be making my own controller using my Spider. After this I will probably try out one of your new Cerb40’s and make it use that.

I think a “one size fits all” device will not work as needed. A lot of the RepRap stuff has custom G-Code “M commands” for controlling the extruder etc. I also think that new stepper motor drivers are not needed - There are already a large range of drivers, both cheap and expensive. There are also very cheap drivers for the smaller motors which price wise I doubt you can compete with.

A NETMF-based motion controller with both USB and Ethernet support could work well through - Add stand-alone control with an SD card and maybe touch screen interface and you have a useful product.

PS: The standard “Prusa Mendel” RepRap machine needs 5 stepper motors, but two of them can be driven off the same driver.

In my shop I have a Bridgeport Series 1 CNC I restored and rebuilt using a Smoothstepper, CNC4PC C11G driving Gecko G203V drives. Motors are 1150oz/in steppers. All controlled by Mach3. I also have a Emcoturn 320 CNC turret lathe running the stock Fanuc control.

Mach3/Gecko’s are the gold standard for building DIY cnc machines, so I’m curious why you guys would want to reinvent the wheel?

I think this is a good point. What I’d love to see is a set of clear instructions on the Wiki for integrating Gadgeteer with some of the more popular DIY CNC/Extruder/Cutter technologies out there. The interface between the motors and the micro is the place that would be most helpful to me personally. If we had a solution where I could wire the steppers up to a module that supplied power and then have the Gadgeteer board drive the motors (perhaps with plans stored on the SD card, or even controlled over the network from a PC), that would go a long way to making a DIY CNC machine more approachable for me.

In terms of costs, I would love to see something that could come in under $400-500, but I don’t have enough background on DIY CNC to know if that’s even remotely realistic.

In terms of use cases, personally, the two use cases that are most interesting to me are a home-made laser cutter, and PCB prototyping. I got to see one of those during my trip to Redmond last week, and the idea of instant prototype modules is very appealing. :slight_smile:

I think I wasn’t clear. The goal here is to make this an option for gadgeteer users, for those who do not own a soldering iron and do not know what a stepper motor is. Otherwise, the Internet is full of options and information.

Here is what I think, I want to build a robot with steppers, or a CNC machine. All I need to do is to plug the module into any main board and now I can use SD, Ethernet, or whatever modules are available for gadgeteer. This is just an example.

For this use-case, I think the user is far more likely to want to use small motors.

I’d suggest a Gadgeteer module which can hold 3 of the Pololu drivers. (Due to only having 7 I/O lines per socket.)

It should be able to support the full 35V motor supply voltage and should have self-resetting fuses.

Of course, there’s no reason why the drivers couldn’t be built in if you can do it for less cost.

There’s plenty of room in the DIY sub-Gecko space. I can’t imagine Gus would want to create industrial quality drivers like those.

There’s also precident here, but it’s almost always set up to work with Arduino boards.

NETMF is a relatively small player in the hobby microcontroller space and, unfortunately, can’t make use of many Arduino add-ons due to the voltage differences. I love to see things which encourage experimentation with it.

There’s also real (IMHO) opportunity for MCU-friendly stepper drivers that are mid-range in terms of what they can power. Most available MCU-friendly drivers are for smaller motors. Most larger ones are meant for parallel port (5v) signals.

Of course, the likely reason that space is nearly empty is it gets expensive fairly quickly :stuck_out_tongue:

Pete

Don’t forget you can use something like SPI if you want to do more controllers. This way, you can offload some specifics to an on-board microcontroller (GHI does this with some other modules already) and come up with a simple id/step/direction protocol.

For most expected small motor uses (like 3d printing), you need 4-5 motors/driver pairs, especially if you’re thinking dual extruders in 3d printers :slight_smile:

The Pololu 4988 drivers are great for very small stepper motors, when the drivers are actually in stock. They go out of stock a lot, though, and really are limited to very small motors. Those are what I’m using on my Shapeoko. Being limited to 2A per coil, however, locks you in to the very lowest range of stepper motors. Upping it to even just 3.5A per coil really opens up a number of reasonably priced hobby options without getting into the high-end stuff.

Pete

If you’re going under the assumption that the Gadgeteer (or other NETMF MCU) is already a sunk cost, that’s doable for a small low-rigidity machine.

You can certainly go low-end and save a bunch of money. Use steel bar stock and skate bearings for motion. I never like those solutions though, and prefer something a little more purpose-built like either Makerslide (low end, but inexpensive) or pro linear motion components using round or rectangular profiles with recirculating bearings.

The price general limits the size and the rigidity. The latter means that most hobby machines can typically mill only plastics, wood, and maybe some aluminum. You can do more, of course, if you make them more rigid, eschew belt drives and instead use quality leadscrews, and use higher-power driver motors. The cost goes up pretty quickly :slight_smile:

Here’s one that’s built a little stronger, and amazingly, is mostly MDF. It uses oilite bearings to save money, but still comes in at almost $600 without electronics or motors:
http://microcarve.com/mcMV1.html

(I purchased one of his Z axis kits to play around with on my own setups)

Here are some other interesting kits I’ve run across (edited, as the forum software doesn’t seem to work correctly with links in bulleted lists) :
http://www.mydiycnc.com/complete_kit
http://www.zentoolworks.com/product_info.php?products_id=75
Mini CNC Subset - Contraptor (not sure about quality here, but seems interesting)
lumenlab.com - lumenlab Resources and Information. (had a real hard time keeping up with orders, but nice stuff)
Actually, here’s a good roundup of kits (the shapeoko pictured has nothing in common with the final shapeoko kit): Pricing guide to DIY CNC mill and router kits

Pete

The issue with using SPI is keeping the axes in sync. I’m not sure how much of an issue it would be with the speed of the bus but it should be considered.

One solution would be to keep track of the latency of the connection and use that to tell the drivers to move the motors to x position, starting at time y and ending at time z. This of course limits the amount of control that the main device has.

You guys do not need to worry about the interface used or how to keep things in sync. This is what GHI will handle for you.

My only concern if we do not offer the motors is that how would a user know what motors/power-supply to order. Not everyone understand the motor types and specifications. And yes, the plan is to support decent size motors that requires separate power supply and higher voltages. There isn’t much you can do with 5V motors.

You can always put a list(model numbers, where to buy) of the recommended motors that have been tested.

This is a problem with stepper driver chips that use SPI. The L6470 can make use of an external clock so it is possible to have multiple drivers in sync. Another part of the problem is breaking down movements into suitable sized chucks for this type of driver to handle (since you tell them how many steps to move in a given direction at what speed.) You don’t really want the machine to stop between commands or decelerate between each command so this type of driver may not be suitable. I started on a driver for this chip and got as far as getting the command structure correct for daisy chaining the drivers.

Steps/direction type drives are conceptually more simple but require more precise timing. Most modern ‘digital’ drivers, both stepper and servo will accept S/D inputs. There are several ‘canned’ stepper drive chips available in the 2~2.5A range which will handle a 24V input. This is suitable for many applications and can make for some low cost drivers. These chips are somewhat touchy and will not tolerate abuse (i.e. too high an input voltage, over heating, etc.) These types of driver chips may not have mid band compensation built in either.

The drivers boards should also have isolated inputs. Having something go wrong and sending 24~48V back into your FEZ would make for a bad day. The isolation also helps to mitigate noise from feeding back into the FEZ.

One mistake I see newbies make is thinking that bigger is better when it comes to stepper motors, and that is rarely the case. For example I package ‘tiny’ 166 oz-in stepper with my driver kits to Taig and Sherline mills. Since these machines have a 20TPI leadscrews (lots of driver reduction), a smaller stepper (with lower inductance and mass, i.e. greater acceleration) actually performs better. For different types of machines different motors might be a better choice. For small/mid sized router tables a stepper motor in the 276-oz in range works really well. Just keep the drive ratio around 10:1, don’t fall into the trap of thinking that using really low pitch screws will make your machine ‘faster’.

Free advice is always worth what you pay for it, but it is based on building machinery for several years and running my own business serving the small scale CNC segment for about four years now. If you are interested my website is: http://www.soigeneris.com

This is the best idea ever!

Questions:

  1. I will be buying one if the pack convinces me it will suit my applications. (plexi, wood, alu)
  2. Maybe different kits?
  3. Depends on what we get?

Managing EasyDriver-style stepper interfaces (step/direction) is very easy, but in my (extremely limited) experience, a 72 MHz FEZ won’t have enough horsepower to manage acceleration and deceleration on multiple axes using a completely managed driver. You just can’t toggle pins fast enough.

Done in a native driver, however, it would be VERY easy. I imagine one could manage a buffer, or queue, of commands, keeping the buffer populated on the managed side, and executing the commands on the axes on the native side. Should be plenty of horsepower for that, even at 72 MHz.

At the Cerberus’ 168 MHz, maybe you could get away with a completely managed solution, I don’t know.

I might have a play with RLP tonight and do the I/O side, if I get a chance.

Edit: I just noticed this:
http://www.tinyclr.com/forum/2/2723/#/1/msg26797

If 50us is the smallest pulse width that can be done on a 72Mhz NETMF device, this is way over the head of this platform. What confuses me though is that it’s been done on much slower AVRs. (Although these are fully native and don’t have all the NETMF interrupts firing all of the time.

Does anybody know how much faster firing interrupts from the hardware timers would be ?