Kazalo:

Platforma z giroskopskim senzorjem za sestavljanko Labirint: 3 koraki
Platforma z giroskopskim senzorjem za sestavljanko Labirint: 3 koraki

Video: Platforma z giroskopskim senzorjem za sestavljanko Labirint: 3 koraki

Video: Platforma z giroskopskim senzorjem za sestavljanko Labirint: 3 koraki
Video: FULL BUILD | Rebuilding A DESTROYED Porsche 911 Turbo! 2024, Julij
Anonim
Platforma z žiroskopskim senzorjem za labirint
Platforma z žiroskopskim senzorjem za labirint

Ta pouk je bil ustvarjen v skladu s projektnimi zahtevami predmeta Make na Univerzi v Južni Floridi (www.makecourse.com)"

Ta preprost projekt, ki ga navdihuje samoizravnalna platforma, ki sprejema povratne informacije od senzorja merilnika pospeška. Preverite, če tega še niste storili.

Projekt uporablja Arduino UNO - enostaven za uporabo mikrokrmilnik, ki ga dobite s spletnih mest za spletno nakupovanje! V tem navodilu bom pokazal, kako lahko ustvarite svojo lastno programabilno nagibno platformo - od procesa oblikovanja do nabave delov, datotek 3D tiskanja, sestavljanja in programiranja. Držite se in gremo naprej!

Korak: Potrebne komponente in 3D natisnjeni deli

Potrebne komponente in 3D natisnjeni deli
Potrebne komponente in 3D natisnjeni deli
Potrebne komponente in 3D natisnjeni deli
Potrebne komponente in 3D natisnjeni deli
Potrebne komponente in 3D natisnjeni deli
Potrebne komponente in 3D natisnjeni deli

Seznam komponent, uporabljenih za projekt:

1. Arduino UNO mikrokrmilnik.

2. Lesena deska z mostičnimi žicami.

3. Škatla.

4. Krožna platforma

5. Labirint.

6. Povezave - 3 ne

7. Osnova za namestitev treh servomotorjev.

8. Senzor žiroskopa/merilnika pospeška. (MPU6050)

9,1 kvadratnih mm žic (500 cm) - 4 št

10. Jeklene kroglice premera 3 mm.

Večina delov, uporabljenih za projekt, je 3D natisnjenih in priložil sem stl. datoteke pripravljene za tiskanje.

Sestavite vse dele, kot je prikazano na slikah. Labirint je vroče prilepljen na krožno ploščad, da izgleda kot na sliki. Trije servomotorji morajo biti vroče zlepljeni na 3D tiskano podlago, ki je nameščena na pokrovu škatle. Škatla vsebuje Arduino UNO in Breadboard, sestavljene, kot je prikazano na sliki. V naslednjem koraku bomo razpravljali o nastavitvi matične plošče.

Po montaži bi moral biti zadnji prototip videti kot na zadnji sliki.

2. korak: Nastavitev tiskalne plošče

Nastavitev ploščice
Nastavitev ploščice
Nastavitev ploščice
Nastavitev ploščice
Nastavitev ploščice
Nastavitev ploščice

Po montaži se Arduino, senzor pospeška, servomotorji priključijo, kot je opisano v nadaljevanju.

Pozitivni in negativni tirnici na plošči sta povezani s 5V oziroma GND Arduina. Tipalo je priključeno na Arduino z žicami pol metra, ki jih je treba spajkati na senzor, tako da se zatiči VCC in GND senzorja povežejo z +ve in -ve tirnicami na plošči. Zatiči SCL in SDA senzorja za povezavo z analognimi zatiči A5 in A4 Arduina. PWM zatiči treh servomotorjev so povezani z 2, 3, 4 nožicami Arduina, zatiči +ve in -ve vseh servomotorjev pa so povezani s tirnicama +ve in -ve na plošči. s tem so naše povezave končane.

3. korak: Koda za projekt

Knjižnice MPU6050 in Servo lahko prenesete z interneta in jih uporabite za projekt. Sestavite in naložite naslednjo kodo v Arduino in projekt je pripravljen. Nagnite senzor in videli boste, kako se labirint nagiba v isto smer! Reševanje uganke traja nekaj časa, saj je malo zahtevno, a zabavno se je igrati.

#vključi

#vključi

#vključi

Servo Servo1;

Servo Servo2;

Servo Servo3;

Senzor MPU6050;

int servoPos1 = 90;

int servoPos2 = 90;

int servoPos3 = 90;

int16_t sekira, ay, az;

int16_t gx, gy, gz;

void setup ()

{

Servo1.priključek (2);

Servo2.priključek (3);

Servo3.priključek (4);

Wire.begin ();

Serial.begin (9600);

}

void loop ()

{

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

sekira = zemljevid (sekira, -17000, 17000, 0, 180);

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

Serial.print ("ax =");

Serijski.tisk (sekira);

Serial.print ("ay =");

Serial.println (aj);

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

Servo1.write (servoPos1 ++);

Servo2.write (servoPos2--);

Servo3.write (servoPos3--); }

if (sekira 120) {

Servo1.write (servoPos1--);

Servo2.write (servoPos2 ++);

Servo3.write (servoPos3--); }

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

Servo1.write (servoPos1--);

Servo2.write (servoPos2--);

Servo3.write (servoPos3 ++); }

če (ax == 90 && ay == 90) {

Servo1.write (0);

Servo2.write (0);

Servo3.write (0);

}

}

Priporočena: