Nazwa użytkownika
Pamiętaj moje logowanie?
Hasło
Zaloguj się
Zarejestruj się
/
Nie pamiętam hasła
Overclockers.pl
Zarejestruj się
Pomoc
Galeria
Użytkownicy
Kalendarz
Dzisiejsze Posty
Szukaj
OCForum.pl
>
Modyfikacje
>
Elektronika
Silniki krokowe i sterowanie portem LPT
Elektronika Zagadnienia zw. z elektroniką pod każdą postacią.
Narzędzia wątku
Wygląd
Sun 13th May 2007, 01:19
#1 (permalink)
Ravender
Początkujący
Na forum od: 18 Mar 2007
Skąd: Łódź
Wiek: 25
Posty: 27
Siła Reputacji: 2
Reputacja: 24
Mój sprzęt
Benchmarki
Silniki krokowe i sterowanie portem LPT
Przedstawię tutaj fragmenty mojego artykułu na temat unipolarnych silników krokowych (całość
TUTAJ
). Jest to wstęp do zbudowania własnymi siłami
urządzeń sterowanych z komputera. Mam nadzieję że docenicie trud włożony w jego napisanie (punkty reputacji mile widziane
). Zapraszam do lektury
Zastrzegam, że nie ponoszę odpowiedzialności za ewentualne szkody. Wszelkie czynności (podłączanie obwodów do portu, używanie
programów itp) proszę wykonywać na własną odpowiedzialność
Silnik krokowy (ang. stepper motor) jest to silnik elektryczny, w którym wirnik nie obraca się ruchem ciągłym, lecz wykonuje za każdym razem ruch obrotowy o
ściśle ustalonym kącie. Dzieje się tak ponieważ do jego zacisków doprowadzany jest ciąg impulsów sterujących, a nie ciągłe (stałe bądź zmienne) napięcie.
Można je spotkać praktycznie we wszystkich urządzeniach elektrycznych, w których wymagana jest pewna precyzja obrotu, przesuwu lub innego rodzaju ruchu
(suwnice w drukarkach, skanerach, wycieraczki w samochodzie, cd-romy, fdd, zabawki i milion innych urządzeń).
Wyróżniamy wiele typów silników krokowych. Ze względu na łatwiejszy sposób sterowania, omówię tylko budowę silnika unipolarnego.
W najprostszej postaci silnik krokowy unipolarny składa się z wirnika, na którym znajdują się dwa bieguny N i S. Wokół wirnika umieszczone są cewki. Podając
odpowiednie impulsy na nie, te "aktywują się" i wirnik ustawia się w odpowiedniej pozycji. Przedstawia to rysunek poniżej:
Silnik unipolarny możemy rozpoznać po pięciu bądź sześciu przewodach. W przypadku pięciu przewodów, jeden z nich jest przewodem zasilającym a cztery
sygnałowymi. W przypadku sześciu przewodów, dwa są zasilającymi (z reguły i tak sie je łączy razem). Jeśli silnik ma cztery przewody, to znaczy że jest to
silnik bipolarny. Jego sterowanie jest trudniejsze i nie będę go tutaj omawiać.
Sterowanie silnikiem unipolarnym może odbywać się na kilka sposobów.
Pojedyncze krokowanie - w tym przypadku impulsy podaje się pojedynczo na kolejne cewki. Aby wirnik wykonał pełen obrót, należy sekwencję powtórzyć 12
razy. Jeden krok (impuls) to 7.5 stopnia. W dużym uproszczeniu koncepcję takiego sterowania przedstawia rysunek niżej:
Zwiększony moment obrotowy - w tym przypadku impulsy podaje się na dwie sąsiednie cewki. Silnik dzięki temu jest "silniejszy".
Nazwa użytko
Sterowanie półkrokowe - w tym przypadku impulsy podaje się na zmianę na jedną i dwie cewki. Dzięki temu uzyskujemy większą rozdzielczość (silnik może
przyjmować wartości pośrednie ułożenia wirnika). Silnik wykonuje pełen obrót w 96 krokach. Jeden krok to 3.75 stopnia (oczywiście te parametry zależą od
konstrukcji silnika i mogą się różnić).
Należy jeszcze wspomnieć o dość praktycznej kwestii. Po wyjęciu silnika ze starego skanera, początkowo trudno ustalić które przewody prowadzą do cewek, a
które są przewodami zasilającymi. Przewody z silników krokowych najczęściej wychodzą w dwóch rzędach po trzy przewody (przy silnikach 6-przewodowych).
Najczęściej jest tak, że jeden rząd zasila dwie cewki, a przewód środkowy jest głównym przewodem zasilającym. W przypadku mojego silnika sytuacja wygląda
tak:
Port LPT
Naszym silnikiem będziemy sterować przy pomocy portu LPT, ponieważ najłatwiej go zaprogramować. Posiada osiem wyjść, więc spokojnie możemy podłączyć
pod niego np. osiem diodek LED lub dwa silniki krokowe.
Patrząc na takie złącze od frontu, czerwone kropki to właśnie wyjścia, natomiast niebieskie piny to ziemia (minus). Są one ze sobą połączone wiec zasadniczo
mógłby być tam równie dobrze jeden wielki pin
.
Na samym początku proponuję podłączenie do portu diody led. Sam skonstruowałem sobie specjalną końcówkę z ośmioma diodami. W razie potrzebny
podłączam ją pod port i od razu widzę jaki stan jest na którym wyjściu:
Moje diody to zwykłe czerwone na napięcie około 2V. Dołączyłem do nich rezystory 150R, aby nie uszkodzić diody a tym bardziej samego lpt:
Programowanie portu
Zasada sterowania portem jest stosunkowo prosta. Każdy z ośmiu pinów wyjściowych ma wagi, które są potęgą liczby 2. Pin D0 ma wagę 2^0 czyli 1. Port D7
ma wagę 2^7 czyli 128. Chcąc zapalić diodę, musimy ustawić pin do którego jest podłączona w stan wysoki, czyli jedynkę. Aby zapalić np. diod D2, wystarczy
wysłać na port liczbę 4, bo taką wagę ma pin D2. Aby zapalić diodę D6, na port trzeba wysłać liczbę 64. By zapalić diody tak jak na rysunku niżej (D1, D3, D4),
musimy wysłać na port liczbę równą sumie wag pinów, które chcemy ustawić w stan wysoki. Czyli 2+8+16 = 36. Dlatego też, w celu zapalenia wszystkich
diodek, wysyła się liczbę 255, aby zgasić wszystkie diody, zero. Prawda że proste?
W Windows Xp nie ma bezpośredniej możliwości obsługi portu LPT (obsług ę przeprowadza się poprzez sterownik). Dlatego aby ułatwi sobie życie, powstał
program
UserPort
. Plik UserPort.sys umieszczamy w "C:\WINDOWS\system32\drivers". Następnie uruchamiamy program. Pojawi si ę okienko w którym
wystarczy nacisnąć przycisk START. Od tej pory mamy możliwość wysyłania poleceń bezpośrednio do portu lpt.
Napisałem malutki programik, który umożliwia włączanie i wyłączanie diodek. Wystarczy zaznaczać odpowiednie "ptaszki" by dioda na danym pinie zapaliła się.
Po prawej wyświetla się suma wag zapalonych diodek. Po zamknięciu programu na port wysyłane jest zero. Można go ścignąć
STD
.
screen (okno programu i zdjęcie zapalonych diodek)
Więcej programów można znaleźć na googlach.
Projekt interface'u
O ile z podłączeniem diod do LPT większego problemu nie ma, o tyle z podłączeniem silnika pojawia się mały problem. Cewki w nim się znajdujące, pobierają
stosunkowo duży prąd. Dlatego nie można silnika podłączyć bezpośrednio do portu, gdyż groziłoby to jego uszkodzeniem (a całkiem możliwe, że i płyty
głównej). Potrzebny będzie wzmacniacz, który dostarczy potrzebnej silnikowi energii. Najprostszym sposobem będzie zastosowanie scalonego układu ULN2003.
Nie będę się zbytnio rozpisywał na temat działania tej magicznej kostki. Powiem tylko, że w swojej strukturze posiada wzmacniacze (układ Darlingtona) i diody
zabezpieczające. Ma siedem wejść i siedem wyjść. Jego starszym bratem jest ULN2803, który ma osiem wejść i osiem wyjść. Układ który proponuję nie jest
idealny. W celu maksymalnego uproszczenia zrezygnowałem z tzw izolacji galwanicznej. Chodzi tutaj o to, że obwód silnika jest elektrycznie połączony z portem
lpt. Przy jakiś problemach typu zwarcie, spalenie silnika itp.. uszkodzeniu może ulec również port.
Schemat połączeń wygląda tak:
Jak widać, cztery przewody z portu lpt (D0, D1, D2, D3) poprowadzone są na cztery nóżki wejściowe układu 2003 (nóźki 1,2,3,4). Z wyjść układu 2003 (nóżki
13,14,15,16) sygnał wchodzi na cewki silnika krokowego.
Cały układ połączyłem na stole mojego biurka, wg powyższego schematu. Najpierw cztery kabelki pomiędzy lpt a uln2003. Potem z wyjść uln-a na silnik. Do
tego kabelki od zasilania i masy. W niektórych miejscach konieczne się okazało włożenie paru papierków między piny, bo groziły zwarciem. Całość podłączyłem
do zasilacza 12V na prąd stały oczywiście.
A tutaj parę zdjęć.
Na szybko napisałem w VB program sterujący tym silnikiem przy wykorzystaniu biblioteki inpout32. Dla osób, które nie potrafią programować pozostaje
wygrzebanie z internetu gotowych programów do sterowania takim silnikiem. Jeden z nich można znaleźć
TUTAJ
Natomiast
TUTAJ
umieściłem krótki filmik przedstawiający silnik w czasie pracy, gdy podawałem na niego z komputera odpowiednie wymyślone przeze mnie
sekwencje ruchów.
Na zakończenie
Mam nadzieję, że chociaż trochę zainteresowałem cię drogi czytelniku tematyką silników krokowych. Wiedza którą starałem się przekazać może służyć do
zbudowania własnego urządzenia o którym dawno marzyłeś (np robot, własna frezarka,albo obrotowa figurka na biurko
). By może na pierwszy rzut oka
wszystko wydaje się do trudne i zawiłe, ale w rzeczywistości nie jest. Wg mnie warto zainwestować swój czas, w zbudowanie chociaż prostego układu by zacząć
własne eksperymenty.
__________________
http://wkretak.pl
- diody LED i oświetlenie dla początkujących.
http://www.trener.xt.pl/
- moja obecna konfiguracja PC
Ostatnio edytowane przez Ravender : Sun 13th May 2007 o 01:53.
Sat 19th May 2007, 03:50
#2 (permalink)
Excray
Elektronik
Jako ciekawostkę dodam że istnieją również silniki krokowe w których liczba cewek jest nieparzysta. Na przykład są 3 bądź 6 cewek. Generalnie sterowanie jest
zbliżone.
__________________
IBM T23 - zatrzymał spadającą szafkę - R.I.P.
Obecnie
IBM T30
PC w kącie stoi i kurzem zarasta.
Na forum od: 5 Sep 2004
Skąd: Lublin
Wiek: 27
Posty: 671
Siła Reputacji: 4
Reputacja: 15
Mój sprzęt
Benchmarki
Sat 19th May 2007, 13:53
#3 (permalink)
chase1
:)
Moderator
Na forum od: 22 Jun 2004
Wiek: 26
Posty: 9 520
Siła Reputacji: 4
Reputacja: 50
Mój sprzęt
Benchmarki
Cytat:
Napisał/a Excray
liczba cewek jest nieparzysta. Na przykład są 3 bądź
6
cewek
a to dobre :P
__________________
Spinna bejbe
Moje bejbe
Sat 19th May 2007, 15:15
#4 (permalink)
Excray
Elektronik
Na forum od: 5 Sep 2004
Skąd: Lublin
Wiek: 27
Posty: 671
Siła Reputacji: 4
Reputacja: 15
Mój sprzęt
Benchmarki
Eeee, yyyy. Ja już myślę cyfrowo
Parzyste to dla mnie liczny 2,4,8,16...
6, 10, 12 i tak dalej nie są parzyste
__________________
IBM T23 - zatrzymał spadającą szafkę - R.I.P.
Obecnie
IBM T30
PC w kącie stoi i kurzem zarasta.
Fri 25th May 2007, 17:55
#5 (permalink)
Ravender
Początkujący
Na forum od: 18 Mar 2007
Skąd: Łódź
Wiek: 25
Posty: 27
Siła Reputacji: 2
Reputacja: 24
Mój sprzęt
Benchmarki
Excray.. tez cos takiego mam
.. Dla mnie 64, 256 czy 1024 to zdecydowanie okrągłe liczby
.
__________________
http://wkretak.pl
- diody LED i oświetlenie dla początkujących.
http://www.trener.xt.pl/
- moja obecna konfiguracja PC
Thu 12th July 2007, 21:44
#6 (permalink)
maciek001
Nowicjusz
Jeżeli komuś się to przyda to mogę coś zaprojektować prostego co będzie posiadało taką separację galwaniczną ale musi ktoś poprosić bo jakoś mnie nie
ciągnie do tego ale jak ktoś poprosi ładnie to mu zaprojektuje :P
Zapomniałem dodać że postaram się to zrobić dobrze ale na 100% nie będę pewny!!
__________________
Na forum od: 11 Jul 2007
Skąd: Tarnów
Wiek: 18
Posty: 12
Siła Reputacji: 1
Reputacja: 10
Mój sprzęt
Benchmarki
Ostatnio edytowane przez maciek001 : Thu 12th July 2007 o 23:13.
Mon 27th August 2007, 09:18
#7 (permalink)
Puma[JFK]
Hardcore użytkownik
Na forum od: 17 Sep 2004
Posty: 3 977
Siła Reputacji: 4
Reputacja: 64
Mój sprzęt
Benchmarki
Niedawno zabrałem się za silniki krokowe. Jak na razie mam opanowane sterowanie trzema silnikami w układzie. Napisałem program do sterowania dwoma w
układzie x,y za pomocą klawiatury numerycznej. Potem dojdzie trzeci, ale to już banał, jedynie powtarzanie procedur z innymi zmiennymi. Jeśli ktoś by chciał
program to proszę dać mi znać.
Dodam jeszcze, że do jednego portu LPT można podłączyć nie 2 a 3 silniki krokowe:
Silnik 1 - piny 2,3,4,5
Silnik 2 - piny 6,7,8,9
Silnik 3 - piny 1,14,16,17(adresowanie portu jest nieco inne - port jest dostępny po offsecie 02h, czyli dodajemy 2 do portu - zamiast &H378 jest &H37A)
Pin 1 daje małe napięcie, ale ULN2003 rozwiązuje sprawę. W planach zaprojektowanie płytki z nieco bardziej zaawansowaną elektroniką do obsługi 5 silników z
jednego LPT.
Sun 27th January 2008, 21:45
#8 (permalink)
maciek001
Nowicjusz
Na forum od: 11 Jul 2007
Skąd: Tarnów
Wiek: 18
Posty: 12
Siła Reputacji: 1
Reputacja: 10
Mój sprzęt
Benchmarki
Obecnie właśnie jestem w fazie wykonania układów elektronicznych do sterowania silnikami krokowymi. Jeżeli ktoś ma jakieś pytania postaram się pomóc.
Trzymajcie kciuki! Z tego co wiem to można sterować 4 silnikami krokowymi (po 2 piny z LPT na jeden silnik) tylko trzeba zrobić sterownik do każdego silnika.
__________________
Wed 5th March 2008, 20:26
#9 (permalink)
Piotrsikora
Nowicjusz
Na forum od: 5 Mar 2008
Wiek: 20
Posty: 1
Siła Reputacji: 1
Reputacja: 10
Mój sprzęt
Benchmarki
Witam mam pytanie wymontowałem silniczek ze starego skanera jest on praktycznie identyczny z tym jaki zastosowałeś ale z ta różnica ze u mnie na zasilaczu
skanera jest napisane AC/DC adapter 24V i nie wiem czym mogę zastosować ten zasilacz czy muszę szukać innego.
Druga sprawa to czy ktoś ma napisany do tego jakiś program sterujący bo niestety z programowania nie wiele potrafię.
«
Poprzedni wątek
|
Następny wątek
»
Użytkownicy aktualnie czytający ten wątek: 1 (0 użytkownik i 1 gości)
Zasady Postowania
Nie Możesz wysyłać nowe wątki
Nie Możesz wysyłać odpowiedzi
Nie Możesz wysyłać załączniki
Nie Możesz edytować swoje posty
vB code
jest Wł.
Uśmieszki
są Wł.
kod
[IMG]
jest Wł.
kod HTML jest Wył.
Skocz do forum
Elektronika
Elektronika
Idź
Podobne wątki
Wątek
Autor wątku
Forum
Odpowiedzi
Ostatni Post / Autor
sterowanie przekaznika 230V z bramki TTL
mirkok1
Elektronika
1
Fri 29th April 2005 22:18
sterowanie pecetem urzadzen
ginger78
Elektronika
2
Sat 6th November 2004 19:00
sterowanie PC-tem i pomiar różnych wartości
vsm_g
Vmody
2
Mon 6th September 2004 19:36
sterowanie diodami przez lpt
Anonymous
Elektronika
4
Sun 5th September 2004 11:21
Port LPT
Anonymous
Elektronika
1
Sun 5th September 2004 11:04
Czasy w strefie GMT +1. Teraz jest 22:44.
-- AlienBlue
-- AlienBlue
-- Polski
-- Polski
Kontakt - Overclockers.pl - Archiwum - Na górę
Powered by: vBulletin Version 3.6.5
Copyright © 2000 - 2008, Jelsoft Enterprises Ltd.
Copyright © 2003 - 2007, Overclockers.pl. All rights reserved.
Monitoring by
Stat24.pl