Aktyw Forum

Zarejestruj się na forum.ep.com.pl i zgłoś swój akces do Aktywu Forum. Jeśli jesteś już zarejestrowany wystarczy, że się zalogujesz.

Sprawdź punkty Zarejestruj się

Sterowanie krokowym - mikroprocesor a kontroler

windman
-
-
Posty:64
Rejestracja:16 wrz 2003, o 21:18
Lokalizacja:Ruda Śląska
Kontaktowanie:
Sterowanie krokowym - mikroprocesor a kontroler

Postautor: windman » 5 lip 2008, o 05:55

Witam,
Jestem początkujący w temacie więc pytanie może Wam się wydać śmieszne.

Mam silnik krokowy z pięcioma wyprowadzeniami.
Wychodzi na to, że potrzebne będą 4 wyjścia z mikroprocesora (Atmega168) + np.U LN2803 aby nim w pełni sterować.

Czy można takim silnikiem sterować wykorzystując na przykład tylko jedno wyprowadzenie, czy dwa...

Wydaje mi się, że do mikroprocesora będzie trzeba podłączyć kontroler takiego silnika. Tylko w jaki sposób się takie coś programuje. Trzeba nauczyć kontorler, że jak procesor wyśle polecenie X to silnik ma się zachować w odpowiedni sposób? Jak to wygąda?

Pozdrawiam

Awatar użytkownika
pajaczek
Moderator
Moderator
Posty:2653
Rejestracja:24 sty 2005, o 00:39
Lokalizacja:Winny gród

Postautor: pajaczek » 5 lip 2008, o 10:25

Przydały by się jakieś dokładniejsze informacje nt. tego silnika, by jednoznacznie określić "czy wystarczy"... a czy można... oczywiście że można sterować wykorzystując tylko 1 wyprowadzenie (oczywiście mam na myśli 1 wyjście ULN na 1 biegun silnika).

A kontroler... zależy co to za kontroler. Przeważnie masz 1 pin od kierunku, 1-2+ od trybu pracy (krokowa, falowa, półkrokowa, czasem mikrokrokowa) i 1 pin od "taktowania" kroków.
Osobiście polecam zrobienie tego tylko na ULN... nauczysz się programować ATMege + jak działają silniki.

Ps. ATMege określa się raczej mianem mikrokontroler (uC), nie mikroprocesor (uP). Jest to oczywiście mikroprocesor, ale też z wbudowaną pamięcią programu oraz źródłem taktowania. Tak jak piszesz nie jest błędem, przyjęło się jednak inaczej.

windman
-
-
Posty:64
Rejestracja:16 wrz 2003, o 21:18
Lokalizacja:Ruda Śląska
Kontaktowanie:

Postautor: windman » 5 lip 2008, o 12:50

Przydały by się jakieś dokładniejsze informacje nt. tego silnika, by jednoznacznie określić "czy wystarczy"...
http://helitp.dyndns.biz/material/motores/pm35s048.pdf - wszystko na temat tego silnika
Osobiście polecam zrobienie tego tylko na ULN... nauczysz się programować ATMege + jak działają silniki.
Co do programowania ATMegi to mam płytkę, która się nazywa Arduino www.arduino.cc.
Oparta jest właśnie na Atmedze168, a programuje się ją w języku niemal identycznym jak C++. Więc z takim programowaniem nie ma problemu. Na tej płytce mam 14 wyjść, więc mogę bezpośrednio do nich podpiąć do 3 takich silników i 2 wyjścia mam jeszcze wolne.

Interesuje mnie głównie, czy muszę koniecznie wykorzystać 4 wyjścia mikrokontrolera (mojej ATMegi) aby mieć pełną kontrolę nad silnikiem (czyli wykonać jeden krok, z 48 jakie musi wykonać silnik na 360st)

Ja chciałbym wiedzieć, jaką funkcję pełni kontroler silknika krokowego i jakie sygnały wysyła do niego procesor (moja ATMega168)

Awatar użytkownika
pajaczek
Moderator
Moderator
Posty:2653
Rejestracja:24 sty 2005, o 00:39
Lokalizacja:Winny gród

Postautor: pajaczek » 5 lip 2008, o 13:15

Typowy kontroler, czyli układ dedykowany do sterowania silnikiem krokowym, interpretuje sygnały sterujące (typu impuls na każdy krok, Hi/Lo na kierunek obrotów), i zajmuje się całym sterowaniem silnika, czyli podaniem odpowiednich prądów na uzwojenia, zwykle kompleksowy sterownik ma wbudowany mostek by móc sterować większymi prądami, miewa również zabezpieczenia napięciowe/prądowe/zwarciowe/termiczne.

Plytke programujesz pewnie w C. Możliwości C++, a więc obiektowość (programowanie OO) zostawmy raczej większym układom, w 8 bit to się raczej nie kalkuluje.

Czy musisz użyć 4 wyjść... nie, nie musisz, możesz użyć czegoś co się nazywa expanderem wyjść, i jest podłączane np. przez magistralę I2C. Wówczas użyjesz 2 wyjść ATMegi, a sterować możesz 2 silnikami na każdy użyty expander (zakładam najpopularniejsze 8 bitowe). Tylko czy to ma sens?? Powiedz mi dlaczego chcesz tak ograniczyć liczbę użytych wyjść, bo może da się to zrobić inaczej.

I na koniec coś o silniku. Bez większych problemów możesz przyjąć, że wystarczy jedno wyjście ULN na biegun silnika.
Dane podają co prawda 600mA dla silnika i 500mA dla ULN, ale w układzie bipolarnym a skoro i tak masz 5 wyprowadzeniowy, więc do pracy bipolarnej musiałbyś go przerobić oraz zastosować ograniczenie. Przy pracy unipolarnej i tak nie osiągniesz 500mA prądu (nie przekraczając innych parametrów).

windman
-
-
Posty:64
Rejestracja:16 wrz 2003, o 21:18
Lokalizacja:Ruda Śląska
Kontaktowanie:

Postautor: windman » 5 lip 2008, o 14:38

Typowy kontroler, czyli układ dedykowany do sterowania silnikiem krokowym, interpretuje sygnały sterujące (typu impuls na każdy krok, Hi/Lo na kierunek obrotów)
No właśnie o to pytałem...
Jeszcze jedna wątpliwość...
W przypadku mojego silnika aby "krokować" muszę podawać impulsy na kolejne cewki.
Krok1: 1000
Krok2: 0100
Krok3: 0010
Krok4: 0001
Aby wykonać pełen obrót sekwencję trzeba powtórzyć 12 razy.
W przypadku mojej ATMegi i 4 jej wyjść nie ma z tym problemów.
Ale co musi ATMega wysłac (przy urzyciu jednego wyjścia )do takiego kontrolera aby ten wykonał to samo? To mnie nurtuje!
Czy musisz użyć 4 wyjść... nie, nie musisz, możesz użyć czegoś co się nazywa expanderem wyjść, i jest podłączane np. przez magistralę I2C. Wówczas użyjesz 2 wyjść ATMegi,
O I2C już coś czytałem. Jak rozumiem każdy expander ma przydzielony adres, czy tak?
Dlaczego 2 wyjśia? Co leci jednym a co drugim? I może ktoś podać przykład jak takie coś jest podłączone?

Za dotychczasową pomoc wielkie dzięki.
Aha pajączek pytasz dlaczego ograniczam tak te wyjścia, chcę się chegoś nowego nauczyć. Na razie nie znajduję zastosowania do wszystkich moich 14 wyjść, ale może kiedyś nadejdzie taki moment.

Awatar użytkownika
pajaczek
Moderator
Moderator
Posty:2653
Rejestracja:24 sty 2005, o 00:39
Lokalizacja:Winny gród

Postautor: pajaczek » 5 lip 2008, o 16:57

W przypadku dedykowanego kontrolera musisz podac 48 impulsów, np. z generatora PWM.

I2C: clk i data. Tak, każdy ma swój adres, adresy często można ustawiać w pewnych granicach... np. urządzenie ma adres bazowy 128 (odczyt) i 129 (zapis), oraz 2 linie adresujące. Co umożliwia ustawienie (wykorzystanie) 4 identycznych urządzeń na jednej szynie I2C. Zwykle też różne urządzenia miewają różne zakresy bazowych adresów, dzięki temu np. na jednej szynie można użyć RTC, pamięć i np. 4 expandery. Szczegóły jednak zawsze trzeba sprawdzić w datasheecie.

Co do ograniczania wyjść... pytam, gdyż można było by zastosować jeszcze zatrzaski (np 245) i użyć 4 linie "danych" (czyli sterowanie cewek) oraz x linii adresujących zatrzaski. Wówczas np. na 8 liniach uC możesz sterować 4 silnikami. Na 10 liniach już 6 silnikami (chyba że jeszcze dodatkowo zastosujemy demultiplexery linii adresujących)... wówczas to już ho ho... (teoretycznie) odpowiednio 16 i 64 silniki ;) A jakby jeszcze demultiplexer linii sterujących... ;p

windman
-
-
Posty:64
Rejestracja:16 wrz 2003, o 21:18
Lokalizacja:Ruda Śląska
Kontaktowanie:

Postautor: windman » 5 lip 2008, o 20:43

W przypadku dedykowanego kontrolera musisz podac 48 impulsów, np. z generatora PWM.
W takim razie dedykowany kontroler mnie najbardziej interesuje...

Piszesz, żę 48 impulsów, czyli tyle samo ile muszę wysłać z Atmegi na pełen obrót, tylko, że z Atmegi wysyłam to 4 wyjściami.

Rozpatrzmy jeden krok (Atmega bez kontrolera):
Wyjście1: 1
Wyjście2: 0
Wyjście3: 0
Wyjście4: 0
Wysyłane jednocześnie (niejako równolegle)

Czy to znaczy, że używając jednego wyjścia Atmegi i kontrolera wysyłam: 1000 (szeregowo)?
Czy tak to działa?

Znalezłem też sterownik na i2C - AVT-860.
Mam jedno pytanie... czy dobrze zrozumiałem, że aby dać sygnał na pierwszą cewkę to wystarczy wysłać do sterownika ósemkę 8 (czyli dwójkowo 1000), takie to proste?
Rozkazy (nie wiem, czy dobrze to nazywam) wysyła się w systemie dziesiętnym?

Zamieszczam schemat tego sterownika.
Załączniki
schemat.jpg
Słaba jakość, w razie potrzeby mogę przesłać z lepszą.

Awatar użytkownika
pajaczek
Moderator
Moderator
Posty:2653
Rejestracja:24 sty 2005, o 00:39
Lokalizacja:Winny gród

Postautor: pajaczek » 6 lip 2008, o 23:24

W takim razie dedykowany kontroler mnie najbardziej interesuje...
(...)
Czy to znaczy, że używając jednego wyjścia Atmegi i kontrolera wysyłam: 1000 (szeregowo)?
Czy tak to działa?
Nie... nie tak. Jednego wyjścia ATMegi używasz tylko do taktowania (zmiany) kroków. Nie znaczy to jednak, że pełne sterowanie silnika będzie wymagać tylko jednego wyjścia uC (chyba że interesuje Cie obrót w jednym kierunku, oraz z wykorzystaniem jednego typu sterowania).
Znalezłem też sterownik na i2C - AVT-860.
Mam jedno pytanie... czy dobrze zrozumiałem, że aby dać sygnał na pierwszą cewkę to wystarczy wysłać do sterownika ósemkę 8 (czyli dwójkowo 1000), takie to proste?
Rozkazy (nie wiem, czy dobrze to nazywam) wysyła się w systemie dziesiętnym?
Prędzej wysłaniem b00001000 ... przez I2C wysyłasz pełny bajt, a nie półbajt. Czy "rozkazy" wysyła się w systemie dziesiętnym, szesnastkowym czy ósemkowym zależy od Twojej implementacji I2C.

Wróć do „Elektronika - tematy dowolne”

Kto jest online

Użytkownicy przeglądający to forum: Google [Bot] i 0 gości