Turinys:

Giroskopo jutiklio valdoma platforma labirintui: 3 žingsniai
Giroskopo jutiklio valdoma platforma labirintui: 3 žingsniai

Video: Giroskopo jutiklio valdoma platforma labirintui: 3 žingsniai

Video: Giroskopo jutiklio valdoma platforma labirintui: 3 žingsniai
Video: ROKAS GIRIOSE – InfiRay M6S19 PTZ termovizinės kameros pristatymas ir apžvalga 2024, Liepa
Anonim
Giroskopu valdoma platforma labirinto dėlionei
Giroskopu valdoma platforma labirinto dėlionei

Ši pamoka buvo sukurta vykdant Pietų Floridos universiteto „Make“kurso projekto reikalavimą (www.makecourse.com)"

Šį paprastą projektą įkvėpė savaime subalansuota platforma, kuri gauna atsiliepimus iš akselerometro jutiklio. Patikrinkite, jei to dar nepadarėte.

Projekte naudojamas „Arduino UNO“- paprasta naudoti mikrovaldiklį, kurį galite įsigyti iš internetinių parduotuvių svetainių! Šioje pamokoje aš parodysiu, kaip galite sukurti savo programuojamą pakreipimo platformą - nuo projektavimo iki dalių įsigijimo, 3D spausdinimo failų, surinkimo ir programavimo. Laikykitės ir eikime į priekį!

1 žingsnis: reikalingi komponentai ir 3D spausdintos dalys

Reikalingi komponentai ir 3D spausdintos dalys
Reikalingi komponentai ir 3D spausdintos dalys
Reikalingi komponentai ir 3D spausdintos dalys
Reikalingi komponentai ir 3D spausdintos dalys
Reikalingi komponentai ir 3D spausdintos dalys
Reikalingi komponentai ir 3D spausdintos dalys

Projektui naudojamų komponentų sąrašas:

1. „Arduino UNO“mikrovaldiklis.

2. Duonos lenta su trumpikliais.

3. Dėžutė.

4. Apvali platforma

5. Labirintas.

6. Nuorodos - 3 Ne

7. Pagrindas trims servo instaliacijoms.

8. Giroskopo/akselerometro jutiklis. (MPU6050)

9,1 kv. Mm laidai (500 cm) - 4 ne

10. 3 mm skersmens plieniniai rutuliai.

Dauguma projektui naudojamų dalių yra atspausdintos 3D, o aš pridėjau stl. failai paruošti spausdinti.

Surinkite visas dalis, kaip parodyta paveikslėliuose. Labirintas yra karštai priklijuotas prie apskritos platformos, kad atrodytų kaip paveikslėlyje. Trys servo servetėlės turi būti karštai priklijuotos ant 3D atspausdinto pagrindo, sumontuoto ant dėžutės dangčio. Dėžutėje yra „Arduino UNO“ir „Breadboard“, surinktos taip, kaip parodyta paveikslėlyje. Duonos lentos sąranka bus aptarta kitame žingsnyje.

Po surinkimo galutinis prototipas turėtų atrodyti kaip paskutinėje nuotraukoje.

2 veiksmas: „Breadboard“sąranka

Duonos lentos sąranka
Duonos lentos sąranka
Duonos lentos sąranka
Duonos lentos sąranka
Duonos lentos sąranka
Duonos lentos sąranka

Po surinkimo „Arduino“, akselerometro jutiklis, servos yra prijungti, kaip aprašyta toliau.

Duonos lentos teigiami ir neigiami bėgeliai yra prijungti atitinkamai prie „Arduino“5 V ir GND. Jutiklis prijungtas prie „Arduino“naudojant pusės metro laidus, kurie turi būti lituojami prie jutiklio taip, kad jutiklio VCC ir GND kaiščiai būtų prijungti prie +ve ir -ve bėgių ant duonos lentos. Jutiklio SCL ir SDA kaiščiai turi būti prijungti prie Arduino A5 ir A4 analoginių kaiščių. Trijų servo PWM kaiščiai yra prijungti atitinkamai prie 2, 3, 4 „Arduino“kaiščių, o visų servų +ve ir -ve kaiščiai yra prijungti prie duonos lentos +ve ir -ve bėgelių. su tuo mūsų ryšiai baigiami.

3 žingsnis: projekto kodas

galite atsisiųsti MPU6050 ir „Servo“bibliotekas iš interneto ir naudoti jas projektui. Surinkite ir įkelkite šį kodą į „Arduino“ir projektas yra paruoštas. Pakreipkite jutiklį ir pamatysite, kaip labirintas pakrypsta ta pačia kryptimi! Dėlionės sprendimas užtrunka šiek tiek laiko, nes tai šiek tiek sudėtinga, tačiau smagu žaisti.

#įtraukti

#įtraukti

#įtraukti

Servo servo1;

Servo servo2;

Servo servo3;

MPU6050 jutiklis;

int servoPos1 = 90;

int servoPos2 = 90;

int servoPos3 = 90;

int16_t kirvis, ay, az;

int16_t gx, gy, gz;

negaliojanti sąranka ()

{

Servo1.priedas (2);

Servo2.priedas (3);

Servo3.priedas (4);

Wire.begin ();

Serial.begin (9600);

}

tuštumos kilpa ()

{

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

kirvis = žemėlapis (kirvis, -17000, 17000, 0, 180);

ay = žemėlapis (ay, -17000, 17000, 0, 180);

Serijinis atspaudas ("ax =");

Serijinis atspaudas (kirvis);

Serijinis atspaudas ("ay =");

Serial.println (ay);

jei (kirvis <80 && ay <80) {

Servo1.write (servoPos1 ++);

Servo2.write (servoPos2--);

Servo3.write (servoPos3--); }

jei (120 kirvis) {

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.rašyti (0);

Servo2.rašyti (0);

Servo3.rašyti (0);

}

}

Rekomenduojamas: