Moved to DO NOT EDIT


This is the page to detail our experiments at getting the small CNC mill up and running (of course, in a short while it will be replaced with details on how to use the fully-functioning and excellent CNC mill... :-)

Bed size: 92mm (X) x 83mm (Y) x ~70mm (Z)

The Z height is only approximate as it depends on the length of your bit, height of the sacrificial bed, etc.


MartinDunschen and Julian Todd very generously donated it to DoES just after we opened. I think they'd used it for testing some of the CNC software that they wrote. There are a few photos and a little video of it in action just after they got it back in 2005 at

When Martin last used it he had it hooked up to a PC with a parallel port and running DOS.

Background Reading on CNC Milling


This section needs updating. Some of Stefano's notes in the Experiments Log, particularly the images and descriptions, should go here

MillingPrintedCircuitBoardsOnTheProxxon details the process for using the Proxxon mill to create PCBs.

Experiments Log

Mostly kept for historical purposes. Problems with the mill should now be reported to the DoES Liverpool github issue list and tagged with "Proxxon CNC mill". The current list of issues.

September 2011: AdrianMcEwen and MartinDunschen

Spent a MakerNight trying to drive it using an Arduino with GRBL. Basically used <> and more importantly <> as a guide.

There's an Arduino hooked up to a DB25 (parallel port) connector breakout next to the mill. We've installed GRBL onto the Arduino, and seem to be able to talk to it through the serial monitor. If we sent it basic gcode commands it seemed to try to step things correctly (at the Arduino end) - which we worked out by wiring in a couple of LEDs and seeing that the direction one was on or off based on which direction we were trying to go, and the step one would flash when we expected. However, the CNC mill didn't do anything at all, so we need more work to dig into the problem.

Next step is most likely to be to try running it on a PC with a parallel port and running DOS - MartinDunschen has the relevant software on a USB stick. If that fails then we'll need to get a new stepper board.

February 2013: AdrianMcEwen and MartinDunschen

Got the DOS USB stick booted on a computer with a parallel port (a Mini-ITX Core i3 system). Seems to be working okay, at least the communication to the controller board seems fine.

Instructions for running from DOS stick:

  1. Turn the mill on first (seems to hang the software when you turn it on otherwise)
  2. Boot from the USB stick, option 4 - Live CD + HIMEM
  3. Switch to drive C:
  4. cd \pcnc

  5. pcnc.exe

  6. When the program has started, Alt-f, m (for manual control)

  7. Choose n to zero-positioning, otherwise it'll try to hit the endstops (and the Y-axis one isn't registering at the minute)

  8. Use the numpad for movement

9 March 2013: AdrianMcEwen

Stuck one of the spare servers with a parallel port and the rackmount KVM/Monitor onto the racking next to the mill. Burned a CD with LinuxCNC, which is in the server's CD drive waiting to be booted. Ran into problems with getting the KVM working.

13 March 2013: AdrianMcEwen

Couldn't get DOS to boot, never mind install. Have installed Linux CNC onto the spare server though.

10 April 2013: AdrianMcEwen

13 April 2013: AdrianMcEwen

8 June 2013: AdrianMcEwen

13 July 2013: AdrianMcEwen

22 July 2013: AdrianMcEwen

19 January 2014: AdrianMcEwen

25 February 2014: StefanoZenere

24 March 2014: StefanoZenere

11 April 2014: StefanoZenere


Part off cnc mill

  1. mill's power switch.
  2. regulator to rpm of mill.
  3. Power supplay switch.
  4. crank to move the tool in Z axis.
  5. crank to move the tool in Y axis.
  6. crank to move the tool in X axis.



  1. Collets: You use these to hold the tools to the mill.
  2. Cylindrical tool: Diameter=2mm.
  3. Cylindrical tool: Diameter=3mm.
  4. Tool to cut PCB board. Diameter=0.7mm.
  5. Spherical tool: Diameter=3mm.
  6. Cylindrical tool: Diameter=7mm to hard material.
  7. hole drill diameter=1mm use this only manual work.
  8. hole drill diameter=1.5mm use this only manual work.
  9. hole drill diameter=2mm use this only manual work.
  10. hole drill diameter=2.5mm use this only manual work.
  11. hole drill diameter=3mm use this only manual work.



Procedure to start the CNC mill whit object (if the height of the material you will be milling is less than 2cm)

===== Read the procedure down to cut a PCB =====

If your object is taller than 2 cm read the guide further down (Procedure to change the lift adjustment), and insert a value higher than the height of your object.

The bed size for work is 9x8x2 cm (x,y,z)

When you finish:

You can use the hoover when you work.

ATTENTION: If there are any problems, DO NOT touch the crank by hand, just press the "off" button in the power supply and unplug the usb.




Procedure to cut a PCB max 9x8 cm

When you finish:

You can use the hoover when you work.

ATTENTION: If there are any problems, DO NOT touch the crank by hand, just press the "off" button in the power supply and unplug the usb.

Format file to gcode sender []

Sometime is possible that you don't find your file, also if you have these extensions. Set "all the file" and try again.

To generate the g-code file, you can use:

28 April 2014: StefanoZenere

1 May 2014: StefanoZenere

Procedure to change the lift adjustment (if your object is taller than 2cm.)

$Nx are the startup blocks that Grbl runs everytime you power on Grbl or reset Grbl. In other words, a startup block is a line of g-code that you can have Grbl auto-magically run to set your g-code defaults, or anything else you need Grbl to do everytime you start up your machine. At the moment, Grbl will store two blocks of g-code as a system default, but it can store anywhere from 1 to 5, as a compile-time option (changing config.h and re-compiling).

So, when connected to Grbl, type $N and then enter. Grbl should respond with something short like:

$N0= $N1= ok

Not much to go on, but this just means that there is no g-code block stored in line $N0 for Grbl to run upon startup. $N1 is the next line to be run. (If you re-compile to have more, it will execute in order on to $N4.)

To set a startup block, type $N0= followed by a valid g-code block and an enter. Grbl will run the block to check if it's valid and then reply with an ok or an error: to tell you if it's successful or something went wrong.

For example, say that you want to use your first startup block $N0 to set your g-code parser modes like G54 work coordinate, G20 inches mode, G17 XY-plane. You would type $N0=G20 G54 G17 with an enter and you should see an 'ok' response. You can then check if it got stored by typing $N and you should now see a response like $N0=G20G54G17.

Once you have a startup block stored in Grbl's EEPROM, everytime you startup or reset you will see your startup block printed back to you and a response from Grbl to indicate if it ran ok. So for the previous example, you'll see:

Grbl 0.8c ['$' for help] G20G54G17ok If you have multiple g-code startup blocks, they will print back to you in order upon every startup. And if you'd like to clear one of the startup blocks, type $N0= without anything following the equal sign.

Also, if you have homing enabled, the startup blocks will execute immediately after the homing cycle, not at startup.

IMPORTANT: Be very careful when storing any motion (G0/1,G2/3,G28/30) commands in the startup blocks. These motion commands will run everytime you reset or power up Grbl, so if you have an emergency situation and have to e-stop and reset, a startup block move can and will likely make things worse quickly.

C When you plugin the USB, grbl will move to position $N0. At the moment it is set to $N0=G0X0Y0Z20. After you have manually found the 0 point, turn the machine on, plug in the USB and it will move to X0Y0Z20, 2cm up from the 0 point.


To Try in the Future

DoESWiki: zCNCMill (last edited 2016-12-02 15:44:15 by AdrianMcEwen)