Trying to sort out the story around controlling stepper motors for a 3D printer. I have not as yet run across any sort of a summary. So I will summarize what might be the story.
Continuing from:
https://plus.google.com/+PrestonBannister/posts/PAJw3wsYwaN
First, found one site that made the distinction between a stepper driver and a stepper controller.
A stepper driver is taking low-level signals (from the CPU usually in the case of a 3D printer) and bumping them up to the larger voltages and currents needed to directly drive a stepper motor. There is a one-to-one relationship between incoming signals and outgoing signals.
A stepper controller takes higher-level commands and sends a series of signals to the stepper motor, as is needed to complete the commanded action. There are quite a range in the features offered, and not clear commonality or consistency.
Unfortunately, in common usage the labels “controller” and “driver” seem to be almost interchangeable.
Second, in the first generation of small 3D printers (RepRap and the like), the printer’s CPU was serving as a stepper-controller, and directly driving the stepper-drivers. For the first generation(s) of printers, this worked well. More recently, as the printer’s CPU (usually 8-bit Arduino-based) is asked to do more things, there are complaints of insufficient CPU. There seems to be some(?) consensus that that Arduino platform is running out of headroom.
Third, we have an interesting variation in the BeagleBone series of boards. The ARM CPU is running Linux, and offloads the real-time signal input(?) and output to a co-processor optimized for the task. This should work very well at handling the real-time requirements of the stepper-drivers used in past for printers of the RepRap generation.
Fourth, there is a wildcard. Some of the newer very-inexpensive stepper-drivers are using I2C and accepting movement commands - in effect becoming basic stepper-controllers.
At this point things become a bit unclear as the documentation I have found is less than minimal.
If this is what it appears, then the implications are huge. Precise generation of step-movement signals is really the only aspect of 3D printers that require “hard” real-time software, and that requires a lot of processing in present printers. Remove this load and Arduino-based systems gain a bunch of headroom. Remove this load and the clever part of the BeagleBone boards goes mostly(?) unused.
At least the above is what I have found, so far. Insert the usual caveats.