Elektroda.pl
Elektroda.pl
X

Search our partners

Find the latest content on electronic components. Datasheets.com
Elektroda.pl
Multimetr Fluke
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

Silnik krokowy i jego sterowanie, kierunek, prędkość.

DRAZEK87 18 Dec 2017 21:07 4350 7
  • #1
    DRAZEK87
    Level 13  
    Witam

    Postanowiłem zagłębić wiedzę w zakresie sterowania silnikiem krokowym. To jak jest zbudowany, jakie są jego rodzaje i zastosowania było mi poniekąd znane, ale dopiero realizacja jednego z założonych sobie projektów przyczyniła się do zgłębienia wiedzy szczególnie w zakresie jego obsługi za pomocą mikrokontrolera AVR.

    Aby przystąpić do projektu nabyłem silnik krokowy model: JK86HS78-4802-04 o momencie siły 4,6Nm; więcej szczegółowych informacji podaję poniżej:
    Silnik krokowy i jego sterowanie, kierunek, prędkość.
    Silnik krokowy i jego sterowanie, kierunek, prędkość.
    jako że jest to silnik 8-przewodowy przedstawiam sposób jego podłączenia; dla JK86HS78-4802-05 i JK86HS78-4802-04 jest taka sama, a jedyna różnica miedzy tymi modelami to szerokość osi gdzie dla -05 mamy fi 12,7mm , natomiast w -04 jak widać powyżej jest fi 14mm:)

    Ze względu na użyty driver, a jest nim sterownik TB6600 o max prądzie na fazę 4A który wygląda następująco
    Silnik krokowy i jego sterowanie, kierunek, prędkość.
    zastosowałem podłączenie szeregowe bipolarnie, za to do jego zasilenie użyłem mającego już na stanie zasilacza 24V o nominałach S-360-24 i wydajności 15A;
    Silnik krokowy i jego sterowanie, kierunek, prędkość.
    Teoretycznie chciałbym przy tym napięciu pozostać ze względów technicznych innych elementów projektu. Choćby użytych lampek kontrolnych czy wentylatorów 24v które są łatwiej dostępne i tańsze od modelów o nominalnym napięciu 48v. Pomijając już sam fakt ograniczeń drivera gdzie maksymalnie możliwe podawane napięcie to 42V, co znacząco wyklucza użycie zasilacza 48v, aczkolwiek można było by zastosować zasilacz 36V i wentylatory 48v które pracują z reguły od 24 do 52v ale tylko w przypadku jeśli chcielibyśmy poprawić osiągi silnika krokowego czyli uzyskać większy moment przy wyższych obrotach co przekłada się na wzrost obrotów maksymalnych.

    Idąc dalej do testów zbudowałem prosty kontroler:
    Silnik krokowy i jego sterowanie, kierunek, prędkość.
    na pokładzie którego jest procesor ATMEGA 8; kwarc zewnętrzny 16MHz; wyświetlacz 2x16, klawiatura 5 przycisków, złącze programowania, przetwornica step-down LM2596; dodatkowe złącza których nie będę omawiał bo nie one są tematem zagadnienia, a program do avr'a.
    Silnik krokowy i jego sterowanie, kierunek, prędkość.

    Kontroler ma za zadanie wyświetlać aktualny kierunku obrotu oraz bieżącą prędkości z jaką kręci się oś silnika.
    Za pośrednictwem klawiatury możliwość ich zmian: kierunek prawo/lewo; prędkość od 1 do 100%.
    Przy wyborze maksymalnej wartości silnik ma nie traci znacząco momentu trzymającego, gdyż parametr ten odgrywa kluczową role w projekcie.
    Chciałbym dobrać tak prędkość silnika aby móc max wykorzystać jego zasoby. Ewentualnie podczas pracy je kalibrować i zapisywać do pamięci układu, ale to już na "finito":D
    Ponadto rozpatruje możliwości powolnego startu i hamowania.

    Zakładając wstępne założenia przystąpiłem do sprawdzenia czy w sieci jest już gotowe rozwiązanie, lecz nie odnalazłem wyczerpującej wypowiedzi, za to najbliższy mojego tematu jest ten projekt:
    http://mikrokontrolery.blogspot.de/2011/03/Si...kowy-sterowany-mikrokontrolerem-ATmega16.html

    I tym samym sposobem postanowiłem go sprawdzić, modyfikując go bardziej pod siebie, co w efekcie udało się uruchomić silnik oraz bezproblemowo zmieniać kierunek obrotu osi:)

    Strzałka w lewo, dioda pomocnicza wygaszona co przekłada sie na stan niski na wejście DIR drivera .
    Silnik krokowy i jego sterowanie, kierunek, prędkość.
    Strzałka w prawo, dioda pomocnicza zapalona co przekłada sie na stan wysoki na wejście DIR drivera.
    Silnik krokowy i jego sterowanie, kierunek, prędkość.
    Do regulacji obrotów wykorzystywane jest wejście PUL, na które podawany jest przebieg zegarowy.
    I z tym jest największy problem, gdyż silnik kręci się wolno, szarpiąc gdyż podawana częstotliwość z powyższego projektu jest niewłaściwa jak dla niego.
    I stąd rodzi się pytanie jaka, jaki zakres powinien być aby moc właściwie sterować ten silnik od najniższych do max obrotów:/
    Jak określić maksymalna prędkość jeśli nie dysponuję charakterystyką pracy silnika na której mamy wykres "TORQUE/SPEED" podawany jako Nm/Hz ewentualnie Nm/RPM. Dodam że nie posiadam jeszcze generatora funkcyjnego aby dokładnie zbadać zakres częstotliwości, a nawet jeśli już bym go znał jak poprawnie powinno wyglądać przerwania dla timera, tak aby moc to zmieniać. Czy dobrze rozumiem, że jeden krok silnika to 1Hz, dla silnika powyższego 200Hz to 1 obrót; podając 400Hz silnik dwukrotnie szybciej będzie się kręcił; 600Hz x3 itd
    To tak na wstępie, każda rada mile widziana; chętnie przetestuje zamieszczony kawałek kodu.
    Ethernet jednoparowy (SPE) - rozwiązania w przemyśle. Szkolenie 29.09.2021r. g. 11.00 Zarejestruj się za darmo
  • Multimetr Fluke
  • #2
    tmf
    Moderator of Microcontroller designs
    Szarpanie może wynikać ze sterowania pełnokrokowego. Generalnie lepiej silnik rozkręcać i hamować stosując rampy i sterowanie mikrokrokowe. Działa wtedy płynniej. Jeśli nie masz wykresu troque/speed, to chyba pozostaje tylko wyznaczenie eksperymentalne.
    Do generowania kroków możesz użyć timera w trybie generatora częstotliwości. Silnik zapewne ma standardową liczbę kroków na obrót. Zakładając, że np. jest to 200 kroków na obrót, to jeśli zapodasz mu na DIR 200 Hz to otrzymasz jeden obrót na sekundę.
  • Multimetr Fluke
  • #3
    Jacek Rutkowski
    Level 27  
    Driver TB6600 ma możliwość mikro kroków ustaw mu podział kroku na 8 wtedy przestanie szarpać a 1600Hz będzie dawać jeden obrót na sekundę. Ponadto jeśli chcesz uzyskać większy zakres obrotów bez spadku momentu obrotowego a nie chcesz zwiększać napięcia zasilającego to może się okazać że połączenie równoległe uzwojeń da większy zakres obrotów.
    Czas narastania prądu na uzwojeniu zależy od jego indukcyjności i napięcia a jeśli napięcie nie wzrasta to zmniejszenie indukcyjności tylko pomoże.
    Masz dostęp do oscyloskopu?
  • #4
    DRAZEK87
    Level 13  
    Korzystając z chwili wolnej poskładałem zestaw i przeprowadziłem kolejne testy. Tym razem wspierając się oscyloskopem.

    Silnik krokowy i jego sterowanie, kierunek, prędkość.

    Bazując na ustawieniach preskalera autora w/w artykułu uzyskałem przerwanie co 976,56Hz (16MHz/64/256) które wygląd tak:

    Code: c
    Log in, to see the code


    Generowany przebieg na wyjściu "CLOCK" jest ustalany przez zmienna "prędkość" która osiągając wartość 100 zmienia stan portu na przeciwny wytwarzając przebieg prostokątny o częstotliwości 4,88Hz; silnik wówczas wolno się kręci i dość mocno szarpie gdy sterownik ma ustawiony mikrokrok na 1.

    Zmiana prędkości do 50 daje przebieg 9,77Hz, zaś do wartości 1 przebieg 488,3Hz gdzie prędkość osi silnika jest znacząco szybsza za to drgania są nadal dość spore. Dopiero podwyższenie częstotliwości, a tym samym zmiana mikrokroku na sterowniku daje płynniejszy ruch, lecz nie w nieskończoność bo przekraczając pewien zakres Hz blokuje silnik; co sprawdziłem na przykładzie ustawiając preskaler na 8 i generując przerwanie co 7812,5Hz.
    Przy wartości 100 mam przebieg 39Hz; dla 50 jest 78Hz natomiast przy 1 generowany przebieg to 3,9kHz i przy tej już częstotliwości dla mikrokroku 1 sterownika silnik już nie chciał kręcić osia.

    Z obserwacji wynika tak jak tez piszecie że zwiększanie częstotliwości korzystniej wpływa na pracę silnika, gdyż pracuje ciszej, ruch jest bardziej "płynny", nie szarpie.

    Pytanie się rodzi jak wygląda przerwanie gdy uwzględnimy rampy, chciałbym to przetestować.
  • #5
    Jacek Rutkowski
    Level 27  
    DRAZEK87 wrote:
    Z obserwacji wynika tak jak tez piszecie że zwiększanie częstotliwości korzystniej wpływa na pracę silnika, gdyż pracuje ciszej, ruch jest bardziej "płynny", nie szarpie.

    Chyba kolego chodzi Ci o ilość mikrokroków?
    Jeśli chcesz uzyskiwać duże obroty > 500/minutę to lepszy będzie silnik DC lub BLCD z enkoderem ewentualnie silniki z mniejszą ilością kroków na obrót np. 18 ale wtedy płynności nie uzyskasz na wolnych obrotach.
    Sprecyzuj kolego DRAZEK87 jaki zakres obrotów i z jakim momentem Cię interesuje...
  • #6
    tmf
    Moderator of Microcontroller designs
    DRAZEK87 wrote:
    Z obserwacji wynika tak jak tez piszecie że zwiększanie częstotliwości korzystniej wpływa na pracę silnika, gdyż pracuje ciszej, ruch jest bardziej "płynny", nie szarpie.


    Musisz mieć coś ze sterowniem. Silnik krokowy nawet przy małych obrotach powinien pracować płynnie. W pewnym zakresie występują rezonanse mechaniczne, które tą płynność dla wybranych częstotliwości mogą popsuć, ale co do zasady nie powinno być tak jak piszesz. Powodów może być kilka. Przede wszystkim błędne sterowanie - impulsy muszą być podawane w tych samych odstępach. Stosujesz mikrokrok - z jakim podziałem? Jaki masz wybrany tryb zaniku prądu w sterowniku?
  • #7
    DRAZEK87
    Level 13  
    Może podejdźmy inaczej do tematu .... Końcowy efekt pracy silnika jaki chce uzyskać to patrz film :
    https://www.youtube.com/watch?time_continue=74&v=sl8cYPr-soY

    Mamy tam dwa silniki krokowe. Silnik główny o którym mowa w tym temacie i silnik przesuwu. Trudno mi określić jakie są tam max obroty ale z tego co doczytałem to bodajże 2200RPM ponadto widać dokładnie "rampowanie". Gwałtowny ruch silnika mógłby zerwać cienki drut stad powolne rozpędzanie i hamowanie jest konieczne.
    Z powyższego filmu wygląda to tak:
    Silnik krokowy i jego sterowanie, kierunek, prędkość.
    i mimo że jest kilka wersji projektu: mini, 200mm, 600mm i jeszcze większe oraz sporo na ten temat na http://www.ukcnc.net/
    mój projekt ma być inny ale zasada działania silnika podobna...

    W przedstawionym na filmie projekcje kontroler jest podłączany do komputera i sterowany za pomocą oprogramowania zainstalowanego na jednostce. Lecz w moim przypadku, przynajmniej na początku sterowanie ma być bez udziału komputera. Drivery jakie wybrałem przynajmniej wstępnie nie koniecznie ostatecznie czyli TB6600 w stosunku do sterowników w/w projektu są "gigantami", jak i sam główny silnik jest duży ale mój projekt tego wymaga.

    Najbliższy mi temat oprogramowania z którym dobrze sie zapoznałem to :
    https://www.elektroda.pl/rtvforum/topic3212515.html
    użyto tam silnika DC o którym też wspominacie lecz nie oczekuje tak dużych obrotów, a siły naciągu stad krokowy.

    Myślę że teraz będzie łatwiej ... napisać tak oprogramowanie dla kontrolera aby osiągnąć powyższy efekt.
  • #8
    Jacek Rutkowski
    Level 27  
    Tylko sam silnik krokowy ma stały moment obrotowy zależny od obrotów i nie da się w prosty sposób regulować siły naciągu na nim. Potrzeba czujnika momentu i na jego podstawie sterować obrotami lub też zastosować sprzęgło cierne i na nim regulować naciąg. W przedstawionym filmie raczej naciąg regulowany jest hamulcem na podawanym drucie a nie silnikiem...