Ploter CNC - oprogramowanie/konfiguracja


Tomasz Bartuś



2016-XX-XX
Ploter CNC - oprogramowanie/konfiguracja

Software

GRBL obsługuje klasyczne 4-przewodowe bipolarne silniki krokowe. Oprogramowanie obsługuje ruch silników w 3 osiach X, Y i Z.

  1. Ze strony projektu GRBL należy pobrać oprogramowanie GRBL. Pobieramy wersję 0.9j. (plik .hex).
  2. Pobieramy program Xloader umożliwiający wgranie oprogramowania GRBL do Arduino.
  3. Po rozpakowaniu archiwum, uruchamiamy program XLoader.exe Uzupełniamy ścieżkę do pliku .hex programu GRBL, wybieramy odpowiednie urządzenie (w tym przypadku Arduino Nano - ATmega328) oraz port, do którego podłączono Arduino. Pozostawiamy domyślną prędkość transmisji 57600 bodów (Fig. 1).
XLoader - konfiguracja
Fig. 1. XLoader - konfiguracja
  1. Po uzupełnieniu okna dialogowego, naciskamy przycisk Upload. Jeżeli wszystko przebiegło pomyślnie, w lewym dolnym rogu aplikacji pojawi się informacja o uploadownej liczbie bajtów (Fig. 2).
XLoader wgranie programu
Fig. 2. XLoader wgrywanie programu GRBL
  1. Po pomyślnym wgraniu GRBL, możemy zamknąć Xloader i przejść do pobrania programu sterującego GRBL Controller.
