From 3D printer from scratch
								
												
				Requirements for the Controller
-  The head has to be moved along a given curve. Currently the curve consists of segments of lines, clothoids and arcs. Later on they may also be described by Bezier-Splines/B-Splines/NURBS.
-  The movement speed is independent from the parameterization of the curve. Most of the time the head is required to move at constant |v|, but it also accelerates/decelerates.
-  Head movement has to be continuous in position, speed and acceleration and bounded in jerk. The source curves are at least C2.
-  The path the head is moved along should not deviate from the given curve more than, 0.01mm, total range of motion is 300mm. So a accuracy of 10^-5 is striven for.
-  The velocity of the head should not deviate by more than 10^-4, the acceleration has to be continuous and bounded, the jerk has only to be bounded.
-  The motor controller is implemented in an FPGA and communicates with the host via UART.
-  Required step frequency up to 6 MHz, FPGA running at 20MHz