Dwukanałowy mostek H na Arduino – Budowa robota #2

Mostek H

Aby robot mógł się poruszać, potrzebuje silnika. Najlepiej dwóch. Podpięcie ich bezpośrednio pod Arduino i sterowanie wyjściowym napięciem pozwoli nam jedynie na poruszanie silnika w jednym kierunku. Problem pojawi się, kiedy będziemy musieli cofnąć się robotem do tyłu, bądź wykonać skręt. Z pomocą przyjdzie nam tu dwukanałowy mostek H, dzięki któremu zyskamy pełną kontrolę nad silniczkiem z poziomu Arduino.

Co nam będzie potrzebne?

  • L293D – dwukanałowy sterownik silników (3,50 PLN)
  • Dwa silniczki 3-6V (11-14 PLN), bądź przekładnia podwójna Tamiya 70097 (49 PLN z silnikami w zestawie)

Plusem płynącym z zakupu przekładni jest jej kompatybilność z podwoziem gąsienicowym Tamiya 70100 (39,90 PLN) oraz uniwersalną płytką montażową Tamiya 70098 (25 PLN). Nic nie stoi jednak na przeszkodzie, aby nasz robot był zbudowany na własnoręcznie stworzonej platformie z starego samochodziku, bądź z mocnego, sztywnego kartonu – to od Was zależy, jak będzie on wyglądał.

Montaż na płytce stykowej

Sterownik L293D wymaga podpięcia zasilania 5V do części logicznej. Silniczki najlepiej jest zasilić oddzielnie, ja wykorzystuję w tym celu 4 baterie AA podpięte szeregowo. Mostek H powoduje spadek napięcia wyjściowego o ~2V, więc takie zasilanie jest wystarczające dla silniczków 3V, lecz za niskie dla 6V. Jeśli chcemy podpiąć takie silniczki, możemy zastosować akumulator LiPo 7.4V.

Mostek H

PWM możemy podpiąć bezpośrednio pod zasilanie 5V Arduino, wtedy silniczki będą kręcić się z pełną mocą, co za tym idzie stracimy możliwość jej modyfikowania. W kodzie źródłowym ich moc ustawiona jest na 80%.

Sterowanie silniczkami

Po prawidłowym zmontowaniu układu możemy przystąpić do kręcenia silnikiem. Jeśli któryś z nich został podpięty odwrotnie (minus do plusa, co spowoduje kręcenie w przeciwnym kierunku), nic się nie stanie i będziemy mogli poprawić to z poziomu kodu źródłowego, bądź zmieniając podłączenie dwóch przewodów.

[codesyntax lang=”c”]

// 4-kanałowe sterowanie radiowe
int A = 3;
int B = 5;
int C = 2; 
int D = 4;

// Silnik #1
int S1Tyl = 13;
int S1Przod = 12;
int S1PWM = 11;

// Silnik #2
int S2Tyl = 8;
int S2Przod = 9;
int S2PWM = 10;

// coming soon...
int surprise0 = 0;
int surprise1 = 1;

void setup() {
  Serial.begin(9600);
  while(!Serial);

  pinMode(A, INPUT);
  pinMode(B, INPUT);
  pinMode(C, INPUT);
  pinMode(D, INPUT);

  pinMode(S1Przod, OUTPUT);
  pinMode(S1Tyl, OUTPUT);
  analogWrite(S1PWM, map(80, 0, 100, 0, 255)); //80% mocy

  pinMode(S2Przod, OUTPUT);
  pinMode(S2Tyl, OUTPUT);
  analogWrite(S2PWM, map(80, 0, 100, 0, 255)); //70% mocy
}

void loop() {
  int A_ = digitalRead(A);
  int B_ = digitalRead(B);
  int C_ = digitalRead(C);
  int D_ = digitalRead(D);

  //aby robot się zaczymał, jeśli nie odbierze sygnału
  if(A_ == LOW && B_ == LOW && C_ == LOW && D_ == LOW) {
    Serial.println("A- B- C- D-");

    digitalWrite(S1Przod, LOW);
    digitalWrite(S2Przod, LOW);

    digitalWrite(S1Tyl, LOW);
    digitalWrite(S2Tyl, LOW);
  }

  if(A_ == HIGH) { //przod
    Serial.println("A+");

    digitalWrite(S1Przod, HIGH);
    digitalWrite(S2Przod, HIGH);

    digitalWrite(S1Tyl, LOW);
    digitalWrite(S2Tyl, LOW);
  }

  if(B_ == HIGH) { //tyl
    Serial.println("B+");

    digitalWrite(S1Przod, LOW);
    digitalWrite(S2Przod, LOW);

    digitalWrite(S1Tyl, HIGH);
    digitalWrite(S2Tyl, HIGH);
  }

  if(C_ == HIGH) { //lewo
    Serial.println("C+");

    digitalWrite(S1Przod, LOW);
    digitalWrite(S2Przod, HIGH);

    digitalWrite(S1Tyl, HIGH);
    digitalWrite(S2Tyl, LOW);
  }

  if(D_ == HIGH) { //prawo
    Serial.println("D+");

    digitalWrite(S1Przod, HIGH);
    digitalWrite(S2Przod, LOW);

    digitalWrite(S1Tyl, LOW);
    digitalWrite(S2Tyl, HIGH);
  }

  delay(100);
}

[/codesyntax]

One thought on “Dwukanałowy mostek H na Arduino – Budowa robota #2

  1. Dzień dobry.
    Właśnie szukałem czegoś takiego – robot (2 silniczki) + Arduino Uno + sterowanie radiowe.
    Byłoby super gdyby zechciał pan zamieścić graficzny obraz połączeń. Mam wnuka w wieku lat 16 i szukam czegoś co mógłbym budować razem z nim. Mimo, że jak sam Pan pisze, stron jest wiele, to mało jest takich czytelnych i prostych jak Pańska.
    Ukłony
    maciek

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *