Sadržaj:

Platforma s kontroliranim žiroskopom za labirint: 3 koraka
Platforma s kontroliranim žiroskopom za labirint: 3 koraka

Video: Platforma s kontroliranim žiroskopom za labirint: 3 koraka

Video: Platforma s kontroliranim žiroskopom za labirint: 3 koraka
Video: Часть 4. Аудиокнига Эдит Уортон «Дом веселья» (книга 2 — главы 01–05) 2024, Srpanj
Anonim
Platforma kontrolirana žiroskopom za slagalicu Maze
Platforma kontrolirana žiroskopom za slagalicu Maze

Ova instrukcija nastala je u skladu sa zahtjevima projekta Make tečaja na Sveučilištu Južne Floride (www.makecourse.com)"

Ovaj jednostavan projekt inspiriran samo balansirajućom platformom koja uzima povratne informacije od senzora akcelerometra. Provjerite ako već niste.

Projekt koristi Arduino UNO - mikrokontroler jednostavan za korištenje koji možete nabaviti s web stranica za online kupovinu! U ovom uputstvu pokazat ću kako možete napraviti vlastitu programabilnu platformu za naginjanje - od procesa projektiranja do nabavke dijelova, datoteka za 3D ispis, montaže i programiranja. Držite se i idemo naprijed!

Korak 1: Potrebne komponente i 3D ispisani dijelovi

Potrebne komponente i 3D ispisani dijelovi
Potrebne komponente i 3D ispisani dijelovi
Potrebne komponente i 3D ispisani dijelovi
Potrebne komponente i 3D ispisani dijelovi
Potrebne komponente i 3D ispisani dijelovi
Potrebne komponente i 3D ispisani dijelovi

Popis komponenti korištenih za projekt:

1. Arduino UNO mikrokontroler.

2. Breadboard sa kratkospojnim žicama.

3. Kutija.

4. Kružna platforma

5. Labirint.

6. Linkovi - 3 Ne

7. A Baza za montažu tri serva.

8. Senzor žiroskopa/akcelerometra. (MPU6050)

Žice od 9,1 kvadratnih metara (500 cm) - 4 ne

10. Čelične kuglice promjera 3 mm.

Većina dijelova koji su korišteni za projekt su 3D ispisani i priložio sam stl. datoteke spremne za ispis.

Sastavite sve dijelove kako je prikazano na slikama. Labirint je vruće zalijepljen na kružnu platformu kako bi izgledao kao na slici. Tri servo pogona treba vruće zalijepiti na 3D tiskanu podlogu koja je montirana na poklopac kutije. Kutija sadrži Arduino UNO i Breadboard sastavljene kako je prikazano na slici. O postavljanju matične ploče raspravljat će se u sljedećem koraku.

Nakon montaže, konačni prototip trebao bi izgledati kao na posljednjoj slici.

Korak 2: Postavljanje Breadboard -a

Postavljanje Breadboard -a
Postavljanje Breadboard -a
Postavljanje Breadboard -a
Postavljanje Breadboard -a
Postavljanje Breadboard -a
Postavljanje Breadboard -a

Nakon montaže, Arduino, senzor akcelerometra, servo upravljači povezani su kako je opisano u nastavku.

Pozitivne i negativne tračnice na matičnoj ploči spojene su na 5V odnosno GND Arduina. Senzor je spojen na Arduino pomoću žica od pola metra koje treba lemiti na senzor tako da se VCC i GND pinovi senzora spoje na +ve i -ve tračnice na ploči. SCL i SDA pinovi senzora za spajanje na A5 i A4 analogne pinove Arduina. PWM pinovi tri servo pogona spojeni su na 2, 3, 4 pina Arduina, a +ve i -ve pinovi svih servo pogona spojeni su na +ve i -ve tračnice matične ploče. time su naše veze uspostavljene.

Korak 3: Kôd za projekt

biblioteke MPU6050 i Servo možete preuzeti s interneta i koristiti za projekt. Sastavite i prenesite sljedeći kod na Arduino i projekt je spreman. Nagnite senzor i možete vidjeti kako se labirint naginje u istom smjeru! Za rješavanje zagonetke potrebno je neko vrijeme jer je malo izazovna, ali s njom se zabavno igrati.

#uključi

#uključi

#uključi

Servo Servo1;

Servo Servo2;

Servo Servo3;

Senzor MPU6050;

int servoPos1 = 90;

int servoPos2 = 90;

int servoPos3 = 90;

int16_t sjekira, ay, az;

int16_t gx, gy, gz;

void setup ()

{

Servo1.priključak (2);

Servo2.priključak (3);

Servo3.priključak (4);

Wire.begin ();

Serial.begin (9600);

}

void loop ()

{

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

sjekira = karta (sjekira, -17000, 17000, 0, 180);

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

Serial.print ("ax =");

Serijski.tisak (sjekira);

Serial.print ("ay =");

Serijski.println (aj);

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

Servo1.write (servoPos1 ++);

Servo2.write (servoPos2--);

Servo3.write (servoPos3--); }

if (sjekira 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);

}

}

Preporučeni: