Kanał - ATNEL tech-forum
Wszystkie działy
Najnowsze wątki



Teraz jest 14 lis 2024, o 04:01


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 12 ] 
Autor Wiadomość
PostNapisane: 31 paź 2013, o 12:47 
Offline
Użytkownik

Dołączył(a): 31 paź 2013
Posty: 33
Lokalizacja: Wrocław
Pomógł: 0

Mam prośbę o pomoc w zaprogramowaniu silnika krokowego którym trochę już steruję ale mam nikłe podstawy programowania a potrzebuję wykonać proste ruchy.
Gdyby silnik był podłączony do Arduino bezpośrednio (jak w wielu prostych przykładach) to pewnie bym dawał radę ale po drodze musiałem zastosować sterownik silnika żeby zastosować silniczek o nieco większej mocy.
Silniczek to 39BYGH405B kupiony w sklepie Botland:
Silnik krokowy bipolarny, czteroprzewodowy. Posiada rozdzielczość 200 kroków na obrót (1,8 stopnia). Zasilany jest napięciem 12 V, pobiera prąd 400 mA na cewkę. Moment trzymający wynosi 2,14 kg*cm (0,21 Nm).
I do niego sterownik też ze strony Botland:
Sterownik silnika krokowego A4988 RepRap 35V 2A - moduł Pololu
W zał. obrazkach znajdują się informacje na temat połączenia silniczka ze sterownikiem i Arduino.

Sterownik dostaje rozkaz kroków na pin o nazwie STEP.
Kierunek obrotów zmieniany jest poprzez pin o nazwie DIR
Do sterownika doprowadza się jeszcze sygnał na pin o nazwie ENABLE.
Wejścia MS1 podłączyłem do +5V a MS2 i MS3 do masy a zatem sterownik pracuje w systemie półkrokowym wg tabeli którą też załączam w obrazkach

W sumie prawdopodobnie problem jest trywialny ale jest tak mało informacji na temat programowania że męczę się z ich zebraniem już drugi tydzień. To znaczy „skondensowanych” informacji, bo rozproszonych jest sporo.

Potrzebuję mieć programik do „mieszadła” który będzie kręcił osią silniczka dosyć powoli tam i z powrotem (np. na kącie 270 stopni) a po drodze żeby wykonał szybki ruch też tam i z powrotem ale na małym kącie ze dwa razy. Uzyskam wówczas efekt mieszania płynu zawieszonego w pojemniku na osi.
Chciałbym mieć jakieś zrozumiałe dla mnie bloki programu żeby móc pokręcić silnikiem w dowolną stronę jakąś ilość kroków oraz móc zatrzymać np. na chwilę oś silnika w celu przyjrzenia się zawartości płynu lub pomiarów jego temperatury.

Obecnie mam zerżnięty z netu programik który wzbogaciłem jedynie o ruch powrotny. Zatem umiem już kręcić silniczkiem tam i z powrotem ale nie wiem jak napisać program tak żeby robił np. obrót o 90 stopni, zatrzymanie na 3 sekundy i dalszy obrót a potem krótkie „potrząśnięcie” itp

A to program którym kręcę silniczkiem:

Składnia: [ Pobierz ] [ Ukryj ]
język cpp
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.



ObrazekObrazek

Kod wklejamy przy pomocy syntax=cpp - Różowy J.

_________________
sig off ;(



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 31 paź 2013, o 13:54 
Offline
Użytkownik

Dołączył(a): 19 lip 2012
Posty: 86
Lokalizacja: Lublin
Pomógł: 3

Hej,

1) Kod programu wklej między "[ syntax = c ]kod[ / syntax ]"
2) Kąt 90 stopni to 1/4 pełnego obrotu, dalej idąc tą drogą okaże się pewnie że jak 200 kroków podzielisz na 4 to da 50 kroków?! 50 kroków to 90 stopni.
3) Przerwę 3 sekundową realizujesz przez np. _delay_ms(3000) lub odpowiednik w twoim środowisku. Nie jest to najlepsze rozwiązanie!
4) Potrząsanie to jakaś sekwencja czynności jakie ma zrealizować silnik. Czyli np. niech skacze co 10 kroków :-) A skok o odpowiednią ilość kroków już umiesz realizować :-)


Pozdrawiam Michał.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 31 paź 2013, o 16:18 
Offline
Użytkownik

Dołączył(a): 15 cze 2013
Posty: 599
Lokalizacja: Lubin
Zbananowany użytkownik

Pomógł: 35

Najpierw do zajrzyj do noty PDF http://www.eng.utah.edu/~cs5789/handouts/a4988_DMOS_microstepping_driver_with_translator.pdf
Wykorzystaj z niej schemat podłączenia.
W nocie wyczytasz tez że M1 M2 M3 maja pul-down resistance, oraz że step high i step down minimalny czas to 1 us.
Zrób funkcje z argumentami dir step time gdzie dir 0 lub 1 - kierunek obrotow step do petli for ilość kroków i time odstep w milisekundach pomiędzy krokami.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 1 lis 2013, o 07:31 
Offline
Użytkownik

Dołączył(a): 31 paź 2013
Posty: 33
Lokalizacja: Wrocław
Pomógł: 0

OdeOn - Silniczek mam podłączony prawidłowo i według opisów w pierwszym poście. Co do zrobienia funkcji to właśnie tylko z tym mam problem :-) Jakbyś napisał jakiś nieduży przykład to może bym załapał szybciej...
Kazik87 (czy raczej Michał :-) ) - użyłem delay'a i działa. Na razie powinno wystarczyć.
Wracam do tematu najwcześniej jutro z powodu wyjazdu. Najbardziej by mi chyba pomógł jakiś "Arduinowiec" podsuwając właśnie kawałęk kodu z wyjaśnieniem co robi.
No i w sumie na przyszłość pewnie się przesiądę na produkty Atnela bo chyba jest w tym najszersza wiedza w Polsce.

