Tabla de contenido:

Plataforma controlada por sensor giroscópico para Maze Puzzle: 3 pasos
Plataforma controlada por sensor giroscópico para Maze Puzzle: 3 pasos

Video: Plataforma controlada por sensor giroscópico para Maze Puzzle: 3 pasos

Video: Plataforma controlada por sensor giroscópico para Maze Puzzle: 3 pasos
Video: Arduino desde cero en Español - Capítulo 65 - MPU6050 acelerómetro y giróscopo Teoría y Práctica 2024, Mes de julio
Anonim
Plataforma controlada por sensor giroscópico para Maze Puzzle
Plataforma controlada por sensor giroscópico para Maze Puzzle

Este instructable fue creado en cumplimiento del requisito del proyecto del curso Make en la Universidad del Sur de Florida (www.makecourse.com)"

Este sencillo proyecto está inspirado en una plataforma de autoequilibrio que recibe retroalimentación del sensor del acelerómetro. Compruébalo si aún no lo hiciste.

El proyecto utiliza Arduino UNO: ¡un microcontrolador fácil de usar que puede obtener en sitios web de compras en línea! En este instructivo, mostraré cómo puede crear su propia plataforma de inclinación programable, desde el proceso de diseño hasta el suministro de piezas, archivos de impresión 3D, ensamblaje y programación. ¡Quédate y sigamos adelante!

Paso 1: Componentes necesarios y piezas impresas en 3D

Componentes necesarios y piezas impresas en 3D
Componentes necesarios y piezas impresas en 3D
Componentes necesarios y piezas impresas en 3D
Componentes necesarios y piezas impresas en 3D
Componentes necesarios y piezas impresas en 3D
Componentes necesarios y piezas impresas en 3D

La lista de los componentes utilizados para el proyecto:

1. Microcontrolador Arduino UNO.

2. Tablero con cables de puente.

3. Una caja.

4. Plataforma circular

5. Laberinto.

6. Enlaces - 3 No's

7. Una base para montar tres servos.

8. Sensor de giroscopio / acelerómetro. (MPU6050)

Cables de 9,1 mm2 (500 cm) - 4 números

10. Bolas de acero de 3 mm de diámetro.

La mayoría de las piezas utilizadas para el proyecto están impresas en 3D y he adjuntado el archivo stl. archivos listos para imprimir.

Ensamble todas las piezas como se muestra en las figuras. El laberinto está pegado en caliente a la plataforma circular para que se vea como en la imagen. Los tres servos deben pegarse en caliente en la base impresa en 3D que está montada en la tapa de la caja. La caja contiene el Arduino UNO y la placa de pruebas ensamblados como se muestra en la figura. La configuración de la placa de pruebas se discutirá en el siguiente paso.

Después del montaje, el prototipo final debe verse como en la última imagen.

Paso 2: Configuración de la placa de pruebas

Configuración de la placa de pruebas
Configuración de la placa de pruebas
Configuración de la placa de pruebas
Configuración de la placa de pruebas
Configuración de la placa de pruebas
Configuración de la placa de pruebas

Después del montaje, el Arduino, el sensor del acelerómetro y los servos se conectan como se describe a continuación.

Los rieles positivo y negativo en la placa están conectados a 5V y GND de Arduino respectivamente. El sensor se conecta al Arduino usando los cables de medio metro que se van a soldar al sensor de modo que los pines VCC y GND del sensor se conecten a los rieles + ve y -ve en la placa de prueba, respectivamente. Los pines SCL y SDA del sensor se conectarán a los pines analógicos A5 y A4 de Arduino. Los pines PWM de los tres servos están conectados a 2, 3, 4 pines del Arduino respectivamente y los pines + ve y -ve de todos los servos están conectados a los rieles + ve y -ve de la placa de pruebas. con esto, nuestras conexiones están hechas.

Paso 3: Código del proyecto

puede descargar las bibliotecas MPU6050 y Servo de Internet y usarlas para el proyecto. Compile y cargue el siguiente código en Arduino y el proyecto estará listo. ¡Incline el sensor y podrá ver el laberinto inclinándose en la misma dirección! Se necesita algo de tiempo para resolver el rompecabezas, ya que es un poco desafiante pero es divertido jugar con él.

#incluir

#incluir

#incluir

Servo Servo1;

Servo Servo2;

Servo Servo3;

Sensor MPU6050;

int servoPos1 = 90;

int servoPos2 = 90;

int servoPos3 = 90;

int16_t ax, ay, az;

int16_t gx, gy, gz;

configuración vacía ()

{

Servo1.attach (2);

Servo2.attach (3);

Servo3.attach (4);

Wire.begin ();

Serial.begin (9600);

}

bucle vacío ()

{

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

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

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

Serial.print ("ax =");

Serial.print (ax);

Serial.print ("ay =");

Serial.println (ay);

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

Servo1.write (servoPos1 ++);

Servo2.write (servoPos2--);

Servo3.write (servoPos3--); }

si (ax 120) {

Servo1.write (servoPos1--);

Servo2.write (servoPos2 ++);

Servo3.write (servoPos3--); }

if (ax> 120 && ay> 0) {

Servo1.write (servoPos1--);

Servo2.write (servoPos2--);

Servo3.write (servoPos3 ++); }

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

Servo1.write (0);

Servo2.write (0);

Servo3.write (0);

}

}

Recomendado: