Beiträge: 2
Registriert: Do 4. Dez 2025, 06:52
Kontaktdaten:
Hallo zusammen,

Ich habe zufällig einen RF2000v2 bekommen, den ich gerne mit Klipper verwenden möchte. Persönlich habe ich bereits einen Prusa MK3S+ geklippert und bin begeistert von Mainsail und der damit gewonnenen Geschwindigkeit. Deshalb soll das Gleiche nun auch mit dem RF2000 passieren.

Leider stehe ich bei der Installation momentan etwas auf dem Schlauch. Ich habe die Printer-Config von Dennis heruntergeladen und Mainsail OS auf einen Raspberry Pi Zero 2 gespielt. Die Config ist geladen, und nun würde doch das Kompilieren anstehen.

Nur: wie und womit muss ich die MCU des Druckers flashen? Irgendwie finde ich die Informationen nicht – oder ich bin im Moment einfach zu blöd dafür.

Ich sehe jedoch den Port des Druckers.
revo@REVO:~/klipper $ ls /dev/serial/by-id/*
/dev/serial/by-id/usb-FTDI_FT232R_USB_UART_A906KK91-if00-port0
Wäre toll wenn jemand kurz erklären könnte wie das ganze Schritt für Schritt funktioniert. Irgendwie habe ich den Knopf im Ärmel
Administrator
Beiträge: 46
Registriert: Sa 1. Nov 2025, 21:24
Wohnort: Penzing
Kontaktdaten:
Benutzeravatar
Administrator
Re: Klipper Installation

Beitrag von Dennis »

Hallo Londinius,

du musst genau diese Version von Klipper auf deinem Raspberry installieren wenn du die Originale Platine benutzt.



pi=Der User bitte wenn anders vergeben ändern jeweils

1.

Code: Alles auswählen

cd /home/pi
2.

Code: Alles auswählen

sudo service klipper stop
3.

Code: Alles auswählen

mv klipper klipper_original
4.

Code: Alles auswählen

git clone https://github.com/RF1000community/klipper
5.

Code: Alles auswählen

cd /home/pi/klipper
6.

Code: Alles auswählen

make menuconfig
7.
Dort dann das Atmega 2560 wählen -> speichern verlassen

8.

Code: Alles auswählen

make menuconfig
9.

Code: Alles auswählen

make flash FLASH_DEVICE=/dev/serial/by-id/usb-FTDI_FT232R_USB_UART_(durch deine ID vervollständigen) 
10 .

Code: Alles auswählen

sudo reboot
🔧 Troubleshooter | Entwickler | Klipper
⚠️ Hinweis: Ich hafte nicht für verbrannte Finger oder verstopfte Nozzles.
👉 Erste Regel: Hast du dein Druckbett gelevelt?
Administrator
Beiträge: 46
Registriert: Sa 1. Nov 2025, 21:24
Wohnort: Penzing
Kontaktdaten:
Benutzeravatar
Administrator
Re: Klipper Installation

Beitrag von Dennis »

Hier die passende printer.cfg für einen RF2000v2 Originales Mainboard

Code: Alles auswählen

# Renkforce RF2000v2 Dual Hotend v2 3D printer

[mcu]
serial: /dev/serial/by-id/usb-FTDI_FT232R_USB_UART_(durch deine ID vervollständigen) 

[exclude_object]

[include mainsail.cfg]
[include macros.cfg]

[printer]
kinematics: cartesian
max_velocity: 200
max_accel: 1500
max_z_velocity: 50
max_z_accel: 70

[safe_z_home]
home_xy_position: 0,-5
z_hop: 2

[force_move]
enable_force_move: True

[stepper_x]
step_pin: PF0
dir_pin: !PF1
enable_pin: PD7
rotation_distance: 42
microsteps: 32
endstop_pin: !PC2
position_endstop: 0
position_min: 0
position_max: 200
homing_speed: 40.0
second_homing_speed: 10.0

[drv8711 stepper_x]
cs_pin: PL0
spi_software_sclk_pin: PD5
spi_software_miso_pin: PD4
spi_software_mosi_pin: PD6
current: 2

[stepper_y]
step_pin: PF6
dir_pin: PF7
enable_pin: PF2
rotation_distance: 42
microsteps: 32
endstop_pin: !PC0
position_endstop: -5
position_min: -5
position_max: 285
homing_speed: 35.0
second_homing_speed: 10.0

[drv8711 stepper_y]
cs_pin: PL2
spi_software_sclk_pin: PD5
spi_software_miso_pin: PD4
spi_software_mosi_pin: PD6
current: 2

[stepper_z]
step_pin: PF3
dir_pin: PL1
enable_pin: PK0
rotation_distance: 2.5
microsteps: 32
endstop_pin: !PC6
position_endstop: 0
position_min: -0.9
position_max: 185
homing_speed: 8.0
second_homing_speed: 2.0

[drv8711 stepper_z]
cs_pin: PB6
spi_software_sclk_pin: PD5
spi_software_miso_pin: PD4
spi_software_mosi_pin: PD6
current: 2

[extruder]
step_pin: PA4
dir_pin: PA6
enable_pin: PA2
microsteps: 32
rotation_distance: 22.86
nozzle_diameter: 0.4
filament_diameter: 1.750
min_temp: 0
max_temp: 260
min_extrude_temp: 170
heater_pin: PB4
sensor_type: EPCOS 100K B57550G0104
sensor_pin: PK5
pullup_resistor: 4700
inline_resistor: 0
pressure_advance: 0.1
control: pid
pid_kp: 38.710
pid_ki: 2.412
pid_kd: 155.323
max_extrude_cross_section: 50.0
max_extrude_only_distance: 50.0


[drv8711 extruder]
cs_pin: PL6
spi_software_sclk_pin: PD5
spi_software_miso_pin: PD4
spi_software_mosi_pin: PD6
current: 1.8

################################################################################################
# RF2000v2 DUAL Extruder 1, 1.75mm v2                                                                     #
################################################################################################
[extruder1]
step_pin: PC1
dir_pin: !PC3
enable_pin: PC7
microsteps: 32
rotation_distance: 22.86
nozzle_diameter: 0.4
filament_diameter: 1.750
min_temp: 0
max_temp: 260
min_extrude_temp: 170
heater_pin: PH6
sensor_type: EPCOS 100K B57550G0104
sensor_pin: PK6
pullup_resistor: 4700
inline_resistor: 0
pressure_advance: 0.1
control: pid
pid_kp: 38.710
pid_ki: 2.412
pid_kd: 155.323
max_extrude_cross_section: 50.0
max_extrude_only_distance: 50.0


[drv8711 extruder1]
cs_pin: PJ7
spi_software_sclk_pin: PD5
spi_software_miso_pin: PD4
spi_software_mosi_pin: PD6
current: 1.8


################################################################################################

[thermistor EPCOS 100K B57550G0104]
temperature1: 25
resistance1: 100000
beta: 4150

[heater_bed]
control: pid
pid_kp: 58.098
pid_ki: 0.656
pid_kd: 1285.418
heater_pin: PE2
sensor_type: EPCOS 100K B57550G0104
sensor_pin: PK7
min_temp: 5
max_temp: 130


[fan]
pin: PA5
max_power: 1.0
kick_start_time: 0.100

[controller_fan fan2]
pin: PF4
fan_speed: 0.5
heater: extruder,heater_bed

[led led]
red_pin: PH3
green_pin: PH4
blue_pin: PH5
cycle_time: 0.010
hardware_pwm: False
initial_RED: 1.0
initial_GREEN: 1.0
initial_BLUE: 1.0


[virtual_sdcard]
path: /home/pi/printer_data/gcodes

[pause_resume]

[display]
lcd_type: hd44780
rs_pin: PK1
e_pin: PK3
d4_pin: PF5
d5_pin: PK2
d6_pin: PA1
d7_pin: PJ3
display_group: _default_16x4

#RE=TAST3:PH0, Ok=TAST1:PG5, DN=TAST2:PB7, LE=TAST4:PB5, UP=TAST5:PL7,
#PAUSE=TAST_E5:PH7, Z-DN=TAST_E2:PJ4, CONT=TAST_E6:PH2,
#F_REV=TAST_E3:PJ5, F-FWD=TAST_E4:PJ6, Z-UP=TAST_E1:PJ2
click_pin: !PG5
back_pin: !PB5
up_pin: !PL7
down_pin: !PB7
#kill_pin: !PH0 # This is the right arrow key, otherwise unused



[ads1100 load_cell]
gain: 2

[load_cell_probe]
adc: load_cell:None
adc_rate: 16
max_abs_force: 5000
noise_level = 1.5
force_calibration = 8500
stiffness = 6200

[bed_mesh]
speed: 100
horizontal_move_z: 2
mesh_min: 10,50
mesh_max: 200,260
algorithm:lagrange
probe_count: 5,5
fade_start: 1.0
fade_end: 10.0

  
[z_sense_offset]
force_threshold: 4000
max_z_offset: 0.2


[display_template _load_cell_digits]
text:
  { "F%5d" % (printer["load_cell_probe"].last_force) }

[display_data _default_16x4 load_cell_digits]
position: 0, 10
text: { render("_load_cell_digits") }

Hier noch die passende macros.cfg

Code: Alles auswählen

################################################################################
# PAUSE / RESUME / CANCEL Makros für Klipper (Enhanced Version)
# - PAUSE: Speichert den Zustand, fährt den Kopf weg und verlängert das Timeout.
# - RESUME: Kehrt zum Druck zurück, stellt Filament und Zustand wieder her.
# - M600: Filamentwechsel-Assistent (ruft PAUSE auf und führt Entladen/Laden durch).
################################################################################

[pause_resume]
# Geschwindigkeit, mit der der Werkzeugkopf beim Wiederherstellen aus einer Pause
# fahren darf. Ein niedriger Wert sorgt für sanftere Rückkehr.
recover_velocity: 50.0

[gcode_macro PAUSE]
description: Pausiert den Druck, parkt den Kopf sicher. Ignoriert erneutes Drücken.
rename_existing: PAUSE_BASE
variable_extrude: 1.0
gcode:
    # Sicherheitsabfrage: Nur ausführen, wenn NICHT bereits pausiert
    {% if not printer.pause_resume.is_paused %}
        
        ##### Parameter #####
        {% set z_hop = params.Z|default(10)|float %} ; Z-Anhebung
        
        ##### Berechnung der Parkpositionen #####
        # Druckvolumen (Max) aus der Config lesen
        {% set max_x = printer.toolhead.axis_maximum.x|float %}
        {% set max_y = printer.toolhead.axis_maximum.y|float %}
        {% set max_z = printer.toolhead.axis_maximum.z|float %}

        # Aktuelle Z-Position
        {% set act_z = printer.toolhead.position.z|float %}
        
        # Parkposition berechnen: Max - 10mm Puffer
        {% set x_park = max_x - 10.0 %}
        {% set y_park = max_y - 10.0 %}
        
        # Sicherstellen, dass wir nicht über Max-Z hinausfahren beim Hop
        {% if act_z < (max_z - z_hop) %}
            {% set z_safe = z_hop %}
        {% else %}
            {% set z_safe = max_z - act_z %}
        {% endif %}

        ##### Hauptlogik #####
        PAUSE_BASE
        
        # WICHTIG: Status speichern BEVOR wir wegfahren!
        SAVE_GCODE_STATE NAME=PAUSE_STATE
        
        G91
        
        # Retract (Filament zurückziehen), wenn Extruder heiß genug ist
        {% if printer.extruder.can_extrude|lower == 'true' %}
            G1 E-{extrude} F2100
        {% else %}
            {action_respond_info("Extruder nicht heiß genug")}
        {% endif %}
        
        # Z anheben und zur Parkposition fahren
        {% if "xyz" in printer.toolhead.homed_axes %}
            G1 Z{z_safe} F900
            G90
            G1 X{x_park} Y{y_park} F6000
        {% else %}
            {action_respond_info("Drucker nicht gehomed")}
        {% endif %}
        
        # Timeout massiv verlängern (12h)
        SET_IDLE_TIMEOUT TIMEOUT=43200
        
        RESPOND MSG="Druck pausiert. Kopf geparkt."
        
    {% else %}
        RESPOND MSG="Druck ist bereits pausiert - Befehl ignoriert."
    {% endif %}

[gcode_macro RESUME]
description: Setzt den Druck fort und stellt Position wieder her
rename_existing: RESUME_BASE
gcode:
    ##### Parameter #####
    {% set e = params.E|default(1)|float %} ; Extra Filament beim Start (Purge)
    
    #### Status wiederherstellen #####
    # Timeout auf Standard zurücksetzen (aus Config lesen oder Standard 600s)
    {% set default_timeout = printer.configfile.settings.idle_timeout.timeout|default(600) %}
    SET_IDLE_TIMEOUT TIMEOUT={default_timeout}

    G91
    
    # Filament wieder vorschieben (Prime), wenn heiß genug
    {% if printer.extruder.can_extrude|lower == 'true' %}
        G1 E{e} F2100
    {% else %}
        {action_respond_info("Extruder nicht heiß genug")}
    {% endif %}

    # Position wiederherstellen
    # MOVE=1 fährt zur alten XYZ Position zurück
    # MOVE_SPEED=100 stellt sicher, dass er zügig zurückfährt (in mm/s)
    RESTORE_GCODE_STATE NAME=PAUSE_STATE MOVE=1 MOVE_SPEED=100
    
    RESUME_BASE
    RESPOND MSG="Druck fortgesetzt."

[gcode_macro CANCEL_PRINT]
description: Bricht den Druck sicher ab
rename_existing: CANCEL_PRINT_BASE
gcode:
    TURN_OFF_HEATERS
    CLEAR_PAUSE
    SDCARD_RESET_FILE
    
    ##### Berechnung der Positionen #####
    {% set max_x = printer.toolhead.axis_maximum.x|float %}
    {% set max_y = printer.toolhead.axis_maximum.y|float %}
    {% set max_z = printer.toolhead.axis_maximum.z|float %}
    {% set act_z = printer.toolhead.position.z|float %}

    # Parkposition berechnen
    {% set x_park = max_x - 10.0 %}
    {% set y_park = max_y - 10.0 %}
    
    # Sicherer Z-Hop beim Abbruch
    {% if act_z < (max_z - 10) %}
        G91
        G1 Z10 F900
    {% endif %}
    
    G90
    # Kopf zur Parkposition fahren
    G1 X{x_park} Y{y_park} F6000 
    
    M84 ; Motoren aus
    CANCEL_PRINT_BASE
    RESPOND MSG="Druck abgebrochen."

[gcode_macro M600]
description: Filamentwechsel-Assistent (ruft PAUSE auf, bewegt und wartet)
gcode:
    ##### Parameter festlegen #####
    {% set X = params.X|default(50)|float %}        ; X-Position zum Parken (50mm)
    {% set Y = params.Y|default(50)|float %}        ; Y-Position zum Parken (50mm)
    {% set Z = params.Z|default(10)|float %}        ; Z-Hop (10mm)

    ##### 1. Pause und Zustand speichern #####
    PAUSE                                          ; Ruft das PAUSE-Makro auf (speichert Zustand, setzt Timeout)
    
    ##### 2. Bewegungen für den Wechsel #####
    G91                                            ; Relative Positionierung
    G1 E-5 F2700                                   ; Kurzer Retract vor dem Wechsel
    G1 Z{Z} F1000                                  ; Z-Achse erneut anheben (falls PAUSE Z geringer war)
    G90                                            ; Absolute Positionierung
    G1 X{X} Y{Y} F6000                             ; Kopf an die Wechselposition fahren
    
    
    ##### 3. Auf Benutzeraktion warten #####
    RESPOND MSG="M600: Filamentwechsel. Wechseln Sie das Filament, und rufen Sie dann RESUME auf."


############################
#
#  Druck Start und Ende 
#
############################

# --------------------------- Start Print ----------------------------
[gcode_macro PRINT_START]
gcode:
    # LED auf Rot (Druck startet)
    SET_LED LED="led" RED=1 GREEN=0 BLUE=0 SYNC=0 TRANSMIT=1

    # Homen aller Achsen
    G28 F1500

    # Automatisches Z-Probing (Z-Offset holen)
    # PROBE

    # Mesh laden (optional, kann auch vorher neu kalibriert werden)
    BED_MESH_PROFILE LOAD="default"

    # Temperaturen übernehmen aus Übergabeparametern
    {% set Betttemperatur = params.BED_TEMP|float %}
    {% set Extrudertemperatur = params.EXTRUDER_TEMP|float %}

    # LCD-Status
    M117 Heize Bett und Hotend...

    # Bett & Hotend auf Zieltemperatur aufheizen
    M190 S{Betttemperatur}
    M109 S{Extrudertemperatur}

    # LED auf Lila/Blau = Bereit
    SET_LED LED="led" RED=1 GREEN=0.2353 BLUE=0.8824 SYNC=0 TRANSMIT=1

    # Extruder zurücksetzen & leichten Retract
    G92 E0
    G1 E-1 F1800
    G1 F300 E-0.5

    # Prime Line
    G1 X180 Y3 Z0.35 F5000
    G1 F800 E13
    G1 X20 E25 F1000

    # Extruder zurücksetzen
    G92 E0

    # Z etwas anheben
    G1 Z2.0 F3000

    # LCD-Info
    M117 RF2000 Klipper bereit!

    
# --------------------------------------------------------------------



# ---------------------------- End Print -----------------------------
[gcode_macro PRINT_END]
variable_machine_depth: 235  # Optional: kannst du für Y-Hub-Ende nutzen
gcode:
    # Heizungen und Lüfter ausschalten
    M140 S0        ; Heizbett aus
    M104 S0        ; Hotend aus
    M106 S0        ; Lüfter aus

    # Extruder zurückziehen und Z minimal anheben
    G91            ; Relative Bewegung
    G1 Z0.2 E-2 F4400

    # Wechsel zu absoluter Positionierung
    G90

    # Position etwas vom Druckobjekt weg
    G1 X5 Y5 F8000

    # Z deutlich anheben, um Platz zu schaffen
    G1 Z180 F1200

    # Druckobjekt präsentieren
    G1 X0 Y280 F6000  ; oder nutze: Y{machine_depth - 25}

    # Stepper deaktivieren
    M84

    # Nachricht anzeigen und LED grün
    M117 Druck erfolgreich beendet!
    SET_LED LED="led" RED=0 GREEN=1 BLUE=0 SYNC=0 TRANSMIT=1

    # Mesh entfernen (für automatisches Leveln beim nächsten Druck)
    BED_MESH_CLEAR

# --------------------------------------------------------------------



[gcode_macro T0]
gcode:
 {% if (printer.toolhead.extruder) != "extruder"  %}
 ACTIVATE_EXTRUDER EXTRUDER=extruder
 {% endif %}


[gcode_macro T1]
gcode:
 {% if (printer.toolhead.extruder) != "extruder1"  %}
 ACTIVATE_EXTRUDER EXTRUDER=extruder1
 {% endif %}



[delayed_gcode bed_mesh_init]
initial_duration: .01
gcode:
  BED_MESH_PROFILE LOAD=default

  
[gcode_macro PID_Tuning_Hotend_1]
gcode:
 PID_CALIBRATE HEATER=extruder TARGET=200
 SAVE_CONFIG

[gcode_macro PID_Tuning_Hotend_2]
gcode:
 PID_CALIBRATE HEATER=extruder1 TARGET=200
 SAVE_CONFIG
 
[gcode_macro PID_Tuning_Bed]
gcode:
 PID_CALIBRATE HEATER=heater_bed TARGET=60
 SAVE_CONFIG



[pause_resume]

[gcode_button Z_DOWN]
pin: !PJ4
press_gcode:
    {% if not printer.idle_timeout.state == "Printing" %}
      G91
      G0 Z1 F300
      G90
    {% endif %}
    {% if printer.idle_timeout.state == "Printing" %}
      SET_GCODE_OFFSET Z={printer.gcode_move.homing_origin.z + 0.005 }
    {% endif %}

[gcode_button Z_UP]
pin: !PJ2
press_gcode:
    {% if not printer.idle_timeout.state == "Printing" %}
      G91
      G0 Z-1 F300
      G90
    {% endif %}
    {% if printer.idle_timeout.state == "Printing" %}
      SET_GCODE_OFFSET Z={printer.gcode_move.homing_origin.z - 0.005 }
    {% endif %}

[gcode_button F_FWD]
pin: !PJ6
press_gcode:
    {% if printer.idle_timeout.state == "Printing" and printer.gcode_move.extrude_factor < 1 %}
      M221 S{'%d' % (printer.gcode_move.extrude_factor * (101 + 1))}
    {% endif %}

    {% if printer.idle_timeout.state == "Printing" and printer.gcode_move.extrude_factor >= 1  %}
      M221 S{'%d' % (printer.gcode_move.extrude_factor * (100 + 1))}
    {% endif %}

    {% if not printer.idle_timeout.state == "Printing" %}
      G91
      G0 E+2 F300
      G90
    {% endif %}

[gcode_button F_RWD]
pin: !PJ5
press_gcode:
    {% if printer.idle_timeout.state == "Printing" and printer.gcode_move.extrude_factor < 1 %}
      M221 S{'%d' % (printer.gcode_move.extrude_factor  * (100 - 1))}
    {% endif %}

    {% if printer.idle_timeout.state == "Printing" and printer.gcode_move.extrude_factor >= 1 %}
      M221 S{'%d' % (printer.gcode_move.extrude_factor * (100 - 0.5))}
    {% endif %}

    {% if not printer.idle_timeout.state == "Printing" %}
      G91
      G0 E-2 F300
      G90
    {% endif %}

[gcode_button B_PAUSE]
pin: !PH2
press_gcode: PAUSE

[gcode_button B_RESUME]
pin: !PH7
press_gcode: RESUME


[gcode_macro z_offset_from_probe_result]
gcode:
    SET_GCODE_OFFSET Z={printer["load_cell_probe"].last_z_result}

[gcode_macro z_offset_scan]
gcode:
    PROBE
    Z_OFFSET_FROM_PROBE_RESULT
    Z_OFFSET_APPLY_ENDSTOP
    G0 Z2

[gcode_macro bed_calibrate]
gcode:
    G0 Z10
    G0 X100 Y100
    G0 Z2
    PROBE
    Z_OFFSET_FROM_PROBE_RESULT
    Z_OFFSET_APPLY_ENDSTOP
    SET_KINEMATIC_POSITION Z=0
    G0 Z2
    BED_MESH_CALIBRATE
    SAVE_CONFIG

[gcode_macro z_calibrate]
gcode:
    G0 Z10
    G0 X100 Y100
    G0 Z2
    Z_OFFSET_SCAN

 
🔧 Troubleshooter | Entwickler | Klipper
⚠️ Hinweis: Ich hafte nicht für verbrannte Finger oder verstopfte Nozzles.
👉 Erste Regel: Hast du dein Druckbett gelevelt?
Beiträge: 2
Registriert: Do 4. Dez 2025, 06:52
Kontaktdaten:
Hallo Dennis

Vielen Herzlichen Dank!!!!

Deine Erklärung hat fantastisch funktioniert und der Renkforce hat jetzt Klipper mit Mainsail. :D :D :D

Auch ein herzliches Dankeschön das du das Forum hier aufbaust.

Viele Grüsse
Samuel
Administrator
Beiträge: 46
Registriert: Sa 1. Nov 2025, 21:24
Wohnort: Penzing
Kontaktdaten:
Benutzeravatar
Administrator
Re: Klipper Installation

Beitrag von Dennis »

Im OrcaSlicer unter Maschinen G-Code

Bei Maschinen Start G-Code das einfügen

Code: Alles auswählen

PRINT_START EXTRUDER_TEMP=[nozzle_temperature_initial_layer] BED_TEMP=[bed_temperature_initial_layer_single] 
Bei Maschinen Ende G-Code das einfügen

Code: Alles auswählen

PRINT_END
Mehr braucht man nicht um den Startgcode und Endgcode zu definieren. Dieser wird dann aus der macros.cfg eingelesen.

Dennis
🔧 Troubleshooter | Entwickler | Klipper
⚠️ Hinweis: Ich hafte nicht für verbrannte Finger oder verstopfte Nozzles.
👉 Erste Regel: Hast du dein Druckbett gelevelt?
Antworten

Information

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast