Cuprins:

Platformă controlată cu senzor giroscopic pentru puzzle labirint: 3 pași
Platformă controlată cu senzor giroscopic pentru puzzle labirint: 3 pași

Video: Platformă controlată cu senzor giroscopic pentru puzzle labirint: 3 pași

Video: Platformă controlată cu senzor giroscopic pentru puzzle labirint: 3 pași
Video: Kawasaki 1400GTR - Vaca pe 2 roti 2024, Iulie
Anonim
Platformă controlată cu senzor giroscopic pentru puzzle labirint
Platformă controlată cu senzor giroscopic pentru puzzle labirint

Acest instructable a fost creat pentru îndeplinirea cerințelor de proiect ale cursului Make la Universitatea din Florida de Sud (www.makecourse.com)"

Acest proiect simplu inspirat de o platformă de auto-echilibrare care preia feedback de la senzorul accelerometrului. Verificați dacă nu ați făcut-o deja.

Proiectul folosește Arduino UNO - un microcontroler ușor de utilizat pe care îl puteți obține de pe site-urile de cumpărături online! În acest instructable, vă voi arăta cum vă puteți crea propria platformă de înclinare programabilă - de la procesul de proiectare la aprovizionarea cu piese, fișiere de imprimare 3D, asamblare și programare. Rămâneți și să mergem înainte!

Pasul 1: Componente necesare și piese imprimate 3D

Componente necesare și piese imprimate 3D
Componente necesare și piese imprimate 3D
Componente necesare și piese imprimate 3D
Componente necesare și piese imprimate 3D
Componente necesare și piese imprimate 3D
Componente necesare și piese imprimate 3D

Lista componentelor utilizate pentru proiect:

1. Microcontroler ARduino UNO.

2. Placă de pâine cu fire jumper.

3. O cutie.

4. Platforma circulară

5. Labirint.

6. Link-uri - 3 Nu

7. O bază pentru montarea a trei servo-uri.

8. Senzor giroscop / accelerometru. (MPU6050)

Sârme de 9,1mp mm (500cm) - 4 nu

10. bile de oțel cu diametrul de 3 mm.

Majoritatea pieselor utilizate pentru proiect sunt tipărite 3D și am atașat stl. fișiere pregătite pentru tipărire.

Asamblați toate părțile așa cum se arată în figuri. Labirintul este lipit la cald de platforma circulară pentru a arăta ca în imagine. Cele trei servome trebuie lipite la cald pe baza imprimată 3D care este montată pe capacul cutiei. Cutia conține Arduino UNO și Breadboard asamblate așa cum se arată în figură. Configurarea plăcii de calcul va fi discutată în pasul următor.

După asamblare, prototipul final ar trebui să arate ca în ultima imagine.

Pasul 2: Configurarea Breadboard

Configurare Breadboard
Configurare Breadboard
Configurare Breadboard
Configurare Breadboard
Configurare Breadboard
Configurare Breadboard

După asamblare, Arduino, senzorul accelerometrului, servos sunt conectate așa cum este descris în cele ce urmează.

Șinele pozitive și negative de pe panou sunt conectate la 5V și respectiv GND de Arduino. Senzorul este conectat la Arduino utilizând firele de jumătate de metru care urmează să fie lipite la senzor astfel încât pinii VCC și GND ai senzorului să fie conectați la șinele + ve și -ve de pe panoul de control. Pinii SCL și SDA ai senzorului pentru a fi conectați la pinii analogici A5 și A4 ai Arduino. Pinii PWM ai celor trei servouri sunt conectați la 2, 3, 4 pini ai Arduino respectiv, iar pinii + ve și -ve ai tuturor servomotoarelor sunt conectați la șinele + ve și -ve ale panoului. cu aceasta, conexiunile noastre sunt încheiate.

Pasul 3: Cod pentru proiect

puteți descărca bibliotecile MPU6050 și Servo de pe internet și le puteți folosi pentru proiect. Compilați și încărcați următorul cod pe Arduino și proiectul este gata. Înclinați senzorul și puteți vedea labirintul înclinându-se în aceeași direcție! Este nevoie de ceva timp pentru a rezolva puzzle-ul, deoarece este puțin provocator, dar este distractiv să te joci.

#include

#include

#include

Servo Servo1;

Servo Servo2;

Servo Servo3;

Senzor MPU6050;

int servoPos1 = 90;

int servoPos2 = 90;

int servoPos3 = 90;

int16_t ax, ay, az;

int16_t gx, gy, gz;

configurare nulă ()

{

Servo1.attach (2);

Servo2.attach (3);

Servo3.attach (4);

Wire.begin ();

Serial.begin (9600);

}

bucla nulă ()

{

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

ax = hartă (ax, -17000, 17000, 0, 180);

ay = hartă (ay, -17000, 17000, 0, 180);

Serial.print ("ax =");

Serial.print (topor);

Serial.print ("ay =");

Serial.println (ay);

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

Servo1.write (servoPos1 ++);

Servo2.write (servoPos2--);

Servo3.write (servoPos3--); }

if (topor 120) {

Servo1.write (servoPos1--);

Servo2.write (servoPos2 ++);

Servo3.write (servoPos3--); }

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

}

}

Recomandat: