Índice:
- Etapa 1: Etapa 1: Material Requerido
- Etapa 2: Etapa 2: Sistema Mecánico-estructura
- Etapa 3: Etapa 3: Fabricación De Piezas 3D
- Etapa 4: Etapa 4: Sistema Eléctrico / eletrônico
- Etapa 5: Etapa 5: Software
- Etapa 6: Etapa 6: Consejos
Vídeo: Proyecto Laboratorio De Mecatrónica (Robô de Equilíbrio de Duas Rodas): 6 Passos
2024 Autor: John Day | [email protected]. Última modificação: 2024-01-30 11:37
En este proyecto se mostrara, el funcionamiento e el como hacer para elaborar um "Robô de equilíbrio de duas rodas" paso a paso y con explicación y concejos. Este é um sistema que consiste em que o robô no se debe caer, se debe de mantener no ponto 0 de seu ponto de gravedad del giroscopio, y así poder moverlo y que este regrese por si mismo a su posición original.
Etapa 1: Etapa 1: Material Requerido
o Mecánicos:
uma. 1 metro de varilla roscada (3/8)
b. 14 tornillos M3 x 0,07 x 6
c. 24 tuercas M8 hex
d. 3 tornillos M4 x 0,07 x 6
e. Filamento PLA (500grs aprox)
o Electrónicos:
uma. 1 interruptor interruptor
b. Arduino uno o nano
c. 2 motores nema 17
d. 2 motoristas A4988
e. 3 resistências 1k
f. HC-05
g. MPU-6050
h. 2 capacitores de 100uf ou 47uf
eu. Batería lippo 11.1 V
o Piezas fabricadas:
uma. 3 placas de MDF (120 x 170 x 6 mm)
b. Placa PCB (aprox 8 x 14 cm)
c. Soporte batería
d. 2 soporte para motor
e. 2 llantas
o Extras:
Softwares recomendados para a realização do projeto.
uma. Software Arduino IDE
b. SolidWorks 2018
c. Software Kidcad
Etapa 2: Etapa 2: Sistema Mecánico-estructura
O modelado de las piezas e estrutura geral é realizado em SolidWorks, primeiro é criado as placas de MDF para checar o espaço disponível para usos posteriores. Estas placas são diferentes entre ellas, a 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 for darle su estructura.
Etapa 3: Etapa 3: Fabricación De Piezas 3D
Para o modelado 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.
Etapa 4: Etapa 4: Sistema Eléctrico / eletrônico
En este paso utiliza um PCB, para elaborar as conexões correspondentes, fazer o enlace entre o arduino, o módulo de Bluetooth HC-05, um giroscopio 6050 e os 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 não funcione correctamente y não lo obedezca.
Etapa 5: Etapa 5: Software
Para o programa utiliza um arduino, uma continuação anexada a uma parte da programação com sua explicação correspondente, o igual anexo link, com o código completo:
Pos holdconfiguracion
// ganhos de controle POSHOLD padrão
#define POSHOLD_P 2.00
#define POSHOLD_I 0.0
# define POSHOLD_IMAX 20 // graus
#define POSHOLD_RATE_P 2.0
#define POSHOLD_RATE_I 0.08 // Controle de vento
#define POSHOLD_RATE_D 0.045 // tente 2 ou 3 para POSHOLD_RATE 1
#define POSHOLD_RATE_IMAX 20 // graus
// ganhos de PID de navegação padrão
# define NAV_P 1.4
#define NAV_I 0,20 // Controle de vento
#define NAV_D 0.08 //
#define NAV_IMAX 20 // degrees
# define MINCHECK 1100
# define MAXCHECK 1900
Aqui se modifica os ganhos para o poss hold del sistema.
Configuración gyro:
void Gyro_init () {
TWBR = ((F_CPU / 400000L) - 16) / 2; // mude a taxa de clock I2C para 400kHz
i2c_writeReg (MPU6050_ADDRESS, 0x6B, 0x80); // PWR_MGMT_1 - DEVICE_RESET 1
atraso (5);
i2c_writeReg (MPU6050_ADDRESS, 0x6B, 0x03); // PWR_MGMT_1 - SLEEP 0; CYCLE 0; TEMP_DIS 0; CLKSEL 3 (PLL com referência Z Gyro)
i2c_writeReg (MPU6050_ADDRESS, 0x1A, MPU6050_DLPF_CFG); // CONFIG - EXT_SYNC_SET 0 (desabilita o pino de entrada para sincronização de dados); padrão DLPF_CFG = 0 => largura de banda ACC = 260Hz GYRO largura de banda = 256Hz)
i2c_writeReg (MPU6050_ADDRESS, 0x1B, 0x18); // GYRO_CONFIG - FS_SEL = 3: Escala completa definida para 2.000 graus / s
// habilita o 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
#fim se
}
void Gyro_getADC () {
i2c_getSixRawADC (MPU6050_ADDRESS, 0x43);
GYRO_ORIENTATION (((rawADC [0] 2, // intervalo: +/- 8192; +/- 2.000 graus / s
((rawADC [2] 2, ((rawADC [4] 2);
GYRO_Common ();
}
void ACC_init () {
i2c_writeReg (MPU6050_ADDRESS, 0x1C, 0x10); // ACCEL_CONFIG - AFS_SEL = 2 (Full Scale = +/- 8G); ACCELL_HPF = 0 // observe que algo está errado na especificação.
// nota: algo parece estar errado na especificação aqui. Com AFS = 2 1G = 4096, mas de acordo com minha medição: 1G = 2048 (e 2048/8 = 256)
// confirmado aqui:
#if definido (MPU6050_I2C_AUX_MASTER)
// neste estágio, o MAG é configurado por meio da função MAG init original no modo de desvio I2C
// agora configuramos o MPU como um dispositivo I2C Master para lidar com o MAG por meio da porta I2C AUX (feito aqui para HMC5883)
i2c_writeReg (MPU6050_ADDRESS, 0x6A, 0b00100000); // USER_CTRL - DMP_EN = 0; FIFO_EN = 0; I2C_MST_EN = 1 (modo mestre 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 (barramento de velocidade escravo I2C = 400kHz)
i2c_writeReg (MPU6050_ADDRESS, 0x25, 0x80 | MAG_ADDRESS); // I2C_SLV0_ADDR - I2C_SLV4_RW = 1 (operação de leitura); I2C_SLV4_ADDR = MAG_ADDRESS
i2c_writeReg (MPU6050_ADDRESS, 0x26, MAG_DATA_REGISTER); // I2C_SLV0_REG - 6 bytes de dados do MAG são armazenados em 6 registros. O primeiro endereço de registro é 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)
#fim se
}
void ACC_getADC () {
i2c_getSixRawADC (MPU6050_ADDRESS, 0x3B);
ACC_ORIENTATION (((rawADC [0] 3, ((rawADC [2] 3, ((rawADC [4] 3);
ACC_Common ();
}
// A função de aquisição MAG deve ser substituída porque agora falamos com o dispositivo MPU
#if definido (MPU6050_I2C_AUX_MASTER)
void Device_Mag_getADC () {
i2c_getSixRawADC (MPU6050_ADDRESS, 0x49); // 0x49 é a primeira sala de memória para EXT_SENS_DATA
#if definido (HMC5843)
MAG_ORIENTATION (((rawADC [0] << 8) | rawADC [1]), ((rawADC [2] << 8) | rawADC [3]), ((rawADC [4] << 8) | rawADC [5]));
#fim se
#if definido (HMC5883)
MAG_ORIENTATION (((rawADC [0] << 8) | rawADC [1]), ((rawADC [4] << 8) | rawADC [5]), ((rawADC [2] << 8) | rawADC [3]));
#fim se
#if definido (MAG3110)
MAG_ORIENTATION (((rawADC [0] << 8) | rawADC [1]), ((rawADC [2] << 8) | rawADC [3]), ((rawADC [4] << 8) | rawADC [5]));
#fim se
}
#fim se
#fim se
Etapa 6: Etapa 6: Consejos
1. Diseño Mecánico: Utilizar e hacer el diseño que mas les convenga, para o 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. Desenho eléctrico: Hacer su propia PCB, para que tengan bien ubicadas las conexiones that tienen that hacer, de igual manera hacer primero las conexiones en um protoboard, para comprobar que cuando la pongan en el PCB elamiento sea el correcto y no tengan que agregar mas conexões ao volver e imprimir o PCB.
3. Diseño Software: Guiarse con la programción base expuesta, pero tratar de hacer su propia programación, to llegar a entendre bien el funcionamiento y en caso de que no funcionar la programación saber como cambiar las instrucciones para que funcione correctamente.
Recomendado:
Robô de auto-equilíbrio - Algoritmo de controle PID: 3 etapas
Robô de Auto Balanceamento - Algoritmo de Controle PID: Este projeto foi concebido porque eu estava interessado em aprender mais sobre Algoritmos de Controle e como implementar efetivamente loops PID funcionais. O projeto ainda está em fase de desenvolvimento, pois um módulo Bluetooth ainda não foi adicionado, o que
Robô de Autobalanceamento de Duas Rodas: 7 Passos
Robô com autobalanceamento de duas rodas: Este instrutível passará pelo processo de design e construção de um robô com autobalanceamento. Como observação, só quero dizer que os robôs com autobalanceamento não são um conceito novo e foram construídos e documentados por outros. Quero aproveitar esta oportunidade
HeadBot - um robô de auto-equilíbrio para aprendizado e divulgação STEM: 7 etapas (com imagens)
HeadBot - um robô com autobalanceamento para aprendizagem e divulgação STEM: Headbot - um robô com 60 centímetros de altura e autobalanceamento - é uma criação da South Eugene Robotics Team (SERT, FRC 2521), uma equipe competitiva de robótica do ensino médio no FIRST Competição de Robótica, de Eugene, Oregon. Este popular robô de divulgação faz re
Robô de equilíbrio / Robô de 3 rodas / Robô STEM: 8 etapas
Robô de balanceamento / Robô de 3 rodas / Robô STEM: Construímos um robô de balanceamento combinado e de 3 rodas para uso educacional em escolas e programas educacionais após as aulas. O robô é baseado em um Arduino Uno, um escudo personalizado (todos os detalhes de construção fornecidos), um pacote de bateria Li Ion (todos constr
Construa um robô muito pequeno: faça o menor robô com rodas do mundo com uma garra: 9 etapas (com fotos)
Construa um robô muito pequeno: faça o menor robô com rodas do mundo com uma garra: Construa um robô de 1/20 de polegada cúbica com uma garra que pode pegar e mover pequenos objetos. É controlado por um microcontrolador Picaxe. Neste momento, acredito que este seja o menor robô com rodas do mundo com uma garra. Isso sem dúvida ch