AT90S2313 a silnik krokowy

To forum jest dla wszystkich pasjonatów mikrokontrolerów AVR Atmela. Wymiana doświadczeń i pomoc dla początkujących w pisaniu programów zarówno w C, Asemblerze jak i BASCOM. Zapraszam znawców tematu, aby pomogli wszystkim początkującym!
mariachi
-
Posty: 27
Rejestracja: 15 mar 2006, 16:43

AT90S2313 a silnik krokowy

Post autor: mariachi » 06 lip 2006, 11:53

Witam!

Zastanawiam się czy procesorem at90s2313 można sterować małym silnikiem krokowym.
Wykonałem prosty mechanizm oparty właśnie na wyżej wspomnianym silniku i mam problem.
Posiadam układ sterujący tym silnikiem i działa on następująco - po włączeniu jednego przycisku silnik kręci się w prawo a po naciśnięciu dwóch przycisków w lewo.

Ja chciałbym zaprogramować sekwencję ruchów i nie wiem właśnie jak to zrobić na Atmelu.

Czy da się to zrobić w jakiś prosty sposób ? Chciałem żeby zamiast tych przycisków "ręcznych" zastosować jakieś tranzystory sterowane z Atmela, ale nie jest to chyba najlepsze rozwiązanie.

A może da się podłączyć silnik krokowy jakoś bezpośrednio do Atmela?

Z góry dziękuję za wszelkie rady i wskazówki

tasza
Użytkownik
Posty: 1391
Rejestracja: 21 lut 2005, 15:02

Post autor: tasza » 06 lip 2006, 12:31

mariachi pisze:Posiadam układ sterujący tym silnikiem i działa on następująco - po włączeniu jednego przycisku silnik kręci się w prawo a po naciśnięciu dwóch przycisków w lewo
a czy to na pewno jest silniczek krokowy?
ile ma wyprowadzeń? a może podasz jego symbol/oznaczenie? lub chociaż zdjątko.....

jeżeli chcesz silniczkiem krokowym sterować przy pomocy procesora (obojętnie jakiego)
to przede wszystkim pomiędzy procesor a silniczek potrzeba wstawić coś jakby
końcówkę mocy...w najprostszym przypadku to będą cztery tranzystory npn,
w kolektorach zapięte uzwojenia silniczka, bazy sterowane z czterech bitów dowolnego
portu I/O procesora...

napisz proszę więcej o Twoim silniczku, to wymyślimy jakiś prosty schemat.

tasza

mariachi
-
Posty: 27
Rejestracja: 15 mar 2006, 16:43

Post autor: mariachi » 06 lip 2006, 12:43

... silnik ma oznaczenia

PM35S-048-CCC3
LOT NO. TB7X09

pochodzi od starej drukarki, ma 6 wyprowadzeń a sterowany jest za pomocą układu AVT1314 i właśnie zamiast dwóch przycisków "występujących" w tym układzie chciałem zastosować jakieś dwa tranzystory, ale nie wiem czy to dobry pomysł.

tasza
Użytkownik
Posty: 1391
Rejestracja: 21 lut 2005, 15:02

Post autor: tasza » 06 lip 2006, 13:50

hmm, no to jak masz zmontowany ten kit, to go sobie zostaw, przyda się do
szybkiego testowania innych motorków jakie Ci ewentualnie wpadną w ręce...
hmm, ten Twój to jest to:
http://www.eminebea.com/content/html/en ... 35s048.pdf
http://nisiki.net/Catalogues/Motors/NMB/PM35S.htm
wprawdzie ma dwie pary uzwojeń...ale skoro Ci z tym kitem już działa, no to super.
ze schemat AVT1314 http://sklep.avt.com.pl/photo/_pdf/AVT1314.pdf
można zabrać sobie tylko część sterującą cewkami czyli to co w złączniku...
i podłączyć do portu B procesora, do bitów 0..3
aby obracać ośką, należy na porcie wygenerować sekwencję i w kółko ją powtarzać
w jedną stronę

Kod: Zaznacz cały

PB.3  PB.2  PB.1  PB.0
   0     0     0     1      
   0     0     1     0      
   0     1     0     0      
   1     0     0     0      
i obrót w drugą

Kod: Zaznacz cały

PB.3  PB.2  PB.1  PB.0
   1     0     0     0      
   0     1     0     0      
   0     0     1     0      
   0     0     0     1      
