Call for Support
thepulsar.be has been providing high quality articles, experiments and open-hardware instruments since 2009. I always choose to provide the content for free, without relying on paid advertisements/popups and such which spoil the overall user experience. As a consequence, I run exclusively on private donations through the Patreon plateform. I therefore ask you to take a moment to consider donating to support our 15yr+ effort on this website.
It is not usual for me to write reviews, but I wanted to make an exception to discuss the CNC milling machine that I bought from the company CNC STEP when I created my startup in 2023. I will go through what I liked and what I did not like about this machine and help you set up your own with all the tips I can think of as Im writing :)
An important note before I start: I was not paid by CNC STEP to write this post, and I bought the machine with my own money. The review Im making is a 100% honest-buyer review.
The CNC milling machine is shown in Figure 1 in its 400×300×110 mm configuration. They have 720×420, 1000×600, 1400×800, 1400×1100 and 2100×1050 mm versions as well. I chose the 400×300 mm version because I did not have a lot of space in my workshop to accommodate larger models. With the safety enclosure, lubrification system, PC and controller unit, I would say that the machine eats up about 2 m² - much larger than what the 400×300 mm might suggest!

Buying your first CNC milling machine from CNC STEP can be somewhat intimidating because you will need to pick between many options. Be sure to browse their [∞] website to have a glance at the different things they offer. All the quotations they sent were in German which didnt facilitate the process. I wish it would have been easier to compose my kit, so here are a few tips I can suggest:
The machine itself comes in different configurations. Apart from the size of the frame, you can ask for a more sturdy construction to machine hard material (item 1101 1400). I would recommend it as a de facto option to enable better machining of aluminum and brass. Also, you will need a slotted bed for the machine to hold your parts on (1101 1100). I didnt buy this one at first because I thought it was already included in the initial delivery, but it was not!
They have different spindles, but I went for the basic Suhner UAD 30-RF / 1050W spindle. It works fine to machine aluminum, brass and POM but the downside is that you cannot control the spindle speed from the software you set it on the spindle motor directly using a rotary knob. They have more advanced spindle motors which they recommend for engraving operations, but the price is higher. I didnt have any difficulty related to the fact that I cannot control the spindle speed from software.
Dont forget to buy collets of all sizes for your spindle! By default, the spindle ships with an 8 mm and 10 mm collet but this is not enough. I bought collets for 3 mm, 4 mm, 6 mm, 8 mm and 10 mm. They have imperial-sized collets as well, but I favor tools with metric shafts as I live in a metric country. Note that the spindle does not accept collets larger than 10 mm so you will be limited in your tool choice.
To operate the machine, you will need a CNC controller as well. The CNC controller is the physical bridge between your computer and the motors of the CNC machine. Again, they offer several options, but I recommend their ZERO-4, 5 channels, controller with KineticNC software. You will need this specific controller to operate the tool-length probe and zero finder. Also, be sure to have the KineticNC software shipped with it as I have found their other software barely useable (if not unusable at all) despite their massive price tag (>1500, offered for free when I bought the machine).
Last but not least, you will need a safety enclosure. I initially thought I would remove it from the order, but once you start working with the machine you realize how important it is. The enclosure comes with large doors and connectors that will automatically power off the machine when you open the enclosure. Be sure to include this option in your order, even if it is not compulsory (they strongly recommend it too by the way). If you buy the machine for a company and need a CE certificate, things get tougher get in touch with them for that.
I will discuss the tool-length probe (3006 0101) and the zero-finder (2601 0104) later, but you want to add these options as well to your order. Optionally, you can also include their minimum lubrification system (3005 0101) and a compressor (3005 1002). More on that later as well.
If youd like to buy exactly the same machine as mine, I put the complete list in Figure 2. Note that the price might have changed since I placed the order in November 2023.

I do not recommend buying tools from them as [∞] Misumi has much more choice, but I could eventually recommend looking into their clamping system. I have dedicated sections for these topics as well.
You will spend a lot of time in the KineticNC controller software to both configure your machine and run your programs. The software may look intimidating at first sight, but it is relatively well done and intuitive once you are used to the interface.
The main pane of the software is shown in Figure 3. On the left-side you have the currently loaded CNC program and a preview of the tool path of that program. On the right-side, you have on top the current position of the machine in its current offsets (G53 to G59). Errors and status messages are displayed at the bottom right of the screen. Finally, the center column shows you the spindle speed and current federate, let you enter raw CNC commands, start the spindle and lubricant, and change the current tool (see below).

I will dedicate a complete article to CNC programming, but it is important to mention here that the controller import commands from text programs (e.g. G00 X100 Y100 to move the tool to the position X=100 mm, Y=100 mm). Positions can be given in either an absolute coordinate system (G53), or a relative coordinates system with programmed offsets (G54 to G59). To set the zero position in relative coordinates, choose wathever offset you want to work in (G54 to G59) and click on the 0 button at the left of each position at the top right of the screen. If your CNC program goes outside of the reach of the CNC machine, the controller will stop execution and send an error message. I will discuss the G43/G49 options in the tool change section. Several macros, like the zero finder macros, are not available if the software is in absolute coordinates (G53) mode.
You will probably never use the raw commands, spindle speed and feed rate options. The reference drive (homing) should be performed only once or if you think you crashed your tool into your workpiece. Doing extra reference drives will not improve accuracy, on the contrary.
You can start/stop the spindle at any time using the spindle button. Similarly, you can switch on lubrification using the lubricant button more on that later. If you open the safety fence, the spindle and lubrification will be stopped immediately.
Up to now, I should discuss two important things about the controller and controller software:
(1) The program is not sent to the machine. Instead, each instruction is run sequentially through the LAN interface. The consequence is that the machine will stop if you unplug your LAN cable or if your computer goes to sleep. I screwed up some jobs because my laptop was not plugged in to AC properly be sure to check that.
(2) Tool setting and tool selection are ubiquitous in the controller. It is important to set them correctly or your CNC program will not work and there is even a risk to damage your workpiece, tools and machine if you dont configure them correctly. The first time I used the machine, I did not consider tool settings and ran into repetitive issues such as errors messages radius compensation error. I will discuss tool settings in the tool change section.
Lets now move to the Jog/Setup pane in Figure 4.

The Jog/Setup pane is the second most useful pane in the program. You will use it to setup your work, adjust the offset coordinates, and perform cleaning at the end of your program.
In the Jog/Setup pane you can move the axis of your machine in all directions (X, Y and Z) by either continuous motion or given increments. You can also choose the speed at which you move the axis.
Typically, you will use full speed (rapid), continuous motion, to send the spindle near your workpiece (or far away when you clean the machine or need to unclamp your workpiece). As you approach your workpiece, you will switch to a slower speed (typically 1000 mm/min) to finalize the approach. Never use full speed for the Z axis to avoid crashing into your part. If you accidentally crash into your part, you will need to perform a new homing.
It is relatively rare to crash the tool into the part using the Jog/Setup pane, but it happened several times that I did crash when using raw commands because I mixed up positive and negative numbers meaning for the Z axis when in relative coordinates. A typical scenario is that I would want to send the tool 1 mm above the top of the workpiece and actually sends the tool 1 mm below the top of the workpiece! The machine should survive the crash but your tool may not, and your workpiece is likely to have a massive dent after. Theres nothing worse than destroying the flute of a 150 endmill because of such inattention!
I will not dig into the diagnostic pane which only serve during initial setup of your machine to check things like safety doors connections etc. I will not discuss either the custom pane as it only contains macros that we will cover in the zeroing section.
Now that we are familiar with the basic interface, we can cover a very important pane which is hidden into the software: machine settings. To access machine settings, you first need to login as Client-Admin using the default password 1234 in User > Login. Once you are logged in as administrator in the software, you can go in Configuration > Machine. Since its very easy to screw up your settings, backup your configuration using File > Export Settings before changing anything. Log back in as the Default User once you have modified what you need to. The machine settings pane is shown in Figure 5.

Most of the settings are set during the initial setup by importing configuration files crafted by CNC STEP for the exact machine you ordered and provided on an USB stick. It includes things like the calibration of the axes (how many motor steps per mm), acceleration parameters, IO pinouts, safety settings etc. Unless you know how to fine-tune these settings, it is not recommended to modify them.
There is one exception to this rule, which is the Macros pane of the settings. Here, you can define values that can be accessed in the CNC programs but also in macros. A macro is a sub-programs that can be called from your main CNC program. In the following sections, I will require you to add/modify some of these macros parameters so its important that we cover how to do that first!
Also, you can define an area that your CNC programs cannot access using the ATC Keepout Area settings. If you want to configure your machine like mine, copy the ATC settings in your own machine. More on that in the tool change section.
Going back to macros, it is interesting to know that, in KineticNC software, almost all CNC commands are in fact macros. For instance, the CNC command M3 that starts the spindle is implemented as:

where #0, #1 and #2 are inputs parameters, #O3 and #O4 are IO pins (defined in machine settings > input/output).
When running the command M3, the machine will actually disable IO pin #O4 before enabling IO pin #O3. Similar behavior can be found in commands like M7/M8/M9 which drives coolant/lubrification. Some macros like M6 are more complex and will be discussed in the tool change section. You can modify any of the provided macros and even make your own!
The complete list of macros can be found in settings > macros, shown in Figure 6. As for the machine settings, backup the existing macros before making any changes. The macros are stored in the Folder C:\ProgramData\KinetiC-NC\macros.

Clamping is by far, to my opinion, the most complex topic regarding this CNC milling machine. I havent found yet a standard clamping methodology that would work in all scenarios.
Standard vices, like the one in Figure 7, are not suited for the machine due to its limited Z-axis range. Despite I purchased the vice of Figure 7 from CNC STEP, it does not work with my machine! The vice is too large and conflicts with the YZ rail of the machine. And even if you place the vice at the very left of the machine, such that it does not conflict with the rail, the part is held so high that it is impossible to use long tools like my 10 mm endmill! And Im not even talking of button the zeroing sensor on top of that I dont understand why CNC STEP sells those vices knowing their lack of compatibility with their machines.

An alternative might be their low-profile [∞] self-centering vice but I didnt have the time yet to give it a try. I would not consider the smaller pull-down vices as they cannot hold large parts, and I consider that most of my applications lean towards those larger parts. The self-centering vice is therefore on the top of my purchase list currently.
Note that in traditional machining, it is common to have the vice mounted on a swivel base to orient the part properly when you need to machine existing parts (or simply when using multiple setups). This is clearly not possible here due to the limited vertical space something that we need to take into account when producing our CNC programs. I will come back on this in a future post.
Another clamping technology that I did not try, and which is available from CNC STEP as well, are vacuum tables. In this clamping method, the part is held by suction of a vacuum through a series of holes in a mat. I have no idea how much force these tables can exert on parts, but I would be very reluctant to use it for large jobs. I believe this technology is better suited to panel machining, or electronic circuit board engraving. I will test this in the future, but it is currently not on my short list.
Similar to vacuum clamping, I obtained good results using double-sided adhesive tape to machine panels and apertures. This is my default technique for these applications as it works well and is relatively fast to set in place. I would typically tape a steel or aluminum plate to a MDF board which is clamped on the machine. The MDF can be machined through and is considered as a disposable part. In a similar manner, I tried cyanoacrylate bonding of larger parts but obtained mixed results so I would not recommend it as a standard procedure.

If you try the double-sided adhesive trick, there are two caveats I should warn you about:
First, the amount of force the adhesive exerts on the part is proportional to the surface being held. When machining small parts like apertures, it is important to machine the inner features first before machining the contour of the part. If you contour before you machine the inner features, the part will likely get loose during the machining process.
Second, heat is clearly not your friend here. Prolonged machining tend to heat up the plate which softens the adhesive, resulting in a loss of adherence. Lubrification or cooling are not recommended because they will soak the MDF board and produce loss of adherence as well. I would therefore recommend to reduce the machining speed to avoid heat build-up and use carbide tools without lubrication enabled.
Clamping claws such as in Figure 9 are a relatively versatile solution but they have several drawbacks as they cant hold small parts and, most importantly for my own job, they prevent you from facing the complete part at once without changing the setup. Again, the self-centering vice seems to be the best option to try out.

An alternative to clamping claws, which I did not experiment with yet, are side clamps. I will test soon with 3D printed versions of side clamping actions that would be compatible with the size of the machine but only if I cannot get satisfactory results from the self-centering vice first. The reason Im looking into 3D-printed versions is because I wasnt able to find miniaturized versions of them; all the ones I found were bulky and expensive.
An advantage of side clamps is that you can machine a guide block that is perfectly aligned with the travel axis of the machine such that you can clamp your part in the proper orientation. In this procedure, you would first bolt a guide block on the machine bed before machining that block along either the X or Y axis, depending on the orientation you would like to achieve. As long as you dont unbolt the block or the bed, it should stay aligned with the machine axis and serve as a reference.
In my post on [»] machining lenses mounts, I already experimented with 3D printed clamps reproduced here in Figure 10. They gave satisfactory results but the parts were very thick, resulting in a lot of stock material loss. I wouldnt be too confident reducing their size on the other hand. Also, I would stick to heat-resistant materials such as PETG instead of PLA knowing that, by definition, any FDM print is ultimately sensitive to heat. Finally, a big issue with plastics is that they will deform over time and I dont know how much time they can hold the part in place firmly enough.

Finally, I also experimented with dedicated parts holders. Here, you machine the footprint (contour) of the part you need to hold into a scrap part made typically in plastic, and use set screws on the side to maintain the part in place. Such a dedicated holder is shown in Figure 11. This technique was recommended to me by former colleagues but I couldnt get satisfactory results with it, and even damaged my part during machining (the part literally flew into the air!). As a consequence, I wouldnt recommend it but mention the technique for the sake of completeness, and as a warning in case you would like to try it yourself.

Zeroing refers to the action of setting the relative coordinates offsets such that the machine axes are in a known position from the CNC program perspective. We usually divide zeroing between Z-axis zero and XY-axes zeros because the procedure differs between the two.
The amount of precision required for the zeroing procedure depends on the job you are trying to achieve. When starting from rough stock material, a coarse zero can be sufficient. Here, the limit is how much the CNC program was made to tolerate. I tend to make my programs resilient to errors of typ. 5 mm along X and Y and 0.5 mm along Z. Better initial positioning can reduce the CNC program time and amount of stock required, but precise positioning takes time too.
When starting from an existing part, however, there is no choice but to be as precise as possible. This includes rework of existing parts, changing tool during manufacturing of a part, or machining different sides of a part (setup changes). Typical tolerances for X and Y axes must be well below 0.4 mm, and below 0.1 mm for the Z axis if you want your part to be ISO 2768 mK compliant. As an example, it is relatively obvious that you will want thigh tolerances when machining 0.25 mm chamfers on you part edges any departure larger than 0.1 mm would correspond roughly to 50% of the size of the feature you are trying to achieve!
Rough positioning can be done by eye, using Jog/Setup pane of the KineticNC software at low speed. You can use a v-shaped tool for moderately accurate XY positioning of small parts. For larger parts, I locate an edge instead and move by half of the part width. Alternatively, you can measure the center position using a ruler and mark it with a pen. At other occasions, you might want to zero one of the vertices of the stock. In any case, the zero needs to be placed close to where it is in your CNC program.
I almost never use Z-axis rough positioning. Instead, I use the Z-axis probe shown in Figure 12 (item 3006 0101 from CNC STEP).

To use the Z-axis probe, you need to use the Z0 finder with mobile tool length sensor macros in the Custom pane of the KineticNC software. The procedure is relatively simple and fast: you place the probe on the part with the tool center above the probe button and you run the macro. The machine will slowly move the tool down until it presses the probe switch and automatically sets your zero for the Z axis in the currently set offsets (G54 to G59).
Some important notes about this Z0 finder probe that being said:
(1) You will need to calibrate your probe using a procedure detailed in the documentation. Your zeroing will be as precise as the calibration you set but values below 0.1 mm should be easily achievable if you apply yourself.
(2) Be extremely careful when you set your tool above the sensor such that: (a) the tool doesnt crash on the side of the button, (b) you dont move the tool too fast along the Z axis because that could destroy your probe or probe calibration!
(3) It only works for parts that are large enough to accommodate the probe and will not work for parts smaller than ~40 mm. If you need to work on small parts, you will need to use a reference flat like a stainless-steel spacer between the two and remove the thickness of the spacer from the zero after. Similarly, it will only work for flat parts so be sure to debur the edges of your part before putting the probe in place!
To calibrate the probe, or if you want to find accurate zero position without the tool, you will need to approach your tool by small increments. Using a shim of given thickness (typ. 0.1 mm), you can identify when the tool contacts the part. For this to work, you need a very flat part and to approach the part with extremely small increments. You should be able to pull the shim out with very gently resistance. If the shim resists motion, the tool is too low. If the shim moves without any resistance, the tool is too high. Although a v-shaped tool would be ideal for this, the risk to damage it is too high so I would recommend using an endmill of moderate diameter, such as a 5 mm endmill.
Another technique to calibrate the probe is to approach a rotating endmill by small increments (typ. 0.01 mm) until you hear some cutting taking place. You might have to repeat the process several times and move the tool laterally as well to identify precisely when the tool touches the surface. This is the method I used to calibrate my probe.
Accurate XY positioning is much more difficult to achieve due to the fact we dont have control on the part angle when we place it on the machine unless you use the tips I discussed in the clamping section. If you machine an existing part, it is in theory possible to find the part orientation by locating two points on two perpendicular faces of the part. I will keep this for another post that being said as Im still working on it.
In any case, you can use an edge detector probe such as the one of Figure 13 (item 2601 0104 at CNC STEP). Although the calibration procedure of that probe is extremely tedious, it produces satisfactory results especially for round parts like the one of my [»] previous post.

The probe comes with different macros including: hole (>5 mm) center detection, left Y-edge detection, bottom X-edge detection, and XY-edges detection. As always, it is possible to write your own macros to cover the cases that have not been met by CNC STEP. It is worth noting that the tool can also detect Z contacts, but that CNC STEP does not offer any macros to make use of that.
CNC STEP claims an overall accuracy of 0.2 mm, a repeatability of 0.001 mm for linear motion and 0.006 mm repeatability for circle center detection. To test the accuracy of my own calibration, I machined a hole in a brass part and used the circle detection method to identify the position of the hole. Since I did not re-home the machine in-between, I could compare the initial zero coordinate (in G53 mode), and the center coordinate found by the probe. This is illustrated in Figure 13.
I repeated the measurement by rotating the probe by 90° increments. The largest deviation measured was 0.12 mm from the actual set machined center. By averaging the four measurements, the deviation could be decreased to 0.03 mm. Repeating the measurement at the same probe orientation yielded a 0.001 mm difference as advertised by CNC STEP. All the figures are in-line with the data provided by CNC STEP. It is even possible to accurize the zeroing procedure by making averages of detection at different probe orientation although the provided macros do not automate this behavior. I will report these findings to CNC STEP because I consider it could become a standard procedure for precision jobs!
Tool settings and tool management are something that can be overlooked when starting with CNC, but it is in fact crucial to have the CNC programs operate properly. Without correct tool settings, you are likely to mess up your part or just get your program stall with a radius compensation error at line XXX message.
Without entering too much into CNC programming, you need to be aware that CNC programs can be written in such a way that the machine can compensate for tool wear by making it aware of the tool exact diameter, as measured with a micrometer or equivalent tool. If your machine is programmed in such a way that the currently selected tool has an actual diameter of, say, 9.95 mm, it can offset the path in the program by 4.975 mm (half of the tool diameter) such that your cut has the exact dimension specified in the CNC program. Similarly, it can also offset the depth of the cut (Z) to account for the tool height when you change tools during a CNC program.
In both cases, using invalid tool settings, such as not having accurate tool settings or using the wrong tool id in the machine program, can lead to catastrophic failure. If the tool diameter is incorrect, you will either generate a cut that has the wrong shape dimension or an error if the controller cannot compute the offset path, such as trying to cut a 5 mm diameter disk with a 10 mm endmill. If you mess up the tool height and are in G43 mode, you are likely to crash into your part and damage your tool in an irreversible way not to mention screwing up your part completely.
In this section, I will first address how you set up your tools in KineticNC. Then, I will discuss in-depth how to address tool change during program execution.
The currently selected tool appears on the main pane as shown in Figure 14. To change the tool, you can use either the provided menu button or use the M6 Tn CNC command where n is the index of the tool you want to select. When selecting the tool from the tool selection menu, you can use either a manual tool-change where the operator changes the tool manually, an automated tool-change where the machine uses a pneumatic device to change the tool, or to force index change within the program. I do not recommend forcing the index of the tool, and, to my understanding, the automated tool-change is restricted to their higher-end machines. I therefore use exclusively the manual tool-change, when not directly using a raw CNC command instead.

