Nozzle wiper by chirpy (#759)

* NozzleWiper Mod

* Update README.md

* Fixed position in README.md

* Removed tracking from AliExpress URLs

* Doc and config updates

Removed LICENSE.TXT file
Modifications to klipper configuration to use nonsense default values to force the user to configure it appropriately

* Update nozzlewiper.cfg

Spelling Fix

* Improved printability and naming of parts

* Fixed printability issues

* Added mark for Trident

* Update README.md

* Update README.md

* Update README.md

* Update README.md

* Update README.md
This commit is contained in:
Jonathan Michaelson 2022-08-16 17:47:47 +01:00 committed by GitHub
parent 3f893c2f98
commit bc9b8732c6
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
26 changed files with 19054 additions and 1 deletions

View File

@ -89,7 +89,8 @@ like so:
||[PITFT50 45-degree mount](./CannedBass/PITFT50_45_degree_mount)| Mount that puts the screen at a 45-degree angle for more vertical clearance |:x:|:grey_question:|:heavy_check_mark:|:x:|:heavy_check_mark:| ||[PITFT50 45-degree mount](./CannedBass/PITFT50_45_degree_mount)| Mount that puts the screen at a 45-degree angle for more vertical clearance |:x:|:grey_question:|:heavy_check_mark:|:x:|:heavy_check_mark:|
| Ch4rlesB | [V0 Handles Slim](./Ch4rlesB/V0_Handles_Slim) | Simple and slim handles for the V0 | :heavy_check_mark: | :x: | :x: | :x: | | Ch4rlesB | [V0 Handles Slim](./Ch4rlesB/V0_Handles_Slim) | Simple and slim handles for the V0 | :heavy_check_mark: | :x: | :x: | :x: |
| ChenTheDesignMaker | [Z Belt Clip](./ChenTheDesignMaker/Z_Belt_Clip) | Simple clip to keep extra Z belts clean and away from panels | :x: | :x: | :heavy_check_mark: | :x: | :x:| | ChenTheDesignMaker | [Z Belt Clip](./ChenTheDesignMaker/Z_Belt_Clip) | Simple clip to keep extra Z belts clean and away from panels | :x: | :x: | :heavy_check_mark: | :x: | :x:|
| chirpy | [V0.1 Raised Tophat](./chirpy/TipTophat) | Alternative Tophat design that uses stock panels and raises height be 30mm| :heavy_check_mark: | :x: | :x: | :x: | | chirpy | [V0.1 Raised Tophat](./chirpy/TipTophat) | Alternative Tophat design that uses stock panels and raises height by 30mm| :heavy_check_mark: | :x: | :x: | :x: |
| | [V0.1 Nozzle Wiper](./chirpy/NozzleWiper) | Servo powered nozzle wiper and purge bucket | :heavy_check_mark: | :x: | :x: | :x: | :x: |
| chrisrgonzales | [270° Front Panel Hinge](./chrisrgonzales/270_degree_hinge) | Hinges that have 270° of swivel, parametric CAD included | :x: | :x: | :heavy_check_mark: | :x: | | chrisrgonzales | [270° Front Panel Hinge](./chrisrgonzales/270_degree_hinge) | Hinges that have 270° of swivel, parametric CAD included | :x: | :x: | :heavy_check_mark: | :x: |
| christophmueller | [Phaetus and Zodiac Dragonfly BMO Afterburner toolheads](./christophmueller/Phaetus_Dragonfly_BMO_Afterburner) | Covers both the original Phaetus variant as well as the Zodiac one. | :x: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | | christophmueller | [Phaetus and Zodiac Dragonfly BMO Afterburner toolheads](./christophmueller/Phaetus_Dragonfly_BMO_Afterburner) | Covers both the original Phaetus variant as well as the Zodiac one. | :x: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: |
| chri.kai.in | [20x20mm Profile Covers](./chri.kai.in/20x20mm_Profile_Covers) | Provide overlapping and flush slot covers for 20x20mm slot6 construction profiles| :x: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | | chri.kai.in | [20x20mm Profile Covers](./chri.kai.in/20x20mm_Profile_Covers) | Provide overlapping and flush slot covers for 20x20mm slot6 construction profiles| :x: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: |

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,155 @@
# Nozzle Wiper
This is a nozzle purge and wipe mod for the Voron V0.1. It is based on the [SlideSwipe](https://github.com/chestwood96/SlideSwipe) magnetic probe by [chestwood96](https://github.com/chestwood96).
It uses a snap in frame clip, that doesn't require screws, to attach a servo
that extends a bucket and brush over the build plate for the hotend nozzle to
clean it of filament debris for cleaner prints.
![Nozzle Wiper](images/NozzleWiper.gif)
## Goals:
- Servo used to extend system over the print bed
- Bucket and brush to clean nozzle
- Snap in frame clip that does not need screws
- Klipper macros to control the entire process
These have all been implemented in this public release.
## Printing:
- Use the Voron defaults and print in ABS or better
- The parts are orientated correctly in the STLs
- There is a single All In One STL that fits onto the v0.1 build plate to make life easier
## BOM:
- 1x Micro Servo 9G Servo Motor (SG90/MG90)
- 2x M3x8mm BHCS (for servo mount)
- 2x M3x6mm BHCS (for brush holder mount)
- 2x M2x10mm self tapping screws (optional: for snap in frame clip)
- 1x Nozzle cleaning brush in Copper
- 3x OD 4mm, length 16mm, PTFE tube
- 1x OD 4mm, length 7mm, PTFE tube
## Hardware:
Brush:
https://www.amazon.co.uk/gp/product/B08H8SXBKM
https://www.aliexpress.com/item/4000801101276.html
Servo:
https://www.amazon.co.uk/gp/product/B0972M7JN1
https://www.aliexpress.com/item/1005001956791642.html
## Assembly:
![parts](images/parts.jpg)
### Step 1 - Set Servo
![parts](images/servosetting.jpg)
Take the servo and attach a single arm to the top. Slowly and gently rotate the rotor clockwise until it hits its limit. Remove the arm and replace it on the servo so that it is positioned slightly more than 90 degrees clockwise as shown in the picture above.
This sets the servo arm to its 0 position. Use the smallest screw in the servo packaging to affix the arm to the servo in that position.
### Step 2 - Parts Preparation
![bucket](images/bucket.jpg)
Remove the support tabs from the bucket.
![brush](images/brush.jpg)
Cut down the brush head so that it matches the internal width of the brush holder. It's soft plastic so can be cut with a craft knife or a pair of angle cutters.
Cut the PTFE tube into 3 lots of 16mm and 1 lot of 7mm. These will act as the hinges.
### Step 3 - Fit Servo to Mount
![servo](images/servomounting.jpg)
Push the cable connector through the slot provided in the servo mount as this will run on the inside of the extrusion. Fit the servo into the mount and fix in place with 2 M3x8mm screws. You may need to fettle the plastic around the hole for the top of the servo for it to fit. Note the correct orientation of the servo.
### Step 4 - Servo Section Assembly
![assembly](images/armassembly.jpg)
Place 1 of the 16mm pieces and the 7mm piece of PTFE tubing into the sections as shown above. Place the section with the space for the servo arm first and then the double ended section behind it. Carefully seat the PTFE tubes into the servo mount and fix in place with the angled part shown to the top of the mount:
![assembly](images/armtomount.jpg)
### Step 5 - Brush Section Assembly
![parts](images/armtobrushmount.jpg)
Place the remaining pieces of 16mm PTFE tubing into the ends of the fitted sections and then fix onto the brush holder using the remaining 2 M3x6mm screws.
![completed](images/completed.jpg)
Fit the brush head into the brush holder:
![brushholder](images/brushholder.jpg)
### Step 6 - Motion
Slowly and carefully, manually extend and straighten the arm to ensure a full range of motion:
![motion](images/fullyopen.jpg)
### Step 7 - Wiring
Before permanently mounting the nozzle wiper to the printer test whether it works as expected by wiring the servo to the MCU from outside of the printer.
- Red wire = +5v
- Brown wire = GND
- Orange wire = signal pin
There are various choices for connecting the servo to the MCU. Here will will refer to the BTT SKR Mini E3 V2.0.
Always turn off the printer before connecting or removing anything to or from the MCU.
The simplest is to connect to the Neopixel or E0-STOP connector if it is not in use as it provides all 3 required connections. Alternatively, a [Klipper Expander](https://github.com/timmit99/Klipper-Expander) can be used if there are no free pins.
Remember, do not fit the arm to the printer at this point.
### Step 8 - Klipper
Upload the nozzlewiper.cfg file to your klipper configuration directory on the raspberry pi. If using Mainsail you can do this in MACHINE > Upload File.
Now edit printer.cfg and add an include line to the Macro section of your configuration:
```[include nozzlewiper.cfg]```
### Step 8 - Servo Testing
Modify nozzlewiper.cfg "[servo wipeServo]" and set the correct pin that you attached the single wire for the servo to. For example, PA8 would be on the Neopixel, PC15 would be the E0-STOP.
Now power on the printer. Once it has fully booted, you should see a list of new macros available all prefixed with "NW".
Holding the nozzle wiper firmly in the hand by the extrusion mount, run the "NW DEPLOY" macro. The arm should extend 90 degrees. Then run the "NW RETRACT" macro and the arm should move to an almost straight position. It will not be completely straight as this helps prevent the arm+bucket from hitting the printers side panel.
Shutdown the printer.
### Step 9 - Installation and Wiring
![mounted](images/wireplacement.jpg)
Fit the Nozzle Wiper arm to the left extrusion. This uses a push fit method. Line the mount up with the logo side to the extrusion. Feed the cable up into the groove on the inner section of extrusion and push the logo side into the extrusion and the push the other side into the inner section of extrusion. It should snap into place. You should be just about able to move the arm up and down in the extrusion.
![mounted](images/mounted.jpg)
If it is too loose, there are two holes in the logo side of the mount where you can insert 2 x M2x10mm self tapping screws. Inserting the screws here will expand the mount inside the rail to hold it in place. If you then need to move the arm up and down you will have to remove the self tapping screws completely.
You can route the cable up the extrusion and along the bottom of the Y axis. The cable should just fit through into the electronics bay, but you will likely need to remove the DuPont connector by lifting the taps to free the pins. You can then push the cable through and wire it to your MCU.
### Step 10 - Klipper Configuration
Follow the steps in the nozzlewiper.cfg file to configure the nozzle wiper setup.
## Changelog:
- 2022-05-04 First release
- 2022-07-11 Added STEP CAD
- 2022-07-25 Improved printability of STL parts

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 88 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 85 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 82 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 51 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 51 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 37 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 75 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 88 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 63 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 74 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 39 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 44 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 93 KiB

View File

@ -0,0 +1,104 @@
###############################################################################
## NOZZLE WIPER - A nozzle purge bucket and brush for the Voron 0.1 and other
## printers for ants
##
## Configuration:
##
## 1. Set the correct PWM pin that you connected the Orange wire
## to in the [servo wipeServo] section replacing XXNN
## 2. Home X, Y and Z axes
## 3. Lower Z by at least 50mm
## 4. Run the NW_DEPLOY macro and ensure the servo extends the arm 90 degrees
## 5. Use the printer controls to move the nozzle so that it is inline with
## the brush on the X axis and so that it is in the centre of the purge
## bucket on the Y axis
## 7. Run M114 to get the nozzle position and set variable_x and variable_y.
## If you do not set these values the macro will fail as the defaults are
## deliberately wrong
## 8. Move the nozzle into the center of the brush and raise the mount on
## the extrusion until the nozzle just rests into the brush. Do not let the
## brush touch the sock or it'll wear it out prematurely
## 9. Move the nozzle out of the way from the brush and purge bucket
## 10. Run NW_RETRACT and ensure the servo moves the arm back away to the side
##
## Testing:
##
## 1. Heat the nozzle to the printing temperature of the loaded filament
## 2. Home all axes
## 3. Be prepared to hit the Emergency Stop button if things don't go as they
## should
## 4. Run NW_CLEAN_NOZZLE
##
## That should be all changes needed. Call the NW_CLEAN_NOZZLE macro from
## the end of your START_PRINT macro to wipe the nozzle clean before printing
###############################################################################
[servo wipeServo]
pin: XXNN
minimum_pulse_width: 0.0005
maximum_servo_angle: 180
[gcode_macro NW_CLEAN_NOZZLE]
gcode:
{% if "xyz" in printer.toolhead.homed_axes %}
SAVE_GCODE_STATE NAME=NW_CLEAN_NOZZLE
G90
NW_DEPLOY
NW_PURGE
NW_WIPE
NW_RETRACT
RESTORE_GCODE_STATE NAME=NW_CLEAN_NOZZLE
{% else %}
{ action_raise_error("Home All Axis First") }
M117 Home All Axis First
{% endif %}
[gcode_macro NW_BUCKET_POS]
# Sensible values for variable_x would be 0, but adjust as per the instructions
variable_x: -1000
# Sensible values for variable_y would be around 90, but adjust as per the instructions
variable_y: -1000
# Sensible value for variable_z is 50
variable_z: 50
gcode:
M118 bucket pos X:{printer["gcode_macro NW_BUCKET_POS"].x} Y:{printer["gcode_macro NW_BUCKET_POS"].y} Z:{printer["gcode_macro NW_BUCKET_POS"].z}
[gcode_macro NW_DEPLOY]
gcode:
G90
G0 Z{printer["gcode_macro NW_BUCKET_POS"].z}
SET_SERVO SERVO=wipeServo ANGLE=15
G4 P500
[gcode_macro NW_RETRACT]
gcode:
SET_SERVO SERVO=wipeServo ANGLE=120
SET_SERVO SERVO=wipeServo WIDTH=0 # OFF
G4 P500
[gcode_macro NW_WIPE]
gcode:
G90
G0 Z{printer["gcode_macro NW_BUCKET_POS"].z} F5000
G0 X{printer["gcode_macro NW_BUCKET_POS"].x} Y{printer["gcode_macro NW_BUCKET_POS"].y - 25} F5000
{% for wipes in range(1, 4) %}
G0 Y{printer["gcode_macro NW_BUCKET_POS"].y - 25} F{2000}
G0 Y{printer["gcode_macro NW_BUCKET_POS"].y - 55} F{2000}
{% endfor %}
G0 X60 F5000
G0 Y60 F5000
[gcode_macro NW_PURGE]
gcode:
G90
G0 Z{printer["gcode_macro NW_BUCKET_POS"].z} F5000
G0 X{printer["gcode_macro NW_BUCKET_POS"].x} Y{printer["gcode_macro NW_BUCKET_POS"].y} F5000
{% if printer.extruder.temperature >= 180 %}
M83
G1 E10 F150
G1 E-2 F{150 * 750}
G4 P{2000}
G92 E0
{% else %}
{ action_raise_error("Nozzle Temp must be > 180C") }
{% endif %}