Strona 1 z 1

Banach-Trinity

: 22 lis 2023, 15:18
autor: Rozarh
Od dawna byłem posiadaczem głowicy BTT ZSYong 3in1. Była jakiś czas temu zamontowana na Rozarh's 3D Printer (późniejszy Feniks), ale ją sobie odpuściłem na rzecz podróby hemery i później Phaetus Dragon HF zarzucając ideę druku 3D w kolorze na miesiące.
Niestety sytuacja uległa zmianie gdy zanabyłem drogą kupna tu na forum drukarki Geeetech A20M, która potrafi pluć dwoma zmiksowanymi filamentami. Od tamtego czasu przypomniałem sobie o wspomnianej wyżej głowicy i po głowie kołatały mi się myśli o budowie trikolora. Rozpoczęło się zbieranie części i budowanie koncepcji maszyny. Jako baza Klipper (RRF ze zmianą kolorów tak średnio, więc do testów zobaczę co Klipper potrafi). Płyta na 8 stepów, 3 silniki ekstruderów, jakiś coreXY...
Po skompletowaniu prawie całej elektroniki zacząłem kombinować z obudową...
No i jak zapewne niektórzy z Was wiedzą, żeby nie wymyślać koła na nowo poszukałem jakichś uszkodzonych używek i trafił mi się uszkodzony Banach 3D za niecałe 400zł na Alledrogo i Lokalnie ;)
banach3D.png
Konstrukcyjnie drukarka słaba: kartezjan z ruchomym stołem, mocowanym na dwóch wałkach liniowych po jednej stronie stołu, oś Y napędza jeden silnik, ale poprzez wałek paski są po obu stronach belki. Stół grzany 24V na granicy mocy zasilacza... Płyta gówna MKS Makerbase BASE2 V1.2 z mini wyświetlaczem. W sumie nawet jej nie uruchomiłem po zakupie - od razu została rozebrana i szykowana pod moją wersję. :devil:

Po przebudowie prezentuje się tak. Od góry:
IMG_0508.jpeg
z przodu:
IMG_0509.jpeg
od spodu:
IMG_0497.jpeg
Co się zmieniło w stosunku do oryginału:
  • Płyta główna to BTT Manta M8P z modułem CB1 (pod wiatrakiem)
  • Stepsticki X i Y to TMC2209, Z - TMC2208, E0, E1, E2 to LV8729
  • Dodałem SSR na prąd stały
  • Obróciłem zasilacz (24V 360W) tak, aby jego otwór wentylatora znalazł się dokładnie nad otworem blachy zamykającej spód.
  • Usunąłem wyświetlacz - jeszcze kombinuję jak zaślepić otwór/wstawić inny wyświetlacz...
  • Dodałem BL-Touch
  • Zlikwidowałem krańcówki wszystkich osi - X i Y chodzą na Sensorless homing (wiem, byłem przeciwnikiem tego) a Z na BL-Touch
  • Zerwałem podziurawioną matę stołu i nakleiłem magnes do mocowania blach i podkładek magnetycznych
  • Dodałem moją głowicę ZSYong 3in1 z trzema ekstruderami i uchwytami na filamenty. Grzałka 60W, termistor PT1000.
Na tą chwilę:
  • Skonfigurowałem mechanikę w Klipper. Konfiguracja została osadzona w trzech plikach:
    konfig.png
    Plik płyty ma wyłącznie określenia, który pin do czego służy. Plik mechanics.cfg zawiera dane konstrukcyjne drukarki (limity osi, prędkości i reszta parametrów zależna od metalu :) ) Ostatni plik to procedury samej drukarki. :cool2:
  • Drukarka grzeje głowicę i skalibrowałem PID dla niej. Kalibracja PID stołu nie powiodła się :eek2: - szukam przyczyny.
  • Opracowuje również procedury wymiany narzędzi T0, T1 i T2. W Geeetechu wystarczyło zrobić retrakcję T0 i wtłaczać T1 do czasu wybarwienia filamentu. Tu muszę kombinować z długim wycofaniem filamentu poza obszar kolizji z pozostałymi nitkami. No i jeszcze uwzględnić ładowanie i stan po włączeniu, gdzie nie wiem, która nitka jest w dyszy (a może żadna?) :crazy2:
  • Nie znalazłem dobrego rozwiązania na wentylator nadmuchu :unknown:
  • Uruchomiłem lampkę LED w obudowie :DD
Nie śmiejcie się z mocowania filamentów - kupiłem uchwyty Creality i mają wahliwe mocowania, przez co nie wygląda to dobrze, ale mogę je odchylać i zakładać środkową szpulę bez nadmiernej gimnastyki. Mogłem wydrukować te (https://www.thingiverse.com/thing:2047554) podnożki z łożyskami, ale one nie dają oporu na pobieraniu filamentu - długie wycofanie przy zmianie szpuli może doprowadzać do plątania go na szpuli.

Re: Banach-Trinity

: 22 lis 2023, 16:22
autor: Rozarh
Właśnie ogarnąłem PID stołu. Pewnie za pierwszym razem też by się udało gdyby nie fakt, że zdefiniowałem go w dwóch plikach.
Na dodatek w jednym pliku był PID z innej drukarki a w drugim watermark z defaultu Klippera ;)
Jak się dzieli konfigurację na pliki to efekt jest zaje...ty, ale trzeba bardzo uważać co się gdzie wpisuje.
PID'y oczywiście trafiają do mechanics.cfg jako zależne od mechaniki maszyny.

Re: Banach-Trinity

: 03 gru 2023, 23:11
autor: Rozarh
Niestety mimo wielu prób z PET-G nie udało mi się zmusić tej głowicy do pracy :unknown:

PET-G nie jest najlepszym wyborem, ale do tej pory nie wymyśliłem chłodzenia modelu więc wybór padł na materiał, który nie lubi chłodzenia.

Niestety podawany przez dyszę materiał nie płynął regularnie. Nie wiem czy to wada głowicy czy co innego?
Wpadłem zatem na pomysł, żeby zastosować dodatkowy ekstruder (najlepiej direct) a ZSYong'a użyć jako zwrotnicę dla filamentów umożliwiającą wymianę filamentów. :good:
Jednak okazało się, ze względu na mechanikę drukarki, że cała głowica musi być bardzo kompaktowa i direct musi być małych rozmiarów. Chciałem użyć Paetus z Feniksa z nowym ekstruderem, ale jego mocowania ustawiają go bokiem i grabi za dużo miejsca.
Wybór zatem padł na stary poczciwy E3D ale z łącznikiem a'la Hemera. Posiadałem takowy twór i zrobiłem to:
IMG_0516.jpeg
a całość wygląda tak:
IMG_0515.jpeg
Na razie poskładane jako prowizorka, żeby sprawdzić czy to ma rację bytu. Bowdenów zbytnio nie skracałem dopóki koncepcja się nie sprawdzi.

Posmarkałem trochę czerwonego PET-G i wygląda na to, że płynie zdecydowanie lepiej. Co lepsze - Klipper daje radę wysterować dwa silniki ekstruderów na raz mimo tego, że te przy filamentach to Titan, a ten "wspólny" na ramie to BMG - mają inne rotation_distance.
Na początku był problem, ale okazało się, że czerwony PET-G miał brzydką gulkę na końcu. To jest pewnie powód dla którego większość zmieniarek obcina filament tak, aby był prosty i równy na końcu. U mnie załatwia to cienki łącznik - jak już posmarkałem i wysunąłem filament to końcówka wygląda tak:
IMG_0517.jpeg
i bez oporów przeszła cały tor przy wycofaniu. Jest dużo mniejsza niż wychodziła bezpośrednio z ZSYong'a więc mam nadzieję, że załaduje się również poprawnie.
Póki co to kolejny kabelek silnika wyjęty prosto z opakowania po założeniu ma gdzieś przerwę i jeden z silników ekstruderów ładujących terkocze zamiast się obracać. Co ciekawe - mierzyłem go przed montażem, ale mógł się "złamać" w trakcie montażu... :mad2:

Re: Banach-Trinity

: 04 gru 2023, 08:35
autor: rafly
Ciekawy projekt! Trzymam kciuki.

Re: Banach-Trinity

: 10 gru 2023, 16:43
autor: Rozarh
Opanowałem przewód ekstrudera i przy okazji wydrukowałem zamiennik mocowania, które oryginalne zgniatało peszla z przewodami prawdopodobnie je uszkadzając (wybrane żyły).
System, z ekstruderem wiodącym i pomocniczymi zadziałał nieźle, do tego stopnia, że skróciłem bowdeny i zacząłem kalibrować ustawienia.
Okazało się, że dalej nie mogę nic wdrukować - mimo kalibracji Bl-Touch wydruk albo zatykał dyszę i ekstrudery "strzelały" albo podwijał się pod dyszą. Ciekawe doświadczenie: słuchać jak BMG i Aero pracując równolegle nie są w stanie wypchać filamentu...
Okazało się, że w głowicy utknął mały kawałek - po wyjęciu dało się tłoczyć.
Jednak podawany filament wytłaczany na stojącej drukarce nie tworzył jednej spójnej nitki tylko taką porowatą...
Wymieniłem zatem dyszę, na najlepszy model jaki posiadałem - stalowy Phaetus - i drukarka w końcu zaczęła drukować.
No i tu mam dylemat - tor przebiegu filamentów jest obecnie na tyle długi, że muszę wycofywać 913mm, żeby filament od dyszy wjechał w bezpieczną strefę, gdzie nie będzie kolidować z pozostałymi filamentami. Trochę to dużo, choć dodatkowy ekstruder w torze skróci dystans retrakcji do rozsądnej odległości.
Z drugiej strony jeśli problemem do tej pory była dysza w bloku to może warto rozważyć opcję powrotu do pierwotnego planu i użyć ZSYong'a jako głowicy ale z nową dyszą?
Powrót do pierwotnej konfiguracji zajmie trochę czasu ale po tym zabiegu wycofanie filamentu do bezpiecznej strefy to będzie tylko 40mm a nie 913.
Co sądzicie? Jakieś pomysły?

Re: Banach-Trinity

: 23 gru 2023, 13:28
autor: Rozarh
Wróciłem do ZSYong 3in1. A po wymianie dyszy na platerowaną miedź filament płynie wartkim ciągłym strumieniem a wydruki w końcu kleją się do stołu :yahoo:
Poustawiałem resztę rzeczy i zacząłem wydruk trzykolorowej jaszczurki no i klapa. Z bloku grzejnego kapie filament z dziurki od czujnika temperatury (blok ma dwie na PT100 i zwykły). Przerwałem wydruk i zamówiłem nowy blok - miedziany.

Gdy blok został wymieniony sprawdziłem tylko poprawność z-offset i przystąpiłem do druku - tu macie filmik z fragmentu drukowania:

źródło: https://www.youtube.com/watch?v=Ofx9oQkab_M

A końcowy efekt wygląda tak:
IMG_0541.jpeg
Niestety wydruk trzymał dość mocno a płyta nie jest elastyczna i odłamała się końcówka ogonka :sorry:

Zauważcie, że drukarka nie posiada jeszcze chłodzenia wydruku - dlatego męczę ją PETG, który takowego nie wymaga. Niebieski filament to Plastspaw a pozostałe Print-Me. Druk 225°C a stół 70°C warstwa 0,2mm (pierwsza 0,3mm). Powinienem użyć zmiennej wysokości warstwy ale chciałem po prostu zobaczyć jak to drukuje a nie dopieszczać :mrgreen:

Tak, wiem, że ułamał mi się kabelek od wiatraka chłodzenia modelu, ale naprawię to jak wymyślę koncepcję tego chłodzenia :tease: Tam jest bardo mało miejsca wokół i modele, które znalazłem ograniczą mi pole druku.

Re: Banach-Trinity

: 30 gru 2023, 21:33
autor: Rozarh
Inny wydruk: pingwinek
IMG_0543.jpeg
Ewidentnie widać brak nadmuchu na model. No i coś kapie z dyszy - co jakiś czas się artefakty robią.

Dopóki nie dorobię tego chłodzenia to na razie nie będę robić kolejnych wydruków :sorry:

Re: Banach-Trinity

: 30 gru 2023, 22:28
autor: Andrzej_W
Oczko opadło temu ̶m̶i̶s̶i̶u̶ linuxowi :D

Re: Banach-Trinity

: 30 gru 2023, 22:46
autor: Rozarh
Oryginał ma takie "oczko":

https://www.thingiverse.com/thing:2418547

Re: Banach-Trinity

: 30 gru 2023, 23:01
autor: Jarewa
Rzuć mi konfingiem na pw szczególnie zmiana filamentu.

Re: Banach-Trinity

: 30 gru 2023, 23:05
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

Re: Banach-Trinity

: 31 gru 2023, 00:27
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.

Re: Banach-Trinity

: 31 gru 2023, 00:37
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...

Re: Banach-Trinity

: 31 gru 2023, 08:39
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.

Re: Banach-Trinity

: 31 gru 2023, 11:35
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ą...

Re: Banach-Trinity

: 31 gru 2023, 11:51
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