Several people have mention CNC here.
I've been using the Prop 1 to control some of my manufacturing machines for several years now. I have a (stepper) CNC program that runs six axis at about 200k steps per second. I know the Prop2 will make an incredible CNC controller. (Someday)
When the “Hot prop” was “about to be delivered” and Chip put out a schematic of the P2 with some peripheral chips, I designed a 6 axis CNC board around it. ( attached photo). This board was. intended for use on an old CNC mill. It never happened of course … but here we are again with the P2 once again “about to be delivered”.
So... let's get down to “Brass Tacks”. Let's pretend that the P2 is actually going to happen this time.
What do people want and what do people really need for CNC?
I believe that there are two major markets: 3D printing and everything else. 3D printers need a cheap 4 axis controller but usually don't need feedback and speed is negotiable. Cost is everything because some of the “quite capable” Arduino boards sell for less than $6.00. They do the job. I don't think we're going to compete with them using either the P1 OR the P2. A 4 cog variant might be a fit for this market, but not a chip that cost more than a full board that does the job.
With micro-stepping drives going for as little as $7.00. This gives us a whopping budget of $28.00 for drives and $6.00 for the processor. A single 4 axis board that has micro-stepping drivers and the control processor could probably be built for under $34.00 in large quantities... but where's your profit? I'm not sure that I want to mess with profit margins that slim, so that leaves: everything else.
This is the market where the cost of a processor is insignificant to the application. In this world, speed, accuracy and reliability are everything.
If I can stuff a 6 axis linear interpolative drive into a single cog of the P1, I'd be willing to bet that I can stuff 9 axis into a P2. That should be sufficient for most CNC needs. I also have a driver that uses my 6 axis function combined with encoder feedback to generate signals for the HB-25. My tests let me keep a large dc motor within 10 (1000 line x 4) encoder pulses of a desired position. Not “tight, but tight enough for my need. I suspect this could be improved for high performance DC / AC / Brushless drives.
With a P1 spitting out 200,000 sps, the (almost automatic) 10 x multiplier of the P2 means that we could output step/direction signals at about 20 million pulses per second. Assuming a resolution of 10,000 steps or encoder positions per inch, this gives us a controller capable of doing high resolution machining at over a hundred miles per hour. ( Or sub-micron work at a mere 20 + MPH. I could live with it. )
Ok... so let's say we have our Most Riki Tik (MRT) 9 axis CNC controller chip. It can produce step and direction signals or DC output to our motor drives. It can use rotary or linear encoder feedback, analog absolute positioning etc. , has limit switch and home position detection, has over/under travel detection, and a slew of I/O's for turning on/off coolant, air, etc. Now what?
What does it need to work in the “Real” world? What kind of higher level functions must it be capable of? What kind of connectors does it need to be usable in the “Industrial World? Do we talk to it with USB? Bluetooth? SD... 8 inch floppy? What?
Linear interpolation is sufficient for every machine movement that I know of. Even circular movements are done in a series of small linear steps.
Does the P2 need to do all the heavy lifting or might the multi-GIGAHERTZ speed, multi-TERAFLOPS calculating, multi-GIGABYTE memory and multi-TERABYTE storage PC ( that will almost always be connected to it) be OK for that sort of thing?
I put it that way to keep perspective about using the right tools for the things that they do best.
Heck... MY PHONE has thousands of times more storage and processing power than the first PCs I used to run 3 axis marking machines I manufactured in the 80s and 90s.
I automated a Bridgeport Series II with an IBM PC running DOS on a 386 years ago. It worked great. My code was written in C++ and I still have it all. I wrote a package that let me describe a part in terms of machining operations. ( Drill, cut, pocket, set cutter size, zero positions, switch tooling, etc) and another that interpreted DXF and HP Plotter files. I don't imagine G codes would be much more difficult to convert to movement and control commands. If Parallax gives us C++ or even just C, I should be able to dust off much of that code and turn a P2 into a fairly capable stand-alone CNC controller.... but the big question is still: Is it necessary? It seems to me that even my phone would be a better, front end than trying to make a P2 do it all. A PC without a graphics card will still run rings around a P2 doing floating point calculations AND you can use it for your design work.
Very early at the introduction of the Prop I wrote a Windows-like user interface for a machine that used the Prop's video output, a keyboard and a mouse to “Fill in the boxes” for position, speeds, count, etc. It worked fine, but I never used it after that first time. It didn't give me any advantages over using a laptop connected to my machines through a USB. For Prop controlled machines that I still run today, I just reprogram the Prop to make program changes. It lets me keep all my old “part files” on the laptop. I monitor progress with the serial terminal. I think that this partnership of a machine controller and a good storage/user interface will remain the optimum way to go for a long time.
So back to the questions: does a stand-alone single chip CNC controller REALLY make sense?
I'm going to build a new controller for my TREE CNC Mill. (Someday... if I'm still alive when the P2 comes out). There are thousands of similar, wonderful old beasts out there with perfect mechanics but controls that are “ancient”. There are Plasma cutters, Waterjets, Laser cutting and industrial robots that only need the love of a good controller.
If you had your “druthers”... what would that controller look like?