Satura rādītājs:

Žiroskopa sensora kontrolēta platforma labirints mīklai: 3 soļi
Žiroskopa sensora kontrolēta platforma labirints mīklai: 3 soļi

Video: Žiroskopa sensora kontrolēta platforma labirints mīklai: 3 soļi

Video: Žiroskopa sensora kontrolēta platforma labirints mīklai: 3 soļi
Video: Control Moment Gyroscope Platform Test 2 2024, Jūlijs
Anonim
Žiroskopa sensora kontrolēta platforma labirints mīklai
Žiroskopa sensora kontrolēta platforma labirints mīklai

Šī pamācība tika izveidota, izpildot Dienvidfloridas universitātes Make kursa projekta prasības (www.makecourse.com)"

Šo vienkāršo projektu iedvesmojusi pašbalansējoša platforma, kas saņem atsauksmes no akselerometra sensora. Pārbaudiet to, ja vēl neesat to izdarījis.

Projektā tiek izmantots Arduino UNO - viegli lietojams mikrokontrolleris, ko varat iegūt no tiešsaistes iepirkšanās vietnēm! Šajā pamācībā es parādīšu, kā jūs varat izveidot savu programmējamo noliekšanas platformu - no projektēšanas procesa līdz detaļu iegādei, 3D drukas failiem, montāžai un programmēšanai. Turies un iesim uz priekšu!

1. darbība. Nepieciešamās sastāvdaļas un 3D drukātās detaļas

Nepieciešamās sastāvdaļas un 3D drukātās detaļas
Nepieciešamās sastāvdaļas un 3D drukātās detaļas
Nepieciešamās sastāvdaļas un 3D drukātās detaļas
Nepieciešamās sastāvdaļas un 3D drukātās detaļas
Nepieciešamās sastāvdaļas un 3D drukātās detaļas
Nepieciešamās sastāvdaļas un 3D drukātās detaļas

Projektā izmantoto komponentu saraksts:

1. Arduino UNO mikrokontrolleris.

2. Maizes dēlis ar džemperu vadiem.

3. Kastīte.

4. apļveida platforma

5. Labirints.

6. Saites - 3 nē

7. Bāze trīs servo stiprināšanai.

8. Žiroskopu/akselerometra sensors. (MPU6050)

9,1 kvadrātmetru stieples (500 cm) - 4 nē

10. 3 mm diametra tērauda lodītes.

Lielākā daļa projektam izmantoto detaļu ir 3D drukātas, un es esmu pievienojis stl. faili ir gatavi drukāšanai.

Salieciet visas detaļas, kā parādīts attēlos. Labirints ir karsti pielīmēts pie apļveida platformas, lai izskatītos kā attēlā. Trīs servos jābūt karsti pielīmētam uz 3D drukātas pamatnes, kas uzstādīta uz kastes vāka. Kastē ir Arduino UNO un maizes dēlis, kas samontēti, kā parādīts attēlā. Maizes dēļa iestatīšana tiks apspriesta nākamajā darbībā.

Pēc montāžas gala prototipam vajadzētu izskatīties kā pēdējā attēlā.

2. darbība: maizes dēļa iestatīšana

Maizes dēļa iestatīšana
Maizes dēļa iestatīšana
Maizes dēļa iestatīšana
Maizes dēļa iestatīšana
Maizes dēļa iestatīšana
Maizes dēļa iestatīšana

Pēc montāžas Arduino, akselerometra sensors, servo savieno, kā aprakstīts turpmāk.

Maizes dēļa pozitīvās un negatīvās sliedes ir attiecīgi savienotas ar Arduino 5V un GND. Sensors ir savienots ar Arduino, izmantojot pusmetra vadus, kas jāpielodē pie sensora tā, lai sensora VCC un GND tapas būtu savienojamas attiecīgi ar +ve un -ve sliedēm uz maizes dēļa. Sensora SCL un SDA tapas jāpievieno Arduino A5 un A4 analogajām tapām. Trīs servo PWM tapas ir attiecīgi savienotas ar 2, 3, 4 Arduino tapām un visu servu +ve un -ve tapas ir savienotas ar maizes dēļa +ve un -ve sliedēm. ar to mūsu savienojumi ir pabeigti.

3. darbība: projekta kods

jūs varat lejupielādēt MPU6050 un Servo bibliotēkas no interneta un izmantot to projektam. Apkopojiet un augšupielādējiet šādu kodu Arduino, un projekts ir gatavs. Nolieciet sensoru, un jūs varat redzēt, kā labirints noliecas vienā virzienā! Mīklas atrisināšana prasa zināmu laiku, jo tā ir nedaudz izaicinoša, taču ar to ir jautri spēlēties.

#iekļaut

#iekļaut

#iekļaut

Servo Servo1;

Servo Servo2;

Servo Servo3;

MPU6050 sensors;

int servoPos1 = 90;

int servoPos2 = 90;

int servoPos3 = 90;

int16_t cirvis, ay, az;

int16_t gx, gy, gz;

anulēts iestatījums ()

{

Servo1.pielikums (2);

Servo2.pielikums (3);

Servo3.pielikums (4);

Wire.begin ();

Sērijas sākums (9600);

}

tukša cilpa ()

{

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

cirvis = karte (cirvis, -17000, 17000, 0, 180);

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

Sērijas nospiedums ("ax =");

Sērijas nospiedums (cirvis);

Sērijas nospiedums ("ay =");

Serial.println (ay);

ja (cirvis <80 && ay <80) {

Servo1.write (servoPos1 ++);

Servo2.write (servoPos2--);

Servo3.write (servoPos3--); }

ja (cirvis 120) {

Servo1.write (servoPos1--);

Servo2.write (servoPos2 ++);

Servo3.write (servoPos3--); }

ja (cirvis> 120 && ay> 0) {

Servo1.write (servoPos1--);

Servo2.write (servoPos2--);

Servo3.write (servoPos3 ++); }

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

Servo1.rakstīt (0);

Servo2.rakstīt (0);

Servo3.rakstīt (0);

}

}

Ieteicams: