Introduction
The Roland EGX-300 is an ancient (several decades old) CNC machine intended for applications such as engraving door signs. It cannot handle material larger than 305 x 230 mm. The machine has the footprint of a washing machine, and is about 350 mm high.
These machines can occasionally be acquired at low cost because businesses are throwing them out because the software requires old versions of Windows to operate.
I purchased one from a factory up North a few years ago, but never got around to switching it on : ) It’s summer hols now, and my two teenage nephews were bored, so we decided to see if we could get this machine up and running.
Hardware Setup
The EGX-300 has a parallel (Centronics) connector and a serial (RS-232) 25-way socket. It’s almost always easier to go with serial, so that’s what we did.
We purchased a UGREEN USB-to-Serial (9-pin DB9) adapter cable from Amazon, which was advertised to contain a PL2303 chip inside. That’s not supported by default in modern Windows 11, so we downloaded and installed the latest PL2303 driver from the Prolific website.
After that, when we plugged in the adapter cable, we could see a COM port appear in Windows Device Manager. Great!
To convert from 9-pin to 25-pin, we used a StarTech Cross Wired Null Modem F/M Cable. It needs to be a Null Modem cable to work.
Next, we powered up the machine. It has an LCD screen, and it’s possible to use the control panel below it to enter a menu, select the input mode to be Serial (not Parallel!), and then set up the communications parameters. We used 9600 baud (the only options are 4800 or 9600), 8 data bits, no parity, 1 stop bit, and RTS/CTS flow control (the only other option is XON/XOFF).
For more details regarding the configuration options, consult the EGX-300 PDF user manual.
Making it Move!
There’s a PDF Programmer’s Manual that describes the instructions that can be sent to the EGX-300.
Initially, we sent a command using a serial terminal, but that’s not very practical. Instead, we used AI to help write a simple Python program called egx300_send.py to do it for us.
The PU command means “pen up”, and it can be followed by X and Y co-ordinates. The (0,0) position is indicated in the diagram above. I have not read in detail yet, but it’s possible to use different coordinate origins if required. I think the values are scaled such that 100 corresponds to 1 mm, but I have not confirmed this yet.
If you want to move the tool to the origin, you would send the following command:
PU0,0;
The semi-colon on the end is the terminator (it can be replaced by carriage return/line feed, but for now I prefer just sending the semi-colon).
Using the Python program, you could make the tool move in a rectangular path by issuing four commands together:
python .\egx300_send.py "PU4000,1000;PU4000,3000;PU1000,3000;PU1000,1000;"
So far, we have not dared to do a PD (pen down) instruction, since we need to study the documentation so we don’t wreck the tool.
The 10-second video here shows the rectangle path taken when the Python example shown above was executed:
Summary
We took a scrap CNC machine and decided to connect it to a PC, using a serial (RS-232) connection. Some simple Python code was written to move the tool.
It’s still early days, there’s a lot more to study in order to understand how to use the machine at this low level, and then perhaps consider either using existing code, or custom code, in order to make the machine do some useful work.
It’s a fun project for kids to mess around with, and they can’t accidentally do much self-harm since the machine will not operate without the protective cover in place.
Thanks for reading!
Top Comments