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

Konwerter ExpressPCB DXF - wiercenie otworów na maszynach CNC

Gizmoń 01 Mar 2014 23:27 8808 7
  • Konwerter ExpressPCB DXF - wiercenie otworów na maszynach CNC


    Niedawno pomyślałem sobie, że fajnie by było gdyby moja frezarka CNC wierciła za mnie otwory w płytkach. Do projektowania obwodów używam programu ExpressPCB który w przeciwieństwie do innych jest prosty, niezwykle łatwy w obsłudze i wbrew pozorom ma bardzo duże możliwości. Ma też pewną wadę - projekty zapisuje tylko we własnym formacie plików którego nie odczytuje żaden inny program. Właśnie dlatego trudno zrobić z projektem coś więcej niż wydrukować go i wykonać metodą termotransferu. Co prawda jest jedna opcja eksportowania projektu do formatu DXF ("Export DXF mechanical drawing..."), ale niestety utworzony plik również nie jest poprawnie odczytywany przez inne programy! Postanowiłem więc napisać własny program który będzie poprawnie odczytywał te pliki i tak powstał prezentowany tutaj konwerter. Od razu zaznaczam, że w związku z powyższym jest on przewidziany do współpracy tylko z plikami DXF programu ExpressPCB!

    Ponieważ wiele programów związanych z tematyką CNC jest trudna w obsłudze lub w ogóle nie działa a pozostałe są płatne i niezawsze lepsze, miałem następujące założenia:
    - ma działać (no ba)
    - ma być łatwy w obsłudze (jak ExpressPCB z którym ma współpracować)
    - ma ładnie pokazywać co robi (nie lubię skryptów typu "podaj parametry i sprawdź jaka niespodzianka czeka w wygenerowanym pliku")
    - mam go udostępnić żeby był dla każdego (sam bym tak chciał)

    Krótki opis programu (szczegółowa wersja z opisem działania algorytmów jest w pliku tekstowym "Instrukcja" znajdującym się w folderze razem z programem)

    Program po uruchomieniu odczytuje ostatnio otwarty plik DXF. Do wybierania nowych plików służy okienko wyświetlane po kliknięciu na przycisk "Plik...". Odczytane parametry otworów - położenia i średnice - są umieszczane na liście w pamięci operacyjnej komputera, tam też przeprowadzane są wszelkie dalsze działania. Plik źródłowy nie jest w żaden sposób modyfikowany.
    Program umożliwia proste przekształcenia układu otworów przy zachowaniu skali (obrót, odbicie), ustalanie optymalnej kolejności wiercenia otworów, podgląd aktualnego układu otworów i ruchów przestawczych oraz oczywiście generowanie programu NC.
    Wygenerowany program NC należy zawsze przejrzeć i w razie potrzeby dodać komendy wymiany narzędzi, sterowania wrzecionem czy ścieżki wprowadzające i wyprowadzające wiertło znad płytki bez złamania.

    Konwerter ExpressPCB DXF - wiercenie otworów na maszynach CNC Konwerter ExpressPCB DXF - wiercenie otworów na maszynach CNC

    W razie potrzeby można dowolnie zmienić kolory w obszarze podglądu, zdefiniować folder zapisu inny niż folder odczytu lub zmienić ograniczenie wielkości pliku DXF ustawionego domyślnie na 2000 otworów. Są to ustawienia nie zmieniane wcale a jeśli już to tylko raz, w związku z czym wymagają edycji pliku konfiguracyjnego. Jak co zmienić jest opisane we wspomnianej wcześniej instrukcji.

    Instrukcja "instalacji"

    Program nie wymaga instalacji jako takiej, wszystko sprowadza się do rozpakowania archiwum i zapisania zawartego w nim foldera w jakimś znanym miejscu na dysku. Ważne jest, by wszystkie pliki znajdujące się w tym folderze zawsze były razem.

    Uwaga. Działanie programu sprawdziłem w systemach Windows XP, 7 i 8.1, wszystko było w porządku. W razie znalezienia jakichś nieprawidłowości proszę śmiało pisać co jest źle a postaram się to poprawić :)


    Fajne! Ranking DIY
    Potrafisz napisać podobny artykuł? Wyślij do mnie a otrzymasz pendrive 32GB.
  • #2 02 Mar 2014 10:22
    canda
    Poziom 10  

    Ciekawe i interesujące rozwiązanie - sam przymierzałem się zrobić coś takiego ale brak czasu :(( W czym pisałeś?? Jeśli to nie tajemnica. Pozdrawiam

  • #3 02 Mar 2014 11:01
    Hoptymista
    Poziom 13  

    Czy ten program ma ograniczenia dotyczące wielkości 2-warstwowego PCB?

  • #4 02 Mar 2014 13:30
    Radzio M.
    Poziom 32  

    Jak wygląda algorytm optymalizacji?

  • #5 02 Mar 2014 16:03
    Szopler
    Poziom 21  

    Pewnie proste sortowanie - bierzemy punkt startowy, znajdujemy najbliższy licząc z pitagorasa odległość do pozostałych, przechodzimy do najbliższego, liczymy i tak bez powtórzeń lecimy do końca.

    Jedna poważna wada jaką tutaj widzę to brak sortowania po średnicy narzędzia. Przynajmniej tak to wygląda na screenach.

    Zmiana narzędzia, cykl G81, zmiana narzędzia i tak dalej to podstawa.
    Przykładowo:

    Code:
    G90G80G49
    
    G90.1

    M5
    (Wiertlo 0.8)
    M6T1
    M3
    S10000

    G81 X2.5400 Y0.0000 Z-1.5 F150 R2.0
    G81 X2.5400 Y15.2775
    G81 X5.0800 Y15.2775
    G81 X5.0800 Y0.0000

    ...

    G0 Z25.0000
    M5
    (Wiertlo 1.1)
    M6T2
    M3
    S10000

    G81 X63.5700 Y0.0000 Z-1.5 F150 R2.0
    G81 X63.5700 Y15.2775
    G81 X61.0300 Y15.2775
    G81 X61.0300 Y0.0000

    ...

    G0 Z30.0000
    M5
    G0 X0 Y0
    M5M30

  • #6 02 Mar 2014 20:10
    Gizmoń
    Poziom 28  

    Program napisałem w wyśmiewanym przez wielu BASICu a dokładniej w JustBASICu. Wybrałem go dlatego, że w innych językach jeszcze nie umiem zrobić ładnego interfejsu graficznego.

    Algorytmy optymalizacji są aż cztery do wyboru, z czego dwa szeregują według średnic kolego Szopler. Żeby wszyscy bez ściągania programu widzieli jak co działa, pokażę na przykładach:

    Otwieram plik DXF z otworami płytki wzmacniacza na TDA2030. Wyświetla mi się taki obrazek:

    Konwerter ExpressPCB DXF - wiercenie otworów na maszynach CNC

    Uruchamiam algorytm 1, szeregowanie według współrzędnych otworów. Składa się on z dwóch etapów:
    - pierwszego, w którym wszystkie otwory są szeregowane rosnąco według współrzędnych Y;
    - drugiego, w którym zbiory otworów o takich samych współrzędnych Y są szeregowane na przemian rosnąco i malejąco według współrzędnych X.
    Użyłem sortowania bąbelkowego, podczas pracy w polu "Stan programu" wyświetlany jest numer kolejnego "bąbelka" jako taki wskaźnik, że program pracuje. Po zakończeniu szeregowania układ wygląda następująco:

    Konwerter ExpressPCB DXF - wiercenie otworów na maszynach CNC

    Teraz uruchamiam algorytm 2, szeregowanie według średnic i współrzędnych otworów. Najpierw otwory szeregowane są rosnąco według średnic, później każdy zbiór o takich samych średnicach rosnąco według współrzędnych Y i na koniec zbiory o takich samych średnicach i współrzędnych Y są sortowane na przemian rosnąco i malejąco po współrzędnych X.
    Jak poprzednio zastosowałem sortowanie bąbelkowe a podczas pracy wyświetlane są numery kolejnych "bąbelków". Po szeregowaniu wyświetla się następujący obrazek:

    Konwerter ExpressPCB DXF - wiercenie otworów na maszynach CNC

    Trzeci algorytm wyszukuje otwory leżące najbliżej siebie, zaczynając od otworu znajdującego na pierwszej pozycji listy. Ponieważ ostatnio używałem algorytmu 2, na pozycji tej znajduje się otwór o najmniejszej współrzędnej X spośród otworów o najmniejszej średnicy i najmniejszej współrzędnej Y.




    Program oblicza odległości między ostatnio przeniesionym otworem (w pierwszym cyklu otwór na początku listy jest traktowany jako ten ostatnio przeniesiony) a pozostałymi znajdującymi się wyżej na liście i wyszukuje tej najmniejszej. Po znalezieniu zamienia miejscami na liście otwór na pozycji o jeden wyższej niż ostatnio przeniesiony z otworem najbliższym ostatnio przeniesionemu i cały cykl się powtarza.
    W czasie pracy algorytmu postęp wyświetlany jest jako wielkość procentowa, 100% = gotowe. Po uszeregowaniu układ otworów wygląda następująco:

    Konwerter ExpressPCB DXF - wiercenie otworów na maszynach CNC

    Ostatni, czwarty algorytm najpierw szereguje wszystkie otwory rosnąco według średnic po czym na każdym zbiorze o takich samych średnicach wykonuje algorytm trzeci, zaczynając od otworu o najniższym indeksie w danym zbiorze. Podczas szeregowania wyświetlany jest numer właśnie porządkowanego zbioru otworów. Po skończeniu układ wygląda tak:

    Konwerter ExpressPCB DXF - wiercenie otworów na maszynach CNC

    Algorytmy 1 i 2 są przewidziane do porządkowania otworów ułożonych regularnie, gdzie algorytmy 3 i 4 mogą generować mniej optymalną ścieżkę...

    Konwerter ExpressPCB DXF - wiercenie otworów na maszynach CNC Konwerter ExpressPCB DXF - wiercenie otworów na maszynach CNC

    ...lub dla maszyn mających jedną oś znacznie szybszą od drugiej (nie wiem, może takie istnieją :D ). Algorytmy 3 i 4 są przeznaczone dla większości obwodów i "normalnych" maszyn.
    Przy korzystaniu z szeregowania po średnicach otworów w celu wiercenia różnymi wiertłami należy w programie dopisać ręcznie komendy wymiany i parametry.

  • #7 08 Mar 2014 19:13
    tarkan1
    Poziom 16  

    Witam, pracuję na maszynach cnc i mam parę pomysłów np. w pliku konfiguracyjnym dodać start maszyny (lewy górny róg, prawy górny róg itd.). Pracuje na takim oprogramowaniu gdzie w konfiguracji dodajemy własne funkcje, w pliku konfiguracyjnym dopisujemy funkcje a potem przy otworze klikamy myszką i wybieramy funkcje, można by wpisać kod nc i tylko klikać na otwory kiedy ma się zmienić narzędzie, to tak na początek najlepsza by była biblioteka narzędzi z edytowalnym plikiem konfiguracyjnym co ma się dopisać do kodu nc. Jeszcze jedno, ustawianie kolejności otworów myszką dla tych co nie lubią z automatu :)

  • #8 17 Maj 2014 09:36
    mirek_zaf
    Poziom 15  

    Gizmoń napisał:
    Wybrałem go dlatego, że w innych językach jeszcze nie umiem zrobić ładnego interfejsu graficznego.

    Akurat tutaj masz prosty interface z kilkoma przyciskami-jakbym robił coś takiego dla jak największej grupy osób, to napisałbym to w JAVA, a jak dla siebie robię jakiś CAE to piszę to w OpenGL jak coś trzeba wyświetlić w 3D i w C++ jak na jakiejś super prędkości mi zależy i potrzebuję zrównoleglić obliczenia na kilku maszynach w sieci.

    Gizmoń napisał:

    Algorytmy optymalizacji są aż cztery do wyboru, z czego dwa szeregują według średnic kolego Szopler.

    Tyle, że jak to ma generować plik G-Code to po co tak dużo tych algorytmów, jak faktycznie podstawa to po średnicy wierconych otworów to pogrupować i ewentualnie to wyświetlić i dać możliwość przesunięcia na liście kolejności i tzw. "check box" do zaznaczenia tych otworów, które chcemy wiercić.
    Pozwoli to wywiercić np. tylko jeden wybrany otwór, wszystkie naraz, albo wybranym wiertłem ;)

    Myślę, że brakuje mi tutaj właśnie takiej pośredniej listy zanim zatwierdzimy i wygenerujemy tego G-code.
    Nie wiem czy używałeś może biblioteki dxflib
    Cytat:
    "dxflib is a C++ library for reading AutoCAD DXF files. It's very simple but provides the functionality to read the basic entities of DXF files."

    Ostatnio używam jej w moim CAE do generowania automatycznego rysunków do cięcia tafli szkła wodą.
    Akurat testowałem export, bo to mi było potrzebne, ale może by sobie poradziła też z importem tego nietypowego DXF'a, bo z tego co mi wiadomo sporo przyzwoitych narzędzi używało tej biblioteki. np popularny QCad i wiele innych projektów.
    http://www.ribbonsoft.com/en/what-is-dxflib
    Cytat:
    "QCAD, CAM Expert and vec2web all use dxflib to import DXF files. dxflib can also write DXF files, but you need to have good knowledge of the DXF format to produce valid output."