Skip to content

Proxxon Upgrade to CNC

Guy Fraser edited this page May 7, 2017 · 1 revision

This is an archive of notes on how we turned the Proxxon milling machine in to a CNC mill.

September 2011: AdrianMcEwen and MartinDunschen

Spent a MakerNight trying to drive it using an Arduino with GRBL. Basically used http://blog.makezine.com/archive/2011/09/grblshield-cnc-mill-conversion.html and more importantly http://dank.bengler.no/-/page/show/5470_grbl?ref=mst 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.

  • Z-axis seems fine
  • Y-axis action is fine, but the endstop doesn't seem to be registering
  • X-axis electronics work, but there's a problem with the mechanics of it (looks like it's just a missing grub-screw for the connector)

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

  • Installed FreeDOS1.1, although the bootloader doesn't seem to be set correctly (get a Grub failure)
  • Reinstalled LinuxCNC (needed to specify "vga=773" to get it to boot cleanly)
  • Now boots cleanly into both FreeDOS and LinuxCNC

13 April 2013: AdrianMcEwen

  • Copied the PCNC software onto the FreeDOS partition, and successfully used it to control the mill
  • Starting configuration of LinuxCNC

8 June 2013: AdrianMcEwen

  • Dug into the config more, and worked out that we've got an SMC800 controller board (which doesn't have an additional PCB to allow direction/step control).
  • That explains why we couldn't drive it with GRBL - we were reading the wrong bit of the manual for the controller board (which isn't clear with its table having two columns for the pinouts labelled "signal" and "description", where the "signal" column refers to SMC800 and the "description" one to SMC1500 with the extra PCB...)
  • Upshot is I think we should get a new controller board for it. http://www.ebay.co.uk/itm/CNC-TB6560-3-Axis-Stepper-Motor-Driver-Board-card-CNC-Router-Mill-/261090877873?pt=UK_BOI_Industrial_Automation_Control_ET&hash=item3cca3aa1b1 looks like it would do the trick, for £32. That has a spindle output too, but only 36V, whereas the spindle on the mill is mains (but we could fix that with a mains relay if need be).
  • The problem with the X-axis seems to be just that the connector from the threaded rod to the stepper is missing a grub screw

13 July 2013: AdrianMcEwen

22 July 2013: AdrianMcEwen

  • Revisited configuration. X-axis no longer seems to get hot - think it's on when the system first comes up, but now that gets reset more quickly as the config is set correctly
  • Only the y-axis seems to function - tried plugging each of the steppers into the y-axis in turn, and they can all be controlled from it. x- and z-axes don't seem to be providing any voltage when you run them (tested with a meter across the terminals)

19 January 2014: AdrianMcEwen

  • Wired up the Z-axis to an oomlout stepper driver board, and then to the Arduino with GRBL on it (wired into the X-axis controls as it happens, just for easy testing)
  • Works well. AdrianMcEwen has two more stepper driver boards and also some connectors to allow us to easily (dis)connect the motors from the driver board.

