2024年4月25日 星期四

Klipper 的 TMC 驅動設定

很辛苦的把舊的 3D 印表機改成 TMC2209 的靜音驅動,發現 microstep 仍然只能設到 16,噪音無法減少多少,有點失望。

不想換主板,因為這台機器會不會繼續用都不確定,因為已有太多機器了。只好細讀相關資料,看能有多大的改善。

TMC2209 靜音驅動的考量

參考 TMC drivers

  • StealthChop:是一种使用 PWM 电压而不是电流来驱动电机的技术。结果在低速时几乎听不见。StealthChop 具有较低的步进速度限制,如果您需要更快地移动,您可能需要使用 spreadCycle 或配置混合模式。
  • SpreadCycle:是另一种步进模式。驱动器将使用四个阶段将所需的电流驱动到步进电机中。SpreadCycle 提供更大的扭矩。缺点是噪音水平略高。

兩種模式不要混用。低速時用 StealthChop,安靜。高速時用 SpreadCycle,較有力,較吵。

8 位元 CPU,如 Atmega2560,microstep 只能設到 16。使用 TMC 驅動的好處,是能透過 interpolation 降低噪音。但是 Klipper 的指引建議關閉 interpolation,使用 spreadCycle 或 stealthChop,其中 spreadCycle 為優先。截錄說明如下


The TMC driver interpolate setting may reduce the audible noise of printer movement at the cost of introducing a small systemic positional error. This systemic positional error results from the driver's delay in executing "steps" that Klipper sends it. During constant velocity moves, this delay results in a positional error of nearly half a configured microstep (more precisely, the error is half a microstep distance minus a 512th of a full step distance). For example, on an axis with a 40mm rotation_distance, 200 steps_per_rotation, and 16 microsteps, the systemic error introduced during constant velocity moves is ~0.006mm.

For best positional accuracy consider using spreadCycle mode and disable interpolation (set interpolate: False in the TMC driver config). When configured this way, one may increase the microstep setting to reduce audible noise during stepper movement. Typically, a microstep setting of 64 or 128 will have similar audible noise as interpolation, and do so without introducing a systemic positional error.

If using stealthChop mode then the positional inaccuracy from interpolation is small relative to the positional inaccuracy introduced from stealthChop mode. Therefore tuning interpolation is not considered useful when in stealthChop mode, and one can leave interpolation in its default state.




2024年4月23日 星期二

Anycubic Kossel 安裝 Klipper

參考 Anycubic Kossel Klipper guide

設定檔,klipper/config /printer-anycubic-kossel-plus-2017.cfg

機器簡要資料

此機器一般稱為 Anycubic Kossel Linear Plus 3D printer。控制板為 YJYGR 的 TriGorilla,為 Mega2560 & RAMPS1.4 相容板。電源輸入為 12-24V,有些說可以到 35V。有不同的版本,如下圖的標誌中沒有版本註記,為 Trigorilla 1.0。


沒找到詳細的資料,只有查到 Amazon 的商品簡介,有一個是配 FYSETC 的 TMC2209 (V2.0) 驅動,PIN 不太一樣。要支援 TMC2209 靜音驅動,必須自己修改,有點囉唆,看看是否改用 MKS Gen l v2.1,不用煩惱。

要接 TMC2209,使用 UART mode,可參考 UART This! Serial Control of Stepper Motors With the TMC2208, Ramps 1.4 and Marlin

MKS 和 FYSETC 的 TMC2209,PIN4-RX,PIN5-TX。TMC2209 只有一個 PIN,即 PIN14 為 PDN/UART,用 20K 的電阻 pull down,接到插槽的 PIN4-RX。插槽的 PIN4 和 PIN5 之間可能是短路,或經 1K 電阻接在一起。假如 PIN5 是要連到一般 UART 的 TX,就必須用 1K 電阻,不能直接短路。如上述文章使用 Marlin,serial_tx_pin 和 serial_rx_pin 都用到。至於 Klipper 只需定義一個 uart_pin,就直接短路吧。

參考 FYSETC 的 Spider 2.3 的說明,它連到 PIN5-TX,所以 PIN4 和 PIN5 短路的話,就可以正常運作。


比對 A4988 的 PIN,PIN4-RESET,PIN5-MS3。假如沒跳線的話,那就要把 PIN4 和 PIN5 都斷開。

建立及燒錄 Firmware

$ cd klipper
$ make menuconfig

[*] Enable extra low-level configuration options
    Micro-controller Architecture (Atmega AVR)
    Processor model (atmega2560)

$ make
..........
  Building out/compile_time_request.o
Version: v0.12.0-171-g2f6e94c9
  Linking out/klipper.elf
  Creating hex file out/klipper.elf.hex

$ ls /dev/serial/by-id/*
/dev/serial/by-id/usb-Silicon_Labs_CP2102_USB_to_UART_Bridge_Controller_0001-if00-port0

$ make flash FLASH_DEVICE=/dev/serial/by-id/usb-Silicon_Labs_CP2102_USB_to_UART_Bridge_Controller_0001-if00-port0

重新啟動系統。

Atmega2560 的 PIN 對照


2024年4月15日 星期一

ADXL345谐振测量 - 各種派

此文件是依購買套件所提供的文件整理的,方便自己參考。

这是什么?

一种可用于减少打印中震纹(也称为重影或波纹)的技术。震纹是一种表面打印缺陷。


震纹是由打印机中的机械振动引起的,原因是打印方向的快速变化。请注意,震纹通常有机械原因:打印机框架刚性不足、皮带不紧或弹性太大、机械部件对齐问题、移动质量大等。如果可能,应首先检查和修复这些问题。

谐振补偿是一种开环控制技术,它创建一个命令信号来取消其自身的振动。谐振补偿需要一些调整和测量才能启用。除了震纹之外,谐振补偿通常会减少打印机的振动和晃动,并且还可以提高 Trinamic 步进驱动器的 StealthChop 模式的可靠性。

以下将提供 ADXL345 模块进行谐振测量的教程

第一步,材料准备

ADXL345 加速度传感器一块

必须采购如上图所示的模块,其他模块可能无法识别。

第二步,安装及接线

这是官方的接线图,不过研究下来其实 3.3V 和 GND 可以直接图中箭头指的这两个,这样就可以直接压一个 4×2 的插头一次性解决了。板子上應有 5V-3.3V 的降壓 IC,可以用 5V 的電源。

PIN 對應,MISO - DO - SDO,MOSI - DI - SDA,SCK - SCK - SCL。

安装位置可以参考这个


安装有几个要注意的点:

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

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

第三步,配置树莓派

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

下面的命令都是在树莓派系统中执行,使用 putty 软件登录树莓派按步骤执行以下命令

首先安装 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的



配置完成后按Q键保存退出,就可以编译固件了

按顺序运行以下命令

sudo service klipper stop
make flash
sudo service klipper start
sudo usermod -a -G tty pi

树莓派必須再執行 raspi-config 打开的SPI的接口。

第四步,配置Klipper

在网页操作界面中打开Klipper的配置文件printe.cfg,在合适的地方加入下面的配置代码

[mcu rpi]
serial: /tmp/klipper_host_mcu

[adxl345]
cs_pin: rpi:None

[resonance_tester]
accel_chip: adxl345

probe_points:
    150,150,20  # 这个地方建议配置成热床的中间(此150参数配置为300热床)

配置完成后重启一下Klipper

在控制台中输入以下命令


ACCELEROMETER_QUERY 这个命令是查询加速器的参数,如果前面的软硬件安装正常的话,就会收到返回的加数据传感器参数,类似于下面内容……如果返回其他则可能是接线问题或adxl345模块问题

.....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

命令直接保存进配置文件

保存完毕后需要回到 printe.cfg 配置文件中,拉倒最底部可以找到被注释的内容,如下

#*# [input_shaper]
#*# shaper_type_x = mzv
#*# shaper_freq_x = 58.4
#*# shaper_type_y = mzv
#*# shaper_freq_y = 44.2

整个复制,替换原来的参数,并取消注释,最后保存并重启即可



網誌存檔