Elektroda.pl
Elektroda.pl
X
IGE-XAO
Proszę, dodaj wyjątek dla www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Jak sterować silnikiem krokowym, żeby szybko i dokładnie działał?

25 Sty 2018 16:49 6048 113
  • Specjalista elektronik
    Silnik 85BYGH450C. Sterownik na TB6600, z możliwością nastawienia mikroprzełącznikiem prądu i ilości kroków na obrót.

    Po pierwsze, nie przy każdym ustawieniu działa - przy nastawieniu zbyt małego, albo zbyt dużego prądu działa tylko z niektórymi nastawieniami ilościami kroków na obrót. Ale już wypróbowałem, że ustawienie 1A, albo 1.5A działa prawidłowo z każdym nastawieniem ilości kroków.

    Po drugie, działa prawidłowo tylko przy niezbyt szybkich obrotach. Na razie trudem doszedłem do tego, że mogę wykonać cały obrót w czasie nieco poniżej sekundy. Problemem jest bezwładność wirnika - przy większej szybkości nie nadąża reagować na zmiany prądu, gubi synchronizację.

    Docelowo, na silniku będzie umieszczone (i sztywno zamocowane) koło o średnicy około 30cm i masie około 1kg - silnik ma nim obracać i szybko ustawiać w potrzebnym położeniu. Moment bezwładności tego koła będzie kilkaset razy większy, niż wirnika w silniku - więc i problemy z bezwładnością odpowiednio większe. A nie jest dopuszczalne występowanie błędów pozycjonowania.

    Impulsy wysyłam przez port szeregowy komputera PC (UART - czyli każdy wysłany bajt daje bit startu, 8 bitów danych, bit stopu). To pozwala uzyskać określoną szybkość wysyłania, przynajmniej jeśli jakieś bajty wpisze się do FIFO interfejsu UART, to już chwilowe obciążenie komputera nie opóźni ich wysłania - być może system zapewnia, że UART będzie wysyłał dane z pełną szybkością, dopóki są one dostępne w buforze systemowym, a opóźnienia mogą pochodzić tylko z programu, który je tam umieszcza - ale ciężko będzie to sprawdzić. Z drugiej strony, bit startu i bit stopu mają przeciwną polaryzację sygnału elektrycznego, więc sterownik dostaje co najmniej jeden impuls w czasie wynikającym w szybkości wysyłania i nie można tego zmienić.

    No i jest kwestia: jak dobrać sekwencje czasów wysyłania impulsów do sterownika, żeby silnik obracał się szybko do potrzebnego położenia, nie gubiąc synchronizacji? Czy ktoś mierzył się z podobnym zagadnieniem i jest skłonny udzielić wskazówek?
  • IGE-XAO
  • Specjalista elektronik
    Przeczytałem, dość pobieżnie, ale wystarczająco, żeby zobaczyć, że jest ogólnikowe podejście, które pomija wiele istotnych w moim przypadku spraw (na przykład fakt, że sterownik ma mikrokroki po 1/32 pełnego kroku), i do dużej części tego, o czym tam piszą, ja już wcześniej sam doszedłem.

    Niestety opis silnika jest bardzo enigmatyczny, nie podaje wielu informacji istotnych do takich zastosowań. Choćby taka sprawa, że jak wykonuje się wiele kroków, to odchylenia od prawidłowej pozycji mogą się wahać, może wystąpić jakiś rezonans i spowodować utratę synchronizacji.
  • IGE-XAO
  • Poziom 14  
    Czy to znaczy, że nie planujesz stosować enkodera do pomiaru położenia i opierasz się jedynie na sterowaniu silnikiem?
  • Poziom 33  
    Czemu tak kombinujesz? UART jako generator dla krokówki? :)
    Jak zrobisz trapezowy profil prędkości? Dla większych bezwładności stosuje się sterowanie z zakrzywieniem trapezu prędkości (JERK), liniowy przyrost przyspieszenia. Jeśli już tak chcesz kombinować z UART to kup driver od FASTECH z komunikacją RS485. ;)
  • Specjalista elektronik
    A co na tym zyskam, ile pieniędzy i czasu (szukanie ofert, czekanie na dostawę, dowiadywanie się, jak tego użyć) będzie to kosztować?

    Ja nie mówię, że nie, ale muszę uzasadnić dodatkowy zakup - a z takiej porady "kup driver od FASTECH", to nawet nie wiem, co i gdzie mam kupić, i co gorsza, ustawa o zamówieniach publicznych chyba czegoś takiego zakazuje (nie wolno wybierać określonej firmy, trzeba wybierać cechy sprzętu).

    Czy chodzi o Ezi-SERVO Plus-R? Coś tam piszą, że do tego musi być jakaś biblioteka DLL - a skąd mam wiedzieć, czy będzie działać z moim komputerem? Ja bym wolał tak, żebym nie potrzebował czegoś dodatkowego, co może nie działać - preferuję unikanie zbędnego ryzyka.

    O ile dobrze rozumiem, do tego musi być odpowiedni silnik - odpada, mam konkretny silnik (podałem, jaki) i nie dostanę zgody na użycie innego silnika - ktoś już zrobił projekt całego układu mechanicznego, część tego zrobił, nie ma możliwości, żeby teraz dopasowywał to do innego silnika.
  • Poziom 33  
    Jeśli dobrze zrozumiałem to używasz układu UART jako generatora impulsów dla sterowania silnika krokowego. Jest to delikatnie mówiąc dość dziwny pomysł. Jeśli chcesz sterować silnikiem przez port COM i rozwiązanie ma być tanie to kup na Allegro płytkę sterownika do drukarki 3D np. tego typu http://reprap.org/wiki/RAMPS_1.4 Połącz ją z TB6600
    Szacunkowy koszt płytki w wersji z portem USB to około 35 zł. Realizuje ona algorytm rozpędzania i hamowania silnika. Sterowanie odbywa się za pomocą G-code http://reprap.org/wiki/G-code#G0_.26_G1:_Move
  • Poziom 35  
    Witam.
    Silnik jest przewidziany na prąd max. 8.5A ( tak wynika z PDF ) - a sterownik może dać tylko 4A.
    Jakim napięciem zasilasz sterownik ?
    No i kwestia szerokości impulsu Step .
    Pozdrawiam.
  • Specjalista elektronik
    Nie musi być przez port COM - komputer ma jeszcze port drukarki i parę portów USB (jakkolwiek USB bywają potrzebne do czego innego) - na początek podłączyłem pod port drukarki, ale sterowanie przez COM działało dużo lepiej, a na dodatek nie wymagało dodatkowego sterownika, co do którego nie wiem, czy nie destabilizuje systemu.

    I jeszcze jedno: port COM podłączyłem do sterownika silnika (przez diody, bo na porcie występują napięcia '+' i '-', a nie wiem, czy wejścia sterownika tolerują '-'), i to działa, a podłączenie do portu LPT wymagało dodatkowego zasilania (a niestety komputer nie ma wyjścia +5V... no, może na portach USB, nie wpadłem wcześniej na pomysł, żeby stamtąd wziąć +5V) - w sumie potrzebne były 4 gniazdka sieciowe, do zasilania: silnika, komputera, monitora, i układu sterowania, a z użyciem portu COM wystarczają 3.

    Napięcie zasilania sterownika 19V. Przy ustawieniu dużego prądu silnik nie działał prawidłowo - ale kto wie, może jak będzie obciążony, to to się zmieni?

    Nie zauważyłem, żeby szerokość impulsu Step (w opisie tego sterownika nazywa się to Pulse) miała jakikolwiek wpływ na działanie.
  • Poziom 35  
    Witam.
    Napięcie zasilania powinno być około 36VDC - zapewnia to lepszą dynamikę.
    Sterowanie ma być ciągiem impulsów Step ( lub Pulse ) - jeden impuls - jeden krok.
    Musisz oczywiście brać pod uwagę podział 1/32.
    Nie wiem jak to się ma do bitu startu - danych i stopu.
    Prawdę powiedziawszy to tego nie rozumiem.
    Sterownik na wejściu ma transoptory .
    A szerokość impulsu ma jak najbardziej znaczenie - przy takim podziale ( 1/32 ) częstotliwość jest dość spora.
    Pozdrawiam.
  • Poziom 31  
    Jeśli sterujesz sterownik krokowca "impulsami" z portu COM to albo jesteś niepoprawnym optymistą albo kompletnym ignorantem. Specjalista elektronik, a zabierasz się do tematu jak pies do jeża...
    Nie zapoznałeś się z tematem, bo jak byś to zrobił, to byś wiedział że sterowanie robi się właśnie po LPT. A jeśli ci coś nie działa tzn że coś robisz źle, a nie że trzeba na COMie bo tam jakoś chodzi.
    Jak sobie wyobrażasz precyzyjne pozycjonowanie napędu jeśli możesz wysyłać tylko wielokrotności 9 impulsów ? że o płynnej zmianie prędkości nie wspomnę.
  • Specjalista elektronik
    Jakoś tak się składa, że przez port COM działa dużo lepiej, niż przez LPT - ja nie teoretyzuję, jak koledzy, tylko sprawdziłem praktycznie. Port COM mam ustawiony na 8 bitów danych, 1 bit stopu - czyli razem w bitem startu jest 10 bitów, z tego bit startu jest zawsze '0', bit stopu zawsze '1', pozostałe mogę ustawiać. Oczywiście wygodniej byłoby mieć USRT (albo USART w trybie USRT), albo SPI - to by mi pozwoliło ustawiać wszystkie bity - ale nie mam.

    Sterowanie silnikiem krokowym może mieć jakieś ograniczenia niezależne od sposobu sterowania - jeśli na którymś kroku impuls sterownika będzie przesunięty w czasie, to wpłynie to na trafienie z czasem następnego impulsu - teoretycznie, może wygenerować większe odchylenie, i układ może się wzbudzić. Czego trzeba dopilnować, żeby do takiego wzbudzenia nie doszło? Jakieś wzbudzenia obserwowałem, ale czy taka była ich przyczyna?

    Niewątpliwie, o ile nie działają siły (a raczej momenty sił) porównywalne z momentem trzymania silnika, musi poprawnie działać takie sterowanie, że wysyłam impuls do sterownika i czekam, aż wirnik się poruszy i wygasną drgania spowodowane tym ruchem - tylko takie sterowanie jest dla mnie dużo za wolne, potrzebuję dużo szybciej. A to może - jak się tego odpowiednio nie zrobi - powodować niestabilność działania.
  • Poziom 24  
    Tak jak kolega napisał dobre napięcie to ok 36V. Musisz mieć zapas przy hamowaniu silnika.
    Na wejścia pul, dir, ena podajesz sygnały 5V nie musisz dawać żadnych diod. 5V DC na PUL+ a 0V DC na -.
    Z 24V DC wystarczy rezystor ok 2,2kOma.
    Co do sterowania miałem kilka przypadków, że sterowniki po 160 zł nie działały tak jak trzeba. A to zamiast obrotu miałem 10 obrotów albo pół obrotu. Ty masz sterownik jeszcze tańszy więc mnie nie zdziwiły problemy wogóle.
    Jak dobrze dobierzesz silnik do aplikacji to kroków nie zgubisz i enkoder zbyteczny natomiast jak silnik będzie gubił kroki:
    1) za duże obciążenie
    2) za duża dynamika
    to wtedy enkoder Ci wyśle informacje ile tak naprawdę przejechałeś.
    Nie pamiętam dokładnie prędkości COM albo to coś było w baude rate?
    Czym szybciej wysyłasz impulsy tym szybciej się kręci. Czym wolniej wysyłasz tym wolniej się kręci. Poczytaj o PTO.
    Musisz mieć pewność, że jak jak zadasz 200 impulsów to tyle trafi na driver.
    W PLC to jest szybki licznik i problem z głowy.
    Jeśli chodzi o podział kroku:
    Masz 200 imp/ obrót przykładowo więc rozdzielczość 1,8 stopnia. Każdy podział kroku powoduje, że potrzebujesz więcej impulsów na obrót ale za to i dokładność większą.
    Ja miałem z krokowym silnikiem enkoder 2048 imp/obrót. I miałem taki sterownik, że przy hamowaniu na postoju silnik drgał i enkoder odczytywał to jako impulsy.
    Wymiana sterownika pomogła. Silnik pracuje płynnie i nie drga przy hamowaniu. Ale sterownik kosztował ponad 220 zł.
  • Poziom 35  
    Witam.
    Żeby to działało musisz mieć -
    1 - odpowiedni sterownik - prąd
    2 - odpowiednie źródło zasilania - wartość napięcia i obciążalność ( napięcie i prąd
    muszą być " sztywne " )
    3 - źródło sygnałów ( step , dir , enb ) o odpowiedniej jakości -
    stromość zboczy , amplituda , szerokość impulsów
    Jak to będzie to coś powinno z tego być.
    No i musisz brać pod uwagę że jeżeli chodzi o pozycjonowanie to silniki krokowe mają błąd 2 - 5 %
    Jeżeli to jest akceptowalne to OK.
    Jak ma być naprawdę dokładnie ( jak dokładnie ?) to jedynie serwo.
    To tyle.
    Pozdrawiam.
  • Specjalista elektronik
    Uzwojenia tego silnika mają małą indukcyjność, 1.5mH (wiele silników ma wielokrotnie większe) - przy 19V czas narastania prądu od 0 do 1.4A jest 110us, PWM sterownika ma okres 9.6us. Przy sterowaniu przez COM dałem diody, żeby nie podawać ujemnych napięć na transoptory.

    Co do baud rate, to próbowałem różne - jak się nastawi za dużą, to nie działa prawidłowo. Dla wysyłania impulsów po 1 na znak (i 10 bitów na znak) zrobiłem zestawienie maksymalnych działających wartości w zależności od ustawionego podziału: 1 - 2400, 2/A - 4800, 2/B - 3600, 4 - 9600, 8 - 23040, 16 - 38400, 32 - 57600.

    Na sterowniku jest LED, który świeci w jednym z punktów okresu - tym, który ustawia się po włączeniu - i dla podziału 1 jest to co 4-ty punkt, dla wyższych coraz rzadziej (dla 32 co 128 kroków). Jest jakimś sprawdzianem, czy w komunikacji komputer-sterownik nie ma gubienia impulsów. Nie wykryłem, by występowało.

    Co to ma być PTO? Znalazłem: Polskie Towarzystwo Okulistyczne, Polskie Towarzystwo Ortodontyczne, Polskie Towarzystwo Onkologiczne, Powszechne Towarzystwo Odszkodowań, Paid time off (płatny urlop), "please turn over" (proszę odwrócić na drugą stronę), Parent-Teacher Organization, "Power take-off" (trafiłem na tłumaczenie, że to wyłącznik prądu, ale i na "A PTO is a shaft attached to the engine of a vehicle such as a truck or a tractor to which other equipment or machinery may be attached" = "Wał odbioru mocy"), "Patent and Trademark Office", Płockie Towarzystwo Oświatowe, Polskie Towarzystwo Origami, "Podwarszawskie Trójmiasto Ogrodów", Photo Training Overseas, a angielska Wikipedia (w polskiej nie ma) jeszcze ma sporą listę innych: Peace Train Organisation, Public Telecommunications Operator, Promenade Theatre Orchestra, Pacific Theater of Operations, Peeled tail-on shrimp, Permission to officiate, Phoenix Thunderbirds Open, Professional try-out (pominąłem nazwy gier, tytuły filmów, tytuł opery...). Niemniej jednak żadna z tych rzeczy nie kojarzy mi się ze sterowaniem silnikiem krokowym. ;)
  • Użytkownik usunął konto  
  • Użytkownik usunął konto  
  • Poziom 35  
    Witam.
    Tak by było najlepiej - silnik na pełnym kroku i przekładnia 1 / 32 .
    Lub 1/2 kroku i przekładnia 1/16.
    Ale jest to nie do zrobienia - konstrukcja mechaniczna jest zrobiona.
    Pozdrawiam.
  • Poziom 33  
    Art.B napisał:
    Im stromsze rampy i większa bezwładność napędzanego mechanizmu, tym więcej kroków gubi.

    Sposób sterowania wybrany przez autora pytania pozwala jedynie na pracę w trybie start/stop z nierównomierną prędkością.
  • Poziom 27  
    Witam kolegów, i autora tematu, jak już koledzy zauważyli sterownik jest za słaby do wybranego silnika, trzeba też dobrać odpowiedni zasilacz (wyższe napięcie = krótszy czas narastania prądu) co na pewno nie mniej niż 24V a najlepiej 36V (wszystko zależy od sterownika). Ja w swojej maszynie mam zasilanie sterowników 48V a silniki o połowę mniejsze (śmiga że aż miło, ale sterowniki koszmarnie drogie). Nie wiem jak wygląda konstrukcja autora, ale wydaje mi się że bez kłopotu można miedzy silnik a "stół" zamontować przekładnie planetarną, mają one szerokie przełożenia od 3:1 do nawet 512:1, wyglądem odpowiadają silnikowi, myślę że warta jest wzięcia pod uwagę.
    Przykładowa przekładnia:
    Jak sterować silnikiem krokowym, żeby szybko i dokładnie działał?
  • Specjalista elektronik
    Czas narastania prądu jest około 120us; czas niezbędny do zrobienia pierwszego kroku (1/200 obrotu) przy optymalnym sterowaniu jest około 1.5ms bez obciążenia - a z obciążeniem dużo, dużo większy. Dążenie do przyspieszenia narastania prądu nie ma sensu, bo nieskończenie szybkie narastanie prądu nie poprawi szybkości nawet o 1%!

    Montaż dodatkowych elementów mechanicznych oznaczałby konieczność przeprojektowania całości - nie ja to projektowałem, nie mogę decydować o tym, żeby to zmienić, a na obecnym etapie jest to raczej niewykonalne. W tym, co zaprojektowano, jest nie tylko ten silnik i to, co ma on obracać, one stanowi fragment większej całości.
  • Użytkownik usunął konto  
  • Specjalista elektronik
    To oznacza wydatek około 400zł na sterownik, plus wymianę zasilacza na mocniejszy - to też jakiś koszt. Musiałbym na to uzyskać zgodę - nie wiem, czy koledzy się orientują, jak i na ile ogranicza się u nas wydatki na badania naukowe. I nie wiem, czy coś da, nawet jeszcze nie zdążyłem sprawdzić, czy obecny sterownik nie będzie działał istotnie lepiej z mocniejszym zasilaczem, bo nie miałem żadnego "pod ręką". Jakie kondensatory należy stosować, i dlaczego? Na razie mam jeden 4700uF/50V.
  • Użytkownik usunął konto  
  • Poziom 27  
    _jta_ napisał:
    Właśnie sprawdziłem, że przy ustawieniu maksymalnego prądu silnika sterownik pobiera z zasilacza około 230mA. A jaki konkretnie powinien być kondensator?


    Kolega raczy sobie żartować ? W opisie swoim opisie profilu masz specjalista elektronik, więc coś tu się nie zgadza... Toż to podstawy!

    Kondensator usztywnia zasilacz (zwłaszcza impulsowy), im większy w tym przypadku tym lepiej...

    Zastanawia mnie jak można kupić silnik na prąd maksymalny 8,5A i do tego sterownik z z maksymalnym prądem 4,5A (przy którym z pewnością z niego poleci magiczny błękitny dymek). Do tego silnika aby nim efektywnie kręcić potrzebujesz znacznie lepszego (wydajniejszego) sterownika. Czysta fizyka kolego.

    A może autor ma takie problemy bo padł ofiarą ściemniaczy, i jest posiadaczem innego sterownika niż wcześniej wspomniany, bo sterownik na TB6600 ma podział na 1/16 kroków a S109AFTG ma 1/32 i jest o wiele słabszym sterownikiem... Wygląda to tak, że właśnie taki sterownik ma kolega :)
    W linku podanym przez autora do sterownika zdjęcie przedstawia jeden sterownik a instrukcja z linku jest o drugim sterowniku :)

    Jaki w końcu masz sterownik ?

    Więcej o tych sterownikach:
    [url=]https://www.cnc.info.pl/bledny-opis-czarny-sterownik-tb6600-tb67s109a-t82922-10.html[/url]

    a tu aukcja i zdjęcia pokazujące i opisująca różnice sterowników (wiem wiem, że nie wkleja się nietrwałych linków, ale nie wiem jak to inaczej zrobić)

    [url=]http://allegro.pl/sterownik-silnika-krokowego-tb6600-nie-podrobka-i7077041908.html[/url]

    a tu filmik jak powinien śmigać silnik z drukarki na sterowniku TB6600
    [url=]https://www.youtube.com/watch?v=I7O5MUZ8vl0[/url]