Close

The software and firmware of the printer

A project log for Printing bones on a DIY powder bed 3d printer

This project focuses on using building a budget powder bed 3d printer capable of printing bones, and creating the needed ink and powder.

jureJure 05/02/2017 at 19:450 Comments

These are my final entry describing how I have built my 3d printer. They are not so complicated because I have tried to keep it simple as it was just a simple proof of concept. Now that I have seen some flaws and bugs in the algorithms, I can start working on a better firmware and software.

FIRMWARE

The firmware is nothing more than a serial communication command interpreter, run length decoder and some code to execute simple procedures like adding a new layer, printing a layer and piston movement. The largest part of the firmware is run length decoding and layer printing (they are combined to make it as fast as possible).

Printing of one layer from firmware perspective looks something like this:

  1. Addition of one layer
  2. Reception of data for single pass
  3. Printing of single pass (processing and applying data form 2. step)
  4. Returning to zero X position and required Y position

These are then repeated until the whole layer is printed.

The data is sent to printhead in lines where the first three numbers specify nozzle (0 to 127), then there is a delimiter {, up to 20 ints separated by commas and finally a final delimiters } and ;. The ints tell the controller how many steps (not motor step but a move for 0, 136 or the nozzle pitch) does the printer need to make along the x axis untill the state of the specified nozzle is changed. The firmware is then basicly just counting how many steps has it made from previous nozzle state change or zero X position. Then it just compares this to buffered data. If the two are equal then a the state of the nozzle is negated.

SOFTWARE

Whole software is built to take in the Slic3r svg file. The file is then read layer by layer. Only one layer is used at a time (depending on the actual layer that is being printed). All of the polygons are read from the active layer and stored in to RAM. Then point in polygon algorithm is run on these polygons for all nozzle positions in one pass (move along the X axis). Because we need run lengths this program also counts steps head needs to make before it changes nozzle state. The software also coordinates printer movement and steps in the printing process.

All of the files used are now on the project site.

Discussions