此文仅记录使用BTT pi2(上位机)、octopus pro(下位机),TMC5160和TMC2209(电机驱动)、ADXL345(共振补偿)进行双Z轴控制现有的3D打印机前期准备操作步骤,图片一部分为借鉴,如果有疑问或错误敬请指出,共创良好资源共享。
打印机是XYZ+Z1轴进行控制,Z轴是热床移动。
1.准备6GB以上 SD卡
BTT Pi2系统镜像:Releases · bigtreetech/CB2 · GitHub选择klipper版本下载
2.烧录系统镜像到SD卡
下载Raspberry Pi Imager(树莓派的镜像烧录器)
安装完成后,打开文件第一个选项不选择,第二个选项选择(最下边的)Use custom再去选择下载好的.img镜像文件,第三个选项选择需要烧录到的SD卡(烧录时会格式化SD卡)
would you like to apply OS customization settings? 选择NO
删除数据?选是
烧录过程中会自动弹出SD卡,等待烧录完成。
3.配置显示屏
打开SD目录下的armbianEnv.txt文件
配置HDMI屏。自己用的HDMI屏
配置DSI屏
配置SPI屏
4.设置WIFI(网线跳过)
4.1SD卡设置wifi
此处设置的是默认wifi,如果有显示屏可以设置wifi的话这步可以跳过。
烧录完成后,打开SD卡文件夹,有一个system.cfg文件,记事本打开,找到WIFI name将双引号中的字符改为wifi名,其下pswd改为wifi密码,有触摸屏的话也可以在触摸屏上找到网络去连接wifi。
修改完后将SD卡插入PI2的SD卡槽内,USB-typc/24v供电等待系统启动(此时是以SD卡的系统启动,系统镜像并没有烧录到上位机板上,即拔卡后上位机也不能正常使用),大概1-2分钟设备连上wifi会被分配一个ip。
4.2 触摸屏设置wifi
我是用的是HDMI7 V1.2触摸屏。类似手机连接wifi,连接上后会自动分配一个IP。信号不好的话可以增加天线在上位机。如果上位机使用typec供电,接较多外设时可能会因供电不足反复重启,建议使用24V供电;使用触摸屏连接wifi总是很慢,还会出现连接不上/没有IP错误,多试试
5.安装SSH软件
安装SSH软件:mobaXterm:MobaXterm Xserver with SSH, telnet, RDP, VNC and X11 - Home Edition
将上位机板连接wifi后分配的ip写入ssh的remote host中点击ok,使用ssh时PC需要和上位机板处在同一个wifi环境下。
需要登陆的界面,账号密码都会提供,输入密码时不会显示字符
登录进去后的界面如下
6.以EMMC启动系统
上位机插入SD卡后,将SD卡的系统烧录到其EMMC中。
在SSH中输入nand-sata-install命令,出现的界面后选择2。
回车后出现界面,选择yes
出现如下界面,选择1,并ok
等待烧录完成即可。
7.配置下位机主板
在SSH的命令行里输出cd klipper 回车
make menuconfig 回车 ,进入可视化的菜单界面,这些选项是配置下位机IO晶振等参数的!!
勾选第一个会显示下边的选项,根据商家提供的数据选择(我这里是乱选的),设置完成后按esc,y保存
在klipper目录下输入make 回车进行编译,最后会提醒生成了个bin文件。
找到这个bin文件右键download到桌面上,移到SD卡中,改名为firmware.bin。
7.更新下位机固件
将只含有firmware.bin文件的SD卡插入下位机主板的SD卡槽,单击reset键,固件会自动更新,大概等半分钟左右,拔出SD卡,查看文件是否变成FIRMWARE.CUR,若是则表示烧录固件完成。
在SSH命令行输入,ls(空格)/dev/serial/by-id,查询到的设备号复制下来之后要用
8.配置klipper
到网页下载开发板对应的generic_xxx.cfgBIGTREETECH-OCTOPUS-V1.0/Firmware/Klipper at master · bigtreetech/BIGTREETECH-OCTOPUS-V1.0 · GitHub
打开浏览器,网址输入上位机的ip地址,自动打开网页版上位机mainsail。
点击左上角三个横线点机器选项,上传下载的generic_xxx.cfg文件
需要修改引脚或者增加电机驱动可在generic_xxx.cfg文件中修改,可以参考概述 - Klipper 文档中的配置参考或者根据docs目录下的CONFIG_Reference.md可查看到配置所有参数,根据需要选用配置参数,在[mcu]栏下将by-id/后的设备号改为自己的下位机主板设备号,表示控制的是该主板(后期使用多主板或者其他含有mcu芯片时可以区分,不会报错)
打开printer.cfg文件,最后一行增加include包含该generic_xxx.cfg文件->保存并重启,
9.驱动配置
9.1增加TMC电机驱动
我使用的是TMC5160控制电机的X,Y,Z,Z1轴;TMC2209控制挤出机电机
打开generic_xxx.cfg文件,编写stepper_x轴驱动,实际参数及IO口根据实际选择,XYZZ1使用的为TMC5160电机驱动,SPI通信,可以支持step/dir驱动模式,接线根据官方提供引脚接线。Y轴ZZ1轴类比配置,双Z轴时有部分参数只需要配置一次。
# Driver0
[stepper_x]
step_pin: PF13 #步进角
dir_pin: PF12 #方向角
enable_pin: !PF14 #使能角
microsteps: 16 #微分
#full_steps_per_rotation: 200
rotation_distance: 40 #步距
endstop_pin: !PG6 #限位
position_endstop: 0 #位置
position_max: 400 #位置
homing_speed: 20 #归0速度
homing_retract_dist: 0 #归0方向
[tmc5160 stepper_x]
cs_pin: PC4
spi_bus: spi1 #硬件SPI
interpolate: True
run_current: 2 #运行电流
stealthchop_threshold: 10000
#spi_software_mosi_pin: PA7
#spi_software_miso_pin: PA6
#spi_software_sclk_pin: PA5
# Driver3
[stepper_z]
#z_left
step_pin: PG4
dir_pin: PC1
enable_pin: !PA0
microsteps: 16
rotation_distance: 10
endstop_pin: !PG11
position_endstop: 0
position_min: -1
position_max: 400
homing_speed: 5
homing_retract_dist: 0
# Driver4
[stepper_z1]
#z_right
step_pin: PF9
dir_pin: PF10
enable_pin: !PG2
microsteps: 16
rotation_distance: 10
endstop_pin: !PG12
挤出机配置,使用的是step/dir控制,没有用uart控制。generic_xxx.cfg是默认使用了加热器(挤出机和热床),未插热敏电阻会报ADC相关错误。
# Driver2_1
[extruder]
step_pin: PF11
dir_pin: PG3
enable_pin: !PG5
microsteps: 16
rotation_distance: 32
nozzle_diameter: 0.400 #喷嘴孔径
filament_diameter: 1.750 #耗材直径
#pressure_advance : 0.05 #压力提前,改善减速角溢出耗材
heater_pin: PA3 # HE1
sensor_pin: PF5 # T1
sensor_type: EPCOS 100K B57560G104F #热敏电阻类型
control: pid #PID通过触摸屏选择校准
pid_Kp: 28.796
pid_Ki: 1.613
pid_Kd: 128.504
min_temp: -100 #避免未接入热敏电阻时启动klipper报警adc采集超范围
max_temp: 250
min_extrude_temp: 30
#[tmc2209 extruder]
#uart_pin: PC6
#interpolate: False
#diag_pin: PG10
#run_current: 0.8
#sense_resistor: 0.110
#stealthchop_threshold: 10000
配置完成后如果电机异响,转动不流畅等问题,请先检查线序是否正确,供电是否正确,再去检查代码配置!!
热床配置
[heater_bed]
heater_pin: PA2 #HE0
sensor_pin: PF3 # TB
# sensor_type: EPCOS 100K B57560G104F
sensor_type: ATC Semitec 104GT-2
control: pid
pid_Kp: 59.597
pid_Ki: 1.967
pid_Kd: 451.444
min_temp: -100
max_temp: 250
9.2.增加ADXL345共振补偿
同下位机固件生成和generic_xxx.cfg配置方法。usb-typec供电。
①上位机ssh:cd klipper回车进入klipper目录->make menuconfig->使用下面的固件配置->保存并退出
输入make编译固件,会生成klipper.uf2文件。输入cd ~回到根目录
②按住ADXL345的boot按钮再供电,输入lsusb命令,可以查看到RP2 Boot一行设备信息,如果不是Boot请重复本步。保存好前边的ID号。
③输入cd klipper命令,跳转到klipper目录下,输入make flash FLASH_DEVICE=(保存的ID号),开始使用typec线烧录固件到ADXL345中,固件烧录完成后,输入 ls /dev/serial/by-id/查询本模块的设备号,需要保存下来
④ADXL345固件:https://github.com/bigtreetech/ADXL345下载后,打开mainsail网页版上位机,将文件上传到机器的config目录下
⑤在printer.cfg中 include该cfg文件,在cfg文件中将ID号改为获得的设备号,定义MCU名,在之后使用时带入mcu名,避免和下位机MCU冲突。保存并重启。不带MCU名可能不知道IO口对应pin会与下位机mcu冲突,会出现SPI报错。
⑥保存后在控制面板找到控制台,分别输入,对X、Y轴共振校准,测试结果写入input_shaper中复制大generic_xxx.cfg中,就可以在printer.cfg中注释掉本模块的include
SHAPER_CALIBRATE AXIS=X
SHAPER_CALIBRATE AXIS=Y
10.PID校准
主要用在挤出机/热床加热PID。通过触摸屏设置温度界面,先输入一个温度值,校准PID才会亮,之后会自动校准。
校准完毕后会在mainsail控制台上发送建议参数,复制下来在generic_xxx.cfg中填入即可。这里的校准的是热床的pid
[heater_bed]
heater_pin: PA2 #HE0
sensor_pin: PF3 # TB
# sensor_type: EPCOS 100K B57560G104F
sensor_type: ATC Semitec 104GT-2
control: pid
pid_Kp: 53.162
pid_Ki: 1.353
pid_Kd: 522.319
min_temp: -100
max_temp: 250