Re: Silnik krokowy a PC?
Masz problem? Zapytaj na forum elektroda.pl z bramką pl.misc.elektronika!
From: "ByCZy" <byczy_at_nospam_zeus.polsl.gliwice.pl>
Subject: Re: Silnik krokowy a PC?
Date: Wed, 24 Mar 1999 01:30:23 +0100
Moze mi to ktos zeskanowac i rzucic mi na skrzynke (max 1MB). Bede
wdzieczny.
Poza tym chodzi o silniczek ze stacji dyskow a nie jakis gigantyczny od
windy. :-)))))))
Moze ktos wie jak (moze w Delphi) napisac sterownik do czegos takiego?
Pawel Czarnecki napisał(a) w wiadomości: ...
Zajrzyj do EP9/97. Tam jest opisane cos takiego tyle,
ze moze nie do pudelka po zapalkach.
Poza tym w krokowe trzeba ladowac troche pradu
wiec sam LPT raczej nie wydoli.
pozdrawiam
PC
From: Olgierd Cybulski <cybulski_at_nospam_pkpf.if.uj.edu.pl>
Subject: Re: Silnik krokowy a PC?
Date: Thu, 25 Mar 1999 06:27:19 +0100
ByCZy wrote:
Moze mi to ktos zeskanowac i rzucic mi na skrzynke (max 1MB). Bede
wdzieczny.
Poza tym chodzi o silniczek ze stacji dyskow a nie jakis gigantyczny od
windy. :-)))))))
Moze ktos wie jak (moze w Delphi) napisac sterownik do czegos takiego?
Wystarczy podłączyć fazy do odpowiednich linii portu równoległego
(przez stosowne do pobieranego prądu wzmacniacze), najprościej
np. do pinów 2,3,4,5 (w przypadku silnika z czterema fazami).
Jeśli podłączysz fazę 1 do pinu 2, fazę 2 do pinu 3, 3 do 4 i 4 do 5,
to całe sterowanie będzie polegało na powtarzaniu określonej sekwencji
stanów portu 378H.
I tak dla ruchu silnika w prawo sekwencja wygląda następująco :
9,12,6,3, 9,12,6,3, 9,12,6,3 .... itd.
natomiast dla ruchu w lewo sekwencja jest podobna, lecz odwrócona w czasie :
3,6,12,9, 3,6,12,9, 3,6,12,9
Powtarzanie kolejnych stanów portu w stałych odstępach czasu
odpowiada ruchowi silnika ze stałą prędkością (w krokach/sek.)
Programowe sterowanie silnikiem w Borland-Pascalu można
zrealizować mniej-więcej tak :
{----------------------------------------------------------------}
uses crt;
var position:longint; {pozycja silnika}
const phase:array[0..3] of byte = (9,12,6,3);
procedure step_init(start_pos:longint); {procedura inicjalizuje stan licznika}
begin
position:=start_pos;
port[$378]:=position;
end;
procedure step_right; {procedura realizuje ruch w prawo o jeden krok}
begin
inc(position);
port[$378]:=position;
end;
procedure step_left; {procedura realizuje ruch w lewo o jeden krok}
begin
dec(position);
port[$378]:=position;
end;
begin
step_init(0);
repeat step_right; delay(1000) until keypressed;
while keypressed do readkey;
end.
{----------------------------------------------------------------}
Powyższy, przykładowy programik wykonuje ruch silnika w prawo ze stałą
prędkością 1 krok / sekundę , aż do wciśnięcia klawisza.
Jedynym problemem, jaki może wystąpić w porządnym i szybkim ruszaniu
silnikiem, jest ustalenie przebiegów czasowych.
W systemach operacyjnych "pseudowielozadaniowych" tzn. liniowych
z multitaskingiem, zadania mogą się nawzajem zakłócać, przez co pisanie
sterowników działających w czasie rzeczywistym może być kłopotliwe.
Np. taki gówniany system jak świndows potrafi z bliżej nieznanych przyczyn
zablokować wszystkie przerwania na czas rzędu kilkuset milisekund.
Oczywiście każdy silnik krokowy działający szybciej niż kilkanaście kroków
na sekundę przy takim potraktowaniu się wykopyrtnie.
Jeśli koniecznie chcesz całe sterowanie fazami zrealizować w ramach
standardowego PC, to pamiętaj, że do niezawodnego działania potrzebne
będą albo niesamowite sztuczki z przejmowaniem przerwań czasowych
w świndowsach, albo ustawienie maksymalnego priorytetu procesu
kontrolującego silnik. Może to nie być proste.
Natomiast pod starym dosem (6.22 i wcześniej) nie ma problemu,
można powiesić procedury STEP_LEFT lub STEP_RIGHT na przerwaniu czasowym,
wówczas ruch silnika będzie odbywał się "w tle", prędkość ruchu
można zmieniać poprzez zmianę częstości wywoływania przerwania,
dzięki czemu w prosty sposób można zrealizować ruch jednostajnie
przyspieszony/opóźniony.
Jeśli czegoś nie rozumiesz, zapytaj, byle na liscie
(skrzynka prywatna ostatnio mi szwankuje).
O.C.
-------------------------------------------------
wśród blasku laserów i szumu wentylatorów
-------------------------------------------------
From: "Kumex" <kumex_at_nospam_free.polbox.pl>
Subject: Re: Silnik krokowy a PC?
Date: Thu, 25 Mar 1999 09:08:04 +0100
Cosik mi sie widzi, ze jak podepniesz silniczek bezposrednio do pinow
na LPT, to dlugo Ci on nie pochodzi. Przeciazyc go chyba nie
przeciazysz (chyba sa tam jakies opory w szerg), ale pomysl o
przepieciach generowanych na indukcyjnosciach (uzwojenia silnika)
podczas przelaczania (prawie prostokatny sygnal). Trzeba zamontowac
zabezpieczenia, chocby diodowe.
Kumex.
From: "Kumex" <kumex_at_nospam_free.polbox.pl>
Subject: Re: Silnik krokowy a PC?
Date: Thu, 25 Mar 1999 10:45:00 +0100
Przepraszam przeoczylem wzmianke o wzmacniaczach.
Kumex.
Olgierd Cybulski napisał(a) w wiadomości:
<36FA159E.2FF9_at_nospam_pkpf.if.uj.edu.pl>...
|Kumex wrote:
|
|> Cosik mi sie widzi, ze jak podepniesz silniczek bezposrednio do
pinow
|> na LPT, to dlugo Ci on nie pochodzi.
|
|Mówisz do mnie, czy do kogoś z przedprzedmówców ?
|Jeśli do mnie, to wiedz, że napisałem wyraźnie,
|iż silniczek należy podpiąć "przez stosowne wzmacniacze".
|
|> Przeciazyc go chyba nie
|> przeciazysz (chyba sa tam jakies opory w szerg), ale pomysl o
|> przepieciach generowanych na indukcyjnosciach (uzwojenia silnika)
|> podczas przelaczania (prawie prostokatny sygnal). Trzeba zamontowac
|> zabezpieczenia, chocby diodowe.
|
|To zależy od silnika. Z początku też tak myślałem, lecz
|zmieniłem zdanie testując kilka silników krokowych.
|Indukcyjność silników bywa bardzo różna. Nie jest to
|żadną regułą, ale przeważnie silniki niskonapięciowe
|o średniej mocy mają indukcyjnośc prawie zerową,
|natomiast silniki wysokonapięciowe mają indukcyjność
|na tyle dużą, że diody (lub inne zabezpieczenia) są
|konieczne, to samo z silnikami mikromocowymi.
|To samo wzbudzenej ruchem wału siły elektromotorycznej -
|w przypadku silników o prądach ok. 1 A i napięciach
|fazy 12 V można ją zaniedbać, co oznacza, że wszystkie
|uzwojenia silnika można traktować jako opór czysto rzeczywisty
|(omowy) dopóki nie używamy do sterowania tranzystorów impulsowych
w.cz.
|W portach równoległych prędkość narastania musi być celowo
ograniczona
|przez producenta (czasem nawet kondensatorem !), po to, by uniknąć
|niepożądanych oscylacji po drugiej stronie kabla.
|(notabene, np.wzmacniacze wyjściowe do RS-485 są produkowane
|w różnych wersjach o różnych parametrach slew-rate, z tych samych
|co wyżej względów, ogranicza to również maksymalną prędkość
transmisji)
|
|Jeszcze raz zaznaczam: nawet jeśli uzwojenia silnika mają
|pomijalnie małą indukcyjność, w żadnym wypadku nie oznacza
|to, że taki silnik można bezpiecznie podpiąć do portu równoległego.
|Bezpośrednio można podłączać tylko i wyłącznie silniki
|posiadające wszystkie poniższe własności :
|
|1. Napięcie pracy 3...5 V
|2. Prąd fazy < 4 mA (zależy od portu)
|3. Odpowiednio mała indukcyjność (lub diody zenera 5V2
| połączone równolegle z każdym uzwojeniem)
|
|O.C.
|
|-------------------------------------------------
|wśród blasku laserów i szumu wentylatorów
|-------------------------------------------------
From: Olgierd Cybulski <cybulski_at_nospam_pkpf.if.uj.edu.pl>
Subject: Re: Silnik krokowy a PC?
Date: Thu, 25 Mar 1999 11:53:18 +0100
Kumex wrote:
Cosik mi sie widzi, ze jak podepniesz silniczek bezposrednio do pinow
na LPT, to dlugo Ci on nie pochodzi.
Mówisz do mnie, czy do kogoś z przedprzedmówców ?
Jeśli do mnie, to wiedz, że napisałem wyraźnie,
iż silniczek należy podpiąć "przez stosowne wzmacniacze".
Przeciazyc go chyba nie
przeciazysz (chyba sa tam jakies opory w szerg), ale pomysl o
przepieciach generowanych na indukcyjnosciach (uzwojenia silnika)
podczas przelaczania (prawie prostokatny sygnal). Trzeba zamontowac
zabezpieczenia, chocby diodowe.
To zależy od silnika. Z początku też tak myślałem, lecz
zmieniłem zdanie testując kilka silników krokowych.
Indukcyjność silników bywa bardzo różna. Nie jest to
żadną regułą, ale przeważnie silniki niskonapięciowe
o średniej mocy mają indukcyjnośc prawie zerową,
natomiast silniki wysokonapięciowe mają indukcyjność
na tyle dużą, że diody (lub inne zabezpieczenia) są
konieczne, to samo z silnikami mikromocowymi.
To samo wzbudzenej ruchem wału siły elektromotorycznej -
w przypadku silników o prądach ok. 1 A i napięciach
fazy 12 V można ją zaniedbać, co oznacza, że wszystkie
uzwojenia silnika można traktować jako opór czysto rzeczywisty
(omowy) dopóki nie używamy do sterowania tranzystorów impulsowych w.cz.
W portach równoległych prędkość narastania musi być celowo ograniczona
przez producenta (czasem nawet kondensatorem !), po to, by uniknąć
niepożądanych oscylacji po drugiej stronie kabla.
(notabene, np.wzmacniacze wyjściowe do RS-485 są produkowane
w różnych wersjach o różnych parametrach slew-rate, z tych samych
co wyżej względów, ogranicza to również maksymalną prędkość transmisji)
Jeszcze raz zaznaczam: nawet jeśli uzwojenia silnika mają
pomijalnie małą indukcyjność, w żadnym wypadku nie oznacza
to, że taki silnik można bezpiecznie podpiąć do portu równoległego.
Bezpośrednio można podłączać tylko i wyłącznie silniki
posiadające wszystkie poniższe własności :
1. Napięcie pracy 3...5 V
2. Prąd fazy < 4 mA (zależy od portu)
3. Odpowiednio mała indukcyjność (lub diody zenera 5V2
połączone równolegle z każdym uzwojeniem)
O.C.
-------------------------------------------------
wśród blasku laserów i szumu wentylatorów
-------------------------------------------------
From: "Paweł" <biuro_at_nospam_prolog.pl>
Subject: Re: Silnik krokowy a PC?
Date: Wed, 24 Mar 1999 19:52:23 GMT
Ja też jestem zainteresowany
Paweł
pawel.w_at_nospam_prolog.pl
Moze ktos wie jak (moze w Delphi) napisac sterownik do czegos takiego?