poniedziałek, 1 czerwca 2020

Tunning ekstrudera w drukarce 3D


Zgodnie z obietnicą, tym razem opiszę jak zrobić charakterystykę bloku grzewczego (tzw. tuning PID) oraz jak dostosować liczbę kroków silnika ekstudera, tak byśmy otrzymywali poprawną dawkę filamentu.


 

Zaczniemy od wyznaczenia charakterystyki grzewczej, tj. znalezienia parametrów PID.  Kiedy należy to robić? Wtedy gdy drukarka nie jest w stanie od razu wstrzelić się w zadaną temperaturę, skutkiem czego można zaobserwować wykres który wygląda podobnie jak ten poniżej:


Na początek możemy otworzyć terminal i wydać polecenie M503 by sprawdzić bieżące ustawienia:

 Recv: echo:; PID settings:  
 Recv: echo: M301 P9.12 I0.41 D50.98  
 Recv: echo: M304 P124.55 I23.46 D165.29  

 Linia M301 to parametry głowicy, natomiast M304 łóżka. W drugim kroku ładujemy filament i czekamy aż drukarka ostygnie. Dopiero wtedy wydajemy polecenie "M303 S200 C10", które włącza mechanizm automatycznego znajdowania parametrów PID. Polecenie spowoduje wykonanie 10 prób przy temperaturze 200°C.

 Send: M303 S200 C10  
 Recv: PID Autotune start  
 ...  
 Recv: PID Autotune finished! Put the last Kp, Ki and Kd constants from below into Configuration.h  
 Recv: #define DEFAULT_Kp 17.29  
 Recv: #define DEFAULT_Ki 0.58  
 Recv: #define DEFAULT_Kd 128.96  

Jeżeli proces autotune się nie powiedzie może to oznaczać, że z jakiegoś powodu blok grzewczy przy głowicy nie trzyma temperatury. Być może grzałka jest za słaba, może jest włączony wentylator dmuchający pod głowicę itp.

By wprowadzić i zapisać znalezione parametry wydajemy polecenia:

 M301 P17.29 I0.58 D128.96  
 M500  

Potem czekamy aż drukarka ostygnie i ustawiamy temperaturę by przetestować znalezione parametry. Jeżeli wszystko jest dobrze dostaniemy coś takiego:


Skoro to już mamy to pora na drugi etap. Musimy tak ustawić liczbę kroków na silniku popychającym filament, że jeżeli zadamy wyciśnięcie np. 10cm filamentu, to tyle właśnie zostanie wyciśnięte. Procedura testowa wygląda tak:
  1. Ustawiamy temperaturę dyszy na taką jakiej używamy podczas wydruku
  2. Przełączamy głowicę w tryb relatywny wysyłając gcod M83
  3. Oznaczamy na filamencie odległość np. 120mm od miejsca gdzie wchodzi do extrudera
  4. Żądamy wyciśnięcia 100mm plastiku przy pomocy gcodu "G1 E100 F100". Wyciśnięcie zajmie około 60 sekund. Robimy to powoli by wyeliminować z pomiaru temperaturę oraz opór stawiany przez filament
  5. Wyłączamy grzanie głowicy i mierzymy na filamencie odległość do oznaczenia które zrobiliśmy na samym początku. Jeżeli zmierzona wartość wynosi 20mm, oznacza to że drukarka jest poprawnie skalibrowana
W moim przypadku, zmierzona odległość wyniosła 22mm. Co oznacza, że wyciśnięte zostało 98mm zamiast żądanych 100mm (120 - 22). Wydajemy kod M503 i sprawdzam bieżące ustawienia, interesuje nas ten fragment:

 Recv: echo:; Steps per unit:  
 Recv: echo: M92 X80.04 Y80.04 Z400.48 E99.10  

Widać tutaj, że ekstruder ustawiony jest E99.10, szukamy więc nowej liczby kroków rozwiązując równanie:

biezaca_liczba_kroków * ilość_zadana_do_wycisniecia = szukana_liczba_kroków * ilość_faktycznie_wyciśnięta

Wychodzi nam zatem że :

biezaca_liczba_kroków * ilość_zadana_do_wycisniecia = 99.10 * 100 = 9910

A z tąd wynika:

9910 = szukana_liczba_kroków * ilość_faktycznie_wyciśnięta
9910  / ilość_faktycznie_wyciśnięta = szukana_liczba_kroków
9910 / 98 =  101.122

Jak już mamy nową liczbę kroków, aktualizujemy ustawienia drukarki i przeprowadzamy ponownie cały test od początku aż do wyciśnięcia poprawnej porcji filamentu.

 M92 E101.122  
 M500  

Czyli co, można już drukować? Hola, hola nie tak prędko, a stół wypoziomowany? :) Poziomowanie stołu jest operacją którą wykonuje się dla każdej drukarki troszeczkę inaczej, tak więc w tym wypadku najlepiej sięgnąć do podręcznika użytkownika.