This is a follow-up to:
I originally planned to post everything at once all complete, but there's too much and it's been long enough. I'll add the rest when I have time.
## Machine Context
The Brother Speedio M200X3 is their 2nd-gen multi-tasking 5-axis CNC mill capable of 3+2/4+1 machining and 2000rpm turning.
The 3rd generation model, the Brother Speedio M200Xd1, was released in 2022 with a 28-slot ATC (up from 22) and a new controller (CNC-D00) that supports simultaneous 5-axis machining (5AX option).
## Inspection Report
The machine comes with a post-MFG inspection report like this: https://archive.org/details/brother-m-200-x-3-inspection-example
## Electrical Input
Oversize your solid state phase converter. My Phase Technologies PTE010RQT-H3S1 (10HP) was barely sufficient for the M200X3 (10kVA nameplate rating). The converter audibly struggles during spindle 0-16k rpm, and it cannot safely absorb the regenerative current during high-speed braking (ex. 16k-0 rpm) (machine alarm, converter alarm, worst case is spindle servo amplifier damage), even in elevator mode and thru comprehensive testing. I should have gotten the 20HP or even 30HP converter model. Fortunately, my converter does work if I ramp-down the spindle (ex. in 500 or 1000 rpm increments). I still like solid-state phase converters for their higher efficiency and reduced noise.
Use a delta-wye step-down transformer between the phase converter and the CNC machine (for proper 240V -> 220V stepdown and a degree of electromagnetic isolation/buffering).
## Spindle Rampdown Subprogram
Here is the spindle ramp-down subprogram (main program should call this with "M98 P05" before each instance of "M05"): https://archive.org/details/m200x3-spindle-rampdown
## Air Input
Clean, moisture-free air is important for machine reliability/longevity. I installed oil-free compressors with intake filters and 15um output filters. I installed an aftercooler and moisture filter. I installed SMC's new (2022) air filter series to achieve ISO 8573 air quality class 1:7:3.
SMC AFF/AM/AMD: https://ca01.smcworld.com/catalog/New-products-en/mpv/es30-17-aff/index.html
## Tool Install
An improperly seated toolholder (manual procedure human error) will fall out during the ATC cycle. I recommend visually inspecting to ensure no gap exists between the toolholder and the tool-slot half-ring.
## Speed Control
Rapid Traverse Override (non-cutting motion XYZAC): Speeds 1-3 are slow and good for learning/testing. Speed 4 is fast enough to be efficient but slow enough for reaction on probably-good programs. Speed 5 is extremely fast and should be used for peak efficiency on proven programs.
Feedrate Override (cutting motion XYZAC) and Spindle Override are especially useful on prototype parts (typically 1-2qty) to save reprogramming time. I find myself going up and down on the feedrate override pretty often.
## Floor
I've been happy with the polished concrete floor so far. For anyone planning a fresh build, check this thread: https://practicalmachinist.com/forum/threads/concrete-questions-for-new-shop.394216/
## CAD/CAM
My toolchain is Autodesk Inventor and Autodesk Inventor CAM.
Social impact start-ups (public benefit) can get multiple seats of the Product Design and Manufacturing Collection for 3 years (free) by applying at: https://www.autodesk.com/sustainability/technology-impact-program
Autodesk post-processors are here: https://cam.autodesk.com/hsmposts
1. Search "brother"
2. Download the latest POST for "Brother Speedio M140X2" (compatible with M200X3)
I recommend Visual Studio Code for editing POST files (it's what my team uses for C++ robotics programming too, so quite versatile): https://code.visualstudio.com/
The official POST training guide is here: https://cam.autodesk.com/posts/posts/guides/Post Processor Training Guide.pdf
NYCCNC posted an Autodesk POST editing video years ago:
But some steps are now obsolete/unclear.
You want these extensions: NC-GCODE, Autodesk Fusion 360 Post Processor Utility v4.1.3
Configure it with: VSCode Settings -> Search "Fusion" -> Find Autodesk Post Utility, Post Executable Path -> C:/Autodesk/Inventor CAM 2023/post.exe
Some of the example NC files on the utility still don't load properly, but there was a recent update this year to the M140X2 POST so YMMV.
For the POST instructions below, custom functions can be added at the bottom of the POST file for convenient reference/editing.
## POST Customization: Auto Spindle Rampdown
Let the POST automate calling "M98 P5" before every "M05". For phase converters that can't handle the braking-regen backfeed.
1. Add a custom function at the bottom of the POST:
2. Call it before each spindle stop:
3. Also call it before the end of the program:
## POST Fix: Dwell Bug
Problem: dwells under 1 second are not supported
Solution: change "clamp(1, cycle.dwell, 99999999)" to "clamp(0.001, cycle.dwell, 99999999)"
## POST Customization: Coolant Dwell
Problem: tool starts cutting before flood-coolant flow has time to spray tool-workpiece
Solution: add 1 second delay after coolant-on
## POST Customization: Easy Dynamic Work Offset for 3 + 2 Indexing
(has been tested but not fully accuracy/edge-case verified)
Problem: the "normal" way to set up 5-axis on this machine with rotary fixture offset G54.2 is awkward (even setting aside the price).
gkoenig describes it well here: https://www.practicalmachinist.com/forum/threads/brother-u500xd1-5axis.409474/post-4020022
I've implemented what he was asking for, where you can keep using your normal WCS (G54 thru G59) and simply call a subprogram to activate a temporary WCS whenever A+C changes.
The subprogram code is here (use with "M98 P32"): https://archive.org/details/m200x3-3p2-indexing
Automate the call with POST:
1. Add a custom function for clearing the tool before the A+C move:
2. Add a custom function to call 3+2 indexing subprogram:
3. In function "onSection()" (A+C Indexing with Tool Change):
4. Again, in function "onSection()" (A+C Indexing without Tool Change):
## CAM
Once the custom POST/subprogram for Dynamic Work Offsets is prepared, 3+2 CAM is simply:
Autodesk Inventor -> Any Part -> CAM (UI tab) -> Setup -> Any Process Step -> Geometry -> Tool Orientation -> Set desired XYZ orientation -> Keep "Setup WCS origin"
(10K max characters reached) (I have a ton more to post but let me know if there's particular things you'd like me to write about)
The Best Speedio for Small Garage Prototyping
Looking to pull the trigger on a compact Brother Speedio this month. I'm part of a small non-profit engineering team (5+) doing full-size humanoid telepresence robotics; we need to control our leadtimes as we have tight schedule arcs. Plan is get small/medium 1-off parts done in-house and...
www.practicalmachinist.com
New Machine Setup: Brother Speedio M200X3
This is a follow-up to: https://www.practicalmachinist.com/forum/threads/the-best-speedio-for-small-garage-prototyping.391703/ Pictures: https://archive.org/details/brother-m200x3-canada1/ Machine Selection Garage has limited width. I need to leave 700mm space on both sides of the machine for...
www.practicalmachinist.com
I originally planned to post everything at once all complete, but there's too much and it's been long enough. I'll add the rest when I have time.
## Machine Context
The Brother Speedio M200X3 is their 2nd-gen multi-tasking 5-axis CNC mill capable of 3+2/4+1 machining and 2000rpm turning.
The 3rd generation model, the Brother Speedio M200Xd1, was released in 2022 with a 28-slot ATC (up from 22) and a new controller (CNC-D00) that supports simultaneous 5-axis machining (5AX option).
## Inspection Report
The machine comes with a post-MFG inspection report like this: https://archive.org/details/brother-m-200-x-3-inspection-example
## Electrical Input
Oversize your solid state phase converter. My Phase Technologies PTE010RQT-H3S1 (10HP) was barely sufficient for the M200X3 (10kVA nameplate rating). The converter audibly struggles during spindle 0-16k rpm, and it cannot safely absorb the regenerative current during high-speed braking (ex. 16k-0 rpm) (machine alarm, converter alarm, worst case is spindle servo amplifier damage), even in elevator mode and thru comprehensive testing. I should have gotten the 20HP or even 30HP converter model. Fortunately, my converter does work if I ramp-down the spindle (ex. in 500 or 1000 rpm increments). I still like solid-state phase converters for their higher efficiency and reduced noise.
Use a delta-wye step-down transformer between the phase converter and the CNC machine (for proper 240V -> 220V stepdown and a degree of electromagnetic isolation/buffering).
## Spindle Rampdown Subprogram
Here is the spindle ramp-down subprogram (main program should call this with "M98 P05" before each instance of "M05"): https://archive.org/details/m200x3-spindle-rampdown
## Air Input
Clean, moisture-free air is important for machine reliability/longevity. I installed oil-free compressors with intake filters and 15um output filters. I installed an aftercooler and moisture filter. I installed SMC's new (2022) air filter series to achieve ISO 8573 air quality class 1:7:3.
SMC AFF/AM/AMD: https://ca01.smcworld.com/catalog/New-products-en/mpv/es30-17-aff/index.html
## Tool Install
An improperly seated toolholder (manual procedure human error) will fall out during the ATC cycle. I recommend visually inspecting to ensure no gap exists between the toolholder and the tool-slot half-ring.
## Speed Control
Rapid Traverse Override (non-cutting motion XYZAC): Speeds 1-3 are slow and good for learning/testing. Speed 4 is fast enough to be efficient but slow enough for reaction on probably-good programs. Speed 5 is extremely fast and should be used for peak efficiency on proven programs.
Feedrate Override (cutting motion XYZAC) and Spindle Override are especially useful on prototype parts (typically 1-2qty) to save reprogramming time. I find myself going up and down on the feedrate override pretty often.
## Floor
I've been happy with the polished concrete floor so far. For anyone planning a fresh build, check this thread: https://practicalmachinist.com/forum/threads/concrete-questions-for-new-shop.394216/
## CAD/CAM
My toolchain is Autodesk Inventor and Autodesk Inventor CAM.
Social impact start-ups (public benefit) can get multiple seats of the Product Design and Manufacturing Collection for 3 years (free) by applying at: https://www.autodesk.com/sustainability/technology-impact-program
Autodesk post-processors are here: https://cam.autodesk.com/hsmposts
1. Search "brother"
2. Download the latest POST for "Brother Speedio M140X2" (compatible with M200X3)
I recommend Visual Studio Code for editing POST files (it's what my team uses for C++ robotics programming too, so quite versatile): https://code.visualstudio.com/
The official POST training guide is here: https://cam.autodesk.com/posts/posts/guides/Post Processor Training Guide.pdf
NYCCNC posted an Autodesk POST editing video years ago:
But some steps are now obsolete/unclear.
You want these extensions: NC-GCODE, Autodesk Fusion 360 Post Processor Utility v4.1.3
Configure it with: VSCode Settings -> Search "Fusion" -> Find Autodesk Post Utility, Post Executable Path -> C:/Autodesk/Inventor CAM 2023/post.exe
Some of the example NC files on the utility still don't load properly, but there was a recent update this year to the M140X2 POST so YMMV.
For the POST instructions below, custom functions can be added at the bottom of the POST file for convenient reference/editing.
## POST Customization: Auto Spindle Rampdown
Let the POST automate calling "M98 P5" before every "M05". For phase converters that can't handle the braking-regen backfeed.
1. Add a custom function at the bottom of the POST:
Code:
// CUSTOM
function rampdownSpindle() {
writeBlock("M98 P5");
}
2. Call it before each spindle stop:
Code:
...
case COMMAND_STOP_SPINDLE:
rampdownSpindle();
writeBlock(mFormat.format(isTurningOperation ? 305 : 5));
...
3. Also call it before the end of the program:
Code:
...
function onClose() {
...
setCoolant(COOLANT_OFF);
(if block)
rampdownSpindle();
...
## POST Fix: Dwell Bug
Problem: dwells under 1 second are not supported
Solution: change "clamp(1, cycle.dwell, 99999999)" to "clamp(0.001, cycle.dwell, 99999999)"
## POST Customization: Coolant Dwell
Problem: tool starts cutting before flood-coolant flow has time to spray tool-workpiece
Solution: add 1 second delay after coolant-on
Code:
function setCoolant(coolant) {
var coolantCodes = getCoolantCodes(coolant);
if (Array.isArray(coolantCodes)) {
if (singleLineCoolant) {
writeBlock(coolantCodes.join(getWordSeparator()));
} else {
for (var c in coolantCodes) {
writeBlock(coolantCodes[c]);
}
onDwell(1); // dwell for flood coolant (CUSTOM)
}
return undefined;
}
return coolantCodes;
}
## POST Customization: Easy Dynamic Work Offset for 3 + 2 Indexing
(has been tested but not fully accuracy/edge-case verified)
Problem: the "normal" way to set up 5-axis on this machine with rotary fixture offset G54.2 is awkward (even setting aside the price).
gkoenig describes it well here: https://www.practicalmachinist.com/forum/threads/brother-u500xd1-5axis.409474/post-4020022
I've implemented what he was asking for, where you can keep using your normal WCS (G54 thru G59) and simply call a subprogram to activate a temporary WCS whenever A+C changes.
The subprogram code is here (use with "M98 P32"): https://archive.org/details/m200x3-3p2-indexing
Automate the call with POST:
1. Add a custom function for clearing the tool before the A+C move:
Code:
// CUSTOM
function writeRetractSimple() {
writeBlock("G53 Z450."); // Tool Z-Clear (this Z-clear is AC-safe without Y-clear when workpiece is within 220mm radius sphere from center of rotation)
//writeBlock("G00 Y0."); // Optional Tool Y-Clear (safest/furthest Y-position based on machine work volume; can be adjusted closer to optimize speed for small parts)
writeBlock(currentSection.wcs);
}
2. Add a custom function to call 3+2 indexing subprogram:
Code:
// CUSTOM
function updateWCS() {
writeBlock("M98 P32");
}
3. In function "onSection()" (A+C Indexing with Tool Change):
Code:
...
forceAny();
var compCode = isTurningOperation ? gFormat.format(143) : (useMultiAxisFeatures ? "" : gFormat.format(43));
var tempA = aOutput.format(abc.x);
var tempC = cOutput.format(abc.z);
// If and before A+C indexing, clear tool
if (tempA || tempC) {
writeRetractSimple(); // Clear Tool Before A+C Indexing (CUSTOM)
writeBlock("G00 " + tempA + " " + tempC);
updateWCS(); // CUSTOM A+C INDEXING
}
writeBlock(gFormat.format(100),
"T" + toolFormat.format(tool.number),
conditional(!useMultiAxisFeatures, xOutput.format(start.x)),
conditional(!useMultiAxisFeatures, yOutput.format(start.y)),
compCode,
conditional(!useMultiAxisFeatures, zOutput.format(start.z)),
//aOutput.format(abc.x),
//bOutput.format(abc.y),
//cOutput.format(abc.z),
conditional(!useMultiAxisFeatures, hFormat.format(compensationOffset)),
conditional((tool.type != TOOL_PROBE && !isTurningOperation), dFormat.format(tool.diameterOffset)),
conditional((tool.type != TOOL_PROBE && !isTurningOperation), sOutput.format(spindleSpeed)),
conditional((tool.type != TOOL_PROBE && !isTurningOperation), getSpindleDirection(tool.clockwise))
);
forceSpindleSpeed = false;
...
4. Again, in function "onSection()" (A+C Indexing without Tool Change):
Code:
...
if (a || b || c) {
writeRetractSimple(); // Clear Tool Before A+C Indexing (CUSTOM)
writeBlock(gMotionModal.format(0), a, b, c);
if (!currentSection.isMultiAxis()) {
clampAxis(abc, true, false);
}
updateWCS(); // CUSTOM A+C INDEXING
}
...
## CAM
Once the custom POST/subprogram for Dynamic Work Offsets is prepared, 3+2 CAM is simply:
Autodesk Inventor -> Any Part -> CAM (UI tab) -> Setup -> Any Process Step -> Geometry -> Tool Orientation -> Set desired XYZ orientation -> Keep "Setup WCS origin"
(10K max characters reached) (I have a ton more to post but let me know if there's particular things you'd like me to write about)