REMIX - Extruder Nozzle Cleaning System 3d model
3dmdb logo
Thingiverse
REMIX - Extruder Nozzle Cleaning System

REMIX - Extruder Nozzle Cleaning System

by Thingiverse
Last crawled date: 4 years, 2 months ago
This is loaded as a remix of the things cited here, as I used them in this project. However, a few months of work went into getting everything to work as it should. I'm posting complete instructions and links here so no one else has to "reinvent the wheel"... The things cited in this post were not changed from the original designs.
This is going to be kinda long, so I apologize in advance...
NOTE: This will work for almost any printer that is controlled through Octoprint, whether the printer has the ability to add a servo to it or not.
I have a Geeetech A30 printer that I love and that I have tweaked to the point that it produces very accurate prints for me. The problem I had that originated this project, was that as the extruder heated up, of course the cold filament left in the nozzle from the last print would expand as it heated and ooze out of the nozzle, leaving "filament boogers" on the print bed as it went through it's auto-leveling routine before starting to print. I tried various methods to solve this, but all were only partially successful, until I stumbled on the thing from LumberjackEngineering. I build and fly RC Helicopters, so I had quite a few very powerful standard size servos laying around in the workshop, so thought this would be a great way to solve this! So, I printed out the parts, assmebled them, only to find the mother board in the A30 has absolutely no way to hook up a hobby servo to it. Great idea, no way to execute it - or so I thought. Then I stumbled on the answer - Something called a Servo Trigger made by Sparkfun (link below). This is a small electronic circuit board that is designed to move a hobby servo to specific positions based on the state of a switch that is connected to it. It is independently powered by an external 5V power source so it presents no load to the circuitry it's attached to. This is triggered by a single Arduino relay package in order to isolate it from the Pi, which is triggered by a pin state on the Pi's GPIO header (high or low). The pin state causes the relay to either open or close, which the servo trigger reads as a switch state and executes the desired servo motion in response. The pin state is set in Octoprint by re-purposing an existing plugin (LED Strip Control) which is designed to control RGB LED strips from commands in Octoprint. I simply only told the plugin it had one pin to control, and using it's command set, set that pin to high or low. So, here's how I did it:
NEEDED HARDWARE
Sparkfun Servo Trigger (https://www.amazon.com/gp/product/B01GM5Y2Q4/ref=ppx_yo_dt_b_asin_title_o01_s00?ie=UTF8&psc=1)
Arduino Single Relay Package (https://www.amazon.com/gp/product/B00VRUAHLE/ref=ppx_yo_dt_b_asin_title_o02_s00?ie=UTF8&psc=1)
Servos (if you don't have any laying around) (https://www.amazon.com/gp/product/B07RFRLRV8/ref=ppx_yo_dt_b_asin_title_o02_s00?ie=UTF8&psc=1)
12/24V to 5V Buck Converter (https://www.amazon.com/gp/product/B00LUIHZZE/ref=ppx_yo_dt_b_asin_title_o09_s00?ie=UTF8&psc=1)
Cleaning brush (https://www.amazon.com/gp/product/B06XWFM1HJ/ref=ppx_yo_dt_b_asin_title_o05_s00?ie=UTF8&psc=1)
Depending on your printer, you may also need to print something to anchor the servo mount to your printer with. I printed this (https://www.thingiverse.com/thing:3754792), cut the upper arm off, then drilled mounting holes in it for the servo mount. (NOTE: The license for this thing does not allow remixes. It was printed as designed, and then physically modified as a servo mount stand)
Various jumper wires to connect the components together based on where you put them
Print out the parts cited in this post orienting them for best print with fewest supports. You will have to tinker with the Servo Trigger Mount, as I slapped it together in a hurry in Fusion 360. Install the servo in the mount and mount all the components where it makes sense on your printer. The servo connects to the servo trigger (pay attention to the pin orientation!) which is powered by the buck converter (buck converter connected to the printers power supply, or independently powered). The switch pins on the servo trigger connect to the output of the relay package (NO - Normally Open). The relay package connects as follows on the Pi's GPIO header:
Ground to physical pin 14 (Ground)
VCC to physical pin 2 or 4 (5V power)
Signal to physical pin 12
OK - that takes care of the electronics. Open and close the switch pins on the servo trigger manually using a jumper to set the servo position in it's open state (position A or brush home), and in it's closed state (position B or brush deployed). The goal is to home the brush out of the way of the extruder during prints (position A), and to deploy it in the way of the extruder for cleaning (position B).
NOTE: There seems to be a couple of versions of the servo trigger out there. One version responds to the switch state being open or closed moving the servo in response to that state, the other responds to a cycle of the switch (off/on/off). Test to find out which version you have before you set the programming in your startup scripts.
Deploy the brush to it's cleaning position over the print bed to determine the right height to move the Z Axis to for the cleaning cycle, then home the brush back out of the way.
On your Octopi, install the LED Strip Control plugin. Set the plugin so that it only knows about the red pin, and that pin is physical pin 12 on the GPIO header. (NOTE: you will need to have the Pi GPIO package installed also).
In your startup scripts in what ever slicer you are using (I use Simplify 3D) set the following command sequence:
(NOTE: You will need to adjust these parameters for your printer. These are for the Geeetech A30, which has a 330x330x430 print volume. Also note, the following MUST run after your extruder heats to printing temperature!)
G28; (home all axes forces a bounce in the center on the A30)
G1 Z32 F1200; (lift Z 32mm for cleaning)
M150 R0; (start brush deploy sequence)
G4 P500
M150 R255
G4 P500
M150 R0
G4 P500; (brush deployment complete)
G1 X335 F1200; (first scrub pass)
G1 X300 F1200; (second scrub pass)
G1 X335 F1200; (third scrub pass)
G1 X165 F1200; (fourth scrub pass and move extruder back to center)
M150 R0; (start brush home sequence)
G4 P500
M150 R255
G4 P500
M150 R0
G4 P500
M150 R0
G4 P500
M150 R255
G4 P500
M150 R0
G4 P500; (complete brush home sequence)
The M150 commands are the commands in the LED Strip Control plugin that set the Pi's GPIO pins to either high or low. Using the Red command only (set for pin 12 in the plugin), M150 R0 sets the pin state to low, M150 R255 sets it to high. The G4 commands cause a 500 millisecond pause between commands to allow the servo trigger time to read the switch state, and are NECESSARY in order for it to execute those commands. It is not capable of reading the switch states at machine speed, so you have to slow it down a little.
(NOTE: The above sequence is for the servo trigger version that requires a switch cycle (off/on/off) to execute). For some reason I have yet to figure out, the sequence has to be passed twice to home the brush out of the way at the end. If you have the servo trigger version that simply requires either an on or off state, change the M150 commands to the following:
M150 R0; (set brush state to home)
G4 P500
M150 R255; (deploy brush for cleaning)
G4 P500
(cleaning passes)
M150 R0; (home the brush)
G4 P500
M150 R0
Final Note: This was derived after several extruder crashes into the brush. I HIGHLY recommend that the first few times you use this, that you are standing by the printer when it executes. If things begin to appear to not be going right, IMMEDIATELY hit the power switch on the printer to stop it and avoid a crash. Octoprint will NOT stop it fast enough by simply hitting the cancel button!
Use this at your own risk folks. I take no responsibility for any damage that may occur by not following these instructions, or for failing to modify them for your particular printer.

Tags