The PlanThis is still an idea, growing in my head. I don't know if or when I'll build it.
I want to attach a Raspberry Pi 3 to my Ultimaker II extended.
Obviously with Wifi and USB it will have
- a camera, watching the print
a GPIO pinan Octoprint API call telling the Ultimaker to pause the print (via a tiny firmware modification)
- a trivial 2 bit rotary encoder to meassure the speed and amount of the filament and auto-pause if no filament is transported anymore
- a load cell with a Hx711 module to tell how much pulling force is applied and auto-pause on no force = filament empty and too much force = something blocks the filament from moving
- a second load cell in the modified "Low friction UM2 spoolholder" will meassure the weight of the spool and thus tell me how much filament is left.
- the modification is a 12-20cm arm with the load cell attached
- DONE: Raspberry Pi with Octoprint installed
- DONE: Designed parts for first prototype (using only Encoder and Dummy-Load Cells)
- DONE: Rotary Encoder arrived
- DONE: Pinout specified
- DONE: Waiting for load cells and Hx711 from China
- DONE: Test rotary encoder from Raspberry PI command line
- DONE: Test Octoprint API from Raspberry PI command line
- DONE: Convert rotary encoder values to binary positions, movements, direction and speed
- DONE: Wrote a simple filament monitor script that detects stalls and reverse movement and pauses the print via the Octoprint API
- DONE: Test Hx711 and load cell on Raspberry PI using Python
- DONE: The current "pause" in the Octoprint API is dangerous for scripts. It can resume if issued twice. ->fixed in Octoprint update
- DONE: solder the final cables and mount things on my UM2extended
- DONE: designed modified "608 mount" to weight the remaining filament.
- DONE: meassuring the weight of the remaining filament works!
- DONE: Write the final software including monitoring pulling force and spool-scale
- TODO: Write an assembly instruction including setting up the software.
|Testing rotary encoder|
|Testing load cell for extruder pulling force|
The softwareI'm using a Raspberry Pi running Octoprint as the central controller.
The original plan was to use the Octoprint API.
For the final software (Here on GitHub) I decided to write an OctoPrint plugin.
I can not only detect if filament is supposed to move at the moment and issue a pause command without hacking the firmware and dual-using one of the homing switches as an E-Stop.
I can also display information (such as remaining filament) in the OctoPrint web interface
and offer my meassurements as new values in the OctoPrint API.
- Low friction UM2 spoolholder - to be modified to pivot on it's hinge in the back of the UM2 and incorporate a load cell
- PEC12R-4225F-S0024 rotary encoder - for filament movement and integrting movement into length used up
- RasPi 3 + OctoPrint bundle
- Hx711 electrical attachment to RasPi
- C-Code for Hx711 usage on RasPi