Hi all,
I have completed the klipper setup guide shown here with the help of Yue Mark (thank you again).
I have installed bigtreetech tmc2209 v1.2 for x,y,z, and extruder and set jumpers to the UART configuration found here.
I could not get my motors to move with a homing command in octoprint so I entered kipper's refence configuration (here) in my printer.cfg and used pin PB10 as the "uart_pin" as that's what's mentioned here. I used this PB10 for x,y,z and now I get this when I send status.
Send: status
Recv: // Shared TMC uarts need unique address or select_pins polarity
Recv: //
Recv: // Once the underlying issue is corrected, use the "RESTART"
Recv: // command to reload the config and restart the host software.
Recv: // Printer is halted
Recv: // Klipper state: Not ready
Recv: !! Shared TMC uarts need unique address or select_pins polarity
Recv: ok
I dont know what I should be setting within the [tmc2209 stepper_###] sections to get this working. Does anyone have a seuggestion?
Here are the contents of my printer.cfg
[stepper_x]
step_pin: PB8
dir_pin: PB6
enable_pin: !PB9
microsteps: 16
rotation_distance: 40
endstop_pin: ^PA3
position_endstop: 0
position_max: 235
homing_speed: 50
[tmc2209 stepper_x]
uart_pin: PB10
#tx_pin:
#select_pins:
#interpolate: True
run_current: 0.800
#hold_current:
#sense_resistor: 0.110
#stealthchop_threshold: 0
# See the "tmc2208" section for the definition of these parameters.
#uart_address:
# The address of the TMC2209 chip for UART messages (an integer
# between 0 and 3). This is typically used when multiple TMC2209
# chips are connected to the same UART pin. The default is zero.
#driver_IHOLDDELAY: 8
#driver_TPOWERDOWN: 20
#driver_TBL: 2
#driver_TOFF: 3
#driver_HEND: 0
#driver_HSTRT: 5
#driver_PWM_AUTOGRAD: True
#driver_PWM_AUTOSCALE: True
#driver_PWM_LIM: 12
#driver_PWM_REG: 8
#driver_PWM_FREQ: 1
#driver_PWM_GRAD: 14
#driver_PWM_OFS: 36
#driver_SGTHRS: 0
# Set the given register during the configuration of the TMC2209
# chip. This may be used to set custom motor parameters. The
# defaults for each parameter are next to the parameter name in the
# above list.
#diag_pin:
# The micro-controller pin attached to the DIAG line of the TMC2209
# chip. The pin is normally prefaced with "^" to enable a pullup.
# Setting this creates a "tmc2209_stepper_x:virtual_endstop" virtual
# pin which may be used as the stepper's endstop_pin. Doing this
# enables "sensorless homing". (Be sure to also set driver_SGTHRS to
# an appropriate sensitivity value.) The default is to not enable
# sensorless homing.
[stepper_y]
step_pin: PB5
dir_pin: PB4
enable_pin: !PB9
microsteps: 16
rotation_distance: 40
endstop_pin: ^PA4
position_endstop: 0
position_max: 235
homing_speed: 50
[tmc2209 stepper_y]
uart_pin: PB10
#tx_pin:
#select_pins:
#interpolate: True
run_current: 0.800
#hold_current:
#sense_resistor: 0.110
#stealthchop_threshold: 0
# See the "tmc2208" section for the definition of these parameters.
#uart_address:
# The address of the TMC2209 chip for UART messages (an integer
# between 0 and 3). This is typically used when multiple TMC2209
# chips are connected to the same UART pin. The default is zero.
#driver_IHOLDDELAY: 8
#driver_TPOWERDOWN: 20
#driver_TBL: 2
#driver_TOFF: 3
#driver_HEND: 0
#driver_HSTRT: 5
#driver_PWM_AUTOGRAD: True
#driver_PWM_AUTOSCALE: True
#driver_PWM_LIM: 12
#driver_PWM_REG: 8
#driver_PWM_FREQ: 1
#driver_PWM_GRAD: 14
#driver_PWM_OFS: 36
#driver_SGTHRS: 0
# Set the given register during the configuration of the TMC2209
# chip. This may be used to set custom motor parameters. The
# defaults for each parameter are next to the parameter name in the
# above list.
#diag_pin:
# The micro-controller pin attached to the DIAG line of the TMC2209
# chip. The pin is normally prefaced with "^" to enable a pullup.
# Setting this creates a "tmc2209_stepper_x:virtual_endstop" virtual
# pin which may be used as the stepper's endstop_pin. Doing this
# enables "sensorless homing". (Be sure to also set driver_SGTHRS to
# an appropriate sensitivity value.) The default is to not enable
# sensorless homing.
[stepper_z]
step_pin: PB3
dir_pin: !PA15
enable_pin: !PB9
microsteps: 16
rotation_distance: 4
endstop_pin: ^PA1
position_endstop: 0.0
position_max: 250
[tmc2209 stepper_z]
uart_pin: PB10
#tx_pin:
#select_pins:
#interpolate: True
run_current: 0.800
#hold_current:
#sense_resistor: 0.110
#stealthchop_threshold: 0
# See the "tmc2208" section for the definition of these parameters.
#uart_address:
# The address of the TMC2209 chip for UART messages (an integer
# between 0 and 3). This is typically used when multiple TMC2209
# chips are connected to the same UART pin. The default is zero.
#driver_IHOLDDELAY: 8
#driver_TPOWERDOWN: 20
#driver_TBL: 2
#driver_TOFF: 3
#driver_HEND: 0
#driver_HSTRT: 5
#driver_PWM_AUTOGRAD: True
#driver_PWM_AUTOSCALE: True
#driver_PWM_LIM: 12
#driver_PWM_REG: 8
#driver_PWM_FREQ: 1
#driver_PWM_GRAD: 14
#driver_PWM_OFS: 36
#driver_SGTHRS: 0
# Set the given register during the configuration of the TMC2209
# chip. This may be used to set custom motor parameters. The
# defaults for each parameter are next to the parameter name in the
# above list.
#diag_pin:
# The micro-controller pin attached to the DIAG line of the TMC2209
# chip. The pin is normally prefaced with "^" to enable a pullup.
# Setting this creates a "tmc2209_stepper_x:virtual_endstop" virtual
# pin which may be used as the stepper's endstop_pin. Doing this
# enables "sensorless homing". (Be sure to also set driver_SGTHRS to
# an appropriate sensitivity value.) The default is to not enable
# sensorless homing.
[extruder]
step_pin: PB15
dir_pin: !PB14
enable_pin: !PB9
microsteps: 16
rotation_distance: 33.683
nozzle_diameter: 0.400
filament_diameter: 1.750
heater_pin: PB12
sensor_type: EPCOS 100K B57560G104F
sensor_pin: PB0
control: pid
pid_Kp: 21.527
pid_Ki: 1.063
pid_Kd: 108.982
min_temp: 0
max_temp: 250
[heater_bed]
heater_pin: PB13
sensor_type: ATC Semitec 104GT-2
sensor_pin: PB1
control: pid
pid_Kp: 54.027
pid_Ki: 0.770
pid_Kd: 948.182
min_temp: 0
max_temp: 130
[fan]
pin: PA9
[heater_fan hotend_fan]
pin :PA8
[mcu]
serial:/dev/serial0
baud = 115200
#serial: /dev/serial/by-id/usb-Klipper_Klipper_firmware_12345-if00
[printer]
kinematics: cartesian
max_velocity: 300
max_accel: 3000
max_z_velocity: 5
max_z_accel: 100
Let me know if more information is required.
Thanks in advance
if you use bigtreetech tmc2209, please do not plug the diag pin into the socket. like this picture showing.
the uart mode for tmc2209 of V2.9 is same as V2.8
TMC2209 Uart mode,Sensorless Homing(V28) · markniu/PandaPi Wiki (github.com)
@Yue Mark That worked great!
For any other V2.9 owners using UART and TMC2209s, could you share what your printer.cfg looks like?
Id love to see how to set the drivers up for UART :)
Thank you for your super fast response!
the motors spin just fine in standalone mode, but I cant seem to get my limit switches to register as closed with an M119 command using wiring for the limit switches here and the config file you made for the V2.9 board here.
Do you have suggestions on what I could try to get my switches working?
Also do you have a rough estimate on when UART support for the TMC2209s will roll out for the PandaPi2.9 boards?
Hi, there are several pins different for PandaPiV2.8 and V2.9,see here Pins Map · markniu/PandaPi Wiki (github.com) and I just have updated the printer.cfg on the wiki both for V2.8 and V2.9.
I have not test the uart mode of TMC2209,so you'd better try to use TMC2209 as standalone mode first.