_________________
sig off ;(



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 1 lis 2013, o 10:04 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 04 paź 2011
Posty: 8585
Pomógł: 337

W sumie stepstickami się jeszcze nie bawiłem osobno poza RepRApem ... gdyz do silników używam innych driverów

http://sunduino.elektroda.eu/wordpress/ ... kow-l298n/

masz tu przykłady na Arduino, poczytaj też bo u mnie wiele jest o Duino ...
niemniej mam mam kilka naście stepsticków i to jak tylko złapię chwilke czasu opiszę je na forum czy u mnie na stronie


Autor postu otrzymał pochwałę

_________________
[b]San Escobar! Patria mia! Tu eres como la salud.[/b]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 1 lis 2013, o 14:57 
Offline
Użytkownik

Dołączył(a): 31 paź 2013
Posty: 33
Lokalizacja: Wrocław
Pomógł: 0

Dzięki SunRiver - popaczyuem i widzę że sterownik bardzo podobny. Programik mi co nieco wyjaśni z pewnością więc się przyda. Szkoda że wszyscy kręcą silnikami DC a ja muszę akurat zaczynać od krokowego :-/ Daj więcej , więcej , więcej ...
W tej chwili piszę z czarnej dziury używając neta z pendrive. Jak wiatr mocniej zawieje to czasem się łączę hehe

_________________
sig off ;(



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 1 lis 2013, o 18:23 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 04 paź 2011
Posty: 8585
Pomógł: 337

No wiem potraktowałem steperka trochę po macoszemu nio .... ale uzupełnię jak tylko skończę laserowe pomiary

_________________
[b]San Escobar! Patria mia! Tu eres como la salud.[/b]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 17 lis 2013, o 20:59 
Offline
Nowy
Avatar użytkownika

Dołączył(a): 17 lis 2013
Posty: 12
Lokalizacja: golubkowo
Pomógł: 0

Jakiś czas temu robiłem pewien prototyp maszynki w której wykorzystałem Arduino do poruszania silnika krokowego.
Skorzystałem z biblioteki AccelStepper



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 18 lis 2013, o 09:13 
Offline
Użytkownik

Dołączył(a): 31 paź 2013
Posty: 33
Lokalizacja: Wrocław
Pomógł: 0

grzechugd napisał(a):
Jakiś czas temu robiłem pewien prototyp maszynki w której wykorzystałem Arduino do poruszania silnika krokowego.
Skorzystałem z biblioteki AccelStepper

A da sie toto wykorzystać jeśli ja mam po drodze ten sterownik ?? (bo silniczek jest nieco silniejszy więc nie mogę go podpiąć bezpośrednio do Arduino)

_________________
sig off ;(



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 18 lis 2013, o 10:14 
Offline
Nowy
Avatar użytkownika

Dołączył(a): 17 lis 2013
Posty: 12
Lokalizacja: golubkowo
Pomógł: 0

Oczywiście
Ja w swoim prototypie wykorzystałem silnik 1,8Nm i sterownik M542



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 18 lis 2013, o 10:54 
Offline
Użytkownik

Dołączył(a): 31 paź 2013
Posty: 33
Lokalizacja: Wrocław
Pomógł: 0

grzechugd napisał(a):
Oczywiście
Ja w swoim prototypie wykorzystałem silnik 1,8Nm i sterownik M542


Mógłbyś mnie trochę naprowadzić gdzie szukać w tej dokumentacji info w temacie sterownika?

aaa juz chyba widzę :
Parameters
[in] interface Number of pins to interface to. 1, 2, 4 or 8 are supported, but it is preferred to use the MotorInterfaceType symbolic names. AccelStepper::DRIVER (1) means a stepper driver (with Step and Direction pins). If an enable line is also needed, call setEnablePin() after construction. You may also invert the pins using setPinsInverted(). AccelStepper::FULL2WIRE (2) means a 2 wire stepper (2 pins required). AccelStepper::FULL3WIRE (3) means a 3 wire stepper, such as HDD spindle (3 pins required). AccelStepper::FULL4WIRE (4) means a 4 wire stepper (4 pins required). AccelStepper::HALF3WIRE (6) means a 3 wire half stepper, such as HDD spindle (3 pins required) AccelStepper::HALF4WIRE (8) means a 4 wire half stepper (4 pins required) Defaults to AccelStepper::FULL4WIRE (4) pins.
[in] pin1 Arduino digital pin number for motor pin 1. Defaults to pin 2. For a AccelStepper::DRIVER (pins==1), this is the Step input to the driver. Low to high transition means to step)
[in] pin2 Arduino digital pin number for motor pin 2. Defaults to pin 3. For a AccelStepper::DRIVER (pins==1), this is the Direction input the driver. High means forward.

TU opis jak się podłącza sterownik

[in] pin3 Arduino digital pin number for motor pin 3. Defaults to pin 4.
[in] pin4 Arduino digital pin number for motor pin 4. Defaults to pin 5.
[in] enable If this is true (the default), enableOutpuys() will be called to enable the output pins at construction time.

Ale jak wykorzystać tą bibliotekę to chyba będę musiał pogłówkować dłużej

_________________
sig off ;(



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 18 lis 2013, o 11:29 
Offline
Nowy
Avatar użytkownika

Dołączył(a): 17 lis 2013
Posty: 12
Lokalizacja: golubkowo
Pomógł: 0

Powiem Ci szczerze że ja specem w programowaniu to nie jestem, wręcz przeciwnie :lol: (mam zamiar to zmienić), ale jakoś sobie z tym poradziłem.
Przeglądałem zamieszczone przykłady z podanego wyżej linku i na ich podstawie udało mi się zrobić to co zamierzałem.
W moim przypadku potrzebowałem po naciśnięciu przycisku obrócić silnik o zadaną liczbę kroków (z możliwością regulacji prędkości) zatrzymać silnik i czekać do kolejnego naciśnięcia. Do tego dodałem jakieś diody aby świeciły podczas pracy silnika tak dla bajeru.
Jeśli w czymś Ci to pomoże to zamieszczam swoje wypociny :lol:, nie wiem na ile są z godne z zasadami programowania ale najważniejsze że działało ;)
Wczytaj się dobrze w tą bibliotekę bo naprawdę ma duże możliwości.
Składnia: [ Pobierz ] [ Ukryj ]
język cpp
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Przy wklejaniu kodu używamy syntax odpowiedni dla konkretnego języka - Różowy J.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
Wyświetl posty nie starsze niż:  Sortuj wg  
Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 12 ] 

Strefa czasowa: UTC + 1


Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 3 gości


Nie możesz rozpoczynać nowych wątków
Nie możesz odpowiadać w wątkach
Nie możesz edytować swoich postów
Nie możesz usuwać swoich postów
Nie możesz dodawać załączników

Szukaj:
Skocz do:  
cron
Sitemap
Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
phpBB SEO