25 February 2014: StefanoZenere

  • Checked and modified the electronic board, for a better safeguard of Arduino (divided the Driver and Arduino Power).
  • Flashed Arduino's board whit GRBL firmware, now the PC sending in streaming the g-code and GRBL pilot the Driver motor.
  • Added a new board to link the limit-switches.
  • Test run the machine. (Whitout material)
  • Fixed the physical structure of CNC mill (problem whit the connector between the motor and X-axis).
  • Changed program software to pilot the CNC Mill. Now, when you have the .stl file, is possible convert in G-code by PyCAM (http://pycam.sourceforge.net/).
  • To connect Arduino whit any computer need install the Arduino IDE(Whit the drivers, here: http://arduino.cc/en/main/software#.UzAne6h_v5M), and the G-code sender program (Download here: https://github.com/winder/Universal-G-Code-Sender ).

24 March 2014: StefanoZenere

  • Fixed the connector between the motor and X-axis.
  • The CNC mill is OPERATIVE! And works really well.
  • Linked the limit-switches at the board (Not enabled)
  • Move all the electronics into a protective box (With a fan for driver)
  • The bed size for work is 9x8x5 cm (x,y,z)
  • Box up the new controller board

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.

Tools

  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.

==== SETTING: ====

===== WOOD: =====

  • Feed rate: About 10 inc = 25 cm per minut
  • Spindle speed: 18'000-20'000 rpm
  • Max step down: 1 mm

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)

  • Start with POWER SUPPLY switch OFF,Power switch mill OFF and USB unplugged.
  • Open Arduino program (Avaible here: [ http://arduino.cc/en/Main/Software ] ), pres digital monitor, write $N and enter, now make sure that you can read this: $N0=G0X0Y0Z20 and $N1=
    • If the data is not the same you need to chage
    • To do this you need to write in digital monitor $N0=G0X0Y0Z20 and enter.
    • Then $N1= and enter.
    • Now write again $N, and make sure you have de correct istruction.
  • Put tool in, and tighten the collet.
  • With the crank (only x and y), move the tool to the position where the work will start (corresponding to the 0 point in your g-code).
  • Move the Z-axis to make contact with the surface of material (needs to touch, there mustn't be any space between the tool and the surface).
  • Turn the POWER SUPPLY switch ON (ATTENTION!! Make sure your hands are away from the machine, and do not move the cranks when the machine is ON!).
  • Plug the USB into the computer (ATTENTION!! THE Z-AXIS WILL RISE BY 2 cm).
  • Turn the POWER SUPPLY switch OFF (DON'T UNPLUG THE USB).
  • Fix the cube of material you are milling to the bed.(NOT MOVE THE CRANK, IF YOU MOOVE START PROCEDURE AGAIN)
  • Turn the POWER SUPPLY switch ON (ATTENTION!! Make sure your hands are away from the machine, don't move the crank when the machine is ON!).
  • Open "G-code sender" (Download here: [https://github.com/winder/Universal-G-Code-Sender] you need also the Arduino drivers, avaible here: [http://arduino.cc/en/main/software#.UzAne6h_v5M]).
  • Press "Open"
  • Press "Browser" and look for your g code to load it.
  • Turn mill's switch Power ON.
  • Press "print" on program.
  • The machine will start.

When you finish:

  • Press mill's switch Power OFF
  • Press POWER SUPPLY OFF
  • Now you can move the crank

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.

PCB

SETTING:

PCB:

  • Feed rate: About 10 inc = 25 cm per minut
  • Spindle speed: 15'000-20'000 rpm
  • Bed size for work is 9x8 cm (x,y)

Procedure to cut a PCB max 9x8 cm

  • Start with POWER SUPPLY switch OFF,Power switch mill OFF and USB unplugged.
  • Open Arduino program (Avaible here: [ http://arduino.cc/en/Main/Software ] ), pres digital monitor, write $N and enter, now make sure that you can read this: $N0=G0X0Y0Z20 and $N1=
    • If the data is not the same you need to chage
    • To do this you need to write in digital monitor $N0=G0X0Y0Z20 and enter.
    • Then $N1= and enter.
    • Now write again $N, and make sure you have de correct istruction.
  • Put tool in, and tighten the collet.
  • Fix the new copper board to the bed.
  • With the crank (only x and y), move the tool to the position where the work will start (corresponding to the 0 point in your g-code).
  • Move the Z-axis to make contact with the surface of material (needs to touch, there mustn't be any space between the tool and the surface).
  • Turn the POWER SUPPLY switch ON (ATTENTION!! Make sure your hands are away from the machine, don't move the crank when the machine is ON!).
  • Open "G-code sender" (Download here: [https://github.com/winder/Universal-G-Code-Sender] you need also the Arduino drivers, avaible here: [http://arduino.cc/en/main/software#.UzAne6h_v5M]).
  • Press "Open"
  • Press "Browser" and look for your g code to load it.
  • Turn mill's switch Power ON.
  • Press "print" on program.
  • The machine will start.

When you finish:

  • Press mill's switch Power OFF
  • Press POWER SUPPLY OFF
  • Now you can move the crank

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 [https://github.com/winder/Universal-G-Code-Sender]

  • CNC
  • NC
  • TAP
  • TXT
  • NGC

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:

  • PyCam (free, but not very good) [ http://pycam.sourceforge.net/ ]
  • LineGrinder (to PCB) [ http://www.ofitselfso.com/LineGrinder/LineGrinder.php ]

28 April 2014: StefanoZenere

  • There is some problem whit the X-axis because the driver is gone. The problem is the motor. Need to control it.

1 May 2014: StefanoZenere

  • Fixed the X-axis, change all the connectors and the wires about it. Now works really well.

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

  • Make sure the power supply is OFF.
  • Plug the USB in to the computer
  • Open Arduino program (avaible here: [http://arduino.cc/en/Main/Software#toc2] )
  • Open serial monitor
  • Type $N0 in serial monitor
  • Insert $N0=(coordinates you want) before you set new coordinates read the next few paragraphs

$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.

IF YOU NEED TO CHANGE ANY OTHER GRBL CONFIGURATION, READ THE GUIDE:

[https://github.com/grbl/grbl/wiki/Configuring-Grbl-v0.8]

To Try in the Future

  • Enable by Grbl the limit switches (There are but don't work)
  • Looking for similar program like G-code sender and PyCAM
  • Fix the connector between the mill's structure (under bed's x-axis) and x-axis (delette the error of 0,3 mm only in x-axis)
  • Add an emergency stop button (there's connection space for it on the limit switches connector)
  • Add a mains relay to control the spindle
  • Move the mill, server and KVM/monitor into one of the server racks
  • Try out the steps in [http://www.re-innovation.co.uk/joomla15/index.php?option=com_content&view=article&id=181:making-pcbs-with-a-cnc-machine&catid=48:blog&Itemid=75]

☝️ Filter all pages above!
(Full search available on the top of page)

WiFi: DoES Liverpool, password: decafbad00

or

Clone this wiki locally