用ADXL345加速度传感器测量机器共振数据,通过Klipper的input_shaper功能大幅改善震纹

说真的这是我用Klipper玩3D打印机至今,用过效果最佳的改造了。测试完成后,震纹几乎绝迹,并且可以大幅提高打印速度,打印的质量也很可以接受。所以非常推荐玩Klipper的小伙伴进行加装改造。

补一个有图有真相,上图是切片打印速度为120的时候未开启input_shaper时的打印效果,下图是切片打印速度为250的时候开启了input_shaper的打印效果。是不是觉得很神奇!
所以,废话少说,Let’s go……

第一步,材料准备

ADXL345加速度传感器一块,然后就……没了……

ADXL345
从选择来说,这个加速度传感器在淘宝型号上很多,从几十到几元钱都有,我采购的是9元多的,感觉也挺好的,所以也就不用太讲究价格什么了,可以酌情采购。

第二步,安装及接线


这是官方的接线图,不过研究下来其实3.3V和GND可以直接图中箭头指的这两个,这样就可以直接压一个4×2的插头一次性解决了

安装位置可以参考这个

安装有几个要注意的点:

1)具体安装位置其实没有太大讲究,毕竟这个模块作用只是测试,测试好后可以拆掉,但是一定要尽量靠近喷嘴。

2)ADXL345板子上有XYZ的方向指向,但是按照资料好像说方向不一定非要和打印机的方向一致,但是每个轴必须平行,譬如ADXL345板子上的Z轴可以对着打印机的X轴,但是Z轴和X轴平行。(轴方向不需要一致这一点其实不是非常确认,如果有不同意见的可以反馈)

第三步,配置树莓派

硬件接好之后就可以试着软件的安装了,首先因为Klipper需要通过树莓派的SPI针脚读取加速度传感器的数据,所以需要先将树莓派变成klipper的一块mcu板子,这样klipper才能读取到加速度传感器的数据。这一步在klipper官方的教程中是没有的,所以很多人这一步会忽略。

下面的命令都是在树莓派系统中执行

首先安装Python的科学计算库,用作分析计算共振数据(实际执行的pip路径需要根据你klipper的venv环境的实际安装的路径来定,绝大部分情况是home目录下的klippy-env中)

~/klippy-env/bin/pip install -v numpy

安装系统依赖库

sudo apt install python-numpy python-matplotlib

将树莓派变成klipper的一块mcu,复制官方提供的系统启动脚本,并设置成系统自动启动

cd ~/klipper/
sudo cp "./scripts/klipper-mcu-start.sh" /etc/init.d/klipper_mcu
sudo update-rc.d klipper_mcu defaults

配置并编译树莓派的固件

cd ~/klipper/
make menuconfig

配置的控制器类型的时候,切记得要选择Linux process的

配置完成后就可以编译固件了

sudo service klipper stop
make flash
sudo service klipper start

sudo usermod -a -G tty pi

打开树莓派的SPI的接口

sudo raspi-config

上述步骤没有报错完成后,重启一次树莓派

第四步,配置Klipper

打开Klipper的配置文件,在合适的地方加入下面的配置代码

[mcu rpi]
serial: /tmp/klipper_host_mcu

[adxl345]
cs_pin: rpi:None

[resonance_tester]
accel_chip: adxl345
probe_points:
    100,100,20  # 这个地方建议配置成热床的中间

配置完成后重启一下Klipper,在OctoPrint等终端内输入

ACCELEROMETER_QUERY

这个命令是查询加速器的参数,如果前面的软硬件安装正常的话,就会收到返回的加数据传感器参数,类似于下面内容……

.....
Recv: // adxl345 values (x, y, z): 470.719200, 941.438400, 9728.196800
...

第五步,测试加速度

开始测试前,先把打印机的加速度配置调大(这个测试完之后可以还原回去)

[printer]
max_accel: 7000
max_accel_to_decel: 7000

如果你之前有配置过input_shaper的功能,需要先关掉之前配置好的参数

SET_INPUT_SHAPER SHAPER_FREQ_X=0 SHAPER_FREQ_Y=0

然后就开始可以测试共振了,比较省事的就是直接用自动测试配置命令

SHAPER_CALIBRATE

测试的时候,刀头会从0MHz~120MHz震动,逐渐测试x轴和y轴数据,期间声音会逐渐增大,如果机子组装过程没有太大问题的话,机子不应该会有太剧烈反应(如果有太剧烈的反应建议检查组装过程)
完成测试后会进行一下计算,然后会显示出x轴和y轴推荐的配置方法和配置值,你可以根据这个配置方法和值手工配置input_shaper参数,类似这种

[input_shaper]
shaper_type_x = 3hump_ei
shaper_freq_x = 52.4
shaper_type_y = 2hump_ei
shaper_freq_y = 37.5

不过也能直接使用

SAVE_CONFIG

命令直接保存进配置文件

最后,没了……

14
封面图
  • 评论17

    请先

    1. 牛逼,大佬
      my360201-29
    2. 谢谢大佬分享
      China Red01-29
    3. 谢谢大佬的教程
      星期天01-29
    4. 谢谢大佬的教程
      小钳子01-31
    5. 我感觉这个传感器方向安装不对把
      望海的猫咪02-01
      • XYZ的方向可以用软件配置,所以只要装的横平竖直就行,不需要xyz一定要对着“XYZ”。。。
        小钳子02-01
        • 这样啊 :eek:
          望海的猫咪02-01
        • 实际加速度传感器在XYZ三轴上的精度,响应时间频率上限都不一样,普遍XY的响应时间要小于Z轴的。我想这种振动纹消除能将XY对应上会更好。
          维卡亚[vk]04-10
    6. 在第一步时安装 numpy 出现了 utf8 代码错误 怎么解决呢 ????
      shisui02-09
    7. 谢谢大佬的分享和教学
      荔湾元元03-01
      • ACCELEROMETER_QUERY 后 adxl345 values (x, y, z): 0.000000, 0.000000, 0.000000 没有收到数据,检查连线应该没有问题
        shisui04-02
    8. 大佬,测试的时候振动明显吗?我测试刚开始时能看到打印头在振动,后面就完全看不出来是不是在振动了。
      星期天04-22
      • 先x振动,再y振动,最后保存数据
        小钳子05-08
    没有账号? 注册  忘记密码?

    社交账号快速登录