Banach-Trinity

To dobre miejsce na pytania i worklogi
Awatar użytkownika
morf
Drukarz
Postów w temacie: 1
Posty: 3233
Rejestracja: 17 sty 2017, 12:28
Drukarka: Reprapy, Prusa MK3S
x 1598

Re: Banach-Trinity

Post autor: morf »

Andrzej_W pisze: 30 gru 2023, 22:28 Oczko opadło temu ̶m̶i̶s̶i̶u̶ linuxowi :D
Tux, linuksowy pingwinek nosi nazwę Tux :) od Torvald's UniX
Done is better than perfect.
Awatar użytkownika
Rozarh
Drukarz
Postów w temacie: 10
Posty: 633
Rejestracja: 12 kwie 2021, 10:45
Lokalizacja: opolskie
Drukarka: Fenix, A20M, TT1SM..
x 259

Re: Banach-Trinity

Post autor: Rozarh »

Jarewa pisze: 30 gru 2023, 23:01 Rzuć mi konfingiem na pw szczególnie zmiana filamentu.
A mogę wrzucić publicznie. Wprawdzie to moje dzieło, ale może ktoś z twórców Klippera namierzy i wesprze taki tryb pracy :piwo:

Kod: Zaznacz cały

[extruder]
heater_pin: PE3 # HE0
sensor_pin: PA1 # T0
sensor_type: PT1000
pullup_resistor: 2200
nozzle_diameter: 0.400
filament_diameter: 1.750
# rotation_distance: 7.710843373493976
control: pid
pid_Kp: 17.604
pid_Ki: 0.659
pid_Kd: 117.506
min_temp: 5
max_temp: 250
max_extrude_only_distance: 200.0

[extruder_stepper e1Niebieski]
dir_pin: PA14
step_pin: PA10
enable_pin: !PA15 
microsteps: 16
extruder:
rotation_distance: 8

[extruder_stepper e2Czerwony]
dir_pin: PD9
step_pin: PD11
enable_pin: !PD15
microsteps: 16
extruder:
rotation_distance: 8

[extruder_stepper e3Czarny]
dir_pin: PC6
step_pin: PD8
enable_pin: !PC7
microsteps: 16
extruder:
rotation_distance: 8
Warto tu zwrócić uwagę, że główny "ekstruder" nie posiada sekcji żadnego silnika - definicji pinów. Klipper tego nie wymaga na szczęście. Gdy dodawałem silnik ekstrudera wspólnego dla reszty (dany kolor był obsługiwany przez dwa ekstrudery razem - główny i kolorowy) to tu były definiowane jego piny. Ale ten pomysł upadł... Przy okazji zwracam uwagę na rotation_distance: Gdy jest podawany w ekstruderze muszą być również podane piny stepsticka. Dlatego go nie podaję dla głównego narzędzia.

Kod: Zaznacz cały

[gcode_macro _LOW_TEMP_CHECK]
description: Rozgrzej głowicę jesli jest zimna
gcode:
  {% if printer.extruder.target >= 200 %} # if there is a setpoint for extruder
    {% if printer.extruder.temperature < printer.extruder.target %} # if not reached, heat
      # RESPOND PREFIX="info:" MSG="Heating from {printer.extruder.temperature} to {printer.extruder.target}."
      M109 S{printer.extruder.target|float}
    {% endif %}
  {% else %} # if no setpoint for extruder
    {% if printer.extruder.target < 200 %} # heat to T.
      # RESPOND PREFIX="info:" MSG="No setpoint, heating to 180."
      M109 S210
    {% endif %}
  {% endif %}

[gcode_macro _TOOL_CHANGE]
gcode:
    # {% set tools = ['e1Niebieski', 'e2Czerwony', 'e3Czarny'] %}
    # {% set oldtool = printer["gcode_macro _TOOL_CHANGE"].current|int %}
    # {% if oldtool == 3 %}
    {% if (params.TOOL|int)%2 == 1 %}
        SYNC_EXTRUDER_MOTION EXTRUDER=e1Niebieski MOTION_QUEUE=extruder
        SET_GCODE_VARIABLE MACRO=SET_PRESSURE_ADVANCE VARIABLE=current VALUE='-"e1Niebieski"-' # wartość ma być postaci: apostrof, cudzysłów, treść, cudzysłów, apostrof - bez kreseczek
        {% if not printer.stepper_enable["extruder_stepper e1Niebieski"] %}
            SET_STEPPER_ENABLE STEPPER="extruder_stepper e1Niebieski" ENABLE=1
        {% endif %}
    {% else %}
        SYNC_EXTRUDER_MOTION EXTRUDER=e1Niebieski MOTION_QUEUE=
    {% endif %}
    {% if ((params.TOOL|int)//2)%2 == 1 %}
        SYNC_EXTRUDER_MOTION EXTRUDER=e2Czerwony MOTION_QUEUE=extruder
        SET_GCODE_VARIABLE MACRO=SET_PRESSURE_ADVANCE VARIABLE=current VALUE='-"e2Czerwony"-' # wartość ma być postaci: apostrof, cudzysłów, treść, cudzysłów, apostrof - bez kreseczek
        {% if not printer.stepper_enable["extruder_stepper e2Czerwony"] %}
            SET_STEPPER_ENABLE STEPPER="extruder_stepper e2Czerwony" ENABLE=1
        {% endif %}
    {% else %}
        SYNC_EXTRUDER_MOTION EXTRUDER=e2Czerwony MOTION_QUEUE=
    {% endif %}
    {% if ((params.TOOL|int)//4)%2 == 1 %}
        SYNC_EXTRUDER_MOTION EXTRUDER=e3Czarny MOTION_QUEUE=extruder
        SET_GCODE_VARIABLE MACRO=SET_PRESSURE_ADVANCE VARIABLE=current VALUE='-"e3Czarny"-' # wartość ma być postaci: apostrof, cudzysłów, treść, cudzysłów, apostrof - bez kreseczek
        {% if not printer.stepper_enable["extruder_stepper e3Czarny"] %}
            SET_STEPPER_ENABLE STEPPER="extruder_stepper e3Czarny" ENABLE=1
        {% endif %}
    {% else %}
        SYNC_EXTRUDER_MOTION EXTRUDER=e3Czarny MOTION_QUEUE=
    {% endif %}
    ACTIVATE_EXTRUDER EXTRUDER=extruder

[gcode_macro SET_PRESSURE_ADVANCE]
variable_current: "e1Niebieski"
rename_existing: SET_PRESSURE_ADVANCE_BASE
gcode:
    SET_PRESSURE_ADVANCE_BASE ADVANCE={params.ADVANCE} EXTRUDER="{current}"

[gcode_macro _WYSUN]
gcode:
    _LOW_TEMP_CHECK
    SAVE_GCODE_STATE NAME=wymiana
    M83
    G1 E-45 F4000
    
[gcode_macro _WSUN]
gcode:
    _LOW_TEMP_CHECK
    M83
    G1 E45 F4000
    RESTORE_GCODE_STATE NAME=wymiana MOVE=0

[gcode_macro T0]
gcode:
    _TOOL_CHANGE TOOL=1

[gcode_macro T1]
gcode:
    _TOOL_CHANGE TOOL=2

[gcode_macro T2]
gcode:
    _TOOL_CHANGE TOOL=4

Makro _LOW_TEMP_CHECK upewnia się przed ruchem ekstruderów czy głowica jest rozgrzana - jeśli nie, to ją rozgrzewa.
_TOOL_CHANGE to samo przełączenie silników ekstruderów. Początkowo łączyłem je z makrami _WYSUN i _WSUN, ale okazało się to bardziej problematyczne. A i koledzy na czacie podpowiedzieli, żeby tak nie robić. Więc teraz g-code do zmiany narzędzia w SuperSlicer to:

Kod: Zaznacz cały

_WYSUN
T[next_extruder]
_WSUN
i problem z głowy.
Teoretycznie wysuwanie i wsuwanie filamentu można zwalić na slicer, ale tego nie rozpracowywałem - u mnie wartość 45mm robi to dobrze, a w slicerze trzeba podać całą masę wartości.
Makro _TOOL_CHANGE jest tak skonstruowane, że wywołane np. jako

Kod: Zaznacz cały

_TOOL_CHANGE TOOL=7
podepnie wszystkie trzy silniki do ekstrudera - przydatne przy rozładunku drukarki z wszystkich filamentów naraz.

Niestety robiłem testy z zapamiętywaniem stanu drukarki - który filament "w dyszy" a który niezaładowany, ale wychodzi na to, że najlepszy jest kontroler "białkowy" - czyli operator drukarki. Przy obecnym poziomie rozwoju systemu żaden kod Klippera nie uwzględni wszystkich możliwych stanów początkowych drukarki - zwłaszcza bez czujników filamentu.
Ostatnio zmieniony 31 gru 2023, 00:42 przez Rozarh, łącznie zmieniany 1 raz.
konradsdev1
Parafrazując wpis by artusiek:
Nie chcesz grzebać? Kup Prusę lub Bambu Labs
Kupiłeś coś co dopieszczasz? Naucz się grzebać!!!
Awatar użytkownika
Rozarh
Drukarz
Postów w temacie: 10
Posty: 633
Rejestracja: 12 kwie 2021, 10:45
Lokalizacja: opolskie
Drukarka: Fenix, A20M, TT1SM..
x 259

Re: Banach-Trinity

Post autor: Rozarh »

Aha - makro SET_PRESSURE_ADVANCE redefiniuję tylko na potrzeby SuperSlicera - uparł się, aby odpalać SET_PRESSURE_ADVANCE ale nie podaje ekstrudera tylko samo ADVANCE - dlatego procedura ustawia od razu bieżący ekstruder...
Parafrazując wpis by artusiek:
Nie chcesz grzebać? Kup Prusę lub Bambu Labs
Kupiłeś coś co dopieszczasz? Naucz się grzebać!!!
Awatar użytkownika
Jarewa
Drukarz
Postów w temacie: 3
Posty: 1602
Rejestracja: 26 sty 2021, 22:16
Lokalizacja: Głogów
x 369

Re: Banach-Trinity

Post autor: Jarewa »

Dzięki :)
Rozarh pisze: 31 gru 2023, 00:27
Niestety robiłem testy z zapamiętywaniem stanu drukarki - który filament "w dyszy" a który niezaładowany, ale wychodzi na to, że najlepszy jest kontroler "białkowy" - czyli operator drukarki. Przy obecnym poziomie rozwoju systemu żaden kod Klippera nie uwzględni wszystkich możliwych stanów początkowych drukarki - zwłaszcza bez czujników filamentu.
Właśnie będę maił czujniki, i się nad tym zastanawiam jak to ugryźć by w fazie włączenia klipper wiedział który extruder jest aktywny.
Awatar użytkownika
Rozarh
Drukarz
Postów w temacie: 10
Posty: 633
Rejestracja: 12 kwie 2021, 10:45
Lokalizacja: opolskie
Drukarka: Fenix, A20M, TT1SM..
x 259

Re: Banach-Trinity

Post autor: Rozarh »

Dla głowicy ZSYong 3in1 jak i dla 2in1 (którą prawdopodobnie posiadasz) to jest nie do opanowania o ile jest używana standardowo. Po prostu brakuje czujnika wewnątrz głowicy.
A nawet gdyby był, to i tak nie wiesz, który kolor siedzi w dyszy tylko, że któryś siedzi...
Rozwiązaniem mogły by być czujniki zaraz na wlocie przed głowicą - na starcie rozgrzewasz głowicę i wszystkie filamenty, które są wskazywane przez czujnik, że siedzą w środku wycofujesz do zadziałania czujnika. Wtedy masz pewność gdzie każda nitka filamentu się znajduje.
Tylko wymaga to czujników, które siedzą na bowdenie - ekstrudery są daleko i nie można pozwolić sobie na luzy bowdena pomiędzy ekstruderem a głowicą...
Parafrazując wpis by artusiek:
Nie chcesz grzebać? Kup Prusę lub Bambu Labs
Kupiłeś coś co dopieszczasz? Naucz się grzebać!!!
Awatar użytkownika
Jarewa
Drukarz
Postów w temacie: 3
Posty: 1602
Rejestracja: 26 sty 2021, 22:16
Lokalizacja: Głogów
x 369

Re: Banach-Trinity

Post autor: Jarewa »

Buduje własny extruder będzie to spliter direct w zasadzie prawie już gotowy. Właśnie mam czujniki tak sobie zaprojektowałem bo przymiarka jest taka by wycofywać do czujników a nie na odległosć i zanim następny wejdzie żeby czekał na czujnik pierwszego ale to własnie na razie się przyglądam bo nie wiem na ile może pozwolić skrypt klippera co będe wstanie dla nich napisać choć w skryptach na raie jestem dętka ale jak tu i tam obczaje jak ludzie mają to może mi ułatwi . Tam są dwa czujniki osobno dla danego extrudera
IMG_0741.JPG
IMG_0739.JPG
IMG_0732.JPG
ODPOWIEDZ

Wróć do „RepRap - buduję”