静音打印,UART驱动TMC2208教程

您所在的位置:网站首页 Mega2560最大电流 静音打印,UART驱动TMC2208教程

静音打印,UART驱动TMC2208教程

2023-07-26 11:51| 来源: 网络整理| 查看: 265

工具与材料

工具:焊锡,烙铁,剥线钳,斜口钳,尖嘴钳 材料:TMC2208,1KΩ电阻,跳线,排针,热缩管,杜邦线胶壳,压线端子 3D打印机固件(我使用的是Marlin2.0.x的版本,其他版本修改方法大同小异) 软件:Arduino 1.8.12

硬件连接

一般买到手的TMC2208基本都是如下图的: 在这里插入图片描述这种虽然加上散热块可以直接替换DRV8825或者A4988,但是使用时分辨率最高只有32细分,如果想要更高的分辨率就需要对其进行一些改动。 第一种方法是使用SPI模式控制,这个方法研究了下,挺麻烦的就不介绍了,主要讲一下第二种方法,使用UART(串行通信)对基于TMC2208的SilentStepStick进行主动/动态控制。 这个方法的好处: 1、可以通过固件任意设置电动机电流 2、可以通过固件任意设置微步(最多256个实际微步) 3、实步和内插微步可以组合以实现最大扭矩 4、固件可以通过UART快速在StealthChop2和spreadCycle模式之间切换步进电机 5、当电机不移动时,可以动态降低电机待机电流(通过UART) 还有一些其他的优点就不介绍了

首先处理的是TMC2208芯片上的UART引脚。默认情况下,TMC2208的UART引脚是不连接到Watterott SilentStepStick的标头引脚的,需要我们手动把焊接跳线。 我买到的2208:

我们要处理的则是图里画圈的部分: 中间的焊盘直接连接芯片通道,左边的和UART引脚相通,右边的与PND引脚相通。所以连接左边或右边焊盘都是可以的。效果如下:

第二个要处理的是排针,原先EN,DIAG,INDEX,MS1,MS2 和模拟电流设置VREF,都被UART线代替,所以只需要留下EN,DIR,STEP,PDN四个引脚即可。其中PDN引脚最好单独引出一根线,就像上图中那样,因为从后续设置里可以看到,UART信号是从其他引脚过来的。

关于散热,现在买来的TMC2208基本都是带一个大的散热块的(如下图)。但是根据我的经验,仅使用这个散热块是不太够的,最好再额外增加一个风扇。

第三步,为了使SilentStepStick通过UART与Ramps板通信,需要从SilentStepStick的UART引脚进行单线连接。然后,将那条线分成两根线(Rx和Tx)以连接到Ramps板,并通过1K Ohm电阻器进行Tx(发送)连接。 在这里插入图片描述 所以,需要制作一个Y型跳线,一端连接PDN引脚(也就是刚才从引出的线),另一端连接Arduino的RX和TX引脚上。建议是用压线端子制作一条可以随时拔插的跳线。

以上,硬件部分的处理基本完成。

打印机固件设置

首先找到打印机所使用驱动板,我的是RAMPS1.4的。

// Choose the name from boards.h that matches your setup #ifndef MOTHERBOARD #define MOTHERBOARD BOARD_RAMPS_14_EFB #endif

再去Pins文件夹找到相应的引脚定义文件,其中HAS_TMC_UART这一段就是TMC2208的UART通信引脚定义

#if HAS_TMC_UART /** * TMC2208/TMC2209 stepper drivers * * Hardware serial communication ports. * If undefined software serial is used according to the pins below */ //#define X_HARDWARE_SERIAL Serial1 //#define X2_HARDWARE_SERIAL Serial1 //#define Y_HARDWARE_SERIAL Serial1 //#define Y2_HARDWARE_SERIAL Serial1 //#define Z_HARDWARE_SERIAL Serial1 //#define Z2_HARDWARE_SERIAL Serial1 //#define E0_HARDWARE_SERIAL Serial1 //#define E1_HARDWARE_SERIAL Serial1 //#define E2_HARDWARE_SERIAL Serial1 //#define E3_HARDWARE_SERIAL Serial1 //#define E4_HARDWARE_SERIAL Serial1 // // Software serial // #ifndef X_SERIAL_TX_PIN #define X_SERIAL_TX_PIN 40 #endif #ifndef X_SERIAL_RX_PIN #define X_SERIAL_RX_PIN 63 #endif #ifndef X2_SERIAL_TX_PIN #define X2_SERIAL_TX_PIN -1 #endif #ifndef X2_SERIAL_RX_PIN #define X2_SERIAL_RX_PIN -1 #endif #ifndef Y_SERIAL_TX_PIN #define Y_SERIAL_TX_PIN 59 #endif #ifndef Y_SERIAL_RX_PIN #define Y_SERIAL_RX_PIN 64 #endif #ifndef Y2_SERIAL_TX_PIN #define Y2_SERIAL_TX_PIN -1 #endif #ifndef Y2_SERIAL_RX_PIN #define Y2_SERIAL_RX_PIN -1 #endif #ifndef Z_SERIAL_TX_PIN #define Z_SERIAL_TX_PIN 42 #endif #ifndef Z_SERIAL_RX_PIN #define Z_SERIAL_RX_PIN 65 #endif #ifndef Z2_SERIAL_TX_PIN #define Z2_SERIAL_TX_PIN -1 #endif #ifndef Z2_SERIAL_RX_PIN #define Z2_SERIAL_RX_PIN -1 #endif #ifndef E0_SERIAL_TX_PIN #define E0_SERIAL_TX_PIN 44 #endif #ifndef E0_SERIAL_RX_PIN #define E0_SERIAL_RX_PIN 66 #endif #endif

