# How much work would be converting Prusa firmware/software for CNC use?

I have an option to purchase a hobby multi-purpose device (lathe/mill/drill/grinder/cutter) which is manually controlled, but easily converted for driving by stepper motors (all 3 axis are controlled by turning knobs that can be replaced by gears, with convenient mount to couple each to a stepper motor). I have the right motors and can easily obtain drivers for them.

That is the way to overcome the worst problem of converting Prusa to CNC: the flimsy mechanics not able to withstand stress and vibrations of machining. Then I can connect the drivers to the 3 axis of Prusa's electronics, optionally connect some driver of the spindle to the extruder output (or just control it manually), and it seems the hardware side of the device is done.

The problem is the rest - adapting the software. RepRap family of 3D printers being open source means their software and hardware can be adapted. It's only a matter of how hard it is.

Does anyone have any experience in that direction? What would such conversion involve? Just recalibration to the new gear/leadscrew ratios, or something more involved, like editing the sources to get rid of all the temperature safeguards and the likes?

• Can you clarify specifically what you mean by "Prusa's electronics"? Many different control boards are used by Prusa i3 type printers. Jun 19 '16 at 20:48
• @RyanCarlyle: I wasn't aware of that. Maybe instead of me clarifying, could the answer provide a short overview or make a suggestion of which board would be most suitable for the task?
– SF.
Jun 19 '16 at 21:22
• Well, the really short answer to that specifically is that 3d printer electronics are designed for 3d printers, and don't necessarily have the right inputs/outputs, command options, or motion control style for CNC machines. You can certainly do it -- lots of people build crappy little mills that run on Marlin (the most widely used 3D printer firmware) -- but I wouldn't recommend it. Likewise, CNC controllers generally aren't good at 3D printing. The best "all-in-one" controller option is probably MachineKit, but it has a very steep learning curve and I would not recommend it for newbies. Jun 19 '16 at 21:29
• So there are a few possible questions I think you might ask. "How do I convert this multi-purpose fabricating device into a 3D printer?" or perhaps something more specific like "How do I use a 3D printer controller like Marlin/RAMPS to do CNC milling?" Or "How do I pick a controller for a multi-purpose fabricating device?" But I have to add that this is a 3D printing Q&A community, and we don't really focus on all-in-one machines or CNC milling. Jun 19 '16 at 21:34
• @Ryan: That's why instead of these, I'm asking a top-level one that skims the surface of these. One that will help me compile a checklist of things that I'll need to learn, the right questions to ask and the right places to ask them. I definitely don't expect a complete working solution in the current answer - just an overview of the problems I'm going to face.
– SF.
Jun 19 '16 at 22:24

## Disclaimer

Questions about other machines is still in kind of a grey area right now 06/2016 and your question is, in my opinion, a bit too broad. However, I think it's a great topic to perhaps help direct the scope of this community.

## The lowdown

1. 3D printers, CNC Mills, CNC Lathes, CNC Routers, and Lasers are all very different! There are certainly areas where each of these may overlap, but the methodology is very different overall.
2. Software is not always interchangeable across machines (even within the same machine type) due to hardware requirements/communication.
3. Hardware is not always interchangeable across machines (even within the same machine type) due to design/scope of the purpose of the machine.

## Things to consider

(In a nut-shell)

3D Printers

Hardware

• Minimal speed/torque requirements compared to subtractive machine tools.
• Good designs focus on temperature control via enclosures and/or electronics.
• (Typically) uses heat block/nozzle/stepper motor to control material size/flow.

Software

• Emphasis on "plug-n-play" UI/UX
• Conceptually easier to generate tool paths. STL's provide outlines and software fills in the blanks like a coloring book.
• Focus is on understanding material properties and temperature variability.

Common Variability

• Material quality/shape
• Environment temperature

CNC Mills/Routers/Lathes

Hardware

• Maximum speed/torque requirements.
• Good designs focus on rigid designs and handling harmonics.
• Tighter tolerance components to ensure mechanical repeatability.
• Relies on cutting tool size/shape to control material size/flow.

Software

• Requires more manual input (typically) to account for where its tool is located. The mathematics heavily depend on accurate dimensions for the cutting tools, otherwise you could damage your part or the machine.
• Good software allows many different "canned" tool paths for efficiency, tool types, and achieving desired surface finish.
• Focus is on variability in cutting tool and speeds/feeds (as recommended by cutting tool suppliers for materials)

Common Variability

• Material shape/hardness
• Cutting tool shape/hardness
• Cutting tool path

Lasers

Hardware

• Minimal speed/torque requirements.
• Good designs focus on consistent beam quality and spot focus, which is relative to constant power.
• Uses focusing lens (sets spot size) to control material size.

Software

• Emphasis on "plug-n-play" UI/UX and interoperability.
• Dimensions are easier to achieve as less variability in the process compared to 3D printing/machining.
• Focus is on laser power (typically for material type and depth).

Common Variability

• Laser type
• Spot size
• Power supply

## Summary

Overall there are many, very different variables to consider between these technologies. I only focused on variables you might see out of a hobbyist-style machine and if you've operated any of these you'll know that there are many more variables that pop up for any of these machines.

So, do not expect such a plug-n-play solution as each machine requires quality construction of its hardware, the ability to handle the variability of the process in its software, and, above all, an operator that understands the correlation and balance of these components.

All of that being said, there are some machines that seem to be tailored to this such as the machine by Diyouware and ZMorph (No affiliation, just examples). However, notice that they have created their own software to meet a lot of these communication requirements.

Update I forgot to mention the fact that a kink in creating a interchangeable machine is the control interface. The controller converts the "software speak" into an easily parsed series of functions (typically G-Code) for the small computer to process its predetermined hardware processes. Ie, The slicer or CAM software determines that a layer of a circle be 3D printed, milled, routered, or lasered, so the controller should G02I2 which could parse to (For all intents and purposes in javascript, not a practical language) CWCircularInterpolation(2,null,null,null,null,null) and run as:

function CWCircularInterpolation(i,j,k,x,y,z){
//Some code to take current position and command to create a canned circle path
}


The point is that the software needs to handle the conditions and constraints of a different machining process and provide a well-equipped machine with the right commands. There are a lot of different things to consider in attempting to combine these machining techniques into a single machine and get quality results.

• I've worked with CNC professionally for a time, though only observed 3D printing from sidelines. I think I have the CAD/CAM software side covered - produce G-code that accounts for tool geometry, depth variance (layering), and so on. The hardware side would be covered too, to a degree. A rigid frame, good steppers, a drive with little play.
– SF.
Jun 20 '16 at 16:19
• The problem is "the middle" - a driver (both electronics and firmware/software) that can interpret the G-code, respect the speeds encoded (and possibly allow on-the-fly adjustments), and drive the 3 motors (or 4, incl. spindle), allow easy calibration (each time the tool is replaced, new "origin" must be established), and pause/abort (and optionally allow "rewind" a couple steps back) in case the tool breaks and needs to be replaced/re-sharpened.
– SF.
Jun 20 '16 at 16:21
• Why did you answer a question that is, in my opinion, too broad, with an answer that is even more broad? The question seems to be "what do I need to do to adapt the firmware to CNC machines" but your answer seems to focus on hardware. Jun 20 '16 at 20:10
• @TomvanderZanden: If the first sentences would be 'Your goal is in my humble opinion way too broad and unfocused because the respective focuus of the machines you are trying to unify are too different. I will elaborate on this by highlighting the differences in methodology of each machine:', would that be better? I think this broad answer gives an excellent idea of what is needed to adapt 3D printer firmware to CNC machines, because it shows how flexible firm- and hardware need to be to be utilized for a hybrid machine. Jun 21 '16 at 7:13
• @kamuro thank you, you got it! I recognize that the question is too broad, but it's also a grey area for this community. So, I wanted to encourage the questions at least,by answering this one. I figured there would be a meta post about it soon. I'll add a better preface to my post. Jun 21 '16 at 12:50

I haven't done this myself. But the temperature safeguards only apply to the 4th, the E axis for the filament. So configuring the right steps per mm would get you started.

The question is more what do you want to do with it and where do you get the G-Code to do that. You can not use a slicer to generate the G-Code for you.

But there is software for PCB Milling out there that should work with the configured Firmware.

• I know any professional CAM software can produce G-code. I don't know about amateur/free options, but that's not a question for your site :) And as for slicing... once you reverse the Z axis and put restrictions on travel between work points, that becomes pretty analogous.
– SF.
Jun 20 '16 at 1:46

None, if I choose the right control board.

The Smoothieboard supports CNC "out of the box"; it requires initial configuration, which, while somewhat different, is actually easier than for a 3D printer. Boards supporting Grbl or Teacup will be compatible for XYZ too, but may require some tinkering if you want to control the spindle.

You can use the same CAD software, but the set of CAM tools will need to be considerably different.