pozycjonowanie wrzeciona tokarki

Dyskusje dotyczące najpopularniejszego programu sterującego maszynami CNC

Autor tematu
maaak
Nowy użytkownik, używaj wyszukiwarki
Nowy użytkownik, używaj wyszukiwarki
Posty w temacie: 5
Posty: 9
Rejestracja: 17 wrz 2014, 08:30
Lokalizacja: polska

#11

Post napisał: maaak » 02 lis 2015, 10:29

wieslawbarek pisze:Przez przypadek znalazłem cos takiego
http://www.machsupport.com/forum/index. ... ic=11422.0

właśnie o takie coś mi chodzi



Tagi:


tomcat65
ELITA FORUM (min. 1000)
ELITA FORUM (min. 1000)
Posty w temacie: 4
Posty: 1242
Rejestracja: 15 lis 2009, 02:46
Lokalizacja: Olsztyn
Kontakt:

#12

Post napisał: tomcat65 » 02 lis 2015, 11:25

maaak pisze:właśnie o takie coś mi chodzi
Przepis na realizację dostałeś, ale skoro nie rozumiesz idei i zasady działania ...


andrzej31-91
Czytelnik forum poziom 2 (min. 20)
Czytelnik forum poziom 2 (min. 20)
Posty w temacie: 2
Posty: 26
Rejestracja: 25 wrz 2009, 23:47
Lokalizacja: Tarnowskie Góry

Re: pozycjonowanie wrzeciona tokarki

#13

Post napisał: andrzej31-91 » 07 lis 2024, 17:36

Troszkę temat odgrzeję.
Bawiłem się właśnie w taki sposób gdzie serwo jest sterowane za pomocą sygnału krok/kierunek.
I problem jest taki że gdy serwo pracuje jako 4ta oś mach wie w jakiej jest pozycji (kąt) natomiast gdy przejdziemy na toczenie to mach przestaje "zliczać" o jaki kąt oś została obrócona. I przyszło mi do głowy rozwiązanie by przed używaniem jako 4ta oś zbazować do punktu 0. Tylko problemem będzie ręczne bazowanie za każdym razem więc misi to być jakiś Gkod lub Mkod czy inne makro. Czy użytkownicy którzy mają krańcówki i bazowanie na maszynach ( ja nie mam) mogą coś powiedzieć jak by to wyglądało gdy zbazuję maszynę przed pracą a w trakcie cyklu użyję G28 A0 lub G53? -wydaje mi się że prędzej G28 tylko na ile ono będzie precyzyjne i czy oś dojedzie di punktu index bo właśnie tak bym to chciał rozwiązać używając sygnału index z serwa przełożenie 1:1 czy trzeba krańcówkę/ tarczę z otworem i czujnik? Lub po prostu jakoś wywołać jak wspomniałem bazowanie tej osi. Chętnie poczytam wasze podpowiedzi które mogą mnie nakierować na rozwiązanie.


qqaz
Lider FORUM (min. 2000)
Lider FORUM (min. 2000)
Posty w temacie: 2
Posty: 2347
Rejestracja: 28 sty 2007, 16:12
Lokalizacja: Łódź

Re: pozycjonowanie wrzeciona tokarki

#14

Post napisał: qqaz » 09 lis 2024, 11:28

andrzej31-91 pisze:wydaje mi się że prędzej G28 tylko na ile ono będzie precyzyjne
ruchy w programie realizuje ten sam mechanizm więc pozycja jest z tą samą dokładnością jak reszta.
andrzej31-91 pisze:
07 lis 2024, 17:36
czy oś dojedzie di punktu index bo właśnie tak bym to chciał rozwiązać używając sygnału index z serwa
Mach potrzebuje długiej krańcówki, indeks jest szpilką i Mach go nie obsłuży. Potrzebujesz dodatkowej płytki która zatrzaśnie się na indeksie - Mach wtedy widzi to jak krańcówkę i odwróci kierunek ruch aby z niej zejść - a płytka sterowana sygnałem DIR osi obrotowej "odtrzaśnie" się po ponownym impulsie zera enkodera. Aby nie było bałaganu tą płytkę powinieneś aktywować gdy faktycznie chcesz pozycjonowania - czyli dodatkowe wyjście w Machu. W normalnej pracy nie będziesz wiedział jaki jest jej stan i czasem byś trafił na komunikaty że na krańcówce Mach stoi co utrudni jednoznaczne działanie programowego przejścia z kręcenia tokarką na kręcenie 4osią (programowo wstawiasz makro które dodatkowym wyjściem kasuje stan płytki, wywołuje pozycjonowanie osi obrotowej a gdy zgaśnie czerwony led i zapala się zielony to puszcza program dalej)
Ta płytka to kilka elementów dyskretnych, materiałowo groszowa sprawa.
Może też być Arduino

Dodane 4 minuty 55 sekundy:
właściwie to sam DIR wystarczy, nie potrzeba dodatkowego wyjścia

Dodane 1 minuta 2 sekundy:
chyba

Awatar użytkownika

tuxcnc
Lider FORUM (min. 2000)
Lider FORUM (min. 2000)
Posty w temacie: 2
Posty: 9320
Rejestracja: 26 lut 2011, 23:24
Lokalizacja: mazowieckie

Re: pozycjonowanie wrzeciona tokarki

#15

Post napisał: tuxcnc » 09 lis 2024, 12:27

andrzej31-91 pisze:
07 lis 2024, 17:36
Bawiłem się właśnie w taki sposób gdzie serwo jest sterowane za pomocą sygnału krok/kierunek.
I problem jest taki że gdy serwo pracuje jako 4ta oś mach wie w jakiej jest pozycji (kąt) natomiast gdy przejdziemy na toczenie to mach przestaje "zliczać" o jaki kąt oś została obrócona.
To jest typowy problem i w Linuxcnc miałem to samo.
Ale teraz przyszło mi do głowy, żeby w trybie wrzeciona sterować serwo pełnymi obrotami...
Czyli bierzemy jakiś mikrokontroler, wykonujemy rampę startową, potem kręcimy o pełne obroty dopóki mamy sygnał sterujący, a po jego zaniku robimy rampę hamującą.
Takie sterowanie gwarantowało by, że serwo kończyło by w tym samym położeniu, w jakim zaczęło.
To się wydaje skomplikowane, ale program byłby dość krótki i prosty.
Odradzam Arduino Uno/Nano itp. bo to już historia.
Płytkę z ESP32-C3 (160 MHz) lub ESP32-S2 (240 MHz) idzie kupić poniżej 10 PLN, a przy takim zegarze to nawet nie warto bawić się w przerwania.
Jak pisałem, to tylko pomysł którego nie testowałem, ale musi to zadziałać.
Gdyby się komuś chciało tym zająć, to wklejam poniżej mój program realizujący dość podobne zadanie - silnik krokowy udaje wrzeciono z enkoderem.
Trzeba by go trochę poprawić i dodać brakujące funkcje, mi to nie było potrzebne, bo służyło tylko do testowania sterowników CNC, a konkretnie gwintowania.

Kod: Zaznacz cały

#define forward_pin 5
#define reverse_pin 6
#define dir_pin     3
#define step_pin    4
#define encA_pin    0
#define encB_pin    1
#define encZ_pin    2
#define steplen     8 //increase for lower rpm
#define microstep   16 //as at driver
#define cpr         200*microstep
uint8_t dir = 0;
uint8_t speed = 0;
uint8_t cmd = 0;
uint8_t enc = 0;
int16_t enc_count = 0;
bool enc_A[4] = {0,0,1,1};
bool enc_B[4] = {0,1,1,0};


void setup() {
  pinMode(forward_pin, INPUT_PULLDOWN);
  pinMode(reverse_pin, INPUT_PULLDOWN);
  pinMode(dir_pin, OUTPUT);
  pinMode(step_pin, OUTPUT);
  pinMode(encA_pin, OUTPUT);
  pinMode(encB_pin, OUTPUT);
  pinMode(encZ_pin, OUTPUT);
}

void loop() {
  while (speed == 0){
    if (digitalRead(forward_pin)){
      dir = 1;
      speed = 1;
      digitalWrite(dir_pin, 1);
    }
    if (digitalRead(reverse_pin)){
      dir = 2;
      speed = 1;
      digitalWrite(dir_pin, 0);
    }
  }
  digitalWrite(step_pin, 1);
  delayMicroseconds(steplen);
  digitalWrite(step_pin, 0);
  delayMicroseconds((256*steplen) - (steplen*speed));
  if (dir == 1) {
    enc++;
    enc_count++;
    if (enc_count > (cpr - 1)) {enc_count = 0;}
    digitalWrite(encA_pin, enc_A[(enc & 3)]);
    digitalWrite(encB_pin, enc_B[(enc & 3)]);
  }
  if (dir == 2) {
    enc--;
    enc_count--;
    if (enc_count < 0) {enc_count = (cpr - 1);}
    digitalWrite(encA_pin, enc_A[(enc & 3)]);
    digitalWrite(encB_pin, enc_B[(enc & 3)]);
  }
  if (enc_count < 2) { digitalWrite(encZ_pin, 1);}
  else { digitalWrite(encZ_pin, 0);}  
  if (((digitalRead(forward_pin)) && (dir == 1)) || ((digitalRead(reverse_pin)) && (dir == 2))) {
    if (speed < 255){ speed++;}
  }
  else {
    if (speed > 0){ speed--;}
  }
}


andrzej31-91
Czytelnik forum poziom 2 (min. 20)
Czytelnik forum poziom 2 (min. 20)
Posty w temacie: 2
Posty: 26
Rejestracja: 25 wrz 2009, 23:47
Lokalizacja: Tarnowskie Góry

Re: pozycjonowanie wrzeciona tokarki

#16

Post napisał: andrzej31-91 » 09 lis 2024, 14:43

Dzięki za wasze odpowiedzi. dają jakieś naprowadzenie.

Ja jeszcze znalazłem/ pomyślałem o pozycjonowaniu wrzeciona. tylko wtedy konieczna będzie płytka csmio do niej można podłączyć enkoder. jak by ktoś szukał wklejam linka:
https://www.cs-lab.eu/wsparcie-technicz ... wrzeciona/

i wtedy kąt 0 osi A jest w miejscu bazy wrzeciona.
Wywołać w trakcie programu M20 by załapało "0" i można robić na osi A. Co myślicie czy warto iść w tą stronę czy lepiej porzucić?
Płytkę i tak będę jakąś potrzebował więc można brać pod uwagę csmio.

PS nie wiem czy zakładać temat następny. Wtedy mach na tokarkę tego nie obsłuży i trzeba by użyć mach na frezarkę. Jak jest wtedy z programami? mój prosty generator kodów może generować albo w wersji średnica albo promieniowo- wtedy musiałbym używać tej wersji promieniowej. Na razie robię na średnicy i wszystko fajnie śmiga ale na mach tokarka a na frezarce pewnie się rozjedzie wszystko.


kszumek
Specjalista poziom 2 (min. 300)
Specjalista poziom 2 (min. 300)
Posty w temacie: 1
Posty: 495
Rejestracja: 04 kwie 2006, 18:08
Lokalizacja: Białystok

Re: pozycjonowanie wrzeciona tokarki

#17

Post napisał: kszumek » 09 lis 2024, 20:35

Witam
podpowiem coś , linuxcnc cały czas zna pozycję wrzeciona jeśli jest podpięty enkoder
nawet liczbę obrotów jakie zrobiło od chwili bazowania da się wydobyć
np: encoder.N.position float out Position in scaled units (see position−scale)

nawet jak sobie ręką pokręcimy, to się nie pogubi trzeba tylko coś z tą zmienną sensownego zrobić np :
https://linuxcnc.org/docs/html/man/man9/orient.9.html

Awatar użytkownika

tuxcnc
Lider FORUM (min. 2000)
Lider FORUM (min. 2000)
Posty w temacie: 2
Posty: 9320
Rejestracja: 26 lut 2011, 23:24
Lokalizacja: mazowieckie

Re: pozycjonowanie wrzeciona tokarki

#18

Post napisał: tuxcnc » 09 lis 2024, 21:59

kszumek pisze:
09 lis 2024, 20:35
podpowiem coś , linuxcnc cały czas zna pozycję wrzeciona jeśli jest podpięty enkoder
Tyle tylko, że wrzeciono i oś obrotowa to logicznie dwa odrębne urządzenia, sterowane w inny sposób.
Ponadto jesteśmy w dziale "Mach 2 / 3 / 4 (ArtSoft software)"...


qqaz
Lider FORUM (min. 2000)
Lider FORUM (min. 2000)
Posty w temacie: 2
Posty: 2347
Rejestracja: 28 sty 2007, 16:12
Lokalizacja: Łódź

Re: pozycjonowanie wrzeciona tokarki

#19

Post napisał: qqaz » 12 lis 2024, 00:18

andrzej31-91 pisze:
09 lis 2024, 14:43
mój prosty generator kodów może generować albo w wersji średnica albo promieniowo
Gkod tokarkowy w wersji średnicowej lub promieniowej to tylko odpowiedni mnożnik dla współrzędnej X.
Załatwisz to w postprocesorze generującym Gkod albo w Machu - dla programu tokarki zaptaszczyć co trzeba a gdy na frezarce puszczasz tokarkowy Gkod z zapisem średnicowym to w tablicy funkcji wprowadzisz mnożnik X=0.5*X i oraz zamienisz osie X-Z.
I frezarka osią Z będzie ruszać jak tokarkowe X oraz odwzoruje prawidłową trajektorię względem osi obrotowej
Więcej - zmiana w tą i z powrotem dokonuje się z poziomu Gkodu zawierającego odpowiednie Mxxx
andrzej31-91 pisze:
09 lis 2024, 14:43
tylko wtedy konieczna będzie płytka csmio
nie tylko ta płytka ale reszta też.
A stare i niemodne sterowanie na LPT (serwa maskują różnicę na czym jest Mach puszczany, pod LPT tylko krokówki chodzą kulawo) to 25zł za port +1,3zł za 4013 ( jeszcze jakaś drobnica dyskretnych) i indeks serwa znakomicie pozycjonuje zero osi obrotowej.

Dodane 8 minuty 3 sekundy:
program tokarka obsługuje pozostałe osie więc gdy dołożysz okienko współrzędnej A to widzisz oś obrotową w tokarce

ODPOWIEDZ Poprzedni tematNastępny temat

Wróć do „Mach 2 / 3 / 4 (ArtSoft software)”