background image

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

background image

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

.

background image

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.

background image

 

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!!

__________________

background image

 

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.

background image

-- 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