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:
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
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;
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:
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.
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"
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 .
Strzałka w prawo, dioda pomocnicza zapalona co przekłada sie na stan wysoki na wejście DIR drivera.
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.
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:
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
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;
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:
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.
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"
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 .
Strzałka w prawo, dioda pomocnicza zapalona co przekłada sie na stan wysoki na wejście DIR drivera.
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.
