Obsah:

Platforma ovládaná gyroskopom pre bludisko: 3 kroky
Platforma ovládaná gyroskopom pre bludisko: 3 kroky

Video: Platforma ovládaná gyroskopom pre bludisko: 3 kroky

Video: Platforma ovládaná gyroskopom pre bludisko: 3 kroky
Video: Metal Gear Solid Развитие Серии | Полная Хронология MGS 2024, November
Anonim
Platforma ovládaná gyroskopom pre bludisko
Platforma ovládaná gyroskopom pre bludisko

Tento návod bol vytvorený ako splnenie projektovej požiadavky kurzu Make na University of South Florida (www.makecourse.com) “

Tento jednoduchý projekt inšpirovaný samovyvažovacou platformou, ktorá čerpá spätnú väzbu zo senzora akcelerometra. Skúste to, ak ste to ešte neurobili.

Projekt používa Arduino UNO - ľahko použiteľný mikrokontrolér, ktorý môžete získať z webových stránok s online nákupmi! V tomto návode vám ukážem, ako si môžete vytvoriť vlastnú programovateľnú naklápaciu platformu - od procesu návrhu až po získavanie dielov, súbory pre 3D tlač, montáž a programovanie. Držte sa a poďme vpred!

Krok 1: Požadované súčasti a 3D tlačené diely

Požadované súčasti a 3D tlačené diely
Požadované súčasti a 3D tlačené diely
Požadované súčasti a 3D tlačené diely
Požadované súčasti a 3D tlačené diely
Požadované súčasti a 3D tlačené diely
Požadované súčasti a 3D tlačené diely

Zoznam komponentov použitých v projekte:

1. Arduino UNO Mikrokontrolér.

2. Doska s prepojovacími drôtmi.

3. Krabica.

4. Kruhová plošina

5. Maze.

6. Odkazy - 3 čísla nie

7. Základňa pre montáž troch serv.

8. Senzor gyroskopu/akcelerometra. (MPU6050)

Káble 9,1 sq mm (500 cm) - 4 ks

10. Oceľové guličky s priemerom 3 mm.

Väčšina dielov použitých na projekt je vytlačená 3D a priložil som stl. súbory pripravené na tlač.

Zostavte všetky diely podľa obrázkov. Bludisko je za tepla prilepené k kruhovej plošine, aby vyzeralo ako na obrázku. Tri servá by mali byť za tepla nalepené na 3D tlačenú základňu, ktorá je namontovaná na veku krabice. Krabica obsahuje Arduino UNO a Breadboard zostavené podľa obrázku. V nasledujúcom kroku bude prediskutované nastavenie breadboardu.

Po montáži by konečný prototyp mal vyzerať ako na poslednom obrázku.

Krok 2: Nastavenie Breadboard

Nastavenie Breadboard
Nastavenie Breadboard
Nastavenie Breadboard
Nastavenie Breadboard
Nastavenie Breadboard
Nastavenie Breadboard

Po montáži sú servopohony Arduino, senzor akcelerometra a serva zapojené podľa nasledujúceho postupu.

Kladné a záporné koľajnice na doske sú prepojené s 5 V a GND Arduina. Senzor je pripojený k Arduinu pomocou polmetrových vodičov, ktoré sa majú k snímaču spájkovať tak, aby kolíky VCC a GND senzora boli pripojené k kladným a záporným lištám na doske. Piny SCL a SDA senzora sa pripájajú k analógovým kolíkom A5 a A4 Arduina. Piny PWM troch serv sú pripojené k 2, 3, 4 kolíkom Arduina a kolíky +ve a -ve všetkých serv sú pripojené k kladným a záporným lištám dosky. s týmto sú naše spojenia hotové.

Krok 3: Kód pre projekt

knižnice MPU6050 a Servo si môžete stiahnuť z internetu a použiť ich na projekt. Zostavte a nahrajte nasledujúci kód do Arduina a projekt je pripravený. Nakloňte senzor a uvidíte, ako sa bludisko nakláňa rovnakým smerom! Vyriešenie hlavolamu trvá nejaký čas, pretože je to trochu náročné, ale je zábavné ho hrať.

#zahrnúť

#zahrnúť

#zahrnúť

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é nastavenie ()

{

Servo1.attach (2);

Servo2.attach (3);

Servo3.attach (4);

Wire.begin ();

Serial.begin (9600);

}

prázdna sluč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 =");

Sériový.tlač (sekera);

Serial.print ("ay =");

Serial.println (ay);

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

Servo1.write (servoPos1 ++);

Servo2.write (servoPos2--);

Servo3.write (servoPos3--); }

ak (sekera 120) {

Servo1.write (servoPos1--);

Servo2.write (servoPos2 ++);

Servo3.write (servoPos3--); }

ak (sekera> 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);

}

}

Odporúča: