Skocz do zawartości

[Teoria] Sterowanie silników skokowych


piotrek-787

Pomocna odpowiedź

W dzisiejszej automatyce i robotyce bardzo często, jako napęd stosuje się silniki skokowe. Silnik skokowy jest maszyną elektryczną, której zadaniem jest przekształcenie ciągu impulsów sterujących w dyskretne ruchy mechaniczne. Obecnie silniki skokowe dzieli się na trzy podstawowe rodzaje.

- magnetoelektryczne silniki skokowe,
- silniki skokowe o wirniku biernym,
- hybrydowe silniki skokowe.

W odróżnieniu od klasycznych silników prądu stałego, w których do wymuszenia obrotu wirnika wystarczy podanie napięcia na jego zaciski zasilające, w silnikach skokowych jest potrzebny układ elektroniczny odpowiedzialny za sterowanie pracą silnika. Taki układ można zbudować w oparciu o kilka układów scalonych z serii 74xx, jednak będzie on dość skomplikowany. Innym sposobem na zbudowanie układu sterującego pracą silnika skokowego jest wykorzystanie mikrokontrolera oraz kilku tranzystorów. Dzięki wykorzystaniu mikrokontrolera sterownik silnika staje się bardzo prosty w budowie, oraz daje możliwość sterowania pracą silnika skokowego w bardzo szerokim zakresie, jak zmiana kierunku obrotów, zmiana częstotliwości komutacji czy zmiana rodzaju komutacji.

Bipolarne sterowanie silnikiem skokowym.

Aby silnik skokowy można było sterować bipolarnie, w układzie sterownika dla każdego z pasma uzwojenia sterującego trzeba zastosować 4 tranzystory. Schemat połączenia przykładowego 2 pasmowego silnika skokowego ze sterownikiem dla sterowania bipolarnego jest przedstawiony na poniższym rysunku.

Komutacja każdego z pasm jest realizowana za pomocą mostka tranzystorowego, który składa się z dwóch gałęzi. Każda gałąź składa się natomiast z 2 tranzystorów. Każdą z gałęzi mostka steruje jedna linia portu I/O mikrokontrolera. W przypadku 2 pasmowego silnika skokowego potrzeba zatem 4 linii I/O mikrokontrolera, aby sterować praca silnika skokowego. W przypadku, gdy linia portu mikrokontrolera sterująca daną gałęzią jest w stanie wysokim wówczas przewodzi górny tranzystor, natomiast, jeśli linia portu mikrokontrolera jest w stanie niskim wówczas przewodzi dolny tranzystor. Jeśli w danym mostku będą przewodziły przeciwsobne tranzystory, czyli jeśli w jednej gałęzi przewodzi górny to w drugiej dolny i na odwrót wówczas przez pasmo silnika skokowego popłynie prąd. Jeśli w dwóch gałęziach jednego mostku będą przewodziły jednocześnie dwa górne lub dwa dolne tranzystory wówczas prąd przez dane pasmo nie popłynie. Poprzez odpowiednie przełączanie pasm silnika skokowego można uzyskać różne rodzaje komutacji. Przy takim układzie sterownika można sterować silnik skokowy komutacją symetryczną 1/2 i 1/4 oraz komutacją niesymetryczną 3/8. Na poniższym rysunku znajdują się przebiegi, dzięki którym można wyznaczyć stany linii sterujących mostkami na odpowiednich pasmach dla komutacji symetrycznej 1/2.

Poniższy rysunek przedstawia przebiegi dla wyznaczenia stanów linii sterujących dla komutacji symetrycznej 1/4.

Poniższy rysunek przedstawia przebiegi dla wyznaczenia stanów linii sterujących dla komutacji niesymetrycznej 3/8.

Na powyższych przebiegach można zauważyć, że całkowity okres sterowania wynosi 4 takty dla komutacji symetrycznej 1/2 i 1/4, oraz 8 taktów dla komutacji niesymetrycznej 3/8.

Na poniższym listingu jest przedstawiony przykładowy kod programu w języku C dla mikrokontrolera ATmega 32, który steruje pracą silnika skokowego.

#include<avr/io.h>
#include <avr/interrupt.h>

unsigned char tab[4]={8,2,4,1};  //Stałe dla komutacji 1/4
int i = 0;

SIGNAL(SIG_OUTPUT_COMPARE1A)	//Przerwanie od Timera T1
{
 PORTA = tab[i];				//Wysterowanie mostków
 i++;
 if(i==4)
 {
 	i = 0;
 }
} 


int main(void)
{

DDRA=0xFF;						//Ustawienie portu A mikrokontrolera jako wyjście

OCR1A = 30000;					//Określenie do ilu ma zliczać timer T1 zmiana tej wartości powoduje zmianę częstotliwości komutacji
TCCR1A = 0x00;							//Ustawienie trybu pracy timera T1
TCCR1B = (1 << WGM12) | (1 << CS12);	//Ustawienie trybu pracy timera T1
TIFR = (1 << OCF1A);					//Ustawienie flagi OCF1A w stan wysoki
TIMSK = (1 << OCIE1A);					//Uaktywnienie przerwania zgodne porównianie A dla timera T1

sei();									//Globalne zezwolenie na przerwanie

while(1)								//
{										//Pętla nieskończona
}										//

return(0);
}

Powyższy program steruje pracą silnika skokowego komutacją symetryczną 1/4. Przy tak napisanym programie silnik skokowy obraca się tylko w jednym kierunku ze stałą prędkością. Timer T1 został ustawiony w tryb pracy CTC, czyli zlicza on od 0 do wartości znajdującej się w rejestrze OCR1A. Ponieważ do rejestru OCR1A jest wpisana wartość 30000, a z ustawień rejestrów TCCR1A i TCCR1B wynika, że taktowanie Timera T1 jest równe fosc / 256, co przy założeniu, że mikrokontroler jest taktowany częstotliwością 16 MHz, wychodzi, że częstotliwość komutacji silnika skokowego wynosi 2,08 Hz. Zatem zmieniając wartość w rejestrze OCR1A zmianie ulega częstotliwość komutacji silnika skokowego, czyli jego prędkość. Przy zadeklarowaniu tablicy jak w powyższym przykładzie wirnik silnika skokowego będzie się obracał tylko w jedną stronę. Aby wirnik obracał się w drugą stronę, trzeba podawać impulsy w odwrotnej kolejności, czyli zadeklarować tablicę tak jak poniżej.

unsigned char tab[4]={1,4,2,8};

Aby zmienić rodzaj komutacji trzeba zadeklarować tablice innymi wartościami zgodnie z przebiegami podanymi na powyższych przebiegach. I tak dla komutacji symetrycznej 1/2 tablica powinna być zadeklarowana takimi wartościami:

unsigned char tab[4]={9,10,6,5};

Natomiast dla komutacji niesymetrycznej 3/8 tablica powinna zostać zadeklarowana takimi wartościami jak poniżej:

unsigned char tab[4]={8,10,2,6,4,5,1,9};

Unipolarne sterowanie silnika skokowego.

Aby silnik skokowy można było sterować unipolarnie musi on posiadać przynajmniej 4 pasma. W przeciwieństwie do sterowania bipolarnego w sterowaniu unipolarnym w układzie stopnia mocy wystarczy zastosować po jednym tranzystorze dla każdego z pasm uzwojenia sterującego. Przykładowy układ połączeń tranzystorów z 4 pasmowym silnikiem skokowym przedstawia poniższy rysunek.

Układ ten umożliwia sterowanie silnikiem skokowym komutacją symetryczną 1/2 i 1/4, oraz komutacją niesymetryczną 3/8.

Na poniższym rysunku jest przedstawiony przykładowy przebieg napięć na poszczególnych pasmach 4 pasmowego silnika skokowego dla komutacji symetrycznej 1/2.

Poniższy rysunek przedstawia przykładowe przebiegi napięć podawanych na pasma 4 pasmowego silnika skokowego dla komutacji symetrycznej 1/4.

Na poniższym rysunku jest przedstawiony przykładowy przebieg napięć na poszczególnych pasmach 4 pasmowego silnika skokowego dla komutacji niesymetrycznej 3/8.

Dla sterowania unipolarnego można wykorzystać ten sam program, co dla sterowania bipolarnego. Różnica będzie polegać tylko i wyłącznie w wartościach zadeklarowanej tablicy. Dla powyższego schematu oraz dla powyższych przebiegów napięć na poszczególnych pasmach wartości zadeklarowanej tablicy powinny być następujące:

unsigned char tab[4]={3,6,12,9};  //Komutacja symetryczna 1/2

unsigned char tab[4]={1,2,4,8};	// Komutacja symetryczna 1/4

unsigned char tab[4]={1,3,2,6,4,12,8,9};	// Komutacja niesymetryczna 3/8.

Podobnie jak dla sterowania bipolarnego także w sterowaniu unipolarnym zmianę kierunku obrotów wirnika silnika skokowego uzyskuje się poprzez odwrotne podawanie odpowiednich impulsów sterujących.

Różnica pomiędzy komutacją symetryczną a komutacją niesymetryczną jest taka, że dla komutacji symetrycznej silnik skokowy wykonuje z każdym taktem komutacji jeden skok znamionowy, natomiast dla komutacji niesymetrycznej dla każdego taktu komutacji silnik skokowy wykonuje obrót wirnika o wartość skoku wynosząca połowę wartości znamionowej.

Ponadto dla komutacji 1/4 silnik wykorzystuje tylko połowę swojej mocy znamionowej, ponieważ w danej chwile prąd płynie tylko przez jedno z pasm. Cała moc znamionowa silnika skokowego jest wytwarzana dla komutacji 1/2, ponieważ w tym rodzaju komutacji w danej chwili prąd płynie przez dwa pasma silnika skokowego.

Silnik.thumb.jpg.f24e7ecd1cbab313fcd834fa23902e9b.jpg

  • Lubię! 1
Link do komentarza
Share on other sites

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.