Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek dla www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Arduino - sterowanie 2 silnikami krokowymi

19 Mar 2015 09:21 3012 13
  • Poziom 9  
    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: cpp
    Zaloguj się, aby zobaczyć kod


    Moje urządzenie:
    Arduino - sterowanie 2 silnikami krokowymi

    sprzęt będę wykorzystywał do zdjęć mikroskopowych
    Arduino - sterowanie 2 silnikami krokowymi

    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
    Poziom 11  
    Praktycznie użyłem tylko 1 klawisza do edycji kodu:D (delete)
    Kod: cpp
    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
    Poziom 36  
    pu5z3k napisał:
    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.


    Zacznij od poprawienia schematu. Silniki (poprzez ULN) winny miec oddzielne zasilanie - nie z płytki Arduino za stabilizatorem (!); i to raczej nieco wyższe niż 5V, nawet gdy znamionowo są 5 -voltowe.
    Podyktowane jest to wieloma powodami.


    martiner napisał:

    Na pewno twój silnik ma 2048 kroków ?

    Prawdopodobnie jest to miniaturowy silnik z przekładnią i=64, oraz 5.625 st/step co daje zaledwie pół obrotu wałka wyjściowego.

    e marcus
  • Pomocny post
    Poziom 11  
    Ale na fotce widać, że 1 jest nam normalny, a 2 z przekładnią.
  • Poziom 9  
    @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
  • Poziom 10  
    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.
  • Poziom 18  
    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.
  • Poziom 10  
    proszę o to kod powidzenia ;))))))

    Kod: c
    Zaloguj się, aby zobaczyć kod
  • Poziom 18  
    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.
  • Poziom 36  
    roberto80 napisał:
    https://www.youtube.com/watch?v=CIZ93NH6z9o
    prezentacja filmu i sposobu działania obecnego programu.


    Nie najlepsza to prtezentacja, z tymi kwiatkami/ornamentami na obrusie rozpraszającymi uwagę przy sprawdzaniu połączeń.
    Podkład dźwiękowy też nie jest stosowny..
    Przydałoby się natomiast kilka słów na temat związany z projektem....

    Przydatne byłoby przeglądnięcie kilku Y/T video i zapoznanie się z treścią związanych tutoriali:
    https://www.youtube.com/watch?v=_dfgyuOC3OI

    oraz tutorial z tym prezentacją w końcowej części.
    https://www.brainy-bits.com/control-2-stepper-motors-using-the-arduino-serial-monitor/

    Prezentacja Part2..
    https://www.youtube.com/watch?v=lvP5xMOstus
    oraz tutorial z prezentacją w końcowej części.
    https://www.brainy-bits.com/dual-axis-camera-slider-using-joystick-in-and-out/

    Naturalnie, zamiast kommunikacji z serial monitorem, możesz nowe parametry wprowadzac z IR remote, podmieniając w programie odpowiednią jego częśc.
    Wymagane biblioteki (libraries) znajdziesz w odpowiednich odcinkach tutoriali.
    Przykład sterowania niektórych parametrów steppera przez IR remote:
    Control a Stepper Motor with an Arduino and IR Remote
    https://www.brainy-bits.com/control-stepper-motor-with-arduino/

    Nie wiele isotne różnice mogą wystąpic z powodu stosowania innych driverów dla stepperów.

    e marcus
  • Poziom 10  
    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!
  • Poziom 18  
    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.
  • Poziom 10  
    I miał rację! bo ta rozmowa tylko tam się nadaje.