Trójwymiarowy labirynt

Trójwymiarowy labirynt
Pobierz PDF Download icon

Ta prosta konstrukcja może dostarczyć wiele uciechy, tak podczas budowania i programowania systemu, jak i przechodzenia labiryntu. Została zbudowana z zastosowaniem modułu Arduino Uno, który steruje ruchami labiryntu poprzez serwomechanizmy. Zabawkę kontroluje się za pomocą dwóch joysticków.

Do budowy urządzenia potrzebnych będzie kilka modułów elektronicznych oraz elementy i materiały niezbędne do wykonania postawy i zastępujące obudowę. Najważniejsze z nich to:

  • moduł Arduino Uno,
  • płytka stykowa,
  • dwa moduły joysticka,
  • cztery serwosilniki SG90,
  • kable do połączenia elementów,
  • sztywny karton bądź cienki MDF,
  • śrubki, nakrętki itp. elementy połączeniowe.

Joysticki

W pierwszej kolejności zmontujemy kontroler do sterowania zabawką. Składa się on z dwóch modułów joysticków analogowych oraz podstawek, wykonanych z kartonu bądź MDFu. Konstrukcja jest bardzo prosta – należy umieścić moduł joysticka na tekturze i dodać dwa boczne elementy kartonowe tak, jak to zostało pokazane na fotografii 1. Joysticki posłużą do sterowania serwomechanizmami poruszającymi labiryntem.

Fotografia 1. Zamontowane na podstawkach joysticki

W następnej kolejności należy połączyć elementy kontrolera, wraz z elektroniką sterującą. Na wspólnej podstawie montowana jest płytka stykowa oraz moduły z joystickami na podstawkach. Zmontowany fragment został pokazany na fotografii 2.

Fotografia 2. Zmontowany kontroler z manipulatorami i elektroniką sterującą

Machanizm

W pierwszej kolejności trzeba przygotować karton – pociąć go na fragmenty, pozwalające na zamontowanie serwomechanizmów. Gotowe moduły z ułożonymi prostopadle serwomechanizmami zostały pokazane na fotografii 3.

Fotografia 3. Zmontowane serwomechanizmy

Zestawione w ten sposób serwa mogą niezależnie poruszać się w dwóch osiach – X i Y, którym odpowiadają dwa joysticki. Zmontowane mechanizmy umieszczane są na wspólnej podstawie, co zostało pokazane na fotografii 4.

Fotografia 4. Serwomechanizmy zainstalowane na wspólnej podstawie

Labirynt

Ostatnim elementem jest labirynt. Jego projekt w dużym stopniu zależny od pomysłowości konstruktora budującego urządzenie. Może być dowolnie skomplikowany i dopasowany do naszych potrzeb i poziomu trudności, przykładowa realizacja została pokazana na fotografii 5.

Fotografia 5. Labirynt

Po zmontowaniu kartonowego labiryntu należy umieścić go na zmontowanych wcześniej serwomechanizmach tak, aby zapewnić im swobodę poruszania labiryntem.

Połączenia elektryczne

Ostatnim etapem jest podłączenie poszczególnych elementów do sterującego systemem modułu Arduino. W pierwszej kolejności podłączamy serwomechanizmy od S1...S4 do pinów cyfrowych Arduino (należy zapamiętać, która oś jest podłączona, do którego pinu, aby odpowiednio skonfigurować to w programie.

Następnie podłączane są wyjścia joysticków. Oprócz napięcia zasilania, do joysticka podłącza się wejścia analogowe modułu Arduino. Napięcie wyjściowe z modułu jest proporcjonalne do wychylenia joysticka. Cztery wyjścia z joysticków podpinamy do pinów oznaczonych A0, A1, A2 oraz A3 (lub dowolnych innych pinów analogowych, jeśli odpowiednio zmienimy konfigurację w szkicu Arduino).

Oprogramowanie

Kod programu sterującego labiryntem został napisany w Arduino IDE. Jego główne zadanie polega na monitorowaniu pozycji joysticków, podłączonych do wejść analogowych i zgodnie z ich wychyleniem porusza serwomechanizmami. Kod programu zaprezentowano na listingu 1.

Listing 1. Kod programu sterującego labityntem

#include<Servo.h>

// Inicjalizacja wyjść serw
Servo s1;
Servo s2;
Servo s3;
Servo s4;

// Definicje pinów analogowych
int x1 = 0;      // Pin A0
int y1 = 1;     // Pin A1
int x2 = 2;     // Pin A2
int y2 = 3;     // Pin A3

int val;
void setup(){
 // Definicje pinów wyjściowych serw
 s1.attach(13);  // Pin 13
 s2.attach(12);  // Pin 12
 s3.attach(8);   // Pin 8
 s4.attach(7);   // Pin 7
}

void loop(){
 // Odczyt wartości z joysticka
 val = analogRead(x1);
 // Przemapowanie wartości
 val = map(val,0,1023,135,45);
 // Ruch serwem
 s1.write(val);
 delay(15);
 
 val = analogRead(y1);
 val = map(val,0,1023,135,45);
 s2.write(val);
 delay(15);
 
 val = analogRead(y1);
 val = map(val,0,1023,135,45);
 s2.write(val);
 delay(15);
 
 val = analogRead(y1);
 val = map(val,0,1023,135,45);
 s2.write(val);
 delay(15);
}

Do obsługi joysticków wykorzystano wejścia analogowe, ponieważ manipulatory te mają wbudowane dwa potencjometry, które sprzęgnięte są z drążkiem joysticka. Poruszając nim, zmienia się położenie suwaków potencjometrów, które są skonfigurowane jako regulowane dzielniki napięcia – na zewnętrzne nóżki potencjometrów podawane jest napięcie i masa, a suwaki są wyjściami dzielników. W ten sposób zmieniając pozycję manipulatora zmienia się napięcia wyjściowe z joysticka, proporcjonalnie do wychylenia.

Każdy joystick ma dwa wyjścia napięciowe – jedno dla osi X, a jedno Y. Napięcia są monitorowane przez przetwornik analogowo-cyfrowy w mikrokontrolerze, a następnie służą do sterowania położeniem serwomechanizmów. Aby przekonwertować pomiar z ADC (w zakresie od 0 do 1023, ponieważ przetwornik ma 10 bitów) na kąt, który ma być ustawiony na serwomechaniźmie (od 45 do 135 stopni) używana jest funkcja map.

Nikodem Czechowski, EP

Źródło: http://bit.ly/3t0yuVQ

Artykuł ukazał się w
Elektronika Praktyczna
luty 2021
DO POBRANIA
Pobierz PDF Download icon

Elektronika Praktyczna Plus lipiec - grudzień 2012

Elektronika Praktyczna Plus

Monograficzne wydania specjalne

Elektronik kwiecień 2021

Elektronik

Magazyn elektroniki profesjonalnej

Raspberry Pi 2015

Raspberry Pi

Wykorzystaj wszystkie możliwości wyjątkowego minikomputera

Świat Radio kwiecień - maj 2021

Świat Radio

Magazyn krótkofalowców i amatorów CB

Automatyka Podzespoły Aplikacje kwiecień 2021

Automatyka Podzespoły Aplikacje

Technika i rynek systemów automatyki

Elektronika Praktyczna kwiecień 2021

Elektronika Praktyczna

Międzynarodowy magazyn elektroników konstruktorów

Elektronika dla Wszystkich maj 2021

Elektronika dla Wszystkich

Interesująca elektronika dla pasjonatów