Spisu treści:

Platforma sterowana czujnikiem żyroskopowym dla labiryntu: 3 kroki
Platforma sterowana czujnikiem żyroskopowym dla labiryntu: 3 kroki

Wideo: Platforma sterowana czujnikiem żyroskopowym dla labiryntu: 3 kroki

Wideo: Platforma sterowana czujnikiem żyroskopowym dla labiryntu: 3 kroki
Wideo: SWIFT 2 - Seria B, cz. 5, po. 1/3: Czujniki. Akcelerometr i żyroskop. UczymySieKodowac.pl 2024, Lipiec
Anonim
Platforma sterowana czujnikiem żyroskopowym dla labiryntu puzzle
Platforma sterowana czujnikiem żyroskopowym dla labiryntu puzzle

Ta instrukcja została stworzona w celu spełnienia wymagań projektowych kursu Make na Uniwersytecie Południowej Florydy (www.makecourse.com)"

Ten prosty projekt zainspirowany samorównoważącą się platformą, która pobiera informacje zwrotne z czujnika akcelerometru. Sprawdź to, jeśli jeszcze tego nie zrobiłeś.

W projekcie wykorzystano Arduino UNO - Łatwy w użyciu mikrokontroler, który można pobrać ze sklepów internetowych! W tej instrukcji pokażę, jak możesz stworzyć własną programowalną platformę przechylania - od procesu projektowania po pozyskiwanie części, pliki do drukowania 3D, montaż i programowanie. Trzymaj się i ruszajmy naprzód!

Krok 1: Wymagane komponenty i części drukowane w 3D

Wymagane komponenty i części drukowane 3D
Wymagane komponenty i części drukowane 3D
Wymagane komponenty i części drukowane 3D
Wymagane komponenty i części drukowane 3D
Wymagane komponenty i części drukowane 3D
Wymagane komponenty i części drukowane 3D

Lista komponentów użytych do projektu:

1. Mikrokontroler Arduino UNO.

2. Płytka do krojenia chleba z przewodami połączeniowymi.

3. Pudełko.

4. Okrągła platforma

5. Labirynt.

6. Linki - 3 nie

7. A Podstawa do montażu trzech serw.

8. Czujnik żyroskopowy/akcelerometr. (MPU6050)

Przewody 9,1 mm² (500 cm) - 4 nie

10. Kulki stalowe o średnicy 3 mm.

Większość części użytych do projektu jest drukowana w 3D i załączam stl. pliki gotowe do druku.

Zmontuj wszystkie części, jak pokazano na rysunkach. Labirynt jest przyklejony na gorąco do okrągłej platformy, aby wyglądał jak na zdjęciu. Trzy serwa należy nakleić na gorąco na wydrukowanej w 3D podstawie, która jest zamontowana na wieczku pudełka. Pudełko zawiera Arduino UNO i Breadboard zmontowane jak pokazano na rysunku. Konfiguracja płytki prototypowej zostanie omówiona w następnym kroku.

Po złożeniu ostateczny prototyp powinien wyglądać jak na ostatnim zdjęciu.

Krok 2: Konfiguracja deski do krojenia chleba

Konfiguracja deski do krojenia chleba
Konfiguracja deski do krojenia chleba
Konfiguracja deski do krojenia chleba
Konfiguracja deski do krojenia chleba
Konfiguracja deski do krojenia chleba
Konfiguracja deski do krojenia chleba

Po zmontowaniu Arduino, czujnik akcelerometru, serwa podłącza się w sposób opisany poniżej.

Szyny dodatnie i ujemne na płytce stykowej są podłączone odpowiednio do 5 V i GND Arduino. Czujnik jest podłączony do Arduino za pomocą półmetrowych przewodów, które należy przylutować do czujnika, tak aby piny VCC i GND czujnika były podłączone odpowiednio do szyn +ve i -ve na płytce stykowej. Piny SCL i SDA czujnika należy podłączyć do pinów analogowych A5 i A4 Arduino. Piny PWM trzech serw są podłączone odpowiednio do 2, 3, 4 pinów Arduino, a piny +ve i -ve wszystkich serw są połączone z szynami +ve i -ve płytki prototypowej. dzięki temu nasze połączenia są skończone.

Krok 3: Kod projektu

możesz pobrać biblioteki MPU6050 i Servo z Internetu i wykorzystać je w projekcie. Skompiluj i prześlij poniższy kod do Arduino i projekt jest gotowy. Przechyl czujnik, a zobaczysz, jak labirynt przechyla się w tym samym kierunku! Rozwiązanie zagadki zajmuje trochę czasu, ponieważ jest trochę trudne, ale fajnie się z nią bawi.

#włączać

#włączać

#włączać

Serwo Serwo1;

Serwo Serwo2;

Serwo Serwo3;

czujnik MPU6050;

int serwoPoz1=90;

int serwoPos2=90;

int serwoPos3=90;

int16_t ax, ay, az;

int16_t gx, gy, gz;

pusta konfiguracja ()

{

Serwo1.załącz (2);

Serwo2.załącz (3);

Serwo3.załącz (4);

Drut.rozpocznij ();

Serial.początek (9600);

}

pusta pętla ()

{

sensor.getMotion6 (&ax, &ay, &az, &gx, &gy, &gz);

topór = mapa (topór, -17000, 17000, 0, 180);

ay = mapa (ay, -17000, 17000, 0, 180);

Serial.print ("ax=");

Serial.print (ax);

Serial.print ("ay=");

Serial.println (ay);

jeśli (ax < 80 && a < 80){

Servo1.write(servoPos1++);

Servo2.write(servoPos2--);

Servo3.write(servoPos3--); }

jeśli (topór 120){

Servo1.write(servoPos1--);

Servo2.write(servoPos2++);

Servo3.write(servoPos3--); }

jeśli (ax > 120 && ay > 0){

Servo1.write(servoPos1--);

Servo2.write(servoPos2--);

Servo3.write(servoPos3++); }

jeśli (ax == 90 && ay == 90){

Servo1.write(0);

Servo2.write(0);

Servo3.write(0);

}

}

Zalecana: