Parallel CNC module, time to build your own CNC Machine

We like to go back and revisit the Parallel CNC module
The driver that come with at are too basic and need to be updated and we are seeking some community contributions.

Do you have a CNC base or are you buying one? This includes milling ,lazer cuttong, plotting, 3D printing…etc. Are you interested in controlling your CNC from a NETMF system? If answered yes, proceed reading :slight_smile:

What doe the module need? This module hosts a tiny but powerful 50Mhz microcontroller. This micro generates pulses, where each stepper-step is controlled by a pulse. Right now, the firmware has a simple position for X, Y and Z where setting a new number causes the module to keep generate pulses until the it reaches its destination. Sound like everything we need? I am sure there is much more to it and we need an actual CNC setup to test the functionality. We have a CNC setup at GHI and we will be doing some testing on our end as well.

Are you interested in contributing/testing? Do you have Parallel CNC and some gadgeteer gear? If answered yes, what can we do to help you contribute? How can you contribute? Note that this module is programmed naively in C, not C#.

Hello Gus,

I’m already working on a controlling program for my Fez Carbuino Bee controller together with a gbrlshield. The work is going slowly but there is progress.
Yesterday i added some way of story the configuration settings.

As soon as i have worked out the G-code interpreter i will post the package.

You asked us (me) what we need. Quite frankly, yesterday was also a day i wanted to smash my Carbuino because of the pore documented documentation. To many differences everywhere and no are sames to work for the board i have. Ask someone that has knowledge of C#, Netmf and gadgeteer to create a small application for it using the microSD card. And i’m sure, like me, he cant find the right info between all versions on this site. So please when you dont want to lose all the hobby developers, like me, make sure that the documentation is up to dated and explaining the differences between V4.1, V4.2 OSHW, V4.2 premium and the Gadgeteer versions.

I don’t have a CNC. Some day, perhaps, I may end up with a CNC. I do however have the Parallel CNC module, waiting for that day… although again, it’s not likely in the near term. I’d be more than happy to contribute but think my (lack of) equipment will hinder that.

Hi Gus,

Reading the bit where it says you give it an X and Y value and it then pulses the stepper until that position is reached, I have a small comment on :slight_smile:

I have not written CNC machine code before, but I know about moving x and y to a different location as I did some work many years ago on an industrial design that was used to control a treching machine head.

You have to consider the tool path and not just move to X and Y. For example, if Y is greater than X, X will arrive at the end point before Y is the pulse time is the same and it will not be a straight line between. Ideally you want them to move at a different speed so that they both arrive at the same time so you get a straight line between them. This means one will be slower steps than the other. It’s a bit like inverse kinematics used in robot arm positioning.

Hi Gus

Here are some topics come to mind:
If you want to go fast, you cannot start with the maximum speed of a stepper motor. So you have to accelerate and decelerate otherwise you would loose steps.
If you want to be precise you should think about micro steps but this should be part of the parallel CNC that ist connected.
Every stepper motor has a resonance fequency. (e.g. 80 steps/s depending on the motor and the load). With this speed it is loud, has less force and may loose steps. It would be a good idea to skip this frequency during acceleration / deceleration.
For milling or 3D printing you might think of a constant speed at the tool point and based on this calculate the speed of the axes.
And for such applications a straight line is not enough anymore. We should have arcs and splines as well.
If the path is composed of different lines and arcs we need to smoth the transition between them.
This all sounds like a lot of mathemathics.
A 50 Mhz processor with 24k flash is not much for such an application.

@ Gus - I have a ParallelCNC, a Cerberus, and a Sherline CNC mill (etc.) and would love to cut some metal with Gadgeteer. So far, I’ve had no luck with getting the mill to move with the PCNC – not sure if I have the wrong pinouts or if there is a protocol mismatch with this Sherline controller. I haven’t put much effort into figuring it out, but would be willing to with some guidance. Lot’s of C# and C/C++ experience, but little of it down at the hardware level.

We have a complete setup now ready to work on cnc controllers but we are overbooked for few weeks. We shod get to it though.

What’s the status of this module?

I was distracted away from Gadgeteer stuff before doing much with it. And I’ve not used my CNC mill in quite a while. But I’ve long had a desire to create a USB-to-parallel device to drive my step-dir CNC mill controller. I was excited to find the Parallel CNC module, then disappointed to find it discontinued.

Years ago I wrote my own CNC mill control program for Windows. It converts DXF files to G-code, interprets G-code and drives the parallel port directly with sufficient speed for my Sherline mill with 3rd party parallel step-dir controller. To overcome speed and latency issues with a USB interface I envision it including the line and arc DDA conversion functions currently present at the PC level. So it would respond to higher-level commands like LineTo and ArcTo.

I don’t know if my FEZ Spider, for example, is fast enough running C# (CLR) to drive port pins directly for this purpose. Or perhaps the DDA code belongs in a (module) driver layer.

But I’ll be looking at Gadgeteer and other prototyping systems for a solution.

You’ve found the status of the module - discontinued.

I can only imagine it wasn’t a high demand module. I have one that I haven’t even unpacked, and as I don’t have a CNC I am not likely to use it. I can’t remember anyone who has talked about it on the forum.

The CNC module offloaded the timing critical part of the processing to another micro - with C#, you can’t get timing critical accuracy so your idea of a USB controller might need a similar setup - of course depending on how your step/direction timing requirements are. Try it and see is a totally acceptable method :slight_smile:

The CNC module firmware is still available and you can make your own module using this firmware (or the DL40IO firmware) and the appropriate processor if you wanted to - the design files are open source.

I have a few CNC modules that have never been used and I would be willing to sell. Send me a private message.

It might be useful to have an exchange and for sale category in the forum for a while as we trade discontinued modules back and forth.

Did this get completed ?

Unfortunately, we did very little work and was never completed. Too bad, it was a very nice module.

Thanks for the responses! Given the amount of low level work obviously required to achieve a .NET Gadgeteer solution I’d likely prefer something like an AVR USB proto system implementation.

Meanwhile, I’ve found the state of hobby CNC software and USB controllers to be much improved since I last researched it. For example, the combination of Mach3 software and KFLOP (or USB SmoothStepper) USB interfaces looks like a viable and powerful enough off-the-shelf solution at a decent enough price point. So I’ll probably settle for something like that and give up the DIY approach. I really liked my own CNC software as I’d implemented more powerful G-codes (like cutter offsets) than I found available at the time. But we’ll see how it goes.

An exceptionally nice module. I was a bit jealous when I saw it, because I was planning to work on something similar.

I think someone should bring out a shift register module so that we can at least emulate certain deprecated things.