Obsah:

Platforma ovládaná gyroskopickým senzorem pro bludiště: 3 kroky
Platforma ovládaná gyroskopickým senzorem pro bludiště: 3 kroky

Video: Platforma ovládaná gyroskopickým senzorem pro bludiště: 3 kroky

Video: Platforma ovládaná gyroskopickým senzorem pro bludiště: 3 kroky
Video: Metal Gear Solid Развитие Серии | Полная Хронология MGS 2024, Červenec
Anonim
Platforma ovládaná gyroskopickým senzorem pro bludiště
Platforma ovládaná gyroskopickým senzorem pro bludiště

Tento instruktáž byl vytvořen při splnění projektových požadavků kurzu Make na University of South Florida (www.makecourse.com) “

Tento jednoduchý projekt inspirovaný samovyvažovací platformou, která přijímá zpětnou vazbu ze senzoru akcelerometru. Podívejte se, jestli jste to ještě neudělali.

Projekt využívá Arduino UNO - snadno použitelný mikrokontrolér, který můžete získat z webových stránek s online nákupy! V tomto pokynu ukážu, jak si můžete vytvořit vlastní programovatelnou naklápěcí platformu - od procesu návrhu až po získávání dílů, souborů 3D tisku, montáže a programování. Držte se a jdeme vpřed!

Krok 1: Požadované součásti a 3D tištěné díly

Požadované součásti a 3D vytištěné díly
Požadované součásti a 3D vytištěné díly
Požadované součásti a 3D vytištěné díly
Požadované součásti a 3D vytištěné díly
Požadované součásti a 3D vytištěné díly
Požadované součásti a 3D vytištěné díly

Seznam komponent použitých pro projekt:

1. Arduino UNO Mikrokontrolér.

2. Prkénko s propojovacími dráty.

3. Krabice.

4. Kruhová plošina

5. Maze.

6. Odkazy - 3 ne

7. Základna pro montáž tří serv.

8. Senzor gyroskopu/akcelerometru. (MPU6050)

Dráty 9,1 sq mm (500 cm) - 4 ne

10. Ocelové kuličky o průměru 3 mm.

Většina částí použitých pro projekt je 3D vytištěna a připojil jsem stl. soubory připravené k tisku.

Sestavte všechny díly podle obrázků. Bludiště je na kruhové plošině přilepeno za tepla, aby vypadalo jako na obrázku. Tři serva by měla být nalepena za tepla na 3D tištěnou základnu, která je namontována na víku krabice. Krabice obsahuje Arduino UNO a Breadboard sestavené podle obrázku. Nastavení prkénka bude probráno v dalším kroku.

Po sestavení by konečný prototyp měl vypadat jako na posledním obrázku.

Krok 2: Nastavení Breadboard

Nastavení Breadboard
Nastavení Breadboard
Nastavení Breadboard
Nastavení Breadboard
Nastavení Breadboard
Nastavení Breadboard

Po sestavení jsou Arduino, senzor akcelerometru a serva připojeny, jak je popsáno v následujícím textu.

Pozitivní a negativní kolejnice na desce jsou připojeny k 5V a GND Arduina. Senzor je připojen k Arduinu pomocí půlmetrových vodičů, které mají být připájeny k senzoru tak, aby kolíky VCC a GND senzoru byly připojeny k kladným a záporným lištám na desce. Piny SCL a SDA senzoru, které mají být připojeny k analogovým pinům A5 a A4 Arduina. Piny PWM tří serv jsou připojeny k 2, 3, 4 kolíkům Arduina a piny +ve a -ve všech serv jsou připojeny k kladným a záporným kolejnicím desky. s tím jsou naše spojení hotová.

Krok 3: Kód pro projekt

můžete si stáhnout knihovny MPU6050 a Servo z internetu a použít je pro projekt. Zkompilujte a nahrajte následující kód do Arduina a projekt je připraven. Nakloňte senzor a můžete vidět bludiště naklánět stejným směrem! Vyřešení hádanky nějakou dobu trvá, protože je to trochu náročné, ale je zábavné si s tím hrát.

#zahrnout

#zahrnout

#zahrnout

Servo Servo1;

Servo Servo2;

Servo Servo3;

Snímač MPU6050;

int servoPos1 = 90;

int servoPos2 = 90;

int servoPos3 = 90;

int16_t sekera, ay, az;

int16_t gx, gy, gz;

neplatné nastavení ()

{

Servo1.attach (2);

Servo2.attach (3);

Servo3.attach (4);

Wire.begin ();

Serial.begin (9600);

}

prázdná smyčka ()

{

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

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

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

Serial.print ("ax =");

Serial.print (sekera);

Serial.print ("ay =");

Serial.println (ay);

if (sekera <80 && ay <80) {

Servo1.write (servoPos1 ++);

Servo2.write (servoPos2--);

Servo3.write (servoPos3--); }

if (sekera 120) {

Servo1.write (servoPos1--);

Servo2.write (servoPos2 ++);

Servo3.write (servoPos3--); }

if (ax> 120 && ay> 0) {

Servo1.write (servoPos1--);

Servo2.write (servoPos2--);

Servo3.write (servoPos3 ++); }

if (ax == 90 && ay == 90) {

Servo1.write (0);

Servo2.write (0);

Servo3.write (0);

}

}

Doporučuje: