Wednesday, August 13, 2014

Who has a parallel port anyway?

As mentioned in my earlier post, I purchased one of the relatively inexpensive CNC engraver / routers from ebay.  The mechanical build quality seems good, and overall I'm satisfied with the purchase.  I reverse engineered a set of schematics from the two boards in the controller box (see previous post).

One hassle with these controllers is that they are designed to be driven from a PC's parallel port (with EMC2 or Mach providing the gcode to step and direction translation).  Who has a PC with a parallel port these days?  USB-to-LPT converters don't work well for this application, as the gcode enterpreters like Mach rely on detailed control of the parallel port, which can't be readily accomplished with a USB peripheral.

One obvious solution is GRBL.  It is a gcode interpreter written to run effectively on an Arduino board (328P version, please).  Obviously none of the Arduino boards are going to provide the right connectorization for directly connecting to the CNC controller box, so I started designing a carrier board which would marry an Arduino Nano to the appropriate DB25 connector to connect to the box.

After a bit of thought, I decided it would be simpler to build a GRBL compatible Arduino board in a DB25 connector shell form factor, and the (not so cleverly named) usb2db25 project was born.


front

back

with case back

in case
The strange form factor of the board was designed to maximize the internal real estate of a DB25 connector shell.  The mini USB connector is available at the back of the connector, and a 1/8" stereo jack is available on the side to provide two discrete inputs for STOP and CYCLE START switches.

In addition to the step and direction signals, the board supports limit / homing switches for all three axes, PWM spindle control, and a probe signal input.  Basically all of the features present on the stepper controller board of the CNC control box are usable via the usb2db25.

As the schematic is pretty much stock Arduino Nano, the standard versions of GRBL run without modification.  When attached to a PC via USB, the unit shows up as a serial port.

usb2db25 schematic
You can obtain GRBL from GitHub here.

The one thing I haven't done yet is to drill some small holes in the DB25 connector shell to allow visibility of the LEDs on the board.

Because it runs GRBL, the need for a package like EMC2 or Mach is completely eliminated, and you can just pipe gcode directly to the usb2db25.  Using this unit and the limit switches I added to the CNC engraver / router, I have a substantially more capable tool.

UPDATE:  Based on some requests, here are the gerbers for the pcb:  usb2db25 gerbers




17 comments:

  1. Have you considered putting this on Tindie ?

    ReplyDelete
    Replies
    1. I haven't, but if there is sufficient interest, I could. Have you had experience with Tindie?

      Delete
    2. How about Tindie and CircuitHub as your manufacturer?! Circuit hub used to have service where you can "crowd-fund" your boards online as well but I don't think it's gotten to much traction yet. I honestly think a lot of people will buy this if people learn about it! I managed to find this site through google images and I clicked it by accident. I read through a lot of cnc sites to find something like this for my 3020. Nevertheless, I really appreciate all the schematics you've done for the 3020 and it's been super helpful!! Thanks!

      Delete
  2. So this hood is FCI part # 863093C25ALF ?

    ReplyDelete
    Replies
    1. Yes. Pretty good visual identification on your part!

      Delete
  3. Hello,
    I was wondering if you would be willing to share the pcb files and b.o.m via osh park as a shared project. So others like myself can build one? This would be prefect for a upcoming project idea I have. Thanks. ( sorry if this is a double post i did not now if my first post was done right )

    ReplyDelete
    Replies
    1. I am certainly willing to share the files, however I am in the process of making a small change. Two of the pin definitions have been switched in GRBL 0.9 to allow PWM speed control of the spindle. It is a very minor change to the pcb, but necessary if you want to use limit switches and / or spindle speed control. I'll post the new board along with a link shortly. Thanks for the interest.

      Delete
    2. Sounds great, Thank you so much! I look forward to it.

      Delete
  4. Hi Steve, wonderful project you got there. I was thinking about making an Arduino/Grbl->Parallel Port shield but this is way better. Any update on getting the schematics/bom somewhere?

    ReplyDelete
    Replies
    1. Thibault, I'm happy to provide the schematics / PCB layout / BOM. Give me a couple of days.

      Delete
    2. I'm not quite ready to post them for general use, but if you shoot me an email, I'll send you the files. I work in kicad. Do you want the kicad files, or gerbers for fabrication.

      Delete
    3. Hello Steve,
      Could I get the kicad files as well? ( f.d.monson@gmail.com )

      Thanks.

      Delete
    4. This comment has been removed by the author.

      Delete
  5. Hi Steve, Great job on the parallel port GRBL sheild. Constructing a home built laser cutter currently and this would be very handy. Could you please send the design files to joedusta@hotmail.com ? i work in Kicad also, the new build is great!:)

    ReplyDelete
  6. Hi sorry i am really new to this but will it support my Chinese cnc ? Also are you using linux2cnc if so how to use it?

    ReplyDelete
  7. why not just buy a $15 PCIe or PCI LPT parallel port and use mach or linuxcnc. Seems a whole bunch easier, but I suppose not as fun.

    ReplyDelete
  8. This comment has been removed by the author.

    ReplyDelete