根据以上内容,在查找相应驱动板上连接的引脚,就是跳线该连接的引脚。 ps:下图是RAMPS1.4的引脚定义,可以看到基本上所用的引脚都集中在AUX2一片。 ps2:图里D48我实测是D40。 在这里插入图片描述 其次,激活TMC2208功能。marlin固件默认是启动A4988的,配置代码在Configuration.h中

/** * Stepper Drivers * * These settings allow Marlin to tune stepper driver timing and enable advanced options for * stepper drivers that support them. You may also override timing options in Configuration_adv.h. * * A4988 is assumed for unspecified drivers. * * Options: A4988, A5984, DRV8825, LV8729, L6470, L6474, POWERSTEP01, * TB6560, TB6600, TMC2100, * TMC2130, TMC2130_STANDALONE, TMC2160, TMC2160_STANDALONE, * TMC2208, TMC2208_STANDALONE, TMC2209, TMC2209_STANDALONE, * TMC26X, TMC26X_STANDALONE, TMC2660, TMC2660_STANDALONE, * TMC5130, TMC5130_STANDALONE, TMC5160, TMC5160_STANDALONE * :['A4988', 'A5984', 'DRV8825', 'LV8729', 'L6470', 'L6474', 'POWERSTEP01', 'TB6560', 'TB6600', 'TMC2100', 'TMC2130', 'TMC2130_STANDALONE', 'TMC2160', 'TMC2160_STANDALONE', 'TMC2208', 'TMC2208_STANDALONE', 'TMC2209', 'TMC2209_STANDALONE', 'TMC26X', 'TMC26X_STANDALONE', 'TMC2660', 'TMC2660_STANDALONE', 'TMC5130', 'TMC5130_STANDALONE', 'TMC5160', 'TMC5160_STANDALONE'] */ #define X_DRIVER_TYPE TMC2208 #define Y_DRIVER_TYPE TMC2208 #define Z_DRIVER_TYPE TMC2208 //#define X2_DRIVER_TYPE A4988 //#define Y2_DRIVER_TYPE A4988 //#define Z2_DRIVER_TYPE A4988 //#define Z3_DRIVER_TYPE A4988 //#define Z4_DRIVER_TYPE A4988 #define E0_DRIVER_TYPE DRV8825 //#define E1_DRIVER_TYPE A4988 //#define E2_DRIVER_TYPE A4988 //#define E3_DRIVER_TYPE A4988 //#define E4_DRIVER_TYPE A4988 //#define E5_DRIVER_TYPE A4988 //#define E6_DRIVER_TYPE A4988 //#define E7_DRIVER_TYPE A4988

取消注释,并将使用的驱动修改到 XX_DRIVER_TYPE 后面即可。TMC2208_STANDALONE这个模式是适用于不使用SPI或UART通信直连。

另外需要修改的代码在Configuration_adv.h文件里,主要修改驱动电流,驱动细分数,保持电流等。 驱动电流0.8A一般足够,分辨率我个人建议不要设置为256,因为实测256细分的时候,回零点会撞。保持电流是个百分比数值,默认的是50%。

// @section tmc_smart /** * To use TMC2130, TMC2160, TMC2660, TMC5130, TMC5160 stepper drivers in SPI mode * connect your SPI pins to the hardware SPI interface on your board and define * the required CS pins in your `pins_MYBOARD.h` file. (e.g., RAMPS 1.4 uses AUX3 * pins `X_CS_PIN 53`, `Y_CS_PIN 49`, etc.). * You may also use software SPI if you wish to use general purpose IO pins. * * To use TMC2208 stepper UART-configurable stepper drivers connect #_SERIAL_TX_PIN * to the driver side PDN_UART pin with a 1K resistor. * To use the reading capabilities, also connect #_SERIAL_RX_PIN to PDN_UART without * a resistor. * The drivers can also be used with hardware serial. * * TMCStepper library is required to use TMC stepper drivers. * https://github.com/teemuatlut/TMCStepper */ #if HAS_TRINAMIC_CONFIG #define HOLD_MULTIPLIER 0.5 // Scales down the holding current from run current #define INTERPOLATE true // Interpolate X/Y/Z_MICROSTEPS to 256 #if AXIS_IS_TMC(X) #define X_CURRENT 800 // (mA) RMS current. Multiply by 1.414 for peak current. #define X_CURRENT_HOME X_CURRENT // (mA) RMS current for sensorless homing #define X_MICROSTEPS 128 // 0..256 #define X_RSENSE 0.11 #define X_CHAIN_POS -1 //


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3