You can configure each tool using Configure > Tools which will display your current tool list as shown in Figure 15.

By default the list is populated with 10 tools, but you can add as many tools as you want. You can save your tool list as a .csv file, but I havent found a way to import a tool list into the software which is a feature that I truly miss. I recommend setting your tool list once and for all and match the tool indices in your CNC program.
Each tool settings can be edited as shown in Figure 16.

The only settings you should care about are:
Diameter 1, which is the exact diameter of the tool you are using. I recommend measuring the exact diameter of every tool you use and update this diameter as the tool wears up. If you dont measure the diameter, use the nominal diameter of the tool as provided by the tool datasheet (e.g. 10.00 for a 10 mm endmill). The meaning of diameter 1 is straightforward for tools such as endmill, but for other tools remember that it corresponds to the diameter that cuts into the part. I will illustrate this below with a chamfer mill.
Length 1, which is the length of the tool. This might be tricky to understand but this value is relative from tool to tool. That is, what matters is not its absolute value but the value relative to other tools. If you use the tool-change method I describe below, this value is updated automatically by the software and you should not modify it. If you set this value yourself, put the distance between the cutting part of the tool and the spindle chuck. Note that your program must be in G43 mode to account for tool length compensation, otherwise this value is not used.
Length 2, which is initially not used by the program but that I introduced into my tool change macro as discussed below. It corresponds to the distance between the bottom of the tool and the cutting part of the tool.
I mentioned that these settings are relatively straightforward for tools like endmills, but lets illustrate how to use them on a chamfer mill as shown in Figure 17. Diameter 1 corresponds to the cutting diameter of the tool. The controller software will automatically offset the paths in such a way that the chamfer will contact the part along that diameter. Length 1 is the distance between some reference position (here, the top of the tool) and where the tool should cut (the reference diameter). Length 1 is the value that is used by the controller to offset the tool depth (Z) when in tool length compensation mode (G43). When using the tool length procedure that I will describe next, this value is computed automatically every time you insert the tool in the chuck. Finaly, Length 2 is the distance between the tip of the tool and the cutting part of the tool. If you provide Length 1 manually, you do not need to provide any value for Length 2 as it is not used by the controller. Length 2 is actually used to compute the value of Length 1 in the tool change macro that I will describe next.

To measure accurately the value of Length 2 for my chamfer mill, I made a 3D printed tool which is shown in Figure 18. The dial is zeroed using a reference flat. Then, you can insert the end of the chamfer mill to measure Length 2 directly for a given physical reference diameter (4.98 mm here). In the KineticNC software, I then paste the value of Length 2 and set Diameter 1 to 4.98 mm.

Another example is given in Figure 19 for Misumi thread-mill MMTU-NO.6-40UNF. Diameter 1 corresponds to the nominal value of D in the datasheet (2.72 mm) and we can compute the value of Length 2 as l1-l2 which is 0.44 mm here. This is the tool appearing in the settings of Figure 16 except I measured 2.70 mm on my tool instead of the 2.72 mm mentioned in the datasheet.

Lets now dig into the tool change procedure. As I mentioned before, a lot of CNC commands are in fact macros inside the KineticNC software. The tool change (M6) command is one of them.
Heres the macro Im using which is a modified version of the macro provided by CNC STEP (under the filename M66.TXT):

The program first stops the spindle and lubrification before going to the safety position located at X=#963, Y=#964 and Z=0 in absolute coordinates mode (G53). The safety position shall be easily accessible once you open the doors of the safety enclosure such that you have access to the spindle. Settings #963 and #964 must be set in the Machine settings, as discussed in the KineticNC software section. You can copy the settings I used in Figure 5 if you have the same machine as mine.
Once at the safety position, the program will enter in pause and asks you to change the tool. Once you confirm that the tool has been changed, the program will run the tool-length measurement macro (G79) which uses the Z probe that I introduced in the zeroing section. This macro is provided by CNC STEP, and it drives the tool at position X=#960 and Y=#961. It then performs a depth measurement to measure the position of the tip of the tool and update the value of Length 1 in the tool database.
Two important remarks have to be made at this stage:
(1) Position #960 and #961 must be extremely accurate and correspond to the center of the probe button. If you do not set these values properly, you will likely crash large tools into the side of the probe and screw up your work. I recommend calibrating the values for #960 and #961 very carefully using either a v-shaped tool or a large, 15 mm diameter, tool.
(2) At this stage, the value of Length 1 corresponds to the position of the tip of the tool. This is the original behavior designed by CNC STEP.
Once the G79 macro has been executed, my M66 macro given above will update Length 1 using the provided value of Length 2 in the tool settings and store this updated value. It is fairly easy to find the value of Length 1 because we just need to subtract Length 2 to the value found in the G79 macro. It is debatable if I should have updated the G79 macro itself, but I felt it was better to avoid modifying too many macros and keep all my changes into the M66 one.
After the length has been updated, the machine goes back to the position (0, 0) in the offset coordinates previously used before calling the M6 command, and starts the spindle back on. Note that the macro resumes the spindle in clockwise direction even if it was in counter-clockwise mode before. Also, the lubrification is not restarted if it was enabled prior to the tool change. I tried to take this into consideration when writing my macros but failed to restore the values of IO something I should discuss with the people of CNC STEP one day on how to proceed.
To better illustrate the tool change procedure, you can see a video of the complete process here:
Lubrification is an important part of the machining process if you arent using carbide tools. When I bought the machine, I opted for the minimum lubrification system option without any hesitation. I must confess that, today, I might be tempted to move away from it.
The minimum lubrification system sold by CNC STEP is composed of a pressurized bottle containing cutting oil which has flexible tubing that allows you to dispense oil at the tool tip. You control when to lubricate through an electrovalve connected to the controller box via the M8/M9 CNC commands. The pressure is generated by a small (but loud) compressor that you can also get from CNC STEP.
As cutting oil, Im using ULTRACUT EVO 250. Its a concentrated product that you dilute at a 20:1 to 40:1 ratio with water making it about 0.5/liters (diluted form). While I dont think the diluted product is much toxic, the concentrated product must be handled with protection equipment (nitrile gloves and eye protection at the very least). Good ventilation is recommended as the fumes might be irritative. Consult the safety datasheet for proper handling of the product dont take my words for granted.
And were hitting the first problem here! Nothing in the CNC STEP machine has been designed for proper ventilation. If you are using the enclosure (which I hope you do), it should be possible to connect a ventilation system to the rear side where you have all the cables go through. I would also recommend that you install the machine not so far from an exterior wall or window such that you can address the ventilation problem before you install anything else.
Another problem here is that the cutting oil wont disappear by magic. If you spray 1 liter of oil on your part, it must go somewhere. Again, nothing has been foreseen in the CNC STEP machine to collect that oil, so it will just flow onto whatever table you put your CNC on. Due to the enclosure, I have found cleaning to be extremely difficult to perform. Also, plenty of oil will go into the slotted bed, making cleaning operations even worse. I would therefore clearly advise against wooden tables, or, more generally, any table that could soak cutting oil. If possible, I would even recommend trying to find a way to collect the excess cutting oil to dispense it properly.
Finally, I have a problem with the minimum lubrification quantity naming that they put on this product. My first try had been to switch on spray cooling during manufacturing, thinking that it would spray a minimum amount of lubricant over time. But when I came back to my workshop, less than 10 minutes after starting the milling job, the complete room was under heavy white fog with a definitely strong oil smell. The oil bottle had been emptied in only a few minutes! There seems to be something in the settings about lubrification management but I did not find any documentation on it. Instead, Im now relying on a manual activation of the lubrification system within the CNC program. I will typically apply 4-5 seconds spray between passes using M8, G4 H5, M9 commands (spray on delay spray off). The advantage of this method is that you can choose when you lubricate and how much for each tool you have.
As I mentioned in the clamping section, I would not use lubrification when using MDF boards or other parts that are susceptible to soak cutting oil.
It is important to choose if you are going to use lubrification or not before you set up anything. Once you started using cutting oil, I would not recommend anymore attaching parts that can be stained, such as porous SLS parts, as it is almost impossible to fully clean your machine.
A topic that is not often discussed, but mandatory the way I see it, is what you do to your parts when they leave the machine and before you can use them.
Generally speaking, you will want to avoid all sharp edges so having plenty of chamfer operations in your programs is important. I would try to avoid as much as possible manual deburring tools or sand paper, because the process is not very repeatable and it would be sad to touch to the relative high precision the machine can offer (usually in the range 0.01-0.1 mm). Rotary polishing tools work well, provided you use them for polishing operations and not for sanding operations. I do not have experience with sand blaster machines so I cannot judge.
Cleaning of the parts can be done using acetone or isopropanol and you should be prepared to have lots of them. I favor isopropanol because it is less aggressive for the skin. For small parts, I have found that machines such the Lyman Cyclone, shown in Figure 20, or the Lyman ultrasonic cleaner works very well and are affordable. The Lyman Cyclone belongs to the category of wet tumblers where the part is mixed with a lot, usually thousands, of stainless-steel pins in a cleaning medium. The tank rotates for any duration set up to 3h and the brushing of the pins on the parts creates a very clean, sometimes mirror-like, finish on the parts. It works remarkably well on brass its initial targeted material. Both the Lyman Cyclone and Lyman ultrasonic cleaner work using specific cleaning solutions. Im using the Lyman Turbosonic solution, but some people just use ordinary dish-washer soap. It must be stress that you should avoid at all costs ammonia-based cleaner for brass material and caustic solutions for aluminum. Ammonia makes brass weaker by dissolving copper, and caustic solutions decomposes into hydrogen in contact with aluminum an explosive gas.

If I need my parts to be black, the only technology I have tried yet is spray-painting which isnt so great unless you have professional equipment for that. I havent experimented much with anodization, bluing or nickel plating but I will keep you updated as I do. Its important that you figure out how to handle these aspects as well before you invest in a CNC machine.
As conclusions, Im really delighted with this machine and recommend it if you are setting up a small prototyping workshop :) Again, I was not paid by CNC STEP to write this review and paid the machine with my own money. On the other hand, we can argue that Im also making this post in the first place because I liked the machine, and that I might not have made it if I had been dissatisfied with it. So, take my words with caution and do your own research before deciding if you want to buy one or not.
I particularly enjoyed the performance/price ratio of the machine and the fact that it does not require a lot of experience in CNC. It is in fact my first CNC milling machine and I could obtain satisfactory results with it very quickly.
That being said, there are also a few caveats that I wished CNC STEP had fixed. This includes the extremely limited range of the Z axis once the slotted bed is in place, and the fact that clamping is really difficult in such conditions. I would have liked to have more options in the KineticNC software as well, such as the possibility to import a tool list from a .csv file something that should be fairly easy to add! Also, the controller sometimes enter in safety mode when starting the spindle and you cannot resume your CNC program from where it stopped! I had multiple occasions where the machine stalled in the middle of a tool change which required a lot of manual work to resume the job properly.
Last but not least, you should not forget that machining is only one of the many steps in prototyping parts. How you create the CNC programs and how you post-process your parts are as important.
I will continue looking into clamping and come back to you once I have found a satisfactory solution. In the meanwhile, I will prepare a crash course on CNC programming tailored for the KineticNC controller such that you can squeeze the best out of your machine!
Do not hesitate to share your thoughts on the [∞] community board to let me know if you enjoyed this post!
I would like to give a big thanks to Sebastian, Alex, Stephen, Lilith, James, Jesse, Jon, Karel, Kausban, Sivaraman, Michael, Samy, Zach, Shaun, Onur, Themulticaster, Tayyab, Sunanda, Benjamin, Marcel, Dennis, M, Natan and RottenSpinach who have supported this post through [∞] Patreon. I also take the occasion to invite you to donate through Patreon, even as little as $1. I cannot stress it more, you can really help me to post more content and make more experiments!
You may also like:
[»] Rapid Manufacturing of Lens Mounts
[»] RSA Cryptography Implementation Tips
[»] #DevOptical Part 8: Raytracing 101