Tab. 1. Ustawienie GRBL 0.9i (na podstawie doskonałego opisu autorstwa Pana Huberta
Ustawienie wart. domyslna opis (EN) opis (PL)
$0 10 steps pulse usec min. długość impulsu dla kroku w mikrosekundach (typowo 5-50)
$1 25 steps idle delay, msec Czas po wykonaniu kroku [ms], w którym silnik może pozostawać jako włączony (enable) lub wyłączony (disable). Zmienna może przyjmować wartości: 255 - silniki zawsze włączone (enable); 0 - silniki zawsze wyłączone (disable); 1-244 [ms] - czas po każdym kroku na dokończenie zatrzymania.
$2 0 steps port invert mask: 00000000 Odwrócenie sygnału kroku (step) dla wszystkich osi. Zaawansowany paramater używany gdy sterowniki silników tego potrzebują lub dla małego oszustwa wprowadzającego sztuczną zwłokę pomiędzy wysłaniem 2 komunikatów STEP i DIR. Normalnie sygnały są wysyłane jako wysoki lub niski dla kierunku (DIR) a następnie wysoki opadający na niski w ciągu kilku mikrosekund dla sygnału kroku. Wartości wprowadzamy jako liczbą dzisiętną na podstawie tabelki, z której program tłumaczy sobie to na zapis dwójkowy.
		
		X_STEP_BIT 2
		Y_STEP_BIT 3
		Z_STEP_BIT 4
		X_DIRECTION_BIT 5
		Y_DIRECTION_BIT 6
		Z_DIRECTION_BIT 7
		
	  
Jeśli więc chcemy odwrócić kierunek (DIRECTION) dla X i Y musimy wykonać przesunięcie bitowe:
(1<<X_DIRECTION_BIT)|(1<<Y_DIRECTION_BIT)

czego wynikiem jest 96 i taką liczbę wpisujemy: $6=96 co da nam 1 na bitach 5 i 6:
$6=96 (step port invert mask. int:1100000)
$3 0 dir port invert mask: 00000000 odwrócenie kierunku ruchu silnika wg. maski:
Lp maska Odwróć X Odwróć Y Odwróć Z
0 00000000 nie nie nie
1 00000001 tak nie nie
2 00000010 nietaknie
3 00000011 tak tak nie
4 00000100 nie nie tak
5 00000101 tak nie tak
6 00000110 nie tak tak
7 00000111 tak tak tak

Jeśli chcemy odwrócić kierunek osi Y, musimy wysłać do maszyny $3=2, a jeśli chcemy odwrócić wszystkie osie musimy wysłać do maszyny $3=7.

$4 0 step enable invert, bool Zachowanie sygnału enable (domyślnie "0"). Jeśli ze względu na sterowniki silników potrzeba na odwrót, wpisz "1".
$5 0 limit pins invert, bool Wyłączenie wewnętrznych rezystorów podciągających dla linii krańcówek. Żeby to zrobić wpisujemy: $5=1. UWAGA! jeżeli nie podłączymy zewnętrznych rezystorów mikrokontroler może ulec zniszczeniu.
$6 0 probe pin invert, bool Jak $5, wyłącza wewnętrzne rezystory podciągające dla sondy na A5. Włączamy też podobnie: $6=1.
$10 3 probe pin invert, bool Ustawienie zmieniające co GRBL wysyła do użytkownika po wydaniu komendy: "?" sprawdzającej w czasie rzeczywistym status maszyny. W sumie oprogramowanie może raportować: - status maszyny - nie może być wyłączony, możliwe statusy to: Idle, Queue, Run, Hold, Home, Alarm, Check - pozycja maszyny - pozycja pracy - czyli pozycja maszyny + wszystkie zastosowane offsety - bufor pracy - bufor interfejsu RX Do wprowadzenia ustawień używamy maski
ustawienie maska status pracy pozycja maszyny pozycja pracy bufor pracy bufor RX
0 00000000 tak nie nie nie nie
1 00000001 tak tak nie nie nie
2 00000010 tak nie tak nie nie
3 00000011 tak tak tak nie nie
4 00000100 tak nie nie tak nie
5 00000101 tak tak nie tak nie
6 00000110 tak nie tak tak nie
7 00000111 tak tak tak tak tak
800001000 tak nie nie nie tak
9 00001001 tak tak nie nie tak
10 00001010 tak nie tak nie tak
11 00001011 tak tak tak nie tak
12 00001100 tak nie nie tak tak
13 00001101 tak tak nie tak tak
14 00001110 tak nie tak tak tak
15 00001111 tak tak tak tak tak
$11 0.010 junction deviation, mm Wartość wykorzystywana przez algorytm zarządzający prędkością w czasie pokonywania zakrętów. Wzrost wartości parametru powoduje zwiększenie prędkości, jeżeli maszyna sobie nie radzi zmniejszamy wartość
$12 0.002 arc tolerance mm Tolerancja dla łuków i kół. Jeśli łuki wyglądają po wycięciu dobrze to nie ruszamy tego 0.002 jeśli uważacie że nie to zmieńcie. Mniejsza wartość to dokładniejszy łuk ale i wolniejsza praca. Wyższe wartości na odwrót czyli jedziemy szybciej i mniej dokładnie.
$13 0 report inches, bool Jednostka pracy grbl "0" - milimetry (domyślne), "1" - cale.
$20 0 soft limits, bool Limit miękki gdy jest włączony będzie sprawdzał czy maszyna nie chce pojechać poza swoje wymiary. Wymaga włączenia opcji homing i ustawienia wymiarów maszyny w parametrach $130, $131, $132. Włączamy to wpisując 1. I warto mieć włączone.
$21 1 hard limits, bool Limit ostry używa krańcówek zamontowanych na końcach każdej osi. Uruchomienie krańcówki powoduje zatrzymanie działania maszyny i nie jest możliwe wznowienie pracy od tego momentu.
$22 0 homing cycle, bool Jeśli używamy fizycznych krańcówek możemy ich użyć do znajdowania pozycji początkowej dla maszyny włączając tą funkcję. Grbl zakłada że pozycja domowa jest w +X, +Y, +Z. Po jej uruchomieniu pierwsze przemieszcza oś Z w kierunku plusa, a następnie naraz X i Y. Ważne ustawienie to $27 Homing pull-off
$23 0 homing dir invert mask: 00000000 Jeśli pozycję domową w naszej maszynie mamy po przeciwnej stronie czyli -X, -Y, -Z możemy za pomocą maski ją odwrócić, używamy starej znanej tabelki:
LpmaskaOdwróć XOdwróć YOdwróć Z
000000000nienienie
100000001taknienie
200000010nietaknie
300000011taktaknie
400000100nienietak
500000101taknietak
600000110nietaktak
700000111taktaktak
$2425.000homing feed, mm/minPrędkość dla posuwu homing w celu znalezienia krańcówki "limit" i ustawieniu maszyny na 0. Najpierw wykorzystuje się następne ustwienie homing seek a po znalezieniu krańcówki w celu dokłądnego ustawienia homing feed. Zazwyczaj feed($4) jest ustawiany mniejszy od seek($5). Program najpierw steruje w kierunku początku układu właśnie z prędkością seek($5) a następnie po znalezieniu krańcówki zwalnia do prędkości feed($4) dojeżdżając do zera (0,0)
$25500.000homing seek, mm/minMoże być ustawiony szybszy niż nasza najwyższa prędkość dla G1
$26250homing debounce, msecCzas zwłoki dla ustania drgania styków krańcówek, zazwyczaj 5-25.
$271.000homing pull-off, mmOdległość [mm], którą maszyna wyjedzie po zadziałaniu krańcówki homingu aby znaleźć punkt 0, od zadziałania krańcówki do tego miejsca użyje prędkości z $19
$100250.000x step/mmIlość kroków potrzebnych do wygenerowania przez silnika, aby przesunąć oś o 1 mm. Do poprawnej konfiguracji parametru potrzebne:
  • ilość kroków/1 pełny obrót przy sterowaniu pełnokrokowym (ang. steps_per_revolution
  • konfiguracja sterowania silnikiem (pełnokrokowo, 1/2 krokowo, itd, podstawiamy: 1, 2, 4, 8, lub 16 (ang. microsteps)
  • ilość mm przejechanych przez oś w czasie 1 obrotu silnika - (ang. mm_per_rev)
Podstawiamy do wzoru:

steps_per_mm = (steps_per_revolution*microsteps)/mm_per_rev

W przypadku typowych silników krokowych z napędów cd/dvd:

20 kroków/obrót × 1 × 3mm/obrót = 60

Powyższe łatwiej się liczy dla śrub metrycznych (szpilek) - dla przykładu gwint M8 i M9 ma skok 1,25 weźmy do tego silnik ustawiony na półkrok (2) który normalnie robi 200 kroków na 1 obrót: (2 microsteps/step) × (200 steps/motor_rev) × (1 motor_rev/screw_turn) / (1.25 mm/screw_turn) = 320 microsteps/mm wpisujemy 320 i gotowe
$101250.000y step/mm
$102250.000z step/mm
$110500.000x max rate mm/minUstawienie wpływa na szybkość dla feed i seek. Ustawiamy doświadczalnie. Wpisujemy: G0 X50 patrzymy jak maszyna jedzie w osi X. Jeśli za wolno zwiększamy $110 aż uzyskamy największą możliwą prędkość wtedy zmniejszamy tę wartość o 10-20%.
$111500.000y max rate mm/minj.w. dla osi Y
$112500.000z max rate mm/minj.w. dla osi Z.
$12010.000x accel. mm/sec2Przyspieszenie dla osi X. Najlepiej znaleźć doświadczalnie.
$12110.000y accel. mm/sec2Przyspieszenie dla osi Y.
$12210.000z accel. mm/sec2Przyspieszenie dla osi Z.
$130200.000x max travel, mmMaksymalny ruch w osi X [mm]. Wymaga włączenia $20 i $22.
$131200.000y max travel, mmMaksymalny ruch w osi Y [mm]. Wymaga włączenia $20 i $22.
$132200.000z max travel, mmMaksymalny ruch w osi Z [mm]. Wymaga włączenia $20 i $22.
 
 

Doktorat

Spis treści
Rozdzialy
Abstrakt [pl]
Abstract [eng]