Sterowanie silnikiem krokowym - przyśpieszenie etc.

Na tym forum rozmawiamy o elektronice nie związanej bezpośrednio z tematem CNC

Autor tematu
bmajkut
Specjalista poziom 1 (min. 100)
Specjalista poziom 1 (min. 100)
Posty w temacie: 9
Posty: 284
Rejestracja: 02 lis 2012, 18:59
Lokalizacja: Wrocław

Sterowanie silnikiem krokowym - przyśpieszenie etc.

#1

Post napisał: bmajkut » 23 paź 2014, 23:18

Witam,
temat luźno powiązany z tematyką cnc. Od mniej więcej roku chodzi mi po głowie budowa sterownika silników krokowych opartego o mikrokontroler. Póki co chciałbym się skupić na samym sterowaniu czyli interpretacji G-kodów przez sterownik. Cały kod przechowywał bym gdzieś w pamięci FLASH najprawdopodobniej na jakiejś karcie pamięci. To też na razie nie jest istotne.
Temat zakładam, bo prawdopodobnie są tutaj ludzie, którzy się na tym znają. Czy ktoś potrafiłby mi wytłumaczyć w jaki sposób przyśpiesza się krokówką? Oczywiste jest to, że musi się zwiększać częstotliwość impulsów podawanych na sterownik - końcówkę mocy. Czytałem kilka stron i artykułów poświęconych temu zagadnieniu. Nie wiem tylko jednego, mianowicie co jaki odstęp czasu należy zwiększać tę częstotliwość. Jeśli silnik miałby rozkręcić się do Vmax i kręcić przez kilka sekund to można by zwiększać częstotliwość co jedną sekundę. Niestety nie sprawdzi się to w przypadku krótkich dystansów.
Mam nadzieję, że jasno się wyraziłem i że ktoś dobry mi w tym pomoże ;)



Tagi:


mc2kwacz
Lider FORUM (min. 2000)
Lider FORUM (min. 2000)
Posty w temacie: 12
Posty: 2920
Rejestracja: 27 maja 2013, 22:18
Lokalizacja: gdzieś

#2

Post napisał: mc2kwacz » 23 paź 2014, 23:44

Jeśli to ma być przyzwoity STEROWNIK (nie mylić z przyzwoitymi DRIVERAMI silników -> wyższa szkoła jazdy), to częstotliwość sygnału step do zachowania dobrej przyzwoitej kultury pracy, należy modyfikować co najmniej 1000x na sekundę. To w takim najprostszym koncepcyjnie rozwiązaniu, w którym wszystko dzieje się w jakimś regularnym cyklu czasowym.
Zupełnie oddzielnym zagadnieniem jest, jak to należy robić żeby było dobrze. Ale to już będziesz sam musiał rozwiązać, jako konstruktor, który w końcu od tego jest, żeby wymyślać rozwiązania problemów a nie szukać gotowców - wzorców.

Zrobienie sterownika to jest zadanie dla programisty, nie trzeba być elektronikiem.


Autor tematu
bmajkut
Specjalista poziom 1 (min. 100)
Specjalista poziom 1 (min. 100)
Posty w temacie: 9
Posty: 284
Rejestracja: 02 lis 2012, 18:59
Lokalizacja: Wrocław

#3

Post napisał: bmajkut » 24 paź 2014, 00:22

Myślę, że aktualnie na rynku nawet Polskim znajduję się odpowiednia ilość różnych driverów do silników krokowych i nie warto się w to pchać.
Jeśli generowałbym impulsy sterujące przy pomocy Timera to jakąś tam dokładność otrzymam.
Rozumiem że odstępy należy modyfikować co najmniej 1000 razy na sekundę czyli muszę to wprowadzić do wzoru na przyśpieszenie.

Awatar użytkownika

Zienek
Lider FORUM (min. 2000)
Lider FORUM (min. 2000)
Posty w temacie: 2
Posty: 3730
Rejestracja: 13 gru 2008, 19:32
Lokalizacja: Szczecin
Kontakt:

#4

Post napisał: Zienek » 24 paź 2014, 00:26

Może zacznik od GRBL i układów pod drukarek 3d.

Jak zobaczysz ile tam magii to przemyślisz, czy warto to koło tak po kwadratowemu zaczynać wymyślać - od początku.

Z biznesowego punktu. Nie.

Dla satysfakcji - jak najbardziej.


Autor tematu
bmajkut
Specjalista poziom 1 (min. 100)
Specjalista poziom 1 (min. 100)
Posty w temacie: 9
Posty: 284
Rejestracja: 02 lis 2012, 18:59
Lokalizacja: Wrocław

#5

Post napisał: bmajkut » 24 paź 2014, 00:34

Zaglądałem już do tego kodu. Ciężko się tam połapać w czymkolwiek.
Od dawna ten pomysł mi chodzi po głowie i chyba tak łatwo się nie zniechęcę . GRBL chyba bierze komendy z USART i zapisuje do bufora i przez to tam się sprawa komplikuje, bo program musi na bieżąco pilnować żeby nie pogubić komend, kroków itd.
W moim przypadku jeśli wykorzystałbym szybki procek i pamięć flash tych kilka problemów zdaje się być wyeliminowanym. Wystarczy popatrzeć na efekty działania sterownika do reprap z kartą SD. Wydruki są dokładniejsze bo sterownik nie gubi kroków i nie traci czasu na buforowanie.


mc2kwacz
Lider FORUM (min. 2000)
Lider FORUM (min. 2000)
Posty w temacie: 12
Posty: 2920
Rejestracja: 27 maja 2013, 22:18
Lokalizacja: gdzieś

#6

Post napisał: mc2kwacz » 24 paź 2014, 00:43

W drivery silników nie warto się pchać, bo jest ich dużo i są bardzo tanie. Są też bardzo dobre drivery w dobrej cenie.

Sterownik ma sens. Ale nie wiem jaki sterownik i jaki sens? Edukacyjny? Zapewne, jeśli ma do czegoś prowadzić. Komercyjny? Bez pełnego oprogramowania jest niewiele wart. Patrz Piko. Sprzęt mocno ograniczony, budżetowy, ale program się rozwija od strony aplikacji na PC. Sam sterownik w Piko nie jest za bardzo "inteligentny". Dostaje gotowe wektory albo co najwyżej proste komendy do wykonania. Nacisk jest na program pecetowy którego możliwości są atrakcyjne i powoli ciągle ich przybywa.

Zrobienie dobrego sterownika autonomicznego, to poważne zadanie i wartościowe. Mało jest takich rzeczy na rynku poza profesjonalnymi i koszmarnie drogimi systemami. Ale pod warunkiem dużego zaangażowania i doprowadzenia do postaci komercyjnej z ukierunkowaniem na firmy. Bo niskobudżetowi amatorzy i tak wybiorą chinola, ew Piko. Albo coś co samo w sobie jest durne i wymaga podpięcia pod Macha albo czegoś w tym rodzaju.
Przydałby się taki produkt pod postacią sterowania do tokarki. Ale musiałby być zawodowo zaprojektowany, zawodowo oprogramowany i zawodowo zaoferowany, przy tym w przystępnej cenie. Nie trzeba wiele, żeby przebić linuxa na tokarkę, bo on jest z definicji kulawy. Tyle trzeba by to zrobić dobrze.
Sam miałbym na to ochotę, ale nie mam czasu a to nie jest zadanie na pół roku.

Zanim zaczniesz, zadaj sobie tylko pytanie, czy jesteś w stanie i dasz radę. Tu jest dużo pułapek, na każdym etapie. Trzeba mieć doświadczenie. Umiejętność napisania programu to w sumie najmniejszy problem. Właściwie wierzchołek góry lodowej. Ty zaś, bez urazy, jak widzę, jesteś na początku drogi i łamiesz głowę nad problemami podstawowymi, których zasadniczo nawet nie powinieneś wypowiadać.
Chyba że pozostaniesz na celu edukacyjnym, wtedy zawsze warto.

P.S. Nie wiem czy nie mieszasz przyspieszenia z częstotliwością aktualizacji prędkości. To są rzeczy ze sobą praktycznie nie powiązane.
Ostatnio zmieniony 24 paź 2014, 00:49 przez mc2kwacz, łącznie zmieniany 2 razy.


pukury
Lider FORUM (min. 2000)
Lider FORUM (min. 2000)
Posty w temacie: 1
Posty: 7735
Rejestracja: 23 lis 2004, 22:41
Lokalizacja: kraków

#7

Post napisał: pukury » 24 paź 2014, 00:44

witam.
znalazłem kiedyś coś takiego - http://www.usinages.com/electronique-sp ... t2415.html
może to coś rozjaśni sprawę .
jest o tym wątek na cnczone .
pozdrawiam.
dodając - i jeszcze takie coś - http://www.autoartisans.com/ELS/
Mane Tekel Fares


Autor tematu
bmajkut
Specjalista poziom 1 (min. 100)
Specjalista poziom 1 (min. 100)
Posty w temacie: 9
Posty: 284
Rejestracja: 02 lis 2012, 18:59
Lokalizacja: Wrocław

#8

Post napisał: bmajkut » 24 paź 2014, 10:08

Zdaję sobie sprawę, że nie jest to łatwe. Siedzę już trochę czasu w tematyce CNC i w zasadzie to mnie najbardziej interesuje. Na początku chcę się w to pobawić czysto edukacyjnie, ale za rok może się okazać że będzie to moja praca magisterska :P No bo w końcu trzeba będzie zastosować algorytmy optymalizacji długości ścieżki.
Na razie do projektu podchodzę na luzie, bo mam inne rzeczy na głowie i nie mogę się temu poświęcić. Wczoraj doszedł mi nowy projekt. Mam zbudować robota typu Delta, który będzie szybki i nie będzie ważył nie wiadomo ile :P
Mam w domu niebieskiego chińczyka i w postaci 3-osiowego sterownika nie nadaje się on do niczego. Wymontuję z niego tb6560 i zrobię płytkę pod Atmegę i jeden driver. Będzie to jakaś baza testowa.
Co do problemu przyśpieszenia to chodzi mi o to że jeśli mamy przyśpieszenie równe a = 2 m/s^2 to wiadomo że Timer zaczyna od jakiejś niskiej częstotliwości i zaczyna silnikiem kręcić bardzo powoli. Mi chodziło o to jak często należy zmieniać tę częstotliwość. Jeśli jest tak jak napisał kolega wcześniej, że co najmniej 1000 razy na sekundę to by oznaczało że w początkowej fazie rozruchu tak na prawdę odstęp pomiędzy impulsami należy zmniejszać już po pierwszym impulsie.

Awatar użytkownika

ursus_arctos
Lider FORUM (min. 2000)
Lider FORUM (min. 2000)
Posty w temacie: 5
Posty: 2083
Rejestracja: 11 cze 2011, 18:29
Lokalizacja: Warszawa / Lublin

#9

Post napisał: ursus_arctos » 24 paź 2014, 10:15

Co do tematu przyśpieszania - albo jest to bardzo proste (na poziomie półgłupiego sterownika) albo potwornie uciążliwe (na poziomie interpretera g-kodu czy innych podobnych wytworów). Pierwsza część to realziacja niemal fizycznego wypuszczania sygnałów step/dir. Tutaj nie ma filozofii. W najprostszej wersji (zakładając, że masz odpowiednio szybki kontroler z FPU), przeliczasz sobie aktualne współrzędne i kwantyzujesz do wielkości kroku. Jeżeli wartość jest większa, niż poprzednia -> dir0, impuls step, jeżeli mniejsza -> dir1, impuls step, jeżeli równa -> nie robisz nic.
Jeżeli zaś chodzi o zaplanowanie ruchu maszyny, to robi się mniej radośnie, gdyż trzeba przeglądać ścieżkę w przód i sprawdzać, czy przypadkiem nie należałoby już zacząć zwalniać przed:
a) zatrzymaniem
b) ciasnym łukiem.
Zdaje się, że jak się w G-kodzie ustawi posuw np. na 30mm/s, to nikt się nie przejmuje tym, że na rogach kwadratu trzeba się zatrzymać, a łuku o promieiniu 0.5mm też się raczej nie zrobi z tą prędkością - to musi zrobić albo program sterujący albo autonimiczny sterownik. Robiłem to (na PC) i o ile nie wymaga to zaawansowanej matematyki (równania kwadratowe, pochodne), to wykonanie jest zwyczajnie upierdliwe.

PS. Zapomnij o kontrolerach z rodziny AVR. STM32F4 to jest mniej więcej to, czego potrzebujesz, jeżeli maszyna ma być autonomiczna.


mc2kwacz
Lider FORUM (min. 2000)
Lider FORUM (min. 2000)
Posty w temacie: 12
Posty: 2920
Rejestracja: 27 maja 2013, 22:18
Lokalizacja: gdzieś

#10

Post napisał: mc2kwacz » 24 paź 2014, 10:58

Problem tkwi raczej w umiejętnościach niż w wyborze sprzętu. Oczywiście celowo słabego procesora nie ma sensu używać, skoro za grosze są nieporównanie wydajniejsze. Ale też nie ma co przesadzać. Ponad 30-letni Sinumerik 3 jest bodaj na Z80 zrobiony, jest w stanie obsłużyć praktycznie każdą maszynę kilkuosiową z submikronową precyzją numeryczną, i praktycznie żadna amatorska konstrukcja współczesna mu nie podskoczy. Świetnie widać tu przewagę wiedzy nad sprzętem.
Maszyna też ma swoje ograniczenia mechaniczne i nastawianie się na kosmiczne prędkości i przyspieszenia nie ma sensu. Chyba że się ma wycinać byle jak, byle co, a trwałość mechaniki jest bez znaczenia. Poza tym same popularne napędy krokowe - bez sprzężenia zwrotnego, nie pozwalają na duże przyspieszenia bez ryzyka problemów.

Bmajkut, jeśli dopiero studiujesz, to jeszcze wszystko przed Tobą. Za jakieś 5-6 lat najwcześniej, będziemy mogli pogadać o konkretach ;)

ODPOWIEDZ Poprzedni tematNastępny temat

Wróć do „Elektronika ogólna”