logo elektroda
logo elektroda
X
logo elektroda
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

Arduino - jak sterować 2 silnikami krokowymi za pomocą przycisków?

pu5z3k 19 Mar 2015 09:21 4359 13
  • #1 14542631
    pu5z3k
    Poziom 10  
    Posty: 28
    Ocena: 2
    Witam wszystkich serdecznie,
    ostatnio zabrałem się za motanie jakiegoś tam kodu, jako że nie "gadam" kompletnie w tym języku, zwracam się z ogromną prośbą o pomoc w edycji kodu, który spłodziłem w ogromnych bólach.

    Problem polega na tym, że połączone mam dwa silniki krokowe, sterowanie odbywa się na zasadzie dwóch przycisków do każdego z silnika. Przyciskam jeden przycisk (i go trzymam) silnik jedzie w lewo, puszczam staje. Tak chciałbym sterować dwoma silniczkami.

    schemat:


    Kod: text
    Zaloguj się, aby zobaczyć kod


    Moje urządzenie:
    Arduino - jak sterować 2 silnikami krokowymi za pomocą przycisków?

    sprzęt będę wykorzystywał do zdjęć mikroskopowych
    Arduino - jak sterować 2 silnikami krokowymi za pomocą przycisków?

    Zdaje sobie sprawę, że wiedza jak i poświęcony czas dla każdego jest mega cenny, ale za pomoc w edycji kodu, bądź poprawieniu go będę dozgonnie wdzięczny !

    Pozdrawiam,
    Radek
  • Pomocny post
    #2 14546760
    martiner32
    Poziom 11  
    Posty: 72
    Pomógł: 2
    Ocena: 4
    Praktycznie użyłem tylko 1 klawisza do edycji kodu:D (delete)
    Kod: text
    Zaloguj się, aby zobaczyć kod


    Na pewno twój silnik ma 2048 kroków ? Jak na silnik unipolarny to dużo i to bardzo. Polecam także zmniejszyć ilość kroków bo będzie to mało precyzyjne.

    Prawiłem kod gdyż zapomniałem o digitalRead :D
  • Pomocny post
    #3 14547837
    Konto nie istnieje
    Poziom 1  
  • Pomocny post
    #4 14548032
    martiner32
    Poziom 11  
    Posty: 72
    Pomógł: 2
    Ocena: 4
    Ale na fotce widać, że 1 jest nam normalny, a 2 z przekładnią.
  • #5 14549109
    pu5z3k
    Poziom 10  
    Posty: 28
    Ocena: 2
    @martiner32 dzięki za kod zaraz będę testował

    @emarcus właśnie tak zrobiłem, że płytki będę zasilał z baterii 12V

    @martiner32 dokładnie jeden jest z przekładnią, drugi zwykły krokowiec
  • #6 17076360
    roberto80
    Poziom 11  
    Posty: 10
    Ocena: 5
    witam!
    Ja własnie jestem na etapie pisania a raczej uczenia sie sterowania 2 krokowcami jednocześnie..no i pytanie czy mamy już potwierdzony peogram działający???? znam elekttronikę mechanikę ale programowania nie bardzo i raczej chiałbym skozystać z gotowca bo raczej to jednorazowy układ.

    Dodano po 2 [minuty]:

    dysponuję programem sterującym 2ma krokowcami z "pilotem" lewo i prawo dla kazdego z nich natomiast problem tkwi w tym ze nie działają krokowce jednocześnie. albo jeden albo drugi z tym ze praca tego drugiego jest przerywana gdy programowo właczymy ten 1szy.
  • #7 17076377
    ghost2000
    Poziom 18  
    Posty: 375
    Pomógł: 2
    Ocena: 12
    roberto80 napisał:
    dysponuję programem sterującym 2ma krokowcami z "pilotem" lewo i prawo dla kazdego z nich natomiast problem tkwi w tym ze nie działają krokowce jednocześnie. albo jeden albo drugi z tym ze praca tego drugiego jest przerywana gdy programowo właczymy ten 1szy.

    Znalazłem błąd w tym programie, który uneimożliwia równoczesna pracę silników.
  • #9 17081522
    roberto80
    Poziom 11  
    Posty: 10
    Ocena: 5
    proszę o to kod powidzenia ;))))))

    Kod: C / C++
    Zaloguj się, aby zobaczyć kod
  • #10 17081544
    ghost2000
    Poziom 18  
    Posty: 375
    Pomógł: 2
    Ocena: 12
    Kod skopany dokumentnie.
    1 - silnikami należy sterować w przerwaniu od timera, tylko taki sposób zapewni dokładne, równe sterowanie silnikiem
    2 - klawiatura powinna reagować na zmianę stanu a nie na konkretny poziom, dzięki temu klawisze nie sa od siebie zależne i nieblokuja pętli głównej programu

    Ten program może być wzorem, jak nie pisać programów. Tego programu poprawić się nie da, trzeba go napisać od nowa.
  • #11 17085626
    Konto nie istnieje
    Poziom 1  
  • #12 17086043
    roberto80
    Poziom 11  
    Posty: 10
    Ocena: 5
    witaj!
    Emarcus dzięki za podjęcie tematu, nie wiem czy doczytałeś ale już problem już rozwiązany połaczenia są na 100% dobre, w kodzie wywaliłem przy "else if (estadobotao4 == HIGH)"
    słówko ELSE i tak 2 razy i było już ok! (za sugestią na ARDUINO POLSKA.
    Masz racje co do podkładki ale taką miałę pod ręką a, że stół szklany niechiałem zebyście oglądali moje skarpety ;) ... co do podkładu ..cośtam leciało z TV to sie nagrało... ;))) postaram się następnym razem o jakiegoś Vangelisa... jak YT przepuści ;).

    dziękuję i pozdrawiam!
  • #13 17086128
    ghost2000
    Poziom 18  
    Posty: 375
    Pomógł: 2
    Ocena: 12
    roberto80 napisał:
    marcus dzieki za podjęcie tematu nie wiem czy doczytałeś ale już problem już rozwiązany

    Nie mógł doczytać, bo po TWOIM zgłoszeniu postu do moderatora, wywalił on sporą część dyskusji do kosza.
  • #14 17086177
    roberto80
    Poziom 11  
    Posty: 10
    Ocena: 5
    I miał rację! bo ta rozmowa tylko tam się nadaje.

Podsumowanie tematu

LABEL_AI_GENERATED
Dyskusja dotyczy sterowania dwoma silnikami krokowymi za pomocą przycisków w projekcie opartym na Arduino. Użytkownik poszukiwał pomocy w edycji swojego kodu, który miał na celu kontrolowanie silników w lewo i w prawo. Otrzymał kilka sugestii dotyczących poprawy kodu, w tym użycia funkcji digitalRead oraz zmiany sposobu zasilania silników, które powinny być zasilane oddzielnie, aby zapewnić stabilność. Wskazano również na konieczność poprawy schematu oraz na problemy z równoczesnym działaniem silników, które można rozwiązać poprzez odpowiednie zarządzanie przerwaniem w kodzie. Użytkownicy dzielili się również przykładami kodu oraz linkami do tutoriali, które mogą pomóc w dalszym rozwoju projektu.
Podsumowanie AI na podstawie dyskusji. Może zawierać błędy.
REKLAMA