Custom firmware and 3D printer overview
Channel: SamP20
Date: 25/02/2014

This video gives an overview of the 3D printer I built from scratch, and the custom firmware I'm writing.
The 3D printer itself uses leadscrews instead of belt drive, and has a higher steps/mm than most 3D printers. This means the motors need to turn faster to move at the same speed. For this test I was also using a bench-top power supply set to 20V. This allowed me to achieve the higher speeds.

The firmware is written to use entirely fixed point math. It also works slightly differently to the marlin and similar firmware in that it has a single periodic timer that handles all the stepping and acceleration.

The timer does the following:
1) Add the current speed onto the current distance of the move.
2) Calculate the position of each motor in steps from the distance moved.
3) If the new motor steps is not equal the previous steps then step the motor
4) Add or subtract the acceleration from the current speed depending on where we are in the move

I chose this algorithm since it's easy to understand, only requires a single fixed interval timer, and can be modified for non-linear systems by modifying step 2. It also allows easy addition of features such as Matt Robert's Advance Algorithm: http://reprap.org/pipermail/reprap-dev/2011-May/003323.html.

The rest of the calculations for speed planning and G-Code parsing will be performed on an external microcomputer using floating point math.