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

Sterowanie posuwem, silnik krokowy, sterownik com lub uc

killer2000 06 Kwi 2012 23:15 4158 12
  • #1 06 Kwi 2012 23:15
    killer2000
    Poziom 11  

    Witam. Potrzebuję pomocy i porad dotyczących sterowania silnikiem krokowym.
    Potrzebuję przesunąć wózek (na łożyskach liniowych) na odcinku ok. 60cm w przód i w tył w czasie ok 2s. Taki ruch wykonywany jest cyklicznie. Dysponuję silnikiem krokowym bipolarnym ze sterownikiem, zasilaczem, generatorem impulsów i zestawem krańcówek.

    Potrzebuję aby "program" działał tak:

    1 - Impuls startu
    2 - Silnik od zera przyspiesza w prawo do ustawionej prędkości przez "ustawialny" czas (zwiększająca się częstotliwość STEP)
    3 - Silnik po uzyskaniu prędkości działa ze stałą prędkością wykonując ustaloną ilość kroków (stała częstotliwość STEP)
    4 - Po wykonaniu ustalonej ilości kroków silnik zwalnia kręcąc się ciągle w prawo przez "ustawialny" czas aż do uzyskania prędkości umożliwiającej nagłą zmianę jego obrotów na przeciwne (zmniejszająca się częstotliwość STEP i zmiana stanu DIR)
    5 - Silnik przyspiesza w lewo do ustalonej prędkości powrotu (prędkość powrotu może być większa niż dojazdu) przez "ustawialny" czas (zwiększająca się częstotliwość STEP)
    6 - Silnik po uzyskaniu prędkości działa ze stałą prędkością wykonując ustaloną ilość kroków (stała częstotliwość STEP)
    7 - Po wykonaniu ustalonej ilości kroków silnik zwalnia kręcąc się w lewo przez "ustawialny" czas aż do całkowitego zatrzymania.
    Silnik powinien wykonywać taką samą ilość kroków w prawo i w lewo (po wykonaniu cyklu wrócić do stanu początkowego).

    Do tej pory udało mi się doprowadzić urządzenie do takiego stanu, że wykonuje ono pracę ze stałą prędkością, co jednak jest kłopotliwe, gdyż nie mogę w ten sposób osiągnąć oczekiwanej prędkości. Silnik gubi kroki przy starcie i przy nagłej zmianie kierunku obrotów. Wózek napędzany jest z silnika paskiem zębatym (1obr.=ok.10cm, silnik 1,8*/krok)

    Proszę o poradę czy istnieje możliwość napisania takiego programu i sterowania urządzeniem przez port COM, bądź mikrokontrolerem.

    0 12
  • Metal Work Pneumatic
  • #2 07 Kwi 2012 10:16
    bogdan_p
    Poziom 39  

    Opisałeś ładnie cały algorytm ale nie napisałeś co tak naprawdę jest najważniejsze w tym wszystkim : czas przejazdu , szybkość nawrotu , czas całej sekwencji czy precyzja pozycji . Jeżeli całość ma polegać tylko na tym aby szybko wykonać ruch w wyznaczonych pozycjach to po co liczenie kroków , wystarczy wykorzystać krańcówki do wyznaczania pozycji końcowych a silniki sterować z taką wartością sygnału step aby uzyskać żądaną prędkość przejazdu , chyba że są jeszcze inne warunki o których nie wspomniałeś . Co do Twojego sposobu sterowania to nasuwa się pytanie czy silnik ma odpowiednią moc , kolejna sprawa to przełożenie dla drogi 60cm powiedzmy po 20cm przyśpieszenie / zwalnianie daje po 2 obr = 400 kroków to dość mało aby to zrealizować do tego tylko 4 obr = 800 kroków na pracę z max. prędkością nie dziw się że przy takim sterowaniu silnik gubi kroki . Niestety każdy silnik potrzebuje czasu aby uzyskać zadaną wartość sterowania , w Twoim przypadku nawet porządnie się nie rozkręci a już jest zwalniany i zaraz nawrót itd .
    Oczywiście jest możliwe takie sterowanie przez mikro-kroki oraz zmianę częstotliwości sygnału step nawet liczenie kroków ale podstawa to odpowiednia moc silnika , znajomość jego parametrów oraz możliwości jakie daje sam sterownik silnika krokowego . Dużo lepiej zachowywał by się przy takim sterowaniu silnik DC z enkoderem oraz odpowiednią przekładnią . Rozumiem że masz już gotowy sterownik silnika sterowanie najprościej zrealizować na dowolnym uC do którego można dołożyć komunikację RS232 za pomocą której możesz kontrolować dowolne parametry układu , w przyklejonych tematach zobacz sobie zasadę sterowania silników przez RS232 .

    0
  • Metal Work Pneumatic
  • #3 07 Kwi 2012 18:15
    killer2000
    Poziom 11  

    Czas całej sekwencji (dojazd i powrót) ok. 2s.
    Liczenie kroków po to aby nie używać krańcówek (po wykonaniu całego cyklu powrót do punktu startowego).
    Ilością kroków ustalamy długość wysuwu popychacza.

    Powiedzmy, mamy 1200 kroków w prawo i 1200 kroków w lewo i na to ok 2s.
    Przez 100 kroków silnik przyspiesza do ustawionej prędkości max. 1000 kroków z tą prędkością i przez kolejne 100 zwalnia do bezpiecznej na odwrócenie obrotów, potem to samo od tyłu.
    Z bezpiecznej na odwrócenie przez 100 przyspiesza do ustawionej max. powrotu (może być większa niż najazdu), przez 1000 kroków działa z tą prędkością i kolejne 100 zwalnia do całkowitego zatrzymania.
    Sterowanie przez wejścia DIR i STEP.
    Czy to ma sens?

    Sterownik silnika 4,5A CNC chyba M545
    Silnik 3.1Nm 4,2A

    0
  • #4 07 Kwi 2012 18:53
    bogdan_p
    Poziom 39  

    killer2000 napisał:
    Czy to ma sens?

    Napisałem o tym wcześniej , osobiście uważam że nie ma sensu komplikować sobie życia co za problem masz z zastosowaniem 2 krańcówek tym bardziej że cała sekwencja ruchu ogranicza się do przebycia za każdym razem tej samej drogi . 100 kroków to pół obrotu silnika w tym czasie chcesz go zasilić przyśpieszyć / zwolnić i dokonać nawrotu ......
    Sterownik M545 ma dość duże możliwości można spróbować z różnymi wartościami podziału kroku , silnik masz dość dużej mocy tylko czy jest ona odpowiednia do potrzeb . Pamiętaj o tym że silnik krokowy ma swoje ograniczenia , gubi kroki przy zbyt dużej częstotliwości sterowania , zbyt dużym obciążeniu i niewłaściwym zasilaniu w tym miejscu odraczam zasilaczy impulsowych szczególnie powszechny błąd to zasilacze komputerowe ATX , kolejna sprawa to właściwy dobór prądu silnika . Jeżeli tak bardzo nie chcesz stosować krańcówek ( nie rozumiem dlaczego ) to bardziej wiarygodnym pomiarem będzie enkoder zamocowany na kole pasowym , silniki krokowe stosuje się tam gdzie wymagana jest precyzja wykonywanego ruchu a nie szybkość .
    killer2000 napisał:
    Liczenie kroków po to aby nie używać krańcówek (po wykonaniu całego cyklu powrót do punktu startowego).

    W czym widzisz problem przy zastosowaniu krańcówek ?

    0
  • #5 07 Kwi 2012 20:06
    killer2000
    Poziom 11  

    Teraz używam krańcówek i generatora impulsów CNC. Wszystko byłoby dobrze gdyby nie problem z odwracaniem obrotów i gwałtownym hamowaniem. W tych momentach silnik gubi kroki nawet przy małych prędkościach. Generator którego używam przy włączeniu zasiania rozpędza się do ustawionej potencjometrem częstotliwości, wykorzystuje to do zaczęcia cyklu pchania. Jednak przy odwróceniu obrotów przy pełniej prędkości silnik nie daje rady poprawnie się przełączyć na odwrotne obroty. Montowałem odbój mechaniczny, ale i to z marnym skutkiem (nie uzyskałem powtarzalności), raz na jakiś czas silnik się gubił i maszyna wypadała z rytmu. Gdyby krańcówka w połowie cyklu powodowała przełączenie obrotów bez gubienia kroków, nie mam nic przeciwko jej zastosowaniu. (zmniejszenie częstotliwości STEP, przełączenie DIR i jazda w tył powrotem ze zwiększeniem prędkości) Coś takiego próbowałem robić zmieniając częstotliwość generatora ręcznie potencjometrem i działało, ale ciężko trafić ręcznie w tą chwilę, żeby zmniejszyć częstotliwość tuż przed odwróceniem obrotów i po odwróceniu zwiększyć. Ta próba podsunęła mi pomysł ze zwolnieniem przed odwróceniem obrotów. Na pewno problemem jest pewna bezwładność wózka (jakieś 0,5kg).
    Jeśli kolega ma jakiś pomysł jak to ogarnąć proszę o sugestie. Po świętach postaram się zrobić fotkę jak wygląda konstrukcja i o co mi chodzi. Nie chcę zmieniać na inny silnik bo trochę zainwestowałem w to co już udało mi się zrobić i wygląda na to że odpowiednie zasterowanie rozwiąże mój problem.

    0
  • #6 07 Kwi 2012 22:59
    bogdan_p
    Poziom 39  

    Cytat:
    Wszystko byłoby dobrze gdyby nie problem z odwracaniem obrotów i gwałtownym hamowaniem. W tych momentach silnik gubi kroki nawet przy małych prędkościach.

    Cały czas o tym piszę że to za mało czasu aby to wszystko wykonać , szczególnie doliczając do tego bezwładność mechaniczną układu w przypadku kiedy interesują Cię tylko pozycje krańcowe nie ma znaczenia czy silnik zgubi kroki czy nie ruch będzie wykonywany od krańcówki do krańcówki . Tak jak wspomniałem wcześniej zbyt duża częstotliwość sterowania doprowadza do tego że silnik gubi kroki , Twój sterownik ma dość duże możliwości tak więc warto poświęcić trochę czasu aby dobrać optymalne parametry sterowania silnika ( częstotliwość / podział kroków ) . Skoro powoli przekonujesz się do krańcówek to faktycznie można zastosować takie rozwiązanie dwie do wyznaczenia pozycji końcowych dwie do uruchamiania układu zmiany częstotliwości sterowania , krańcówki wcale nie muszą być w postaci typowych mikrowyłaczników równie dobrze może to być kontaktron , transoptor szczelinowy lub halotron to wszystko zależy jakie masz możliwości montażu mechanicznego tych elementów . Możesz pozostać przy swoim liczeniu ale nie kroków tylko faktycznie wykonanego ruchu o czym już pisałem , jeżeli nie jest to problemem to warto dać pewną zwłokę czasową przy nawrocie żaden silnik nie jest w stanie w ciągu ułamka sekundy zatrzymać się i od razu dokonać nawrotu . Nie wiem jak w tej chwili sterujesz tym układem , algorytm jest stosunkowo prosty myślę że zupełnie wystarczy ATTINY 2313 do zrealizowania zadania . Pokaż schemat jak teraz masz to zrealizowane bo skoro używasz krańcówek to po Ci liczenie kroków . Mam jeszcze pytanie czy podany czas 2s to wartość która musi pozostać oraz czy nawrót musi być natychmiastowy ? . Jeżeli to nie tajemnica to do czego będzie to wykorzystywane bo domyślam się że do pracy ciągłej w takim przypadku dużo lepiej sprawdziłby się układ z siłownikiem pneumatycznym lub hydraulicznym tylko to o wiele większe koszty .

    0
  • #7 05 Cze 2012 21:09
    killer2000
    Poziom 11  

    Witam po przerwie.
    Mam pytanie co do sterowania moim układem za pomocą ATTINY 2313. Czy będę mógł osiągnąć efekt podobny do "soft-startu"? Czy taki mikroprocesor, oczywiście po odpowiednim zaprogramowaniu, spełni moje założenia co do sterowania silnikiem w taki sposób jak opisałem w pierwszym poście? Chodzi mi w szczególności o płynną zmianę częstotliwości impulsów STEP w określonym czasie.

    0
  • #8 05 Cze 2012 22:38
    bogdan_p
    Poziom 39  

    Tak mikrokontroler zrealizuje taką sekwencję , wystarczy wykorzystać dowolny timer do generowania podstawowych impulsów następnie za pomocą warunków uruchamianych przez 4 krańcówki podawać je na wejście sterownika w określonym czasie lub wykorzystać PWM do generowania impulsów określając ich wypełnienie w czasie dla poszczególnych warunków . Tylko po raz kolejny powtarzam układ będzie działał z " gołym " silnikiem jeżeli nic nie zmieniłeś w mechanice to przy bezpośrednim napędzie pasowym 0,5kg masie przesuwanego wózka nadal efekty będą mizerne ponadto 2s na przejazd 60cm z nawrotem to naprawdę za mało czasu . Pisałem Ci na PW abyś spróbował układ z silnikiem DC z przekładnią ( wkrętarka ) sprawdziłeś takie rozwiązanie ? , ciekawi mnie jak chcesz napisać program skoro sam przyznałeś że nie umiesz programować a w tym przypadku żaden gotowiec nie wchodzi w rachubę trzeba będzie wielu prób i poprawek w programie zanim osiągniesz zadowalający efekt .

    0
  • #9 05 Cze 2012 23:23
    killer2000
    Poziom 11  

    Dzięki za odpowiedź. Maszynka stała jakiś czas w zapomnieniu, gdyż nie była potrzebna. Teraz temat powraca gdy trzeba znowu ją uruchamiać. Tak jak pisałem nie potrafię programować, ale odnowiłem kontakty z osobą programującą (programy na PC), więc są szanse na jakieś efekty. Potrzebuję tylko programator i jakiś moduł z mokrokontrolerem. Myślę że poświęcając trochę czasu na próby coś z tego w końcu wyjdzie. A mam nadzieję że i ja czegoś się nauczę w kwestii programowania.

    0
  • #10 06 Cze 2012 18:32
    bogdan_p
    Poziom 39  

    killer2000 napisał:
    odnowiłem kontakty z osobą programującą (programy na PC), więc są szanse na jakieś efekty.

    Muszę Cię zmartwić , jeżeli ta osoba nawet pisała w CC+ to C dla mikrokontrolerów to zupełnie coś innego wymagana jest przynajmniej podstawowa wiedza z architektury danego mikrokontrolera oraz zasady działania danych bloków układu , jedynym wspólnym elementem jest podobna składnia poleceń .
    Zrozum że jeżeli nie dokonasz zmian w układzie mechanicznym , żaden super program nie pokona podstawowego prawa fizyki jakim jest bezwładność mechaniczna .

    0
  • #11 06 Cze 2012 21:56
    killer2000
    Poziom 11  

    Rozumiem, że bez dokonania zmian mechanicznych w napędzie efekt będzie marny (albo i z moimi zdolnościami żaden). Ale zawsze warto dać kroczek do przodu. Na początek przygody z programowaniem efektem będą pewnie migające diody, ale może z czasem przerodzą się w sterowanie silnikiem w sposób kontrolowany. Zobaczymy. Będę informował o moich "porażkach", może coś z tego będzie.

    0
  • #12 06 Cze 2012 23:39
    bogdan_p
    Poziom 39  

    O bezwładności mechanicznej i wynikającej z tego problemów pisałem prawie miesiąc temu na forum nie liczę dyskusji na PW , Ty nadal upierasz się przy swoim .
    W urządzeniu wykorzystujesz ruch posuwisto - zwrotny z określoną drogą oraz limitem czasowym ruchu ponadto jest to praca ciągła , jednym sensownym rozwiązaniem to siłownik pneumatyczny lub hydrauliczny o tym była również już mowa . Mając dostęp do dobrego warsztatu mechanicznego taki siłownik można zbudować samodzielnie lub wykorzystać jako podstawę konstrukcyjną amortyzator , siły jakie potrzebujesz nie są duże tak więc siłownik może być naprawę małej średnicy jest faktem że są to koszty odpowiednio większe niż silnik krokowy z sterownikiem . Pisałem również o próbie zmiany napędu wózka tak aby ograniczyć do min. siły bezwładności układu ;napęd śrubowy , silnik z przekładnią ślimakową lub planetarna tylko w tych przypadkach już nie silnik krokowy tylko DC jakoś zupełna cisza w tej sprawie . Może po wielu próbach bez większego efektu sam się o tym przekonasz i silnik krokowy odłożysz na bok do innego wykorzystania . Życzę powodzenia w nauce programowania ! .

    0
  • #13 28 Cze 2012 20:53
    killer2000
    Poziom 11  

    Wracam po przerwie. Penie już niektórzy mają dość mojego drążenia i upierania się do tego silnika i sterowania, ale poczyniłem pewne postępy. Zaopatrzyłem się w attiny2313 i programator i własnymi siłami zaprogramowałem kostkę. Efekt... taki jakiego oczekiwałem. Szybki start z rozpędzeniem, praca z max prędkością przez określoną ilość kroków, zwolnienie, szybki nawrót i to samo w drugą stronę. Jedyny problem to potrzeba ręcznego resetowania procesora aby ponownie wykonać program. I stad moje pytanie i prośba. Proszę o informację czy i w jaki sposób zmusić attiny do zresetowania się.
    Kończę mój program komendą "end" chciałbym ją zastąpić czymś w rodzaju reset procesora i rozpoczęcie programu od nowa.
    Pozdrawiam

    22:55
    Doszedłem sam :D
    wystarczyło użyć komendy JMP - jakie to proste

    0