Arbaql pisze: ↑15 lip 2025, 10:22
Również gratuluję. Wygląda naprawdę solidnie.
Czy mógłbyś coś więcej napisać o tym własnym oprogramowaniu?
Oprogramowanie składa się z 2 części - aplikacja na PC i oprogramowanie sterownika. Generalnie całośc operacji krytycznych czasowo odbywa się w samym sterowniku który zrealizowany jest na ARM STM32H725. Dostaje on po ethernecie proste polecenia (odcinki i łuki) wszystko juz we spółrzędnych maszynowych. Łuki przedstawione są w postaci początek, srodek, koniec oraz wektor obrotu co pozwala na realizację łuków w dowolnej płaszczyźnie. Dodatkowo każdy ruch ma podane parametry prędkości - początkową, końcową, maksymalną i maksymalne przyspieszenie. Samo generowanie impulsów zrealizowane jest na zestawie zsynchronizowanych liczników czyli sprzętowo, co powoduje że jitter jest bardzo mały i nie ma nierówności przy przejściu miedzy kolejnymi segmentami. Nie miałem dużych wymagań co do maksymalnej częstotliwości, w obecjen implementacji jest to ok 20kHz czego i tak nie wykorzystuję ale nic nie stoi na przeszkodzie żeby to zwiększyć. Płytka jest przygotowana do obsługi do 5 osi, oczywiście współbieżnych, oprogramowanie jest napisane na 4 osie ale to też tylko kosmetyka żeby to zwiększyć do 5. Przygotowane sa również wejścia enkoderów, chociaż na razie tego jeszcze nie uruchomiłem. Dodatkowo wejściaprobe, emergency, limit dla kazdej osi z osobna i kilka linii we-wy do wykorzystania w przyszłości w razie potrzeb. Jest też moduł do sterowania falownikiem z wyjściem analogowym.
Dodstkowo moduł ten obsługuje korektę nierówności materiału - można spróbkować powierzchnię i zapisać siatkę pomiarów które póniej będą uwzględniane przy wykonywaniu kodu, zrobiłem to z myślą o frezowaniu płytek PCB.
Oprogramowanie na PC napisane jest w C# .net windows forms czyli generalnie na system windows, chociaż działa również na linuxie przy użyciu bilbioteki mono ( aktualnie w warsztacie działa to stabilnie na jakims 20 letnim pc z postawionym Lubuntu)- jedyne co nie działa na linuxie to wizualizacja 3D. Aplikacja konweruje g-code w serię prostych poleceń, wylicza dla nich parametry prędkości uwzględniając kąt miedzy kolejnymi segmentami a co za tym idzie maksymalnądopuszczalną prędkośc przejścia między nimi. Ogólnie obsługuje większość istotnych poleceń g-code czyli poza podstawowymi poleceniami jak G0-G4 również: zmienne, pętle, wyrażenia warunkowe, podprogramy, wyrażenia matematyczne offsety, lokalne układy współrzędnych, sondowanie, w tym automatyczny pomiar długości narzędzia po jego zmianie. Posiłkowałem się dość mocno dokumentacją do LinuxCNC więc mój program powinien podobnie interpretować kod.
Jak ktoś jest bardzo dociekliwy to na githubie
https://github.com/r-gal/CNC jest dostęny kod i wzór PCB w formacie KiCAD
Z rzeczy których brakuje ale będą to ręczny manipulator na kablu i obsługa podprogramów z innych plików.