Daftar Isi:

Proyecto Laboratorio De Mecatrónica (Robot Keseimbangan Roda Dua): 6 Langkah
Proyecto Laboratorio De Mecatrónica (Robot Keseimbangan Roda Dua): 6 Langkah

Video: Proyecto Laboratorio De Mecatrónica (Robot Keseimbangan Roda Dua): 6 Langkah

Video: Proyecto Laboratorio De Mecatrónica (Robot Keseimbangan Roda Dua): 6 Langkah
Video: Makeblock Untimate Robot Kit Part 1 : Step by Step Assembly Robot of Aram Tank 2024, November
Anonim
Image
Image

En este proyecto se mostrara, el funcionamiento y el como hacer para elaborar un "Robot keseimbangan dua roda" paso a paso y con explicación y concejos. Este es un sistema que terdiri en que el robot no se debe caer, se debe de mantener en el punto 0 de su punto de gravedad del giroscopio, y así poder moverlo y que este regrese por si mismo a su posición asli.

Langkah 1: Langkah 1: Permintaan Materi

o Meksiko:

A. 1 metro de varilla roscada (3/8)

B. 14 tornillo M3 x.07 x 6

C. 24 tuercas M8 hex

D. 3 tornillo M4 x.07 x 6

e. Filamento PLA (kira-kira 500gr)

o Elektronik:

A. 1 sakelar pemutus

B. Arduino uno atau nano

C. 2 motor nema 17

D. 2 driver A4988

e. 3 resistensi 1k

F. HC-05

G. MPU-6050

H. 2 kapasitor de 100uf atau 47uf

Saya. Baterai lippo 11.1 V

o Piezas fabricadas:

A. 3 plakat MDF (120 x 170 x 6 mm)

B. Placa PCB (kira-kira 8 x 14 cm)

C. Baterai ringan

D. 2 soporte para motor

e. 2 llantas

o Ekstra:

Perangkat lunak yang direkomendasikan untuk para la realización del proyecto.

A. Perangkat lunak Arduino IDE

B. SolidWorks 2018

C. Perangkat lunak Kidcad

Langkah 2: Langkah 2: Sistema Mecánico-estructura

Langkah 2: Sistema Mecánico-estructura
Langkah 2: Sistema Mecánico-estructura
Langkah 2: Sistema Mecánico-estructura
Langkah 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 posteriores usos. 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 esstructura.

Langkah 3: Langkah 3: Fabricación De Piezas 3D

Para el 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.

Langkah 4: Langkah 4: Sistema Eléctrico/electrónico

Langkah 4: Sistema Eléctrico/electrónico
Langkah 4: Sistema Eléctrico/electrónico

En este paso utilizamos una PCB, para elaborar las conexiones koresponden, haciendo el enlace entre el arduino, el modulo de Bluetooth HC-05, un giroscopio 6050 y los driver de los motores. Las conexiones son las que se muestran en la imagen. Lakukan perbaikan untuk memperbaikinya, tidak ada kesalahan yang harus dilakukan untuk memperbaikinya.

Langkah 5: Langkah 5: Perangkat Lunak

Langkah 5: Perangkat Lunak
Langkah 5: Perangkat Lunak

Para el programa utilizamos un arduino, a continuación anexamos una parte de la programación con su explicación koresponden, tautan tambahan lainnya, con el codigo completo:

Konfigurasi pos hold

// keuntungan kontrol POSHOLD default

#define POSHOLD_P 2.00

#define POSHOLD_I 0.0

#define POSHOLD_IMAX 20 // derajat

#define POSHOLD_RATE_P 2.0

#define POSHOLD_RATE_I 0,08 // Kontrol angin

#define POSHOLD_RATE_D 0,045 // coba 2 atau 3 untuk POSHOLD_RATE 1

#define POSHOLD_RATE_IMAX 20 // derajat

// keuntungan PID Navigasi default

#menentukan NAV_P 1.4

#define NAV_I 0.20 // Kontrol angin

#menentukan NAV_D 0,08 //

#define NAV_IMAX 20 // derajat

#tentukan MINCHECK 1100

#tentukan MAXCHECK 1900

Aqui se modifica los gain para el poss hold del sistema.

Konfigurasi gyro:

batal Gyro_init() {

TWBR = ((F_CPU / 400000L) - 16) / 2; // ubah kecepatan clock I2C menjadi 400kHz

i2c_writeReg(MPU6050_ADDRESS, 0x6B, 0x80); //PWR_MGMT_1 -- DEVICE_RESET 1

penundaan (5);

i2c_writeReg(MPU6050_ADDRESS, 0x6B, 0x03); //PWR_MGMT_1 -- TIDUR 0; SIKLUS 0; TEMP_DIS 0; CLKSEL 3 (PLL dengan referensi Z Gyro)

i2c_writeReg(MPU6050_ADDRESS, 0x1A, MPU6050_DLPF_CFG); //CONFIG -- EXT_SYNC_SET 0 (nonaktifkan pin input untuk sinkronisasi data); default DLPF_CFG = 0 => ACC bandwidth = 260Hz GYRO bandwidth = 256Hz)

i2c_writeReg(MPU6050_ADDRESS, 0x1B, 0x18); //GYRO_CONFIG -- FS_SEL = 3: Skala penuh disetel ke 2000 derajat/dtk

// aktifkan bypass I2C untuk AUX I2C

#jika ditentukan(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

#berakhir jika

}

batal Gyro_getADC () {

i2c_getSixRawADC(MPU6050_ADDRESS, 0x43);

GYRO_ORIENTATION(((rawADC[0]2, // rentang: +/- 8192; +/- 2000 deg/dtk

((rawADC[2]2, ((rawADC[4]2);

GYRO_Umum();

}

batal ACC_init () {

i2c_writeReg(MPU6050_ADDRESS, 0x1C, 0x10); //ACCEL_CONFIG -- AFS_SEL=2 (Skala Penuh = +/-8G); ACCELL_HPF=0 //perhatikan ada yang salah dalam spesifikasi.

//note: sepertinya ada yang salah dengan spesifikasi di sini. Dengan AFS=2 1G = 4096 tetapi menurut pengukuran saya: 1G=2048 (dan 2048/8 = 256)

//dikonfirmasi di sini:

#jika ditentukan(MPU6050_I2C_AUX_MASTER)

// pada tahap ini, MAG dikonfigurasi melalui fungsi init MAG asli dalam mode bypass I2C

// sekarang kita mengkonfigurasi MPU sebagai perangkat Master I2C untuk menangani MAG melalui port I2C AUX (dilakukan di sini untuk HMC5883)

i2c_writeReg(MPU6050_ADDRESS, 0x6A, 0b00100000); //USER_CTRL -- DMP_EN=0; FIFO_EN=0; I2C_MST_EN=1 (mode master 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 kecepatan slave I2C = 400kHz)

i2c_writeReg(MPU6050_ADDRESS, 0x25, 0x80|MAG_ADDRESS);//I2C_SLV0_ADDR -- I2C_SLV4_RW=1 (operasi baca); I2C_SLV4_ADDR=MAG_ADDRESS

i2c_writeReg(MPU6050_ADDRESS, 0x26, MAG_DATA_REGISTER);//I2C_SLV0_REG -- 6 byte data MAG disimpan dalam 6 register. Alamat register pertama adalah 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 byte)

#berakhir jika

}

batal ACC_getADC () {

i2c_getSixRawADC(MPU6050_ADDRESS, 0x3B);

ACC_ORIENTATION(((rawADC[0]3, ((rawADC[2]3, ((rawADC[4]3);

ACC_Umum();

}

//Fungsi akuisisi MAG harus diganti karena sekarang kita berbicara dengan perangkat MPU

#jika ditentukan(MPU6050_I2C_AUX_MASTER)

batalkan Device_Mag_getADC() {

i2c_getSixRawADC(MPU6050_ADDRESS, 0x49); //0x49 adalah ruang memori pertama untuk EXT_SENS_DATA

#jika ditentukan(HMC5843)

MAG_ORIENTATION(((rawADC[0]<<8) | rawADC[1]), ((rawADC[2]<<8) | rawADC[3]), ((rawADC[4]<<8) | rawADC[5]));

#berakhir jika

#jika ditentukan (HMC5883)

MAG_ORIENTATION(((rawADC[0]<<8) | rawADC[1]), ((rawADC[4]<<8) | rawADC[5]), ((rawADC[2]<<8) | rawADC[3]));

#berakhir jika

#jika ditentukan (MAG3110)

MAG_ORIENTATION(((rawADC[0]<<8) | rawADC[1]), ((rawADC[2]<<8) | rawADC[3]), ((rawADC[4]<<8) | rawADC[5]));

#berakhir jika

}

#berakhir jika

#berakhir jika

Langkah 6: Langkah 6: Consejos

1. Diseo Mecánico: Memanfaatkan 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 kesempurnaan.

2. Diseo 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 tidak ada lingkungan laut que agregar mas conexiones o volver a imprimir el PCB.

3. Perangkat Lunak Diseño: Panduan 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 funcionar la programación saber como cambiar las instrucciones para que funcione correctamente.

Direkomendasikan: