Raspberry Pi code that drives stepper motors and sensors on an old 3D printer allowing for 2D images to be drawn on the base plate with a pen.
Demo Video: https://www.youtube.com/watch?v=gwPj64Iiqy4
This is a command line interface program that allows for precise movement of the print head along a single axis. Each
movement will report the current position of the print head and save this to a configuration file ~/.plotbot.json
See example_plotbot.json in this repo for example
This script is useful for calibrating and saving known positions whenever the physical setup is changed. e.g. if a different print surface or writing implement is used. e.g. paper vs white board, or ballpoint pen vs crayon. After defining configuration values for the current physical setup, the json file can be saved as a "profile" for later reuse of that physical configuration in special purpose applications.
$ ./plotbot.py -h
- Will display usage information.
If print heads have been moved while powered down or a program fails in anyway, it is recommended to run the reset
command. This return the print-head to its home position and will reset any saved (and probably incorrect)
information about the current position.
The move command will move the print head. Use Adding + or - to will move to a relative position. - 5 steps = 1 mm for x and y axis - 156.25 steps = 1 mm for z axis
./plotbot.py move_ x 50 mm
will move the print head either to the left or the right so that it is 5 cm from the min(0) position../plotbot.py move z +50 steps
will move the print head down 50 steps from the current position
The goto command will move the print head to named positions saved in the active profile. Built-in positions include
min
,mid
, and max
.
Example
Configuration profiles are maintained in the user's ~/.plotbot.json
. Profiles can be modified with the set
and
profile
commands.
status
Display the active profileset y top-of-page
Saves the current y axis position as "top-of-page"profile --list
Display available profiles from the users config fileprofile --load="dry-erase-board"
Set the active profile to "dry-erase-board"profile --save="ballpoint-on-paper"
Saves the current active profile as a new profile called "ballpoint-on-paper"profile --delete="experment-1"
Deletes the "experiment-1" profile