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

KURS HOME ASSISTANT

Chcesz zautomatyzować swój dom bez skomplikowanego kodowania?
Zastanawiasz się nad wyborem sprzętu, oprogramowania i aplikacji?
Od czego zacząć przygodę z HA w 2025? Co będzie najlepsze na start?

Nasz kurs Home Assistant nauczy Cię krok po kroku, jak łatwo zautomatyzować swój dom i oszczędzić na rachunkach za prąd i ogrzewanie. Bez chmur, bez zbędnych abonamentów. Twoja przygoda z Home Assistant zaczyna się tutaj!

↓↓↓

    Szanujemy Twoją prywatność. Możesz wypisać się w dowolnym momencie.




    Teraz jest 25 maja 2025, o 01:25


    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 ] [ Zaznacz wszystko ]
    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

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

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

    _________________
    Zbuduj swój system [url=https://helion.pl/ksiazki/w-labiryncie-iot-budowanie-urzadzen-z-wykorzystaniem-ukladow-esp8266-i-esp32-andrzej-gromczynski,wlablo.htm#format/d]IOT[/url]



    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

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

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

    _________________
    Zbuduj swój system [url=https://helion.pl/ksiazki/w-labiryncie-iot-budowanie-urzadzen-z-wykorzystaniem-ukladow-esp8266-i-esp32-andrzej-gromczynski,wlablo.htm#format/d]IOT[/url]



    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 ] [ Zaznacz wszystko ]
    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 0 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