Skip to content

Latest commit

 

History

History
88 lines (64 loc) · 3.03 KB

README.md

File metadata and controls

88 lines (64 loc) · 3.03 KB

ADXL345 Probe

CC BY-NC-SA 4.0

!!! This project is in a BETA state, use at your own risk !!!

The ADXL345 has an interesting feature called tap detection. With the appropriate tuning, this can be used to implement a nozzle probe on 3D printers. This project aims to support nozzle probing through tap detection for printers using Klipper.

You can watch this thing in action here: https://www.youtube.com/shorts/_qd0kMkrVZw

Results you can expect for a properly tuned system (This was on a Voron Trident):

probe accuracy results: maximum 0.007500, minimum 0.000937, range 0.006563, average 0.004031, median 0.004219, standard deviation 0.001841

I also measured the force on the bed using a standard kitchen scale, this was approximately 200g. A CAN bus board was used, so a direct connection might result in a quicker stop (See Multi MCU homing in the Klipper docs for more information on this).

Installation

cd $HOME
git clone https://github.com/jniebuhr/adxl345-probe
cd adxl345-probe
./scripts/install.sh

Physical setup

This code requires the ADXL int1 or int2 pins to be wired to one of your boards (preferrably the one that controls Z motion). For a ADXL345 breakout board, simply run a wire. If you're using a CAN toolboard, the following boards are supported as they have wired the pins:

Supported Boards

Board Supported int_pin probe_pin Link
Mellow Fly SB2040 (v1/v2) int1 gpio21 https://aliexpress.com/item/1005004675264551.html
Mellow Fly SHT36 v2 int1 PA10 https://aliexpress.com/item/1005004675264551.html
Huvud ? ?
NiteHawk int1 gpio21
EBB36 with soldering int1/int2 choose

Configuration

This configuration must be below your adxl345 section.

[adxl345_probe]
probe_pin: <pin for either int1 or int2>
int_pin: int1 # select either int1 or int2, depending on your choice of wiring
tap_thresh: 12000 # this needs to be tuned
tap_dur: 0.01 # this needs to be tuned
speed: 20 # this needs to be tuned
z_offset: 0
# Adjust this to your liking
samples: 3
sample_retract_dist: 3.0
samples_result: median
samples_tolerance: 0.01
samples_tolerance_retries: 20

If you want to use the probe as Z endstop as well:

[stepper_z]
... your remaining config ...
endstop_pin: probe:z_virtual_endstop

Make sure to remove position_endstop in this case.

Tuning guide

In progress...

License

This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.

CC BY-NC-SA 4.0