Sommario:

Piattaforma controllata da sensore giroscopico per puzzle labirinto: 3 passaggi
Piattaforma controllata da sensore giroscopico per puzzle labirinto: 3 passaggi

Video: Piattaforma controllata da sensore giroscopico per puzzle labirinto: 3 passaggi

Video: Piattaforma controllata da sensore giroscopico per puzzle labirinto: 3 passaggi
Video: F-Servo, Part # 2. Photo/video camera stabilization 2024, Dicembre
Anonim
Piattaforma controllata da sensore giroscopico per puzzle labirinto
Piattaforma controllata da sensore giroscopico per puzzle labirinto

Questo istruttivo è stato creato in adempimento del requisito del progetto del corso Make presso la University of South Florida (www.makecourse.com)"

Questo semplice progetto si ispira a una piattaforma autobilanciante che riceve feedback dal sensore dell'accelerometro. Dai un'occhiata se non l'hai già fatto.

Il progetto utilizza Arduino UNO - Un microcontrollore facile da usare che puoi ottenere dai siti di shopping online! In questo tutorial, mostrerò come creare la tua piattaforma di inclinazione programmabile, dal processo di progettazione all'approvvigionamento di parti, file di stampa 3D, assemblaggio e programmazione. Tieni duro e andiamo avanti!

Passaggio 1: componenti necessari e parti stampate in 3D

Componenti richiesti e parti stampate in 3D
Componenti richiesti e parti stampate in 3D
Componenti richiesti e parti stampate in 3D
Componenti richiesti e parti stampate in 3D
Componenti richiesti e parti stampate in 3D
Componenti richiesti e parti stampate in 3D

L'elenco dei componenti utilizzati per il progetto:

1. Microcontrollore Arduino UNO.

2. Breadboard con cavi jumper.

3. Una scatola.

4. Piattaforma circolare

5. Labirinto.

6. Link - 3 No

7. A Base per il montaggio di tre servi.

8. Sensore giroscopio/accelerometro. (MPU6050)

Cavi da 9,1 mm quadrati (500 cm) - 4 No's

10. Sfere in acciaio di diametro 3 mm.

La maggior parte delle parti utilizzate per il progetto sono stampate in 3D e ho allegato il file stl. file pronti per la stampa.

Assemblare tutte le parti come mostrato nelle figure. Il labirinto è incollato a caldo sulla piattaforma circolare per apparire come nella foto. I tre servi dovrebbero essere incollati a caldo sulla base stampata in 3D montata sul coperchio della scatola. La scatola contiene Arduino UNO e Breadboard assemblati come mostrato in figura. La configurazione della breadboard verrà discussa nel passaggio successivo.

Dopo l'assemblaggio, il prototipo finale dovrebbe apparire come nell'ultima immagine.

Passaggio 2: configurazione della breadboard

Configurazione tagliere
Configurazione tagliere
Configurazione tagliere
Configurazione tagliere
Configurazione tagliere
Configurazione tagliere

Dopo l'assemblaggio, Arduino, sensore accelerometro, servi sono collegati come descritto di seguito.

I binari positivo e negativo sulla breadboard sono collegati rispettivamente a 5V e GND di Arduino. Il sensore è collegato all'Arduino utilizzando i fili da mezzo metro che devono essere saldati al sensore in modo tale che i pin VCC e GND del sensore siano collegati rispettivamente alle guide +ve e -ve sulla breadboard. I pin SCL e SDA del sensore da collegare ai pin analogici A5 e A4 di Arduino. I pin PWM dei tre servi sono collegati rispettivamente a 2, 3, 4 pin dell'Arduino e i pin +ve e -ve di tutti i servo sono collegati ai binari +ve e -ve della breadboard. con questo, le nostre connessioni sono fatte.

Passaggio 3: codice per il progetto

è possibile scaricare da internet le librerie MPU6050 e Servo e utilizzarle per il progetto. Compila e carica il seguente codice su Arduino e il progetto è pronto. Inclina il sensore e vedrai il labirinto che si inclina nella stessa direzione! Ci vuole un po' di tempo per risolvere il puzzle in quanto è un po' impegnativo ma è divertente da giocare.

#includere

#includere

#includere

Servo Servo1;

Servo Servo2;

Servo Servo3;

sensore MPU6050;

int servoPos1=90;

int servoPos2=90;

int servoPos3=90;

int16_t ax, ay, az;

int16_t gx, gy, gz;

configurazione nulla ()

{

Servo1.attacco (2);

Servo2.attacco (3);

Servo3.attaccare (4);

Wire.begin ();

Inizio seriale (9600);

}

ciclo vuoto ()

{

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

ax = mappa (ax, -17000, 17000, 0, 180);

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

Serial.print ("ax=");

Serial.print (ax);

Serial.print (" ay=");

Serial.println (ay);

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

Servo1.write(servoPos1++);

Servo2.write(servoPos2--);

Servo3.write(servoPos3--); }

se (ascia 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);

}

}

Consigliato: