Zaloguje się
or
Tel +48 698 615 740

Podłączenie i wykorzystanie modułów silnika w robocie

08 listopada, 2021

W artykule zostanie omówione połączenie modułów silnika i wykorzystanie go w praktyce poprzez monitor portu szeregowego.

Spis treści

  • Podłączenie silników do modułów
  • Podłączenie modułów do arduino
  • Zaprogramowanie arduino
  • Konfigurowanie silników

Podłączenie silników do modułów

Na początku zapoznamy się ze schematem modułu, przyda się nam on również podczas podłączania modułu do arduino.

Po zapoznaniu się ze schematem możemy przystąpić do podłączenia silników, kable do silników musimy sobie przylutować, następnie podłączyć je do modułów silnika. Razem mamy cztery silniki, czyli podłączamy po dwa do jednego modułu. Wykorzystamy do tego OUTPUT A i B, znajduje się on na wcześniej pokazanym schemacie, silniki lewe podłączamy do lewego modułu, a te co po prawej do prawego.

Podłączenie modułów do arduino

Podłączamy teraz moduły do arduino tak jak na poniższym schemacie

Piny od 11 do 8, łączymy z lewym modułem, a piny od 7 do 4 z prawym. Po podłączeniu możemy przejść do napisania prostego programu który sprawdzi działanie naszych silników i umożliwi ruszanie ich do przodu, do tyłu lub całkowicie zatrzyma.

Zaprogramowanie arduino

Napiszemy prosty program który za pomocą monitora portów szeregowych będzie sterował naszymi silnikami, będziemy wpisywali “przod”, aby silniki ruszyły do przodu, “wsteczny”, aby jechały do tyłu i oczywiście “stop”, aby się zatrzymały.

Zaczniemy od zdefiniowania pinów naszych silników, aby łatwiej było się nimi posługiwać, ponieważ później będziemy musieli je skonfigurować tak, aby ruszały się wszystkie w jedną stronę.

//silnik 1
#define out1 11
#define out2 10
//silnik 2
#define out3 9
#define out4 8
//silnik 3
#define out5 7
#define out6 6
//silnik 4
#define out7 5
#define out8 4

Po zdefiniowaniu pinów możemy przejść do funkcji setup gdzie ustawimy piny jako wyjście, oraz rozpoczniemy transmisję na porcie szeregowym

void setup() {
  pinMode(out1, OUTPUT);//ustawienie pinu out1 jako wyjście
  pinMode(out2, OUTPUT);//ustawienie pinu out2 jako wyjście
  pinMode(out3, OUTPUT);//ustawienie pinu out3 jako wyjście
  pinMode(out4, OUTPUT);//ustawienie pinu out4 jako wyjście
  pinMode(out5, OUTPUT);//ustawienie pinu out5 jako wyjście
  pinMode(out6, OUTPUT);//ustawienie pinu out6 jako wyjście
  pinMode(out7, OUTPUT);//ustawienie pinu out7 jako wyjście
  pinMode(out8, OUTPUT);//ustawienie pinu out8 jako wyjście

  Serial.begin(9600);//rozpoczęcie transmisji na porcie szeregowym
}

Utworzymy teraz zmienną string która będzie przechowywać nasze komendy

String komenda = "";//deklarujemy zmienną komenda

Przechodzimy do funkcji loop gdzie będzie odbywał się cały proces, dodatkowo wykorzystamy wcześniej przygotowane funkcje, które ułatwią nam sterowanie silnikami, podam je pod koniec programu.

Zaczynamy od sprawdzenia czy arduino może przyjmować dane, jeśli tak, to pobierze naszą zmienną i wykona dalszą część programu.

void loop() {
  if (Serial.available() > 0) { //sprawdzamy, czy arduino może przyjmować dane, jeśli tak, to wczytaj do zmiennej napis który został wpisany w terminalu
    komenda = Serial.readStringUntil('\n');//wczytanie wpisanej komendy
  }

Teraz dopisujemy odpowiednie instrukcje warunkowe if, które będą odpowiadały za wywoływanie funkcji.

if (komenda == "przod") {//jeżeli komenda to "przod", jedź do przodu
    jedzDoPrzodu();//funkcja odpowiadająca za ruch do przodu
  } else if (komenda == "wsteczny") {//jeżeli komenda to "wsteczny", jedź to dyłu
    jedzDoTylu();//funkcja odpowiadająca za ruch do tylu
  } else if (komenda == "stop") {//jeżeli komenda to "stop", zatrzymaj silniki
    stoj();//funkcja odpowiadająca za wyłączenie silników
  }
}

Wystarczy teraz wkleić poniższe funkcje, włączyć monitor portu szeregowego i wpisać jedną z komend: przod, wsteczny, stop.

void jedzDoPrzodu(){
  digitalWrite(out1, LOW);
  digitalWrite(out2, HIGH);

  digitalWrite(out3, LOW);
  digitalWrite(out4, HIGH);

  digitalWrite(out5, LOW);
  digitalWrite(out6, HIGH);

  digitalWrite(out7, LOW);
  digitalWrite(out8, HIGH);
}
void jedzDoTylu() {
  digitalWrite(out1, HIGH);
  digitalWrite(out2, LOW);

  digitalWrite(out3, HIGH);
  digitalWrite(out4, LOW);

  digitalWrite(out5, HIGH);
  digitalWrite(out6, LOW);

  digitalWrite(out7, HIGH);
  digitalWrite(out8, LOW);
}
void stoj() {
  digitalWrite(out1, LOW);
  digitalWrite(out2, LOW);

  digitalWrite(out3, LOW);
  digitalWrite(out4, LOW);

  digitalWrite(out5, LOW);
  digitalWrite(out6, LOW);

  digitalWrite(out7, LOW);
  digitalWrite(out8, LOW);
}

Oczywiście istnieje taka możliwość, że nasze silniki kręcą się w różne strony i będzie trzeba je skonfigurować.

Konfigurowanie silników

Musimy teraz odpowiednio przystosować kod pod naszego robota, ponieważ w miejsca w które wpięliśmy silniki mogą się różnić od tych w programie, wytłumaczę teraz jak to zrobić, nie będzie to bardzo trudne. Pamiętajmy o tym, aby włożyć akumulatorki, ponieważ bez nich nasze silniki nie ruszą. Na początku musimy wgrać wcześniej napisany kod do arduino, kiedy już to zrobimy, podnosimy robota i wpisujemy komendę przod, wszystkie cztery silniki powinny zacząć się obracać, mogą się kręcić w różne strony, dlatego musimy ustalić przód naszego robota np. miejsce w którym są akumulatorki. Jeżeli koła kręcą się w prawą stronę do akumulatorków, znaczy, że jest odpowiednio, jeżeli w przeciwną musimy zmienić numery pinów, zaczynamy od kabelka który idzie od silnika do modułu, patrzymy na module do jakich wyjść mamy wpięte są dwie opcje OUT1 i OUT2, albo OUT3 i OUT4. Szukamy teraz w miejscu logic input(patrz schemat modułu silnika) IN1, IN2, IN3 i IN4, odpowiadają one naszym wyjściom, teraz dla przykładu jeżeli mamy wpięte przewody od silnika do OUT1 i OUT2 patrzymy na IN1 i IN2, sprawdzamy do jakich pinów idą do arduino, przypuśćmy że do 11 i 10, to teraz musimy zamienić miejscami te piny w naszym kodzie w następujący sposób.

#define out1 11 → #define out1 10

#define out2 10 → #define out2 11

To powinno zmienić kierunek obrotów naszego silnika, robimy to samo z pozostałymi i wszystko mamy gotowe.

Sticky
Możliwość komentowania Podłączenie i wykorzystanie modułów silnika w robocie została wyłączona
Adrian Wojtala

Adrian Wojtala

Ma 21 lat. Studiuje informatykę na Uniwersytecie DSW, ukończył technikum o profilu technik-informatyk. Interesuje się programowaniem i w przyszłości ma plan zostać back-end developerem. Swoją przygodę z Arduino rozpoczął podczas praktyk od września 2021 r.

Comments are closed.

Strona korzysta z plików cookies w celu realizacji usługi i zgodnie z Polityką Plików Cookies. Możesz określić warunki przechowywania lub dostępu do plików cookies w Twojej przeglądarce.