Hi,
I´m new to Klipper, I used marlin for a while on ultimaker printer at work and started building my custom 3D printer/CNC/laser cutter based on C-Beam open build.
to make it short
it´s a dual Y&Z axis with one stepper on each axis, each stepper is controled by closed loop controler, right now MKS servo57B, but due to the awfull design on DIR/STEP/ENABLE, I burned one SKR-pro v1.1 board, I´m now investigating using BTT-S57V2 closed loops ( they have optocouplers which won´t burn GPIO due to power feedback)
X axis, extruders are single stepper motors controled, each with closed loop
the toolhead is switchable to receive CNC tool motor, or multi head extruder toolhead (1 material, 1 support and maybe a cyclops for color) , or a laser printer/cutter
the BTT-S57B closed loop controler has CAN interface, so discovered Klipper, and beguns to have lot of ideas ;). BTT-S57B boards (derived from BTT-S42B) firmware is awfully designed, but there is a fork at Using CAN examples? · Discussion #19 · CAP1Sup/Intellistep · GitHub
I´m considering creating my own closed loop controler to had some interface like thermal print head analog input, end/start switch plugs… and maybe more… (power controler board addons…)
all this long for my question… I´ve read the klipper CAN documentation, which will transmit Klipper´s low level messages 8Bytes per 8Bytes from/to the host
I´ve read the klipper MCU low level messages documentation, and If I correctly understood, the host will send queue_step
commands and stepper_get_position
, config_analog_in
commands to make the stepper move, get it´s position or have a value of the analog pin at regular interval…
but now I´m wondering how to write the host config file… looks like the host config file is designed to act has remote direct GPIO controler
I´m wondering how I can write something like
[MCU StepperZ1]
canbus_uuid: 0x1341235
step_per_mm ← is it rotation_distance?
thermal_sensor
[extruder]
canbus_uuid: 0x1341235
rotation_distance: 2mm???
nozzle_diameter: 0.500
filament_diameter: 3.500
heater_pin: PB4
sensor_type: EPCOS 100K B57560G104F
sensor_pin: PK5
control: pid
pid_Kp: 22.2
pid_Ki: 1.08
pid_Kd: 114
min_temp: 0
max_temp: 210
I don´t get why the closed loop controler firmware´s pinout has to be filled, or maybe the PB4 for example is just an ID? and the MCU will receive a queue_digital_out oid=PB4 clock=1000 on_ticks=1
to switch heater on when clock reach 1000? what is the unit of 1000 btw? us? ms? and the closed loop MCU will know that PB4 is heater?
is it possible then to have in config file “heater_pin: heater” and then have a message like queue_digital_out oid=heater clock=WhatIsIT? on_ticks=1000
t
is there an example of communication between the host and several MCU?
thanks and regards
JLM