mirror of
https://github.com/zruncho3d/tri-zero.git
synced 2023-02-25 22:19:40 +04:00
Updated CAD, STL's
This commit is contained in:
parent
377dbb6a76
commit
9136ab8c6a
12 changed files with 229871 additions and 15 deletions
Binary file not shown.
115403
Mods/hbo/ServoKlicky/CAD/servo_clicky euklid.step
Normal file
115403
Mods/hbo/ServoKlicky/CAD/servo_clicky euklid.step
Normal file
File diff suppressed because it is too large
Load diff
114034
Mods/hbo/ServoKlicky/CAD/servo_clicky_ZeroClick.step
Normal file
114034
Mods/hbo/ServoKlicky/CAD/servo_clicky_ZeroClick.step
Normal file
File diff suppressed because it is too large
Load diff
Binary file not shown.
277
Mods/hbo/ServoKlicky/Firmware/Euklid.cfg
Normal file
277
Mods/hbo/ServoKlicky/Firmware/Euklid.cfg
Normal file
|
@ -0,0 +1,277 @@
|
|||
## The following is EXAMPLE configuration; it is intended to guide you in the
|
||||
## configuration of the Euclid probe for YOUR printer.
|
||||
##
|
||||
## When incorporating this config into your own, make sure you address all
|
||||
## comment markers starting with "@TODO". Failure to do so could result in
|
||||
## damage to your probe, your printer, or your pride.
|
||||
##
|
||||
##
|
||||
## This example is for a fixed dock, fixed gantry/carriage and moving bed motion
|
||||
## system like RailCore, Ender5, V-Core3, etc. Delta printes will be similar.
|
||||
##
|
||||
## Moving gantry printers like Voron need a few tweaks to ensure proper
|
||||
## clearances and leveling procedures; some hints are provided inline below.
|
||||
##
|
||||
## Array variables implementation and macro setups credited to Brian Lalor,
|
||||
## yolo-dubstep#8033 on Discord. See https://github.com/blalor/vcore3-ratos-config
|
||||
## for updates and details.
|
||||
##
|
||||
|
||||
|
||||
# Below is an example bed diagram to correlate with macros and movements below.
|
||||
# __________________________________________________________________________
|
||||
# | |
|
||||
# | * Dock * Dock Side |
|
||||
# | X25, Y118 X60 Y118 |
|
||||
# | |
|
||||
# | * Dock Prefilight * Dock Exit Position |
|
||||
# | X25, Y90 X60,Y90 |
|
||||
# | |
|
||||
# | |
|
||||
# | |
|
||||
# | |
|
||||
# | |
|
||||
# | |
|
||||
# | |
|
||||
# |________________________________________________________________________|
|
||||
#
|
||||
|
||||
[force_move]
|
||||
enable_force_move: True
|
||||
# Set to true to enable FORCE_MOVE and SET_KINEMATIC_POSITION
|
||||
# extended G-Code commands. The default is false.
|
||||
|
||||
[respond]
|
||||
default_type: echo
|
||||
# Sets the default prefix of the "M118" and "RESPOND" output to one
|
||||
# of the following:
|
||||
# echo: "echo: " (This is the default)
|
||||
# command: "// "
|
||||
# error: "!! "
|
||||
default_prefix: echo:
|
||||
# Directly sets the default prefix. If present, this value will
|
||||
# override the "default_type".
|
||||
|
||||
|
||||
[gcode_macro EuclidProbe]
|
||||
description: config vars for Euclid probe deploy/stow
|
||||
|
||||
## @TODO Replace the coordinates to suit your printer
|
||||
variable_position_preflight: [ 25, 90 ] # position for probe to have clear path to dock
|
||||
variable_position_side: [ 60, 118 ] # position for probe near dock to swipe on/off
|
||||
variable_position_dock: [ 25, 118 ] # dock position
|
||||
variable_position_exit: [ 60, 90 ] # exit position
|
||||
|
||||
## clearance between the toolhead and bed when traveling to pick up the probe
|
||||
variable_bed_clearance: 25
|
||||
|
||||
|
||||
## move speeds in mm/min
|
||||
variable_move_speeds: 3000
|
||||
|
||||
## internal state variables; not for configuration!
|
||||
variable_batch_mode_enabled: False
|
||||
variable_probe_state: None
|
||||
|
||||
gcode:
|
||||
RESPOND TYPE=command MSG="{ printer['gcode_macro EuclidProbe'] }"
|
||||
|
||||
|
||||
|
||||
[gcode_macro _ASSERT_PROBE_STATE]
|
||||
description: ensures probe is in a known state; QUERY_PROBE must have been called before this macro!
|
||||
gcode:
|
||||
## QUERY_PROBE manually-verified results, when microswitch not depressed
|
||||
## "TRIGGERED" -> 1 :: probe stowed
|
||||
## "open" -> 0 :: probe deployed
|
||||
{% set last_query_state = "stowed" if printer.probe.last_query == 1 else "deployed" %}
|
||||
|
||||
{% if params.MUST_BE != last_query_state %}
|
||||
{ action_raise_error("expected probe state to be {} but is {} ({})".format(params.MUST_BE, last_query_state, printer.probe.last_query)) }
|
||||
{% else %}
|
||||
## all good; update state
|
||||
SET_GCODE_VARIABLE MACRO=EuclidProbe VARIABLE=probe_state VALUE="'{ last_query_state }'"
|
||||
{% endif %}
|
||||
|
||||
|
||||
[gcode_macro ASSERT_PROBE_DEPLOYED]
|
||||
description: error if probe not deployed
|
||||
gcode:
|
||||
# wait for moves to finish, then pause 0.25s for detection
|
||||
M400
|
||||
G4 P250
|
||||
|
||||
QUERY_PROBE
|
||||
_ASSERT_PROBE_STATE MUST_BE=deployed
|
||||
|
||||
|
||||
[gcode_macro ASSERT_PROBE_STOWED]
|
||||
description: error if probe not stowed
|
||||
gcode:
|
||||
# wait for moves to finish, then pause 0.25s for detection
|
||||
M400
|
||||
G4 P250
|
||||
|
||||
QUERY_PROBE
|
||||
_ASSERT_PROBE_STATE MUST_BE=stowed
|
||||
|
||||
|
||||
[gcode_macro EUCLID_PROBE_BEGIN_BATCH]
|
||||
description: begin euclid probe batch mode
|
||||
gcode:
|
||||
SET_GCODE_VARIABLE MACRO=EuclidProbe VARIABLE=batch_mode_enabled VALUE=True
|
||||
RESPOND TYPE=command MSG="Probe batch mode enabled"
|
||||
|
||||
|
||||
[gcode_macro EUCLID_PROBE_END_BATCH]
|
||||
description: end euclid probe batch mode and stow probe
|
||||
gcode:
|
||||
SET_GCODE_VARIABLE MACRO=EuclidProbe VARIABLE=batch_mode_enabled VALUE=False
|
||||
RESPOND TYPE=command MSG="Probe batch mode disabled"
|
||||
STOW_PROBE
|
||||
|
||||
|
||||
# deploy probe macro
|
||||
# @TODO Check the servo dock values to ensure the dock releases the probe at the right height
|
||||
|
||||
[gcode_macro DEPLOY_PROBE]
|
||||
description: deploy Euclid probe
|
||||
gcode:
|
||||
{% set euclid_probe = printer["gcode_macro EuclidProbe"] %}
|
||||
|
||||
{% if euclid_probe.batch_mode_enabled and euclid_probe.probe_state == "deployed" %}
|
||||
RESPOND TYPE=command MSG="Probe batch mode enabled: already deployed"
|
||||
{% else %}
|
||||
RESPOND TYPE=command MSG="Deploying probe"
|
||||
|
||||
# ensure the probe is currently stowed; can't deploy what isn't stowed.
|
||||
ASSERT_PROBE_STOWED
|
||||
|
||||
|
||||
G90
|
||||
|
||||
# set approach elevation to clear probe over bed on fixed gantry machine
|
||||
G0 Z{ euclid_probe.bed_clearance } F500
|
||||
|
||||
##########################
|
||||
# open Servo Dock
|
||||
# @TODO check ANGLE
|
||||
##########################
|
||||
SET_SERVO SERVO=probe_servo ANGLE=10
|
||||
# wait 1/2 second for dock
|
||||
M400
|
||||
M400
|
||||
|
||||
|
||||
# move the toolhead to safe position to start probe pickup
|
||||
G0 X{ euclid_probe.position_preflight[0] } Y{ euclid_probe.position_preflight[1] } F{ euclid_probe.move_speeds }
|
||||
|
||||
|
||||
# @TODO fixed bed dock and moving gantry printers need to add a move
|
||||
# @TODO command here to lower the gantry to dock height
|
||||
# G0 Z {euclid_probe.dock_height} F500
|
||||
|
||||
|
||||
# move sideways over the dock to pick up probe
|
||||
G0 X{ euclid_probe.position_dock[0] } Y{ euclid_probe.position_dock[1] } F1500
|
||||
|
||||
# wait 1/4 second
|
||||
M400
|
||||
G4 P250
|
||||
|
||||
# confirm deploy was successful
|
||||
ASSERT_PROBE_DEPLOYED
|
||||
|
||||
# move to the side of the dock
|
||||
G0 X{ euclid_probe.position_side[0] } Y{ euclid_probe.position_side[1] } F{ euclid_probe.move_speeds }
|
||||
|
||||
##########################
|
||||
# close Servo Dock
|
||||
# @TODO check ANGLE
|
||||
##########################
|
||||
SET_SERVO SERVO=probe_servo ANGLE=115
|
||||
|
||||
# move out of the dock in a straight line
|
||||
G0 X{ euclid_probe.position_exit[0] } Y{ euclid_probe.position_exit[1] } F{ euclid_probe.move_speeds }
|
||||
{% endif %}
|
||||
|
||||
# stow probe macro
|
||||
# @TODO Check the servo dock values to ensure the dock releases the probe at the right height
|
||||
[gcode_macro STOW_PROBE]
|
||||
description: stow Euclid probe
|
||||
gcode:
|
||||
{% set euclid_probe = printer["gcode_macro EuclidProbe"] %}
|
||||
|
||||
{% if euclid_probe.batch_mode_enabled %}
|
||||
RESPOND TYPE=command MSG="Probe batch mode enabled: not stowing"
|
||||
{% else %}
|
||||
RESPOND TYPE=command MSG="Stowing probe"
|
||||
|
||||
# ensure the probe is currently deployed; can't stow what isn't deployed.
|
||||
ASSERT_PROBE_DEPLOYED
|
||||
|
||||
# set approach elevation for fixed gantry system to clear probe over bed
|
||||
G0 Z{ euclid_probe.bed_clearance } F3000
|
||||
|
||||
|
||||
##########################
|
||||
# open Servo Dock
|
||||
# @TODO check ANGLE
|
||||
##########################
|
||||
SET_SERVO SERVO=probe_servo ANGLE=10
|
||||
# wait 1/2 second for dock
|
||||
M400
|
||||
M400
|
||||
|
||||
|
||||
G90
|
||||
|
||||
# move out of the dock in a straight line
|
||||
G0 X{ euclid_probe.position_exit[0] } Y{ euclid_probe.position_exit[1] } F{ euclid_probe.move_speeds }
|
||||
|
||||
|
||||
# move to the side of the dock
|
||||
G0 X{ euclid_probe.position_side[0] } Y{ euclid_probe.position_side[1] } F{ euclid_probe.move_speeds }
|
||||
|
||||
|
||||
# slowly move into dock
|
||||
G0 X{ euclid_probe.position_dock[0] } Y{ euclid_probe.position_dock[1] } F3000
|
||||
|
||||
# wait for moves to finish, pause to force 90deg travel swipe
|
||||
M400
|
||||
G4 P250
|
||||
|
||||
# quick swipe off
|
||||
# move the toolhead to safe position to start probe pickup
|
||||
G0 X{ euclid_probe.position_preflight[0] } Y{ euclid_probe.position_preflight[1] } F{ euclid_probe.move_speeds }
|
||||
|
||||
##########################
|
||||
# close Servo Dock
|
||||
# @TODO check ANGLE
|
||||
##########################
|
||||
SET_SERVO SERVO=probe_servo ANGLE=115
|
||||
|
||||
|
||||
# confirm stowing was successful
|
||||
ASSERT_PROBE_STOWED
|
||||
{% endif %}
|
||||
|
||||
|
||||
|
||||
# Z-Tilt Adjust and BED_Mesh Overrides
|
||||
|
||||
[gcode_macro Z_TILT_ADJUST]
|
||||
description: modified Z_TILT_ADJUST, wrapped with DEPLOY_PROBE/STOW_PROBE
|
||||
rename_existing: Z_TILT_ADJUST_ORIG
|
||||
gcode:
|
||||
DEPLOY_PROBE
|
||||
Z_TILT_ADJUST_ORIG
|
||||
STOW_PROBE
|
||||
|
||||
[gcode_macro BED_MESH_CALIBRATE]
|
||||
description: modified BED_MESH_CALIBRATE, wrapped with DEPLOY_PROBE/STOW_PROBE
|
||||
rename_existing: BED_MESH_CALIBRATE_ORIG
|
||||
gcode:
|
||||
DEPLOY_PROBE
|
||||
BED_MESH_CALIBRATE_ORIG
|
||||
STOW_PROBE
|
139
Mods/hbo/ServoKlicky/Firmware/Printer.cfg
Normal file
139
Mods/hbo/ServoKlicky/Firmware/Printer.cfg
Normal file
|
@ -0,0 +1,139 @@
|
|||
# This file contains only the sections related to the probe configuratioo
|
||||
# THIS IS NOT A CEMPLETE KLIPPER PRINTER CONFIGURATION
|
||||
#
|
||||
# You need to adjust some values to your printer and probe mounting dimensions
|
||||
# This paricular config ia based on my tri-zero usinge the Ghost-LG toolhead and a euklid probe
|
||||
# that docks into the servo-klicky
|
||||
#
|
||||
# The pin configuration is for a SKR Pico board.
|
||||
# Note: You need to add a jumper on the pico to enablke the servo pins (see PICO manual for details)
|
||||
|
||||
|
||||
[include euklid.cfg]
|
||||
|
||||
|
||||
#####################################################################
|
||||
# Additiponal Components
|
||||
#####################################################################
|
||||
|
||||
|
||||
#################################
|
||||
# Probing
|
||||
#################################
|
||||
|
||||
[servo probe_servo]
|
||||
pin: gpio29
|
||||
# PWM output pin controlling the servo. This parameter must be
|
||||
# provided.
|
||||
maximum_servo_angle: 140
|
||||
# The maximum angle (in degrees) that this servo can be set to. The
|
||||
# default is 180 degrees.
|
||||
minimum_pulse_width: 0.0008
|
||||
# The minimum pulse width time (in seconds). This should correspond
|
||||
# with an angle of 0 degrees. The default is 0.001 seconds.
|
||||
maximum_pulse_width: 0.0022
|
||||
# The maximum pulse width time (in seconds). This should correspond
|
||||
# with an angle of maximum_servo_angle. The default is 0.002
|
||||
# seconds.
|
||||
initial_angle: 115
|
||||
# Initial angle (in degrees) to set the servo to. The default is to
|
||||
# not send any signal at startup.
|
||||
#initial_pulse_width:
|
||||
# Initial pulse width time (in seconds) to set the servo to. (This
|
||||
# is only valid if initial_angle is not set.) The default is to not
|
||||
# send any signal at startup.
|
||||
|
||||
|
||||
[probe]
|
||||
pin: EBBCan: PB8 # Adjust to your board
|
||||
x_offset: -23 # Adjust to your probe mount
|
||||
y_offset: -10.0 # Adjust to your probe mount
|
||||
|
||||
#z_offset: 7.05 # this value is from the probe result using feeler gauge to set Z height
|
||||
# The distance (in mm) between the bed and the nozzle when the probe
|
||||
# triggers. This parameter must be provided.
|
||||
speed: 5
|
||||
samples: 2
|
||||
samples_result: average
|
||||
sample_retract_dist: 5.0
|
||||
samples_tolerance: 0.005
|
||||
samples_tolerance_retries: 3
|
||||
lift_speed: 30
|
||||
|
||||
|
||||
|
||||
#####################################################################
|
||||
# Homing and Gantry Adjustment Routines
|
||||
#####################################################################
|
||||
|
||||
|
||||
|
||||
[homing_override]
|
||||
axes: z
|
||||
gcode:
|
||||
{% set euclid_probe = printer["gcode_macro EuclidProbe"] %}
|
||||
|
||||
QUERY_PROBE
|
||||
_ASSERT_PROBE_STATE MUST_BE=stowed
|
||||
|
||||
# ensure the servo dock is in park position !!
|
||||
# homing z with the dock exposed might kill the servo gears !!
|
||||
SET_SERVO SERVO=probe_servo ANGLE=115
|
||||
|
||||
G28 X
|
||||
G28 Y
|
||||
G1 X60 Y20 F4000
|
||||
|
||||
G28 Z
|
||||
G1 Z25
|
||||
|
||||
|
||||
|
||||
[z_tilt]
|
||||
z_positions:
|
||||
# A list of X, Y coordinates (one per line; subsequent lines
|
||||
# indented) describing the location of each bed "pivot point". The
|
||||
# "pivot point" is the point where the bed attaches to the given Z
|
||||
# stepper. It is described using nozzle coordinates (the X, Y position
|
||||
# of the nozzle if it could move directly above the point). The
|
||||
# first entry corresponds to stepper_z, the second to stepper_z1,
|
||||
# the third to stepper_z2, etc. This parameter must be provided.
|
||||
60,130
|
||||
-45,10
|
||||
165,10
|
||||
|
||||
points:
|
||||
# A list of X, Y coordinates (one per line; subsequent lines
|
||||
# indented) that should be probed during a Z_TILT_ADJUST command.
|
||||
# Specify coordinates of the nozzle and be sure the probe is above
|
||||
# the bed at the given nozzle coordinates. This parameter must be
|
||||
# provided.
|
||||
85,110
|
||||
30,5
|
||||
120,5
|
||||
|
||||
speed: 50
|
||||
# The speed (in mm/s) of non-probing moves during the calibration.
|
||||
# The default is 50.
|
||||
horizontal_move_z: 15
|
||||
# The height (in mm) that the head should be commanded to move to
|
||||
# just prior to starting a probe operation. The default is 5.
|
||||
retries: 5
|
||||
# Number of times to retry if the probed points aren't within
|
||||
# tolerance.
|
||||
retry_tolerance: 0.005
|
||||
# If retries are enabled then retry if largest and smallest probed
|
||||
# points differ more than retry_tolerance. Note the smallest unit of
|
||||
# change here would be a single step. However if you are probing
|
||||
# more points than steppers then you will likely have a fixed
|
||||
# minimum value for the range of probed points which you can learn
|
||||
# by observing command output.
|
||||
|
||||
|
||||
[bed_mesh]
|
||||
speed: 100
|
||||
horizontal_move_z: 14
|
||||
mesh_min: 10, 0
|
||||
mesh_max: 95, 80
|
||||
probe_count: 4, 4
|
||||
|
|
@ -1,14 +1,7 @@
|
|||
# Servo Powered Docks for the V0 and Variants
|
||||
|
||||
|
||||
This as a mount for the z-probe that mooves the probe and dock out of the way while printing.
|
||||
Therfore there is no loss on print volume !
|
||||
|
||||
### Curently in alpha stage
|
||||
|
||||
Parts have been printed but not yet tested on a printer (im still in the prozess of bulding a V0 to test this)
|
||||
|
||||
|
||||
This as a mount for the z-probe that move’s the probe and dock out of the way while printing.
|
||||
Therefore there is no loss on print volume !
|
||||
|
||||
https://user-images.githubusercontent.com/1899323/218826318-dd8349b1-3cd3-4b2f-90a4-cacaf3864f00.mp4
|
||||
|
||||
|
@ -19,18 +12,15 @@ https://user-images.githubusercontent.com/1899323/218826318-dd8349b1-3cd3-4b2f-9
|
|||

|
||||

|
||||
|
||||
|
||||
# Printing
|
||||
|
||||
|
||||
All parts print with standard Voron print setting without any supports.
|
||||
|
||||
# BOM Notes
|
||||
|
||||
|
||||
| Part | Qty | Notes |
|
||||
| - | - | - |
|
||||
| Probe | Zero-Click or euklid | As of yet there is no mount for the euklid on the toolhead (upcomming) |
|
||||
| Probe | Zero-Click or euklid | Tested on my Ghost LG toolhead |
|
||||
| - | - | - |
|
||||
| Servo | 1 | MG90S - Same as for the ECRF |
|
||||
| - | - | - |
|
||||
|
@ -38,10 +28,17 @@ All parts print with standard Voron print setting without any supports.
|
|||
| M3 x 6 | 1 | To mount the servo base to the z-extrusion (top)|
|
||||
| M3 x 35| 1 | To mount the servo base to the z-extrusion (bottom) |
|
||||
| | | note that the mounting hole of the servo needs to enlarged to 3mm |
|
||||
| M2 x 10 self tapping | 2 | for the dock assembly |
|
||||
| M3 Insert | 1 | Pivot point mount - use some locktite here |
|
||||
| M2 x 10 self-tapping | 2 | for the dock assembly |
|
||||
| M3 Insert | 1 | Pivot point mount - use some Loctite here |
|
||||
|
||||
# Firmware
|
||||
|
||||
There are some configuration files and snippets in the firmware folder.
|
||||
They are based on a Euklid probe mounted to a Ghost LG Toolhead. So physical dimensions need to be adjusted to your setup.
|
||||
|
||||
WARNING: while configuring your printer make sure that you don't run any z-homing routines with the probe or dock deployed.
|
||||
It will likely kill your probe mount and maybe the servo gears (if you don't use a servo with metal gears)
|
||||
(Don't ask me how i know)
|
||||
|
||||
# CAD Notes
|
||||
|
||||
|
@ -50,5 +47,11 @@ You need to show/hide the version you like to work with
|
|||
|
||||
Also note the Joints (Rotation and sliders) to animate and test the movements
|
||||
|
||||
# Changelog
|
||||
|
||||
## 14.02.23
|
||||
|
||||
- multiple minor updates to get the servo movfe more freely
|
||||
- CAD und STL^s updated
|
||||
|
||||
|
||||
|
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Loading…
Add table
Add a link
Reference in a new issue