
After designing and building a new router I decided to use UGS (Universal GCode Sender) and an Arduino running GRBL to run my router. For the most part, life was good but there was always the odd bad day. I set the UGS keyboard mappings to facilitate jogging the tool but occasionally UGS would lose the keyboard while the tool was moving. This resulted in botched jobs and even worse, tool breakage. Enough was an enough. It was time to use Mach3.
I have a licenced copy of Mach3 which I used to use on an old CNC milling machine. The only problem was the Mach3 I have was designed to run on 32bit Win7 communicating with the CNC miller over a parallel printer port. To move MAch3 to my router I would have to convert to 64bit Win11 and communicate over USB.
I didn’t want to spend a fortune upgrading Mach3 for my router so I thought I would give the BSMCEO4U-PP board a try. The board is designed to allow Mach3 to communicate with the router over USB without the need for drivers. I picked up the board from Amazon for £16.45 CNC MACH3 USB 4 Axis Motion Control Card, Interface Breakout Board for Stepper Motor Driver : Amazon.co.uk: Business, Industry & Science
USB motion control card – First thoughts
Initially, panic set in! All the documentation was on a CD and I didn’t have a CD reader. I took a USB memory stick and the CD over to a friend and copied the contents of the CD to the memory stick.
Panic over, or was it? Most of the documentation supplied with the BSMCEO4U-PP card is in Chinese. What good is that!
OK, with a little googling I found this –
Installation. Order of business
I fitted the card, installed the Mach3 software and added my licence. The procedure I followed is outlined below –
- If you are upgrading from an existing Mach3 installation then make a note of your current ‘Motor Tuning’ settings for your X,Y,Z coordinates. Only steps and acceleration are necessary.
- If you have an existing Mach3 installation then secure a copy of your existing Mach1Lic.dat file.
- Following the instructions in the manual (link above), install Mach3 from the media supplied with the board. This should be the version that supports installation on Win10 or Win11. Alternatively download from here.
The location of the files on the CD are given below. - The documentation indicates that you should copy the Mach3Mill.xml file supplied on the CD into the Mach3 folder (default c:\mach3). This must be done, do not think that your existing Mach3Mill.xml can be used.
- Copy the Mach3 plug-in supplied on the CD, to the Mach3\Plugins folder. The one supplied to me is called RnRMotion.dll.
- Copy your Mach1Lic.dat file to the Mach3 folder.
- Start Mach3 and select the new plugin. The name will be different to that of the file name. The file supplied to me was called RnRMotion.dll but the plug-in came up as ‘BS Motion Control…’. Make sure you select ‘Don’t ask me this again’.
- Update the ‘Motor Tuning’ using the settings you recorded in 1. above.
Having installed the system I set about wiring everything up, starting with the spindle.
Wiring up the spindle
This is were I encountered the biggest problem. I wanted to use Mach3’s capacity to switch on and off the spindle using the BSMCEO4U-PP OUT1 pin. I went for a simply relay controlled setup. To do this I needed access to a 24v source, the maximum allowed through the OUT1 pin. My existing power supply offers 36v, so I needed to wire in a buck converter to step the voltage down from 36 to 24v. The buck converter is modelled on the LM2596 DC-DC converter. I bought mine from Amazon here for £6.99. The digital display easily allowed me to see the output voltage as I adjusted the output to 24v. You can get buck converts without this facility but you will need a multimeter to adjust the output voltage.

The buck converter was wired to the BSMCEO4U-PP board as illustrated below.
I originally connected the low voltage side of the relay to the OUT1 pin without the resistor and diode which caused the OUT1 circuit to blow. I am now using a 2.2kOhm resistor to limit the current sinking to the OUT1 pin, see below. I’m hoping this will work. I will get back to this post after some test runs…
Update. I’ve been running the spindle for a few days and all now seems well. In truth I should have taken note of the documentation (link above). It shows that the ULN2003 Darlington array allows a sink current of 60mA although the datasheet for the ULN2003 says it will take 500mA. I’m hoping that the 2.2kOhm resistor will do the job. Technical stuff (and please any electrical bods shoot me down in flames if I’m wrong) V=IR so I = V/R which is 24v/2200Ohms = 10.9mA. The SSR-25 requires 7.5mA to trigger so a 2.2kOhn should do the job.

Wiring the Stepper motors
Having got the spindle control sorted I moved on to wiring the stepper motor controllers. Wiring the stepper motors is covered in the documentation downloadable using the link above. Just wire the X,Y and Z pul+ and dir+ pins to the XD,XP,YP,YD,ZD and ZP on the USB board. Use a common ground from the GRN pin to wire the pul- and dir- pins. NOTE: do NOT wire pul- and dir- to the DCM pin. The DCM pin is part of the 24v supply.
My X axis is driven with two opposing stepper motors. One was attached to the XD and XP, the other wired to the AD and AP pins of the BSMCEO4U-PP. To allow the two motors to stay in sync I used Mach3’s slave settings for mapping A to the X axis.
Having sorted the stepper motors I moved on to the limit switches.
Wiring the Limit switches
I have wired my limit switches as a series of normally closed switches. This does not provide the capacity to tell Mach3 which axis is limited, however I’m only interested in stopping the machine if it reaches a limit.
Assuming that the 24v and DCM pins on the BSMCEO4U-PP have been wired as in the spindle wiring above, here is the circuit I have used –

Mach3 Ports and Pins settings for the limit switches

Notice that the X++ and X– is the only limit axis used. As all the switches are wired in series it would not have mattered which of the axes was used.
File locations on the supplied media
