Tabla de contenido:
- Paso 1: Paso 1: Material Requerido
- Paso 2: Paso 2: Sistema Mecánico-estructura
- Paso 3: Paso 3: Fabricación De Piezas 3D
- Paso 4: Paso 4: Sistema Eléctrico / electrónico
- Paso 5: Paso 5: Software
- Paso 6: Paso 6: Consejos
Video: Proyecto Laboratorio De Mecatrónica (Robot de equilibrio de dos ruedas): 6 pasos
2024 Autor: John Day | [email protected]. Última modificación: 2024-01-30 08:42
En este proyecto se muestra, el funcionamiento y el como hacer para elaborar un "Robot de equilibrio de dos ruedas" paso a paso y con explicación y concejos. Este es un sistema que consiste en que el robot no se debe caer, se debe mantener en el punto 0 de su punto de gravedad del giroscopio, y así poder moverlo y que este regrese por sí mismo a su posición original.
Paso 1: Paso 1: Material Requerido
o Mecánicos:
una. 1 metro de varilla roscada (3/8)
B. 14 tornillos M3 x.07 x 6
C. 24 tuercas M8 hexagonal
D. 3 tornillos M4 x.07 x 6
mi. Filamento PLA (500grs aprox)
o Electrónicos:
una. 1 interruptor interruptor
B. Arduino uno o nano
C. 2 motores nema 17
D. 2 conductores A4988
mi. 3 resistencias 1k
F. HC-05
gramo. MPU-6050
h. 2 capacitores de 100uf o 47uf
I. Batería lippo 11.1 V
o Piezas fabricadas:
una. 3 placas de MDF (120 x 170 x 6 mm)
B. Placa PCB (8 x 14 cm aprox)
C. Soporte batería
D. 2 soportes para motor
mi. 2 llantas
o Extras:
Softwares recomendados para la realización del proyecto.
una. Software Arduino IDE
B. SolidWorks 2018
C. Software Kidcad
Paso 2: Paso 2: Sistema Mecánico-estructura
El modelado de las piezas y estructura general se realizo en SolidWorks, primero se crearon las placas de MDF para checar el espacio disponible para usos posteriores. Estas placas son diferentes entre ellas, la placa inferior tendrá los orificios para los soportes de motores y batería, la central para nuestra PCB y la superior solo tendrá los orificios para darle su estructura.
Paso 3: Paso 3: Fabricación De Piezas 3D
Para el modo de los soportes y llantas igualmente utilizamos SolidWorks, estos soportes pueden ser modificados si así lo desean, para un mejor funcionamiento, los soportes tienen orificios de.35 cm de diámetro, para una mejor sujeción.
Paso 4: Paso 4: Sistema Eléctrico / electrónico
En este paso utilizamos una PCB, para elaborar las conexiones correspondientes, haciendo el enlace entre el arduino, el módulo de Bluetooth HC-05, un giroscopio 6050 y los drivers de los motores. Las conexiones son las que se muestran en la imagen. Asegúrese de hacer las conexiones correctamente, ya que de no ser así puede ocasionar que el sistema no funcione correctamente y no lo obedezca.
Paso 5: Paso 5: Software
Para el programa utilizamos un arduino, a continuación anexamos una parte de la programación con su explicación correspondiente, al igual anexo link, con el codigo completo:
Pos holdconfiguracion
// ganancias de control POSHOLD predeterminadas
#define POSHOLD_P 2.00
#define POSHOLD_I 0.0
#define POSHOLD_IMAX 20 // grados
#define POSHOLD_RATE_P 2.0
#define POSHOLD_RATE_I 0.08 // Control del viento
#define POSHOLD_RATE_D 0.045 // prueba 2 o 3 para POSHOLD_RATE 1
#define POSHOLD_RATE_IMAX 20 // grados
// ganancias PID de navegación por defecto
#define NAV_P 1.4
#define NAV_I 0.20 // Control del viento
#define NAV_D 0.08 //
#define NAV_IMAX 20 // grados
#define MINCHECK 1100
#define MAXCHECK 1900
Aqui se modifica las ganancias para el poss hold del sistema.
Configuración del giróscopo:
void Gyro_init () {
TWBR = ((F_CPU / 400000L) - 16) / 2; // cambia la frecuencia del reloj I2C a 400kHz
i2c_writeReg (MPU6050_ADDRESS, 0x6B, 0x80); // PWR_MGMT_1 - DEVICE_RESET 1
retraso (5);
i2c_writeReg (MPU6050_ADDRESS, 0x6B, 0x03); // PWR_MGMT_1 - SUEÑO 0; CICLO 0; TEMP_DIS 0; CLKSEL 3 (PLL con referencia Z Gyro)
i2c_writeReg (MPU6050_ADDRESS, 0x1A, MPU6050_DLPF_CFG); // CONFIG - EXT_SYNC_SET 0 (deshabilita el pin de entrada para sincronización de datos); predeterminado DLPF_CFG = 0 => ancho de banda ACC = 260Hz ancho de banda GYRO = 256Hz)
i2c_writeReg (MPU6050_ADDRESS, 0x1B, 0x18); // GYRO_CONFIG - FS_SEL = 3: escala completa establecida en 2000 grados / seg.
// habilita el bypass I2C para AUX I2C
#if definido (MAG)
i2c_writeReg (MPU6050_ADDRESS, 0x37, 0x02); // INT_PIN_CFG - INT_LEVEL = 0; INT_OPEN = 0; LATCH_INT_EN = 0; INT_RD_CLEAR = 0; FSYNC_INT_LEVEL = 0; FSYNC_INT_EN = 0; I2C_BYPASS_EN = 1; CLKOUT_EN = 0
#terminara si
}
void Gyro_getADC () {
i2c_getSixRawADC (MPU6050_ADDRESS, 0x43);
GYRO_ORIENTATION (((rawADC [0] 2, // rango: +/- 8192; +/- 2000 grados / seg
((rawADC [2] 2, ((rawADC [4] 2);
GYRO_Common ();
}
void ACC_init () {
i2c_writeReg (MPU6050_ADDRESS, 0x1C, 0x10); // ACCEL_CONFIG - AFS_SEL = 2 (escala completa = +/- 8G); ACCELL_HPF = 0 // tenga en cuenta que algo está mal en la especificación.
// nota: algo parece estar mal en la especificación aquí. Con AFS = 2 1G = 4096 pero según mi medida: 1G = 2048 (y 2048/8 = 256)
// confirmado aquí:
#si está definido (MPU6050_I2C_AUX_MASTER)
// en esta etapa, el MAG se configura a través de la función de inicio MAG original en el modo de bypass I2C
// ahora configuramos MPU como un dispositivo maestro I2C para manejar el MAG a través del puerto AUX I2C (hecho aquí para HMC5883)
i2c_writeReg (MPU6050_ADDRESS, 0x6A, 0b00100000); // USER_CTRL - DMP_EN = 0; FIFO_EN = 0; I2C_MST_EN = 1 (modo maestro I2C); I2C_IF_DIS = 0; FIFO_RESET = 0; I2C_MST_RESET = 0; SIG_COND_RESET = 0
i2c_writeReg (MPU6050_ADDRESS, 0x37, 0x00); // INT_PIN_CFG - INT_LEVEL = 0; INT_OPEN = 0; LATCH_INT_EN = 0; INT_RD_CLEAR = 0; FSYNC_INT_LEVEL = 0; FSYNC_INT_EN = 0; I2C_BYPASS_EN = 0; CLKOUT_EN = 0
i2c_writeReg (MPU6050_ADDRESS, 0x24, 0x0D); // I2C_MST_CTRL - MULT_MST_EN = 0; WAIT_FOR_ES = 0; SLV_3_FIFO_EN = 0; I2C_MST_P_NSR = 0; I2C_MST_CLK = 13 (bus de velocidad esclavo I2C = 400 kHz)
i2c_writeReg (MPU6050_ADDRESS, 0x25, 0x80 | MAG_ADDRESS); // I2C_SLV0_ADDR - I2C_SLV4_RW = 1 (operación de lectura); I2C_SLV4_ADDR = MAG_ADDRESS
i2c_writeReg (MPU6050_ADDRESS, 0x26, MAG_DATA_REGISTER); // I2C_SLV0_REG - 6 bytes de datos de MAG se almacenan en 6 registros. La primera dirección de registro es MAG_DATA_REGISTER
i2c_writeReg (MPU6050_ADDRESS, 0x27, 0x86); // I2C_SLV0_CTRL - I2C_SLV0_EN = 1; I2C_SLV0_BYTE_SW = 0; I2C_SLV0_REG_DIS = 0; I2C_SLV0_GRP = 0; I2C_SLV0_LEN = 3 (3x2 bytes)
#terminara si
}
void ACC_getADC () {
i2c_getSixRawADC (MPU6050_ADDRESS, 0x3B);
ACC_ORIENTATION (((rawADC [0] 3, ((rawADC [2] 3, ((rawADC [4] 3);
ACC_Common ();
}
// La función de adquisición MAG debe ser reemplazada porque ahora hablamos con el dispositivo MPU
#si está definido (MPU6050_I2C_AUX_MASTER)
void Device_Mag_getADC () {
i2c_getSixRawADC (MPU6050_ADDRESS, 0x49); // 0x49 es la primera sala de memoria para EXT_SENS_DATA
#if definido (HMC5843)
MAG_ORIENTATION (((rawADC [0] << 8) | rawADC [1]), ((rawADC [2] << 8) | rawADC [3]), ((rawADC [4] << 8) | rawADC [5]));
#terminara si
#si está definido (HMC5883)
MAG_ORIENTATION (((rawADC [0] << 8) | rawADC [1]), ((rawADC [4] << 8) | rawADC [5]), ((rawADC [2] << 8) | rawADC [3]));
#terminara si
#if definido (MAG3110)
MAG_ORIENTATION (((rawADC [0] << 8) | rawADC [1]), ((rawADC [2] << 8) | rawADC [3]), ((rawADC [4] << 8) | rawADC [5]));
#terminara si
}
#terminara si
#terminara si
Paso 6: Paso 6: Consejos
1. Diseño Mecánico: Utilizar y hacer el diseño que mas les convenga, para el uso que se le quiere dar al robot, medir todo bien, para la hora de hacer cortes láser o impresiones en 3D, no tengan que volver a hacerlo y todo quede a la perfección.
2. Diseño eléctrico: Hacer su propia PCB, para que tengan bien ubicadas las conexiones que tienen que hacer, de igual manera hacer primero las conexiones en una protoboard, para comprobar que cuando la pongan en el PCB el funcionamiento sea el correcto y no tengan que agregar mas conexiones o volver a imprimir el PCB.
3. Diseño Software: Guiarse con la programación base expuesta, pero tratar de hacer su propia programación, para llegar a entender bien el funcionamiento y en caso de que no funcione la programación saber como cambiar las instrucciones para que funcione correctamente.
Recomendado:
Robot de equilibrio automático de dos ruedas: 7 pasos
Robot de autoequilibrio de dos ruedas: este instructivo pasará por el proceso de diseño y construcción de un robot de autoequilibrio. Como nota, solo quiero decir que los robots de autoequilibrio no son un concepto nuevo y han sido construidos y documentados por otros. Quiero aprovechar esta oportunidad
Robot de equilibrio automático de 2 ruedas: 4 pasos
Robot autoequilibrante de 2 ruedas: En mi humilde opinión, no eres un verdadero creador, a menos que no construyas tu propio robot autoequilibrante de 2 ruedas. :-) Entonces, aquí está … y, lo más importante, funciona. !!! Este proyecto parece muy simple. En cambio, requiere un buen nivel de conocimiento de
Robot de equilibrio / Robot de 3 ruedas / Robot STEM: 8 pasos
Robot de equilibrio / Robot de 3 ruedas / Robot STEM: Hemos construido un robot combinado de equilibrio y 3 ruedas para uso educativo en escuelas y programas educativos extracurriculares. El robot se basa en un Arduino Uno, un escudo personalizado (se proporcionan todos los detalles de construcción), un paquete de baterías de iones de litio (todos constr
Creación de un robot de equilibrio automático Arduino controlado de forma remota: B-robot EVO: 8 pasos
Creación de un robot de equilibrio automático Arduino controlado de forma remota: B-robot EVO: ------------------------------------ -------------- ACTUALIZACIÓN: aquí hay una versión nueva y mejorada de este robot: ¡El B-robot EVO, con nuevas funciones! ------------ -------------------------------------- ¿Cómo funciona? B-ROBOT EVO es un control
Construye un robot muy pequeño: crea el robot con ruedas más pequeño del mundo con una pinza: 9 pasos (con imágenes)
Construye un robot muy pequeño: crea el robot con ruedas más pequeño del mundo con una pinza: construye un robot de 1/20 pulgadas cúbicas con una pinza que pueda levantar y mover objetos pequeños. Está controlado por un microcontrolador Picaxe. En este momento, creo que este puede ser el robot con ruedas más pequeño del mundo con pinza. Eso sin duda ch