Elektroda.pl
Elektroda.pl
X
IGE-XAOIGE-XAO
Proszę, dodaj wyjątek dla www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Frezarka numeryczna z własnym sterowaniem.

krolikbest 15 Kwi 2016 11:27 13221 23
  • Witam

    Postanowiłem opisać efekt kilkumiesięcznych prac konstruktorskich i programistycznych poświęconych budowie i oprogramowaniu własnej frezarki.

    Budowa

    Rama frezarki jest zbudowana ze stali normalnej typu St3, stół roboczy jest aluminiowy. Łożyska, śruby, elementy mocujące - jeżeli była taka możliwość - zostały kupione jako gotowe standardowe wyroby. Jednostki napędowe to trzy serwosilniki firmy Fastech, typ S-Servo, czyli bardzo prosty typ serwomechanizmu.
    Serwosilniki napędzają frezarkę w trzech osiach: X, Y, Z. Osie X, Y pracują w poziomie, oś Z to oś pionowa. Sterowniki zostały ustawione na rozdzielczość wynoszącą 1000 impulsów na jeden obrót wału silnika.
    W moim rozwiązaniu serwosilnik X napędza ramę, na której jest osadzony serwosilnik osi Z. Serwosilnik osi Y porusza aluminiowym stołem frezarki.

    Zdjęcie poniżej:

    Frezarka numeryczna z własnym sterowaniem.

    Serwosilniki przez przełożenie 1:2 wykonane z dwóch kół zębatych i paska przekazują napęd na śruby, po jednej na każdą oś, co widać na powyższym rysunku.

    Sterowanie

    Jednostką sterującą jest komputer klasy PC z systemem operacyjnym Windows XP SP3, wyposażony w port LPT. Ważne, aby port LPT pracował w trybie ECP/EPP. Dla dzisiejszych karty rozszerzeń jest to standard, więc płyty główne nieposiadające na pokładzie portu LPT, ale mające PCI lub exPCI nadają się jak najbardziej.
    Teraz trochę o wyprowadzeniach gniazda portu LPT. Zainteresowanych szczegółowym rozpisaniem funkcji poszczególnych pinów odsyłam do szerokiej bazy artykułów dostarczanych przez popularne wyszukiwarki. Dla nas ważne są piny od 2 do 9. Są to piny używane do przesyłania sygnałów z komputera do sterowników serwosilników. W opisywanym przypadku są zasilane sygnałami kroku i kierunku.
    Sygnały kroku to w skrócie pewien ciąg impulsów powodujących ustawienie żądanej pozycji mechanizmu przez serwosilnik, a sygnał kierunku to impuls informujący sterownik serwosilnika, w którym kierunku wał silnika będzie się kręcił.
    Przykład; jeżeli przez piny 2 i 3 portu LPT chcemy sterować serwosilnikiem, to np. pin 2 będzie podawał sygnały kroku, a pin 3 sygnał kierunku.
    W omawianym przypadku z portu LPT możemy bez problemu sterować 4 serwosilnikami, gdyż każdy z nich wymaga tylko dwóch, wyżej wspomnianych typów sygnałów. Omawiany sposób sterowania można również wykorzystać do sterowania silnikami krokowymi, które w tej konstrukcji mogą być również używane. Poniżej zamieszczam zdjęcie sterownika serwosilnika.

    Frezarka numeryczna z własnym sterowaniem.

    Sterownik ten dostarcza jedną ważna funkcje w tym projekcie. Jeżeli zadana pozycja nie zostanie osiągnięta, aplikacja dostaje informację o tym poprzez dodatkowe wyjście ze sterownika do portu LPT. Jest to jedna z tych istotnych różnic między silnikami krokowymi a serwosilnikami, które świadczą na korzyść tych drugich. Oczywiście można bawić się enkoderami przy silnikach krokowych, ale...

    Oprogramowanie

    Głównym celem projektu było stworzenie własnego oprogramowania graficznego, które pozwalałby na proste i w miarę szybkie projektowanie kształtów do wycięcia/grawerowania/frezowania bez znajomości poleceń G-Code. Inaczej mówiąc; projektant rysowanego kształtu jest równocześnie operatorem omawianego urządzenia. Program nie jest szczególnie zaawansowanym środowiskiem projektowym ;) , ale czasami proste warsztatowe zadania nie wymagają skomplikowanych i drogich środowisk lub - jak w przypadku programów typu Mach - znajomości poleceń G-Code.
    Cała aplikacja składa się w zasadzie z dwóch programów. Pierwszym jest aplikacja nazwana 'CNC Paint', a drugim program 'Generator' do generowania impulsów do sterowników serwosilników frezarki oraz do zarządzania urządzeniem, np. ustawianiem położenia startowego X, Y, Z, procesów pomocniczych, jak chłodzenie podczas obróbki itp.

    Program 'CNC Paint' udostępniłem jako wersje demonstracyjną w tym
    wątku

    Działanie obu aplikacji znajdziecie tutaj:
    Link

    Wkrótce udostępnię wersję 'Generatora'. Jako wersja demonstracyjna będzie miał możliwość załadowania do pamięci tylko jednego, specjalnie przygotowanego pliku.

    Dla zainteresowanych mogę podesłać schemat pinów gniazda portu LPT. Cała instrukcja podłączeniowa będzie zawarta w programie 'Generator'.

    Pozdrawiam
    krolikbest

    Fajne! Ranking DIY
    Potrafisz napisać podobny artykuł? Wyślij do mnie a otrzymasz kartę SD 64GB.
    O autorze
    krolikbest
    Poziom 9  
    Offline 
    krolikbest napisał 74 postów o ocenie 20, pomógł 0 razy. Mieszka w mieście Ogrodzona. Jest z nami od 2006 roku.
  • IGE-XAOIGE-XAO
  • #2
    a_noob
    Poziom 22  
    W konstrukcji dorzuciłbym plecy w bramie oraz jakieś solidniejsze albo krótsze stopki, miałbyś bardziej sztywną bramę i mniejsze drgania.

    Co do softu to mam mieszane uczucia - przyzwyczaiłem się że znajomość podstaw g-kodu ułatwia kontrolę maszyny i optymalizację jej pracy, ale koncepcja braku jego znajomości przy obsłudze maszyn cnc może dać podobny efekt jak to, że nie trzeba być elektronikiem (a nawet znać prawa Ohma) żeby zrobić jakieś urządzenie na arduino. Koncepcja jest nie nowa, bo mając frezarkę i program sterujący nie musimy znać g-kodu, wystarczy że otworzymy plik i włączymy frezowanie. Sam plik można narysować w darmowym inkscape'ie i zamienić na kod sterujący w makercam.com

    Jednak chylę czoła za chęci i umiejętności, to może być początek czegoś wielkiego :)
  • #3
    Zuliczek
    Poziom 17  
    Jak się spisuje micromot 50 w charakterze "wrzeciona"? Nie jest za słaby na takie zabawy?
  • IGE-XAOIGE-XAO
  • #5
    -rafal-
    Poziom 15  
    krolikbest napisał:
    Sterownik ten dostarcza jedną ważna funkcje w tym projekcie. Jeżeli zadana pozycja nie zostanie osiągnięta, aplikacja dostaje informację o tym poprzez dodatkowe wyjście ze sterownika do portu LPT. Jest to jedna z tych istotnych różnic między silnikami krokowymi a serwosilnikami, które świadczą na korzyść tych drugich. Oczywiście można bawić się enkoderami przy silnikach krokowych, ale...


    Jak to jest u Ciebie? W ostatnim zdaniu rozumiem stwierdzasz że enkoder przy silniku krokowym to... a na zdjęciu sterownika na pierwszy rzut oka widać że ma wejście enkoderowe i wtyczka wstawiona, więc masz ten enkoder czy nie? Jeśli nie to na jakiej podstawie stwierdzasz że pozycja nie została osiągnięta?
  • #6
    tarkan1
    Poziom 17  
    Mam pytanie, co twoje oprogramowanie zrobi jeśli dostanie informację zwrotną że silnik nie osiągnął pozycji? Servo ma to do siebie że zawsze mamy informacje zwrotną na jakiej aktualnie jest pozycji dzięki czemu możemy wykorzystać to jako sprzężenie zwrotne. Czy ten sterownik serva trzyma pozycje np. na silnik działa siła kiedy stoi w miejscu, sterownik powinien przeciwdziałać tej sile.
  • #7
    krolikbest
    Poziom 9  
    W uproszczeniu serwonapędy obsługę enkodera mają wpisaną niejako z definicji. Jest ona realizowana w sterowniku serwonapędu. Sterowniki silników krokowych nie obsługują sprzężenia zwrotnego, przynajmniej ja się z tym jeszcze nie spotkałem. Dlatego w przypadku 'krokówek' musiałbym obsłużyć enkoder samodzielnie, czyli jakiś hardware odczytujący poprzez szybkie wejścia impulsy enkodera (coś takiego robi firma Sfar) a następnie software, czyli odczytywanie np. po protokole Modbus wartości licznika enkoderowego z tego urządzenia i zestawianie to z ilością wygenerowanyh kroków z programy na komputerze. Robota nieco dla idei. Robiłem test takiego czegoś i generalnie nie jestem zwolennikiem tego rozwiązania. Odczytywanie musi odbywać się w osobnym wątku w stosunku do generowania sygnałów kroku, znaczy kolejny wątek i kolejne męczenie systemu Windows.
    W przypadku serwonapędów które zastosowałem, brak osiągnięcia wyznaczonej pozycji jest sygnalizowany i przesyłany przez sterownik na odpowiednim wyjściu. Odczyt tego wyjścia realizowany jest również na porcie LPT. Pamiętać należy, że oprócz pinów 2..9 służących do generowania sygnałów krok/kierunek mamy do dyspozycji piny o numerach 10,11,12,13,15 które można wykorzystać do takich celów. Oczywiście nie podpinamy bezpośrednio do portu wyjścia ze sterownika serwonapędu, tylko poprzez jakieś urządzenie zabezpieczające port, np. jak kit AVT 448.
    W moim przypadku, jeżeli otrzymam sygnał ze sterownika serwa o błędzie, program przestaje generować sygnał kroku. Na razie tyle robi :). Można to rozbudować jako automatyczne powracanie do pozycji startowej co mam w planie.

    Pozdrawiam,

    krolikbest
  • #8
    ziomal156
    Poziom 10  
    To chyba nie jest serwosilnik tylko silnik krokowy z enkoderem. Widać to po sterowniku który ma wyjścia na dwa uzwojenia.
  • #9
    -rafal-
    Poziom 15  
    Okej już ogarniam Ty masz serwosilniki nie doczytałem wcześniej pogmatwany ten opis trochę :D czyli masz serwa normalne które mają zintegrowane enkodery :) co do trzymania momentu nie wiem jak te ale normalne serwa go trzymają.
  • #10
    tarkan1
    Poziom 17  
    Dla mnie to są zwykłe krokowce z enkoderem, zastanawia mnie tylko co będzie jak zacznie gubić kroki, sterownik wywali błąd a i tak nie wiemy w jakiej jesteśmy pozycji, musimy resetować osie do pozycji 0?
  • #11
    ziomal156
    Poziom 10  
    tarkan1 napisał:
    Dla mnie to są zwykłe krokowce z enkoderem, zastanawia mnie tylko co będzie jak zacznie gubić kroki, sterownik wywali błąd a i tak nie wiemy w jakiej jesteśmy pozycji, musimy resetować osie do pozycji 0?


    Jest taka firma Ezi-Servo mam ich jeden naped krokówka i enkoder. Napęd sam nadgania jak zgubi. Ma trochę lepszą charakterystykę momentu, ale to i tak nie prawdziwe serwo.
  • #12
    krolikbest
    Poziom 9  
    Zgadza się serwosilniki firmy Ezi-Servo. Do tego typu zastosowań na pewno lepsze niż 'krokowce'.

    Jesli sterownik serwa zgłosi błąd to na razie jak już wyżej napisałem, moje oprogramowanie przestaje generować sygnały kroku. Następnym etapem może być:

    - wycofanie na pozycje startowe 0,0
    - lub wznowienie pracy od miejsca wystąpienia awarii.

    Oba przypadki wymagają tak czy siak napisania oprogramowania, więc muszę przemyśleć co byłoby lepsze. Jakieś idee?



    Pozdrawiam,

    krolikbest
  • #13
    Prosectorium
    Poziom 12  
    Ja w takiej sytuacji bym określił 3 poziomy błędu:
    mały->popraw, idź dalej
    średni->zgłoś błąd, popraw, zmniejsz prędkość, idź dalej
    duży->stop
  • #14
    ziomal156
    Poziom 10  
    Jeszcze raz Ezi Servo to jest silnik krokowy, tylko ma enkoder to nie jest servo.
  • #16
    kilarskir
    Poziom 2  
    Czy można wiedzieć jaka będzie powierzchnia robocza frezarki?
  • #18
    krolikbest
    Poziom 9  
    W końcu zrobiłem sterowanie po USB. Inaczej mówiąc zamiast starego portu LPT, do wysyłania sygnałów krok/kierunek oraz do odczytywania sygnałów wejściowych (przycisk stop, awaria serwa, krańcówki itp) użyłem dwóch układów FTDI245R. Sprawdzają się doskonale. Załączam filmik z postępu prac
    Link
  • #21
    krolikbest
    Poziom 9  
    Dodałem kolejny film
    Link
    . Za pomocą CNC Painta (tworzę rysunek/edycja) i Generatora(sygnały na frezarkę i jej nadzór) graweruję nietypową tarczę zegara. Kształt "cyferblatu" wcześniej wycięty na profesjonalnej wycinarce. Efekt końcowy grawerowania dobrze widoczny w kilku ostatnich sekundach filmu-jest to gotowa tarcza przed gięciem.

    Pozdr.
  • #22
    krolikbest
    Poziom 9  
    Projekt nie umarł, rozwija się. Z potrzeby obróbki plików w formacie dxf (Cad, Alibre itp) zrobiłem narzędzie do odczytu tych plików z możliwością zapisu do formatu czytanego przez CNC Paint. Jak wygląda to w praktyce, przedstawia poniższy
    filmik. Czytnik dxf napisałem w Delphi Personal 7, brak zewnętrznych komponentów, czysty kod :)
  • #23
    Kogi123
    Poziom 8  
    Z tego co się uczyłem na lekcjach mechatroniki, najlepiej jeśli stosuje się enkoder nie na silniku tylko możliwie najbliżej elementu (tak jak to jest np. w drukarkach). Jeśli chce się mieć wysoką rozdzielczość to trzeba pamiętać, że wszystkie elementy będą się napinać i wyginać w niewidocznym dla oka stopniu. Jeśli się tego nie zrobi to wszystkie przekładnie i elementy między silnikiem a elementem frezującym będą dodawać swój błąd do pozycji.
    Oczywiście, kiedy się to zrobi to może być, że będzie jakiś odstęp czasowy elektroniczny lub luz w urządzeniu i przez to silnik myśląc, że nie osiągnął pozycji przyspieszy , a później widząc że przestrzelił zawróci itd. wpadając w oscylację, w takim wypadku taką oscylację można zniwelować np. programistycznie. Tak bawiąc się można wycisnąć maksimum prędkości z narzędzia.

    To tyle co pamiętam, mam nadzieję że to coś pomoże, ogólnie na filmiku widać, że wszystko całkiem ładnie działa podczas grawerowania, całkiem dokładnie. Gratuluję :)
  • #24
    krolikbest
    Poziom 9  
    To racja, że enkodery powinny być usytuowane jak najbliżej ruchomego elementu aby niwelować błąd przekładni itp. Moja praktyka tylko to potwierdza, niemniej ten projekt nie korzysta z enkoderów w takim sensie jak np. w obliczaniu położenia ramienia robota (mój następny projekt). Większość z tych projektów opiera się na zwykłych krokowcach, w moim przypadku są to krokowce hybrydowe - czyli silnik ma enkoder a sterownik sprawdza, czy ilość impl. z enkodera współgra z ilością wygenerowanych kroków.
    Miło, że projekt się podoba.

    Pzdr,

    krolikbest