to sprowadza się do podawania na port B kolejnych liczb.
1,2,4,8,1,2,4,8,1,2,4,8 - dla obrotu np. w prawo
8,4,2,1,8,4,2,1,8,4,2,1 - w lewo
jak podasz 0 - ośka będzie luzem,
jak dasz 15 (0x0F) ośka będzie jak zamurowana - palcem jej nie ruszysz...
ale tu trzeba uważać aby silniczka nie przegrzać....
szybkość podawania kolejnych liczb to szybkość obracania ośki....

aha, zamiast mosfetów możesz spokojnie wstawić ULN2003 lub cztery sztuki BD135...

tasza

PS.
no, i takie sterowanie daje Ci pełną kontrolę nad zachowaniem motorka,
możesz sobie zaprogramować o ile obracać ośką, z jaką szybkością, w którą stronę, etc....
teraz to już kwestia fantazji....
Załączniki
stepping_motor_1.gif
(7.03 KiB) Pobrany 9277 razy

mariachi
-
Posty: 27
Rejestracja: 15 mar 2006, 16:43

Post autor: mariachi » 06 lip 2006, 16:23

dziekuję za szybką i wyczerpującą odpowiedź :grin: ,

takim sposobem mogę sterować 3 silniczkami na raz ... jak dobrze rozumiem - do portu B dwa i jeden silniczek do portu D ... co jeszcze bardziej mi odpowiada !!

Awatar użytkownika
Ertew
Użytkownik
Posty: 1414
Rejestracja: 03 lip 2005, 10:36
Lokalizacja: Leszno
Kontakt:

Post autor: Ertew » 06 lip 2006, 17:14

A można w równie prosty sposób sterować silnikami od hdd - 3 cewkowe, połączone w trójkąt lub w gwiazdę, mające 3 lub 4 przewody.

qba_k
-
Posty: 37
Rejestracja: 11 sie 2005, 12:58
Lokalizacja: Pogwizdów

Post autor: qba_k » 23 lip 2006, 16:00

Ja posiadam silniki krokowe z drukarek, wszystkie posiadaja 4 przewody. Jak mozna nimi sterować?

Awatar użytkownika
Brzozza93
Użytkownik
Posty: 474
Rejestracja: 26 cze 2006, 17:35
Lokalizacja: Gdynia
Kontakt:

Post autor: Brzozza93 » 24 lip 2006, 9:19

ja też mam w "klamotach" jakieś 2 silniczki krokowe z drukarki zaraz je wygrzebię i podam model

[ Dodano: 2006-07-24, 10:37 ]
dobra mam te modele:
pierwszy to EM-429
ma się całkiem dobrze tylko trzeba przylutować jedno uzwojenie, bez złącza - wystające kabelki
drugi to EM-428
tutj akurat zachowało się złącze ale te blaszki-skrzydełka do montażu są powyginane(agresywny demontaż :mrgreen:)
oba są 4 końcówkowe
widzę na obu gdzie są podpięte uzwojenia
jak je sterować?? znaczy się jak zrobić prosty generatorek
z góry thx

tasza
Użytkownik
Posty: 1391
Rejestracja: 21 lut 2005, 15:02

Post autor: tasza » 24 lip 2006, 10:00

nie wiem z czego wynika wasza niechęć do samodzielnego szukania informacji... :evil:
czy wszystko chcecie mieć podane na tacy?

kilka linków - teoria, przykłady...
wszystko z google ("silnik krokowy", "stepping motor")

:arrow: http://www.silniki.pl/wstep/sterowanieskrok.htm
:arrow: http://www.chip.pl/arts/archiwum/n/articlear_62847.html
:arrow: http://www.cyfronika.com.pl/kitynepdf/310-K.pdf
:arrow: http://www.doc.ic.ac.uk/~ih/doc/stepper/
:arrow: http://home.cogeco.ca/~rpaisley4/Stepper.html
:arrow: http://www.tigoe.net/pcomp/code/archive ... 0245.shtml

tasza

mariachi
-
Posty: 27
Rejestracja: 15 mar 2006, 16:43

Post autor: mariachi » 24 lip 2006, 19:31

... a ja mam jeszcze pytanie jak rozwiązać następujący problem - jeżeli zamontuję taki silniczek z przekładnią w jakimś urządzeniu (np. przesuwanie zasówki) to w jaki sposób podłączyć wyłącznik krańcowy :?:

W "zwykłym" silniczku na prąd stały wystarczy przełącznik krańcowy/dioda i urządzenie się zatrzymuje - następnie po podaniu odwrotnego napięcia rusza w drugą stronę...

Jednak tutaj jeżeli taki wyłącznik krańcowy rozłączy powiedzmy jednen z przewodów to silnik krokowy już nie ruszy w drugą...

Chodzi mi o sytuację w której do jednego procesora (powiedzmy AT90S2313) podłączone są trzy silniczki krokowe. Oczywiście możemy ustalić precyzyjnie ile kroków mają się przesunąć, ale jeżeli coś przesunie ręcznie taki mechanizm to po podaniu napięcia na silnik przesunie się on poza obszar działania ... :sad:

Czy można to rozwiązać jakoś programowo ? na przykład jeżeli ten wyłącznik krańcowy poda jakiś sygnał do procesora ?

mam nadzieję że da się to jakoś rozwiązać ... :idea:

tasza
Użytkownik
Posty: 1391
Rejestracja: 21 lut 2005, 15:02

Post autor: tasza » 24 lip 2006, 19:48

przecież uzwojeniami silnika sterujesz programowo podając kolejne wartości
z wymaganej sekwencji...więc jeżeli wyłacznik krańcowy przyjmie
jakiś określony stan - kontroler to wykrywa i przerywa generowanie sekwencji
a wtedy motorek się zatrzymuje (lub zmienia kierunek - co wymaga podawania wartości
sekwencji sterującej w odwrotnej kolejności)
a to wszystko ma realizować program - żadnego rozłaczania przewodów.....

tasza

mariachi
-
Posty: 27
Rejestracja: 15 mar 2006, 16:43

Post autor: mariachi » 24 lip 2006, 20:03

tasza pisze:...więc jeżeli wyłacznik krańcowy przyjmie
jakiś określony stan -

tasza

i właśnie tego nie rozumiem :sad: jak kontroler ma wiedzieć że wyłącznik krańcowy jest załączony i sekwencja dla danego silnika ma zostać zatrzymana ?

Awatar użytkownika
marcing
Użytkownik
Posty: 868
Rejestracja: 14 lut 2006, 14:13
Lokalizacja: z pociągu...
Kontakt:

Post autor: marcing » 24 lip 2006, 20:21

mariachi pisze:jak kontroler ma wiedzieć że wyłącznik krańcowy jest załączony i sekwencja dla danego silnika ma zostać zatrzymana ?
Sprawdzając odpowiednio często stan takiego przełącznika. A sterowanie silnika odbywać się może w pętli warunkowej

Pozdrawiam!

mariachi
-
Posty: 27
Rejestracja: 15 mar 2006, 16:43

Post autor: mariachi » 24 lip 2006, 20:38

marcing pisze:
mariachi pisze:jak kontroler ma wiedzieć że wyłącznik krańcowy jest załączony i sekwencja dla danego silnika ma zostać zatrzymana ?
Sprawdzając odpowiednio często stan takiego przełącznika. A sterowanie silnika odbywać się może w pętli warunkowej

Pozdrawiam!
heh to chyba sobie na razie nie poradze :sad: bo z tego wynika że włącznik krańcowy musi być "podpięty" pod procesor i w programie musi być odpowiednia komenda (jedno z wyjść procesora musiałoby być jako wejście) ...

A ta pętla warunkowa to If - Then ?

Czy mógłby ktoś wkleić najprostszy programik (pod BASCOMA na AT90S2313) który sterował by jednym silniczkiem krokowym podpiętym pod wyjścia D0 D1 D2 D3 i wyłączanym w przypadku zadziałania włącznika krańcowego (czyli zwarcia czegoś z czymś ;) ?

Będę bardzo wdzięczny bo najlepiej (i najszybciej :wink: ) nauczyć się na jakimś przykładzie ... [/list]

Awatar użytkownika
marcing
Użytkownik
Posty: 868
Rejestracja: 14 lut 2006, 14:13
Lokalizacja: z pociągu...
Kontakt:

Post autor: marcing » 24 lip 2006, 20:46

Można wykorzystać pętle
DO...LOOP
WHILE....WEND

Różnica jest taka, że pierwsza wykona się co najmniej raz przed sprawdzeniem warunku
Druga może zakończyć się na samym sprawdzeniu warunku, jeśli będzie spełniony

Co do silników krokowych - nie bawiłem się jeszcze nimi, a w błąd wprowadzać nie chcę...

Pozdrawiam!

ODPOWIEDZ