Rework the tap_threshold to use units of hz/mm (instead of hz). This
will make it easier to implement tap calibration based on results of
PROBE_EDDY_CURRENT_CALIBRATE and previous tap attempts. It can also
make the tap_threshold more stable with different probe speeds and
sensor rates.
As a result of this change, existing user configurations will need to
be updated. It is hoped that existing configurations will have a
value that is sufficiently low that they will reliably get an error
until they can recalibrate.
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
Add a new EddyParameterHelper to override ProbeParameterHelper.
Only use the printer.cfg lift_speed, samples, sample_retract_dist,
samples_result, samples_tolerance, and samples_tolerance_retries
settings for normal probe operations. Don't use these defaults when
using a "METHOD" set to "scan", "rapid_scan", or "tap". Each of these
probing mechanisms is distinct and it's unlikely a user could
meaningfully set a default for all of them.
Don't set sample_retract_dist when using "scan" and "rapid_scan"
modes.
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
The config option 'z_offset' name is confusing as its behavior is
notably different from how other probe hardware uses 'z_offset'.
Rename to 'descend_z' to make its behavior more clear.
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
Replace the integer values of STOP_ON_ENDSTOP with string values and
deprecate the older format. The newer string values should make the
commands easier to understand and allow for more homing options in the
future.
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
Deprecate the PROBE command's exported value
`{printer.probe.last_z_result}`. This value effectively returns the
toolhead Z position when the probe triggers and user's then need to
adjust the result using the probe's configured z_offset.
Introduce a new `{printer.probe.last_probe_position}` as a
replacement. This replacement has an easier to understand behavior -
it states that the probe hardware estimates that if the toolhead is
commanded to last_probe_position.x, last_probe_position.y and descends
then the tip of the toolhead should first make contact at a Z height
of last_probe_position.z . That is, the new exported value already
takes into account the probe's configured xyz offsets.
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
Change the low-level probe code to return ProbeResult tuples from
probe_session.pull_probed_results(). Also update callers to use the
calculated bed_xyz values found in the tuple instead of calculating
them from the probe's xyz offsets.
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
Change the ProbePointsHelper class to return ProbeResult tuples.
Callers of this class are also updated so that they use the tuple's
bed_xyz parameters instead of manually calculating these values from
the probe xyz offsets.
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
This also enables arbitrary using names for primary carriages
with generic_cartesian kinematics.
Signed-off-by: Dmitry Butyugin <dmbutyugin@google.com>
During normal printing the host software would attempt to stay ahead
of the micro-controller by 2 full seconds. Change that time to 1
second. This should make the software more responsive to user
requests (such as pause requests).
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
Currently, `MANUAL_STEPPER STOP_ON_ENDSTOP=1` type commands will move
until hitting the endstop, but it will still always consume the total
amount of move time. That is, following moves can't be started until
the total possible time of the homing move is completed.
Implement "drip moves" so that the code only schedules the movement in
small segments. This allows following movements to be scheduled
without a significant delay.
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
This adds a new resonance test method that can help if a user has some mechanical problems with the printer.
Signed-off-by: Dmitry Butyugin <dmbutyugin@google.com>
Don't silently drop leading numbers and unusual characters at the
start of a command - for example, don't interpret '99M88' as 'M88'.
Don't silently drop spaces in a command - for example, don't interpret
"M 101" as the command "M101". Doing so will cause other parts of the
code (such as get_raw_command_parameters() ) to not work properly.
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
Corrected issue where accelerometer names were incorrectly prefixed
with "adxl345", preventing the selection of other chip types when running TEST_RESONANCES.
Implemented support for selecting the `accel_per_hz` parameter when running TEST_RESONANCES.
docs: Update TEST_RESONANCES + SHAPER_CALIBRATE with missing parameters and bracket corrections
Signed-off-by: Maksim Bolgov <maksim8024@gmail.com>
The user facing max_accel_to_decel setting is complicated and
confusing. Replace it with a new minimum_cruise_ratio parameter.
Internally this user-facing parameter will calculate the existing
low-level "accel_to_decel" mechanism.
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
Remove support for changing the cycle time of pwm pins from the
output_pin module. Use a new pwm_cycle_time module that supports
setting dynamic cycle times. This simplifies the output_pin code and
low-level pin update code.
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
Advise users to configure a pwm_tool config section if checking for
maximum mcu duration is required.
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
Remove support for configuring "static" pins in output_pin module. A
"static" pin only saves a few bytes of memory in the micro-controller.
The savings does not justify the increased code complexity.
Deprecate the static_value parameter to warn users. In the interim, a
static_value parameter will set both value and shutdown_value
parameters.
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
Add support for maximum filament diameter to hall filament width sensor.
If the diameter of the filament diameter is larger than the limit, the
virtual runout sensor will trigger. The default value is set to maximum
flow adjustment threshold to prevent oversized filament from clogging.
Signed-off-by: Sami Haahtinen <ressu@ressukka.net>
These internal low-level config parameters were never documented.
Going forward, developers may modify them by altering the internal
settings in toolhead.py.
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
Previous version of the code assumed that dual carriages home away
from each other, which is not true on some machines, which have the
second dual carriage homing on the first carriage. The new code
correctly identifies the relative order of the carriages now.
This fixes discrepancies between the documentation and the actual
implementation of the carriages kinematic ranges calculation.
Notes about dual_carriage homing and proximity checks changes
Fixed clearing of homing state after homing in certain modes
In case of multi-MCU homing it is possible that the carriage position
will end up outside of the allowed motion range due to latencies in data
transmission between MCUs. Selecting certain modes after homing could
result in home state clearing instead of blocking the motion of the
active carriage. This commit fixes this undesired behavior.
Signed-off-by: Dmitry Butyugin <dmbutyugin@google.com>
COPY and MIRROR mode implementation
Correctly apply input shaper params to new dual_carriage
Added SAVE_/RESTORE_IDEX_STATE commands
Documentation updates for the new IDEX modes
Signed-off-by: Dmitry Butyugin <dmbutyugin@google.com>
Change the default CANbus frequency from 500000 to 1000000. A higher
frequency allows for greater data transfer rates, lower latency of
messages, and should overall be more robust.
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>