Znaleziono 4 wyniki

autor: tuxcnc
27 kwie 2020, 21:10
Forum: Elektronika CNC
Temat: zadawanie kroków mikrokontroler
Odpowiedzi: 29
Odsłony: 1590

Re: zadawanie kroków mikrokontroler

Avalyah pisze:
27 kwie 2020, 20:17
zrobiłem sterownik CNC do tokarki w pełni na arduino (...) Zrobiłem wyżej wymieniony program w VisualStudio z nakładką VisualMicro.
Chyba mamy problem z tym, że dwie rzeczy nazywają się podobnie - płytka z Atmegą i środowisko programowania. O ile sama płytka z procesorem ma możliwości czysto fizyczne, ileś pinów i jakiś czas wykonania czegoś tam, to środowisko programowania nakłada czasem nieoczywiste ograniczenia. Np. Arduino IDE dokleja do każdego programu kod, którego istnienia i działania użytkownik nie koniecznie jest świadomy. Np. dlaczego działa millis() ? Bo Arduino IDE rezerwuje niektóre przerwania dla własnych celów.
Często dobrze działający program przestaje działać po dopisaniu jednej linii a przyczyny można szukać długo.
Dlatego kiedy piszę że ArduinoIDE nadaje się tylko do migania lampkami, to mam na myśli środowisko programowania o takiej nazwie.
Ja zaczynałem przygodę z mikrokontrolerami od Intela 8048, więc dla Atmegi mam szacunek, to jest potężny procesor, choć dziś standardem są dużo potężniejsze i dużo szybsze.

Natomiast co do przedmiotowego projektu, to chyba zafiksowałem się na swoich projektach i na tym żeby uniknąć użycia drogiego i delikatnego enkodera.
Natomiast gdyby jako warunek postawić użycie dokładnego enkodera, np. 2000 cpr, to zrobienie posuwu synchronizowanego można zrobić prymitywnie prostą metodą - poprzez wycinanie impulsów.
Przykładowo, jeśli enkoder daje 2000 impulsów na obrót, a sterownik silnika ustawimy na 400 impulsów na obrót, to łącząc bezpośrednio wyjście enkodera z wejściem sterownika, silnik zrobi dokładnie pięć obrotów na obrót wrzeciona. Oczywiście powyżej pewnej prędkości wrzeciona silnik nie ruszy tylko będzie brzęczał ( to po to są akceleracje ), ale to się da łatwo ominąć, o czym później. Jeżeli teraz pomiędzy enkoder a sterownik wstawimy układ, który będzie wycinał pewne impulsy z przebiegu enkodera, to sterownik dostanie ich mniej niż enkoder wysłał, więc silnik obróci się mniej niż pięć obrotów na obrót wrzeciona. Teoretycznie możemy uzyskać dowolnie niską prędkość silnika, ale nadal zsynchronizowaną z wrzecionem. Teraz wystarczy poczekać z początkiem ruchu na indeks wrzeciona i zrobić prostą akcelerację polegającą na rozpoczęciu ruchu z określonym bezpiecznym dzielnikiem i podniesieniu go stopniowo do zadanej prędkości, to samo na koniec ruchu tylko odwrotnie, żeby nie zgubić pozycji.
autor: tuxcnc
27 kwie 2020, 19:39
Forum: Elektronika CNC
Temat: zadawanie kroków mikrokontroler
Odpowiedzi: 29
Odsłony: 1590

Re: zadawanie kroków mikrokontroler

Avalyah pisze:
27 kwie 2020, 19:00
Trochę mi się tutaj gryzie. Skoro Kolega jest specjalistą od mikrokontrolerów (co sugeruje pewne szyderstwo w pierwszym cytacie), to dlaczego problemem ma być accelstepper?
Zasadniczo to problemem nie jest accelstepper jako taki, problemem jest samo ArduinoIDE.
Inaczej mówiąc da się przedmiotowy program napisać na Atmegę 328, ale nie da się tego zrobić w ArduinoIDE.
Można by użyć innego kompilatora, ale wtedy jest pytanie po co używać Atmegę, skoro STM32 kosztuje podobnie ?
Gdyby autor tematu wiedział powyższe, toby się nie pytał, a jeżeli nie wie, to sobie z napisaniem programu nie poradzi.
Zadanie jest w istocie trywialne, na jednym przerwaniu liczy się czas pomiędzy indeksami wrzeciona, a na drugim przerwaniu czas pomiędzy impulsami step. Resztę można już liczyć w pętli głównej programu.
Ja takiego programu pisać nie będę, bo mi nie jest potrzebny.
Pisałem natomiast program do sterowania obrotnicą spawalniczą, co jest w istocie dość podobnym zadaniem, bo też trzeba się poruszyć o określoną ilość kroków z określoną prędkością. Ograniczenia Atmegi powodują, ze program działa świetnie, ale tylko w określonym przedziale prędkości. Będę go z tego powodu przepisywał na STM32, ale to nie jest mój priorytet i może zrobię to za rok albo pięć. Tak czy inaczej problemu doświadczyłem osobiście i wiem o czym piszę. Ze standardowymi bibliotekami i funkcjami Arduino silniki pierdzą zamiast śmigać.
autor: tuxcnc
27 kwie 2020, 18:19
Forum: Elektronika CNC
Temat: zadawanie kroków mikrokontroler
Odpowiedzi: 29
Odsłony: 1590

Re: zadawanie kroków mikrokontroler

TOP67 pisze:
27 kwie 2020, 18:10
Ale jestem zdania, że lepiej zrobić od razu całość. Problemem będzie bowiem wycofanie noża na koniec gwintu. Robić to ręcznie? Bez sensu.
Sens jest, bo małym nakładem środków dostaje się mechaniczny posuw, co daje nieporównywalną jakość powierzchni i możliwość nacięcia gwintu, choć z tym ograniczeniem że tylko na walcu i nóż na końcu będzie rżnął rowek.
Natomiast przerobienie maszyny na pełne CNC to może być już koszt nieporównywalny, bo na przykład będzie trzeba wymienić śruby.
autor: tuxcnc
27 kwie 2020, 18:06
Forum: Elektronika CNC
Temat: zadawanie kroków mikrokontroler
Odpowiedzi: 29
Odsłony: 1590

Re: zadawanie kroków mikrokontroler

No widzę że zrobił się tu zlot "specjalistów" od mikrokontrolerów i CNC ...
Tylko jeśli takimi specjalistami jesteście, to dlaczego takie bzdury wypisujecie ?
Gwintować da się na samym indeksie, czyli jednym impulsie na obrót wrzeciona.
Sprzętowo da się to zrobić kawałkiem blachy i najtańszym czujnikiem indukcyjnym.
Problem leży zupełnie gdzieś indziej, czyli w tandetnych bibliotekach Arduino w rodzaju accelstepper, których nie da się zmusić do poprawnej pracy w tym zastosowaniu, no chyba że w bardzo wąskim zakresie parametrów.
Biorąc pod uwagę powyższe, właściwym rozwiązaniem będzie jednak komputer PC za 100 PLN i Linuxcnc, nawet jeśli miałby obsługiwać tylko jedną oś.

Wróć do „zadawanie kroków mikrokontroler”