]]>

Ploter CNC - oprogramowanie/konfiguracja

    

2016-XX-XX

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 Grml należy pobrać oprogramowanie Grml. 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).
  4. XLoader - konfiguracja
    Fig. 1. XLoader - konfiguracja

  5. 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).
  6. XLoader wgranie programu
    Fig. 2. XLoader wgrywanie programu Grbl

  7. Po pomyślnym wgraniu Grml, możemy zamknąć Xloader'a i przejść do pobrania programu sterującego Grbl Controller.

Tab. 1. Ustawienie Grbl 0.9i (na podstawie doskonałego opisu autorstwa Pana Huberta
Ustawieniewart. domyslnaopis enopis
$010steps pulse usecmin. długość impulsu dla kroku w mikrosek. (typowo 5-50)
$125steps 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.
$20steps 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)
$30dir port invert mask: 00000000 odwrócenie kierunku ruchu silnika wg. maski:
LpmaskaOdwróć XOdwróć YOdwróć Z
000000000nienienie
100000001taknienie
200000010nietaknie
300000011taktaknie
400000100nienietak
500000101taknietak
600000110nietaktak
700000111taktaktak

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.

$40step 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"

$50limit 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.

$60probe pin invert, boolJak $5, wyłącza wewnętrzne rezystory podciągające dla sondy na A5. Włączamy też podobnie: $6=1.
$103probe pin invert, boolUstawienie 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
ustawieniemaskastatus pracypozycja maszynypozycja pracybufor pracybufor RX
000000000taknienienienie
100000001taktaknienienie
200000010taknietaknienie
300000011taktaktaknienie
400000100taknienietaknie
500000101taktaknietaknie
600000110taknietaktaknie
700000111taktaktaktaktak
800001000taknienienietak
900001001taktaknienietak
1000001010taknietaknietak
1100001011taktaktaknietak
1200001100taknienietaktak
1300001101taktaknietaktak
1400001110taknietaktaktak
1500001111taktaktaktaktak
$110.010junction deviation, mmWartość 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ść
$120.002arc tolerance mmTolerancja 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.
$130report inches, boolJednostka pracy grbl "0" - milimetry (domyślne), "1" - cale.
$200soft limits, boolLimit 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.
$211hard limits, boolLimit 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.
$220homing cycle, boolJeś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
$230homing dir invert mask: 00000000Jeś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 x 1 x 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) x (200 steps/motor_rev) x (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.],