Moją pierwszą maszyną CNC był prymitywny ploter do rysownia płytek PCB pisakiem kwasoodpornym.
Było to sterowane AT89C52 (kto jeszcze pamięta taki układ ?) i prostym programem w assemblerze interpretującym HPGL.
Ploter potrafił jechać tylko wzdłuż osi X, wzdłuż osi Y, oraz pod kątem 45 stopni do osi X i Y.
Podnoszeniem i opuszczaniem pisaka zajmował się selenoid, czyli inaczej elektromagnes.
Pomimo prymitywności sprzęt był użyteczny i wykonałem nim całkiem skomplikowane płytki.
Czasem z nostalgią wracam do tamtych czasów i obiecuję sobie że wykonam kopię tamtego plotera, tylko według dzisiejszych standardów i dzisiejszej technologii ...
Co do osi X i Y to się zbyt wiele nie wymyśli, muszą być silniki krokowe i śruby albo paski, ale takie rozwiązanie w osi Z, która ma tylko podnosić i opuszczać pisak jest ewidentnym przerostem formy nad treścią.
Aż się prosi użyć serwa modelarskiego, choćby i tandetnego SG90, które kosztuje w Chinach aż 8 PLN z wliczoną wysyłką ...
Oczywiście do takiej zabawki nie ma sensu montować sterownika lepszego od GRBL, ale tu powstaje problem, bo on serwomechanizmów nie obsługuje ...
Doszedłem do wniosku, że nie warto się bawić w przepisywanie kodu GRBL, bo dużo lepszym i bardziej uniwersalnym rozwiązaniem będzie zbudowanie prostego sterownika, który będzie zamieniał binarny sygnał wejściowy na sygnał sterujący serwem.
Najlepiej do tego się nadaje bajecznie tani ATtiny13, którego można nawet upchnąć w obudowie serwa, no ale jeśli ktoś nie ma układu czy programatora, to i Arduino Nano podejdzie.
Dzisiaj się wreszcie zebrałem do napisania programu, którym postanowiłem się z Wami podzielić, bo może się komuś przyda ...
W poniżej zlinkowanym archiwum jest plik kodu źródłowego dla Arduino IDE, oraz pliki hex dla Uno i dla ATtiny13.
Przy takich parametrach jak w programie, serwo obraca się o około 180 stopni. Jeśli to za dużo, to trzeba zmienić jedną linię programu.
Tam jest (5+8*(PINB & B00000010)), 5 to wartość odpowiadająca 0 stopni, a (PINB & B00000010) przyjmuje wartości 0 albo 2 w zależności jaki sygnał jest na wejściu. Reszta powinna być jasna.
Żeby w Arduino IDE programować ATtiny13 trzeba dodać "płytkę", ja użyłem https://github.com/MCUdude/MicroCore ale tego opisywać nie będę.
Archiwum z programem : https://github.com/tuxcnc/tuxcnc/raw/ma ... le.tar.bz2
ATtiny13/Arduino Nano i serwo modelarskie jako oś Z do plotera
-
- Lider FORUM (min. 2000)
- Posty w temacie: 1
- Posty: 2329
- Rejestracja: 25 kwie 2016, 11:58
- Lokalizacja: Jodlowa
- Kontakt:
Re: ATtiny13/Arduino Nano i serwo modelarskie jako oś Z do plotera
Kilka lat temu zbudowałem serwonaped DC właśnie z takiego najtańszego serwa modelarskiego - obecnie do kupienia za kilka zł.
Wyciągnąłem oryginalną płytkę PCB i potencjometr, usunąłem mechaniczne ograniczenie obrotu. Wtedy zaprojektowałem najmniejsza płytkę PCB jaką kiedykolwiek projektowałem, miała chyba coś ok 10x13 mm. Na płytce mieścił się mikrokontroler z peryferiami do jego pracy, enkoder magnetyczny 14 bitowy, mostek H (ciekawe rozwiązanie bo znalazłem układ chyba w obudowie 3x3mm). Napęd działał, posiada komunikację szeregową (sterowanie prędkością lub pozycją napędu w 14bitowej rozdzielczości) oraz wejścia kroku/kierunku. Serwo miało służyć do budowy miniaturowej maszyny CNC która to z kolei miała służyć do niczego (miała zmieścić się na biurku i służyć do testowania oprogramowania sterującego które później tworzyłem). Zabrakło mi jednak czasu i chęci aby maszynę dokończyć. Serwonaped gdzieś chyba jeszcze leży, (jak znajdę gobpo urlopie to wrzucę zdjęcie) natomiast z tego co pamiętam wymontowalem mu magnes od enkodera bo był pilnie potrzebny.
Wyciągnąłem oryginalną płytkę PCB i potencjometr, usunąłem mechaniczne ograniczenie obrotu. Wtedy zaprojektowałem najmniejsza płytkę PCB jaką kiedykolwiek projektowałem, miała chyba coś ok 10x13 mm. Na płytce mieścił się mikrokontroler z peryferiami do jego pracy, enkoder magnetyczny 14 bitowy, mostek H (ciekawe rozwiązanie bo znalazłem układ chyba w obudowie 3x3mm). Napęd działał, posiada komunikację szeregową (sterowanie prędkością lub pozycją napędu w 14bitowej rozdzielczości) oraz wejścia kroku/kierunku. Serwo miało służyć do budowy miniaturowej maszyny CNC która to z kolei miała służyć do niczego (miała zmieścić się na biurku i służyć do testowania oprogramowania sterującego które później tworzyłem). Zabrakło mi jednak czasu i chęci aby maszynę dokończyć. Serwonaped gdzieś chyba jeszcze leży, (jak znajdę gobpo urlopie to wrzucę zdjęcie) natomiast z tego co pamiętam wymontowalem mu magnes od enkodera bo był pilnie potrzebny.
-
- Specjalista poziom 1 (min. 100)
- Posty w temacie: 1
- Posty: 189
- Rejestracja: 21 sty 2016, 11:35
- Lokalizacja: Rzeszów
Re: ATtiny13/Arduino Nano i serwo modelarskie jako oś Z do plotera
Witam
Ciekawe rozwiązanie, aczkolwiek istnieją programowe rozwiązania problemu przez modyfikację GRBL. Widziałem wiele wersji, ale ten opis mi się spodobał
https://www.instructables.com/id/How-to ... sing-GRBL/
Pozdrawiam
Ciekawe rozwiązanie, aczkolwiek istnieją programowe rozwiązania problemu przez modyfikację GRBL. Widziałem wiele wersji, ale ten opis mi się spodobał

Pozdrawiam