Linuxcnc jest całkowicie darmowym programem do obsługi maszyn numerycznych, tokarek itp. Dla początkujących i amatorów garażowych to pozycja obowiązkowa. W artykule opiszemy tylko podstawy instalacji, jest tego pełno w internecie i nie powinno sprawiać problemów. Bardziej skupimy się na konfiguracji silników krokowych i przygotowaniu maszyny do pierwszej obróbki. LinuxCNC obsługuje także silniki servo, niestety nie mieliśmy okazji się jeszcze nimi bawić.{jcomments on}

 Spis treści:

1. Instalacja LinuxCNC

2. Konfiguracja LinuxCNC

3. Konfiguracja osi.

 

1. Instalacja LinuxCNC

Na stronie http://www.linuxcnc.org/index.php/english/download znajdziemy plik .iso z całym systemem operacyjnym debian. W nim zawarty jest program LinuxCNC, całkowicie darmowy do sterowania maszynami numerycznymi: obrabiarkami, ploterami, ramionami robotów itp. Instalacja jest banalna, opisana w dokumentacji. My za pomocą programu Win32DiskImager zamontowaliśmy plik .iso na pendriva. Potem zabawa w biosie z ustawieniami kolejności rozruchu(boot manager), wybieramy USB i nasz dysk przenośny. Zapisujemy ustawienia, uruchamiamy komputer ponownie i wybieramy tryb instalacji „graphical”, czyli graficzne. Dalej ustawiamy język systemu, połączenie z internetem(można pominąć), wybieramy dysk do instalacji, najlepiej całą pustą partycję i klikamy next(dalej) aż rozpocznie się instalacja.   Po tym zmieniamy znowu rozruch na dysk twardy. Po włączeniu systemu łączymy się z internetem i instalujemy aktualizacje.

Bez problemu możemy działać na dwóch systemach operacyjnych. Na początku musi być zainstalowany system Windows lub MAC. Linux doinstaluje GRUB, czyli ekran z wyborem systemu operacyjnego. Domyślnie, jeśli nic nie klikniemy w ciągu kilku sekund, odpalany będzie LinuxCNC. Kolejność można zmienić w plikach konfiguracyjnych. 

  

 

Nie aktualizujemy systemu na nowszą wersję. Jeżeli to zrobimy nasz program nie będzie już działał. Instalujemy wyłącznie nowe wersje programów i zabzpieczeń systemu!!!

 

Ostatnim krokiem jest odzyskanie miejsca na naszym przenośnym dysku. Tak się złożyło że nagle stracił swoją pierwotną pojemność. Zrobimy to w świeżo zainstalowanym linuxie. Otwieramy emulator terminala z paska programy i wpisujemy:

sudo apt-get install gparted

Po wpisaniu hasła administratora w programy/akcesoria zainstaluje się gparted, program do partycjonowania dysków. Otwieramy go, znowu podajemy hasło administratora, z górnego lewego rogu wybieramy nasz dysk, usuwamy wszystkie partycje i tworzymy jedną maksymalnie dużą fat32. Zatwierdzamy zmiany i wszystko gotowe teraz przechodzimy do konfiguracji LinuxCNC.

2. Konfiguracja LinuxCNC

Aby dostosować swoją maszynę musimy przejść przez konfigurację programem CNC/Stepconf. Znajdziemy go w zakładce menu Linuxcnc. Na początku otwiera się okno, w którym mamy wybór stworzenia nowego programu lub edytowania istniejącego. Dodatkowo można zaznaczyć opcje stworzenia skrótów do folderu z plikami konfiguracyjnymi oraz pliku startowego z programem ustawionym przez nas.

Następnie mamy dostęp do podstawowych ustawień maszyny. Tam wpisujemy jej nazwę, ilość osi i jednostki jakimi będziemy się posługiwać mm albo cale. Niżej są ustawienia sterownika. Wybieramy nasz typ z listy, a jeżeli go tam nie znajdziemy wpisujemy jego dane ręcznie. Nasz sterownik to Powerlolu na scalaku A4989 i nie ma go na liście. W dokumentacji technicznej układu scalonego znajdujemy wszystkie dane o czasach sygnałów sterujących ruchem silnika.

Zdj. 1: Czasy przełączania sygnałów STEP i DIR

 

Do uzupełnienie są cztery pola:

Step Time (czas kroku) – czyli jak długo trwa sygnał kroku w zależności jak ustawimy wysoki lub niski. Dla naszego sterownika jest to 1000ns

Step Space (przerwa kroku) – minimalny czas pomiędzy sygnałem kroku, czyli u nas czas trwania stanu niskiego. Tu znowu wpiszemy z tabeli 1000ns.

Direction Hold (utrzymanie kierunku) – jak długo utrzyma się stan pinu kierunku po zmianie sygnału kierunku. W datasheet to Hold Duration i wynosi 200ns.

Direction Setup (ustawienie kierunku) – ile czasu potrzeba na zmianę kierunku po ostatniej zmianie kroku. W dokumentacji Setup duration wynosi 200ns.

 

Następnie do wyboru jest ilość używanych portów równoległych. My posiadamy jeden więc zaznaczamy One parport.

W tym dziale zostaje nam zabawa z base period maximum jitter – maksymalne odchylenie okresu bazowego. Dziwna nazwa, ale chodzi o to jak szybko komputer zrealizuje przerwanie wykonywanej aktualnie czynności i odpowie na wysłane zapytanie. Aby uzyskać tą wartość, wykonujemy pomiar przyciskiem test. Przez ten czas obciążamy komputer: uruchamiamy podstawowe programy, kopiowanie plików, odtwarzamy muzyki itp. Oczywiście bez przesady, ale jeżeli wpiszemy za niską wartość to nasza maszyna może zgłupieć np. podczas uruchomienia się wygaszacza, czy ruchu myszką. Po kilku minutach testu zapisujemy maksymalny czas pomiaru. Im większy czas tym mniejsza częstotliwość kroku silnika i działać on będzie mniej płynnie. Wartość odchyłu zależy od konfiguracji naszego komputera: procesora, płyty głównej ,karty graficznej, błędów systemu. Wartości poniżej 40000ns to dobry wynik, czasy dużo większe dyskwalifikują nasz komputer.

 

Zdj. 2: Podstawowe informacje w ustawieniu Stepconf

 

Wszystkie parametry wpisane, przechodzimy do konfiguracji portu równoległego. Do dostosowania mamy 17 wyjść oraz 5 wejść. Tyle pinów w zupełności wystarczy dla prostej maszyny nawet 4-osiowej. Potrzebujemy minimalnie po dwa wyjścia na krok i kierunek dla każdej osi, sygnał włączenia napięcia, włączenie wrzeciona oraz chłodziwo, ewentualnie odkurzacz do wiórów. Co do wejść użyjemy minimalnie dwóch: wszystkie limity i bazujące oraz wejście ESTOP.

  • ESTOP jest to elektroniczny wyłącznik awaryjny. Nie odcina on zasilania całkowicie a jedynie unieruchamia program. Zalecamy dodać prawdziwy przycisk awaryjny rozłączający zasilanie całej maszyny w razie zawieszenia się systemu, programu lub uszkodzenia wejścia w płycie głównej itp.

  • Limity to po prostu krańcówki. Dojazd do którejkolwiek spowoduje zatrzymanie programu. Nie dostaniemy informacji do której chyba że ustawimy trzy wejścia jako limity X, Y, Z. Jest to nieużytecznie, ponieważ dojazd osi do limitu zauważymy wizualnie.

  • Bazowanie jest to prościej mówiąc poszukiwanie początków osi, czyli punktów zerowych. Wystarczy nam jedno wejście i to wspólne z krańcówkami. Jak odbywa się proces bazowania? Mamy dwie opcje albo bazowanie wybranej osi, albo wszystkich jednocześnie. Komputer wie którą oś bazuje i do jakiej krańcówki ma dojechać. Standardowo(w zależności od ustawienia w dalszej części stepconf) wygląda to następująco:

    1. oś rozpoczyna ruch w pewną stronę
    2. jedzie do momentu aż natrafi na krańcówkę
    3. zjeżdża z niej i moment jej rozwarcia oznacza jako punkt początkowy
    4. do punktu początkowego doliczana jest wartość zadeklarowanej długości osi(w dalszej części ustawień stepconf)

 

Po tej czynności program wie gdzie są limity i jakbyśmy bardzo chcieli nie załączymy krańcówki. Dojazd do niej spowoduje po prostu zatrzymanie ruchu bez zatrzymania programu. I teraz krańcówki będą na wszelki wypadek np. zgubienia kroku, czy przestawienia się osi jakimś sposobem.

Dostępne są jeszcze opcje zmiany sygnału na przeciwny, gdyby coś działało odwrotnie.

 

Zdj. 3: Konfiguracja osi.

 

3. Konfiguracja osi.

Motor Steps Per Revolution (ilość kroków na obrót) – jest to liczba pełnych kroków, które wykona silnik w trakcie obrotu. U nas silnik typu 57h76-3008b posiada kąt kroku 1,8st. Policzmy zatem: 360/1,8=200 kroków.

Driver Microstepping (mikrokroki ustawione w sterowniku) – my w sterowniku ustawiliśmy zworkami podział kroku na 16, zatem wpisujemy 16

Pulley Ratio (stosunek przekładni) – Jeżeli maszyna posiada przekładnie wpisujemy ich stosunek jako przekładnia silnika:przekładnia osi. U nas nie ma przekładni więc stosunek wynosi 1:1.

Leadscrew Pitch (skok osi) – tu należy podać skok śruby napędowej lub pasków. Nasza oś na śrubie trapezowej ma skok 4mm/obrót. Jeżeli maszyna porusza się w niewłaściwym kierunku można podać wartość ujemną.

Maximum Velocity (maksymalna prędkość osi) – wartość dobieramy z obliczeń lub metodą prób i błędów. Ustawiamy coraz to większą prędkość i testując oś sprawdzamy czy silnik po obciążeniu nie zgubi kroków. Obciążenie możemy symulować pchając oś ręką w przeciwnym kierunku do ruchu.

Maximum Acceleration (maksymalne przyspieszenie osi) – tu znowu możemy próbować obliczać przyspieszenia maksymalne, ale później i tak musimy przetestować je w praktyce. Tak jak w poprzednim przypadku wartość dobieramy eksperymentalnie, zwiększając ją stopniowo. Klikamy przycisk test this axis, wpisujemy prędkość oraz przyspieszenie, wartość posuwu w test area i klikamy run. Oś będzie wykonywać ruch w obu kierunkach a my dodajemy obciążenie od siebie. Szukamy maksymalnych wartości tych dwóch parametrów przy, których silnik nie zgubi kroków.

Home Location (pozycja początku osi) - pozycja w przestrzeni gdzie znajduje się punkt początkowy osi. Ustawi się on po zbazowaniu na wskazany punkt, domyślnie zero.

Table Travel (zakres ruchu osi) – tu podajemy dwa punkty w przestrzeni definiujące zakres ruchu naszej osi. Początkowa pozycja (home location) musi się zawierać w tym zakresie i nie być równa żadnej z dwóch wartości. Jeżeli nasza oś ma posuw maksymalny 0,5 metra podajemy wartości np. 1 oraz -499mm. Wtedy pozycja początkowa może mieć wartość 0. W praktyce program sam poprawi nieprawidłowo wpisane wartości.

Home Switch Location ( pozycja krańcówki bazującej) – Pozycja do której porusza się oś przy bazowania. Wartość nie może być taka sama jak dla krańcówki, jeżeli działają wspólnie. Przy niewłaściwej konfiguracji pokaże nam się błąd: joint limit error.

Home Search Velocity (prędkość szukania początku) – wartość definiuje szybkość dojazdu do krańcówki przy bazowaniu. Prędkość ustawić nieco wolniejszą niż maksymalna (chyba że maksymalna jest mała :)), aby silnik zdążył wyhamować przed limitem. Gdy oś porusza się nie w tą stronę w jaką byśmy chcieli, wpisujemy po prostu ujemną wartość.

Home Latch Direction (kierunek ustawienia początku) – mamy do wyboru dwie opcje:

  • Same (ten sam) – przy dojeździe i zwarciu krańcówki oś cofnie się i wjedzie na nią ponownie z małą prędkością. Po ponownym zwarciu krańcówki zostanie zapisany punkt początkowy.

  • Opposite (przeciwny) – po dojeździe i zwarciu krańcówki oś powoli cofa się. Po rozwarciu zostanie ustanowiony punkt początkowy.

Poniżej uzyskamy informacje o czasach możliwych do uzyskania przez naszą maszynę:

Time to accelerate to max speed – czas osiągnięcia maksymalnej prędkości, wyliczony z podanych maksymalnych wartości przyspieszenia i prędkości.

Distance to accelerate to max speed - odległość jaką przejedzie oś od postoju do prędkości maksymalnej.

 

Pulse rate at max speed - Częstotliwość podawana na silnik przy maksymalnej prędkości.

Axis SCALE - ilość kroków silnika na milimetr ruchu. Wartość używana do skalowania prędkości.

Test this axis - otwiera okno do przetestowania podanych przez nas parametrów silnika.

 

 Zdj. 4: Okno konfiguracyjne osi X

 

No i nasz program jest poprawnie skonfigurowany, możemy zacząć zabawę z obróbką. Warto jeszcze wprowadzić pewne modyfikacje usprawniające pracę z naszym systemem. Więcej informacji na ten temat znajduje się w artykule: Podstawowe zmiany w LinuxCNC.