<p>None, if I choose the right control board.</p>

<p>The <a href="http://smoothieware.org/" rel="nofollow">Smoothieboard</a> supports CNC "out of the box"; it requires initial configuration, which, while somewhat different, is actually easier than for a 3D printer. Boards supporting <a href="http://reprap.org/wiki/Grbl#Grbl" rel="nofollow">Grbl</a> or <a href="http://reprap.org/wiki/Teacup" rel="nofollow">Teacup</a> will be compatible for XYZ too, but may require some tinkering if you want to control the spindle.</p>

<p>You can use the same CAD software, but the set of <a href="http://www.freebyte.com/cad/cadcam.htm#cadcamsystems" rel="nofollow">CAM tools</a> will need to be considerably different.</p>

CC BY-SA 3.0
2016-06-22T08:40:37.830Z
2016-06-22T13:04:20.943Z
2016-06-22T13:04:20.943Z
SF.
<h2>Disclaimer</h2>
<p>Questions about other machines is still in kind of a grey area right now <sup>06/2016</sup> 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.</p>
<h2>The lowdown</h2>
<ol>
<li>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.</li>
<li>Software is not always interchangeable across machines (even within the same machine type) due to hardware requirements/communication.</li>
<li>Hardware is not always interchangeable across machines (even within the same machine type) due to design/scope of the purpose of the machine.</li>
</ol>
<h2>Things to consider</h2>
<p><sub>(In a nut-shell)</sub></p>
<p><strong>3D Printers</strong></p>
<p><em>Hardware</em></p>
<ul>
<li>Minimal speed/torque requirements compared to subtractive machine tools.</li>
<li>Good designs focus on temperature control via enclosures and/or electronics.</li>
<li>(Typically) uses heat block/nozzle/stepper motor to control material size/flow.</li>
</ul>
<p><em>Software</em></p>
<ul>
<li>Emphasis on &quot;plug-n-play&quot; UI/UX</li>
<li>Conceptually easier to generate tool paths. STL's provide outlines and software fills in the blanks like a coloring book.</li>
<li>Focus is on understanding material properties and temperature variability.</li>
</ul>
<p><em>Common Variability</em></p>
<ul>
<li>Material quality/shape</li>
<li>Environment temperature</li>
</ul>
<p><strong>CNC Mills/Routers/Lathes</strong></p>
<p><em>Hardware</em></p>
<ul>
<li>Maximum speed/torque requirements.</li>
<li>Good designs focus on rigid designs and handling harmonics.</li>
<li>Tighter tolerance components to ensure mechanical repeatability.</li>
<li>Relies on cutting tool size/shape to control material size/flow.</li>
</ul>
<p><em>Software</em></p>
<ul>
<li>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.</li>
<li>Good software allows many different &quot;canned&quot; tool paths for efficiency, tool types, and achieving desired surface finish.</li>
<li>Focus is on variability in cutting tool and speeds/feeds (as recommended by cutting tool suppliers for materials)</li>
</ul>
<p><em>Common Variability</em></p>
<ul>
<li>Material shape/hardness</li>
<li>Cutting tool shape/hardness</li>
<li>Cutting tool path</li>
</ul>
<p><strong>Lasers</strong></p>
<p><em>Hardware</em></p>
<ul>
<li>Minimal speed/torque requirements.</li>
<li>Good designs focus on consistent beam quality and spot focus, which is relative to constant power.</li>
<li>Uses focusing lens (sets spot size) to control material size.</li>
</ul>
<p><em>Software</em></p>
<ul>
<li>Emphasis on &quot;plug-n-play&quot; UI/UX and interoperability.</li>
<li>Dimensions are easier to achieve as less variability in the process compared to 3D printing/machining.</li>
<li>Focus is on laser power (typically for material type and depth).</li>
</ul>
<p><em>Common Variability</em></p>
<ul>
<li>Laser type</li>
<li>Spot size</li>
<li>Power supply</li>
</ul>
<h2>Summary</h2>
<p>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.</p>
<p>So, do not expect such a plug-n-play solution as each machine requires quality construction of its <em><strong>hardware</strong></em>, the ability to handle the variability of the process in its <em><strong>software</strong></em>, and, above all, an <em><strong>operator</strong></em> that understands the correlation and balance of these components.</p>
<p>All of that being said, there are some machines that seem to be tailored to this such as the machine by <a href="http://www.diyouware.com/" rel="nofollow noreferrer">Diyouware</a> and <a href="https://zmorph3d.com/" rel="nofollow noreferrer">ZMorph</a> <sub>(No affiliation, just examples)</sub>. However, notice that they have created their own software to meet a lot of these communication requirements.</p>
<p><strong>Update</strong>
I forgot to mention the fact that a kink in creating a interchangeable machine is the control interface. The controller converts the &quot;software speak&quot; 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 <strong>G02I2</strong> which could parse to <sub>(For all intents and purposes in javascript, not a practical language)</sub> <code>CWCircularInterpolation(2,null,null,null,null,null)</code> and run as:</p>
<pre><code>function CWCircularInterpolation(i,j,k,x,y,z){
 //Some code to take current position and command to create a canned circle path
}
</code></pre>
<p>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 <em>different</em> things to consider in attempting to combine these machining techniques into a single machine and get quality results.</p>

CC BY-SA 3.0
2016-06-20T16:19:56.857Z
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.
CC BY-SA 3.0
2016-06-20T16:21:30.623Z
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.
CC BY-SA 3.0
2016-06-20T20:10:14.170Z
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.
Tom van der Zanden
CC BY-SA 3.0
2016-06-20T20:45:51.277Z
Also, every decent CAM program meant to handle CNC milling will handle generation of the right G-code. The question is how robust is the Prusa's controller in interpreting the G-code. Obviously it won't be too happy if it's told to **M04 S3500** as it can't get the extruder to spin at 3500RPM counter-clockwise. But how would it handle this? Ignore? Abort? Crash? If it ignores unknown codes, I'm happy with it. Otherwise my work would involve finding/writing a sanitizer/simplifier for g-code, to make it comprise pretty much of only G00, G01 and possibly G50.
SF.
CC BY-SA 3.0
2016-06-21T07:13:14.263Z
@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.
kamuro
CC BY-SA 3.0
2016-06-21T12:50:29.323Z
@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.
tbm0115
CC BY-SA 3.0
2016-06-20T15:33:19.177Z
2016-06-24T17:39:07.973Z
2020-06-18T08:29:41.667Z
tbm0115
<p>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.</p>

<p>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.</p>

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

CC BY-SA 3.0
2016-06-20T01:46:29.593Z
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.
CC BY-SA 3.0
2016-06-19T23:31:06.383Z
2016-06-19T23:31:06.383Z
Lars Pötter
<p>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.</p>

<p><a href="https://i.sstatic.net/7zCMv.jpg" rel="nofollow noreferrer"><img src="https://i.sstatic.net/7zCMv.jpg" alt="pic of various configurations of the machine"></a></p>

<p>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.</p>

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

<p>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?</p>

CC BY-SA 3.0
2016-06-19T20:48:47.853Z
Can you clarify specifically what you mean by "Prusa's electronics"? Many different control boards are used by Prusa i3 type printers.
Ryan Carlyle
CC BY-SA 3.0
2016-06-19T21:22:41.167Z
@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.
CC BY-SA 3.0
2016-06-19T21:29:15.443Z
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.
Ryan Carlyle
CC BY-SA 3.0
2016-06-19T21:34:59.660Z
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.
Ryan Carlyle
CC BY-SA 3.0
2016-06-19T22:24:34.893Z
@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.
CC BY-SA 3.0
2016-06-20T06:55:45.497Z
Do your 'turning knobs that can be replaced by gears' set speeds or positions?
kamuro
CC BY-SA 3.0
2016-06-20T07:37:22.307Z
@kamuro: positions. The original, beyond the one lathe/drill/bit motor is fully manual, unmotorized. The knobs turn leadscrews that move the table (x,y) and the head (z) in mill mode, the blade (x,y,z) in lathe mode. It's a modular device which you can assemble in various configurations; three rail/leadscrew/knob assembly modules, a motor module with replaceable heads (radial vise, drill/bit head, grinder disc), a worktable with attachable vise, the "unmotorized side" lathe axis module, plus some "dumb structural" modules. You assemble them in any configuration, building the machine you need.
SF.
<electronics><mechanics>
How much work would be converting Prusa firmware/software for CNC use?
SF.
# How much work would be converting Prusa firmware/software for CNC use?

(Asked by: username_0 on 2016-06-19)

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.

[![pic of various configurations of the machine](https://i.sstatic.net/7zCMv.jpg)](https://i.sstatic.net/7zCMv.jpg)

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?

**Tags:** electronics, mechanics
> **Comments:**
> **username_1**: Can you clarify specifically what you mean by "Prusa's electronics"? Many different control boards are used by Prusa i3 type printers.  
> **username_0**: @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?  
> **username_1**: 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.  
> **username_1**: 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.  
> **username_0**: @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.  
> **username_2**: Do your 'turning knobs that can be replaced by gears' set speeds or positions?  
> **username_0**: @kamuro: positions. The original, beyond the one lathe/drill/bit motor is fully manual, unmotorized. The knobs turn leadscrews that move the table (x,y) and the head (z) in mill mode, the blade (x,y,z) in lathe mode. It's a modular device which you can assemble in various configurations; three rail/leadscrew/knob assembly modules, a motor module with replaceable heads (radial vise, drill/bit head, grinder disc), a worktable with attachable vise, the "unmotorized side" lathe axis module, plus some "dumb structural" modules. You assemble them in any configuration, building the machine you need.  

---

## 3 answers

### Answer by username_0 on 2016-06-22. Score: 0 | Accepted answer

None, if I choose the right control board.

The [Smoothieboard](http://smoothieware.org/) 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](http://reprap.org/wiki/Grbl#Grbl) or [Teacup](http://reprap.org/wiki/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](http://www.freebyte.com/cad/cadcam.htm#cadcamsystems) will need to be considerably different.


---

### Answer by username_3 on 2016-06-20. Score: 3

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

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.
Software is not always interchangeable across machines (even within the same machine type) due to hardware requirements/communication.
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.

> **Comments:**
> **username_0**: 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.  
> **username_0**: 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.  
> **username_4**: 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.  
> **username_0**: Also, every decent CAM program meant to handle CNC milling will handle generation of the right G-code. The question is how robust is the Prusa's controller in interpreting the G-code. Obviously it won't be too happy if it's told to **M04 S3500** as it can't get the extruder to spin at 3500RPM counter-clockwise. But how would it handle this? Ignore? Abort? Crash? If it ignores unknown codes, I'm happy with it. Otherwise my work would involve finding/writing a sanitizer/simplifier for g-code, to make it comprise pretty much of only G00, G01 and possibly G50.  
> **username_2**: @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.  
> **username_3**: @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.  

---

### Answer by username_5 on 2016-06-19. Score: 0

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.

> **Comments:**
> **username_0**: 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.  

---

