Sadržaj:

Proyecto Laboratorio De Mecatrónica (Robot za ravnotežu na dva kotača): 6 koraka
Proyecto Laboratorio De Mecatrónica (Robot za ravnotežu na dva kotača): 6 koraka

Video: Proyecto Laboratorio De Mecatrónica (Robot za ravnotežu na dva kotača): 6 koraka

Video: Proyecto Laboratorio De Mecatrónica (Robot za ravnotežu na dva kotača): 6 koraka
Video: Часть 1. Аудиокнига Герберта Уэллса «Машина времени» (гл. 01–06) 2024, Srpanj
Anonim
Image
Image

En este proyecto se mostrara, el funcionamiento y el como hacer para elaborar un "Two wheel balance robot" paso a paso y con explicación y concejos. Este es un sistem que consiste 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 pozición original.

Korak 1: Korak 1: Materijal Requerido

o Mecánicos:

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

b. 14 tornila M3 x, 07 x 6

c. 24 tuercas M8 šesterokutne

d. 3 tornila M4 x.07 x 6

e. Filamento PLA (približno 500 gr.)

o Elektronički uređaji:

a. 1 prekidač prekidača

b. Arduino uno o nano

c. 2 motores nema 17

d. 2 vozača A4988

e. 3 resistencije 1k

f. HC-05

g. MPU-6050

h 2 kondenzatora od 100uf do 47uf

i. Batería lippo 11,1 V

o Piezas fabricadas:

a. 3 MDF ploče (120 x 170 x 6 mm)

b. Placa PCB (približno 8 x 14 cm)

c. Soporte batería

d. 2 soporte para motor

e. 2 llanta

o Dodaci:

Softverski preporučljivi para la realización del proyecto.

a. Arduino IDE softver

b. SolidWorks 2018

c. Kidcad softver

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

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

El modelido de las piezas y estructura general se realiziraju u SolidWorksu, primjereno se stvaraju 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 estructura.

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

Para el modelado de los soportes y llantas igualmente utilizmos 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.

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

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

En este paso utilizamos una PCB, para elaborar las conexiones korespondientes, haciendo el enlace entre el arduino, modulo 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.

Korak 5: Korak 5: Softver

Korak 5: Softver
Korak 5: Softver

Para el programa iskorištava un arduino, anexamos continuación una parte de la programación con su explicación korespondiente, al igual anexo link, con el codigo completo:

Pos hold config konfiguracija

// zadani POSHOLD kontrolni dobici

#define POSHOLD_P 2.00

#define POSHOLD_I 0.0

#define POSHOLD_IMAX 20 // stupnjeva

#define POSHOLD_RATE_P 2.0

#define POSHOLD_RATE_I 0,08 // Kontrola vjetra

#define POSHOLD_RATE_D 0.045 // pokušajte 2 ili 3 za POSHOLD_RATE 1

#define POSHOLD_RATE_IMAX 20 // stupnjeva

// zadani dobitak PID -a navigacije

#define NAV_P 1.4

#define NAV_I 0.20 // Kontrola vjetra

#define NAV_D 0,08 //

#define NAV_IMAX 20 // stupnjeva

#define MINCHECK 1100

#define MAXCHECK 1900

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

Konfiguracijski žiroskop:

void Gyro_init () {

TWBR = ((F_CPU / 400000L) - 16) / 2; // mijenjamo brzinu takta I2C na 400 kHz

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

kašnjenje (5);

i2c_writeReg (MPU6050_ADDRESS, 0x6B, 0x03); // PWR_MGMT_1 - SPAVANJE 0; CIKLUS 0; TEMP_DIS 0; CLKSEL 3 (PLL sa referencom Z žiroskopa)

i2c_writeReg (MPU6050_ADDRESS, 0x1A, MPU6050_DLPF_CFG); // CONFIG - EXT_SYNC_SET 0 (onemogući ulazni pin za sinkronizaciju podataka); zadani DLPF_CFG = 0 => ACC širina pojasa = 260Hz GYRO širina pojasa = 256Hz)

i2c_writeReg (MPU6050_ADDRESS, 0x1B, 0x18); // GYRO_CONFIG - FS_SEL = 3: Puna skala postavljena na 2000 stupnjeva/sek

// omogućujemo zaobilaženje I2C za AUX I2C

#ako je definirano (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

#završi ako

}

void Gyro_getADC () {

i2c_getSixRawADC (MPU6050_ADDRESS, 0x43);

GYRO_ORIENTATION (((rawADC [0] 2, // raspon: +/- 8192; +/- 2000 stupnjeva/s

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

GYRO_Česti ();

}

void ACC_init () {

i2c_writeReg (MPU6050_ADDRESS, 0x1C, 0x10); // ACCEL_CONFIG-AFS_SEL = 2 (Puna ljestvica = +/- 8G); ACCELL_HPF = 0 // napominjemo da nešto nije u redu sa specifikacijama.

// napomena: čini se da nešto nije u redu u specifikacijama ovdje. S AFS = 2 1G = 4096, ali prema mojim mjerenjima: 1G = 2048 (i 2048/8 = 256)

// potvrđeno ovdje:

#ako je definirano (MPU6050_I2C_AUX_MASTER)

// u ovoj fazi, MAG je konfiguriran putem izvorne funkcije inicijalnog pokretanja MAG -a u načinu zaobilaženja I2C

// sada konfiguriramo MPU kao I2C Master uređaj za rukovanje MAG -om preko I2C AUX priključka (ovdje učinjeno za HMC5883)

i2c_writeReg (MPU6050_ADDRESS, 0x6A, 0b00100000); // USER_CTRL - DMP_EN = 0; FIFO_EN = 0; I2C_MST_EN = 1 (glavni način rada 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 (I2C sabirnica brzine slave = 400 kHz)

i2c_writeReg (MPU6050_ADDRESS, 0x25, 0x80 | MAG_ADDRESS); // I2C_SLV0_ADDR - I2C_SLV4_RW = 1 (operacija čitanja); I2C_SLV4_ADDR = MAG_ADDRESS

i2c_writeReg (MPU6050_ADDRESS, 0x26, MAG_DATA_REGISTER); // I2C_SLV0_REG - 6 bajtova podataka MAG -a pohranjeno je u 6 registara. Prva adresa registra je 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 (3 x 2 bajta)

#završi ako

}

void ACC_getADC () {

i2c_getSixRawADC (MPU6050_ADDRESS, 0x3B);

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

ACC_Često ();

}

// Funkcija akvizicije MAG -a mora se zamijeniti jer sada razgovaramo s MPU uređajem

#ako je definirano (MPU6050_I2C_AUX_MASTER)

void Device_Mag_getADC () {

i2c_getSixRawADC (MPU6050_ADDRESS, 0x49); // 0x49 je prva memorijska soba za EXT_SENS_DATA

#ako je definirano (HMC5843)

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

#završi ako

#ako je definirano (HMC5883)

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

#završi ako

#ako je definirano (MAG3110)

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

#završi ako

}

#završi ako

#završi ako

Korak 6: Korak 6: Consejos

1. Diseño Mecánico: Utilizar y hacer el diseño que mas les konvenga, 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 je 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 funkcionamiento sea el correcto y no tengan que agregar mas conexiones o volver a imprimir el PCB.

3. Diseño softver: Guiarse con la programación base expuesta, pero tratar de hacer su propia programción, para llegar a entender bien el funcionamiento y en caso de que no funcionar la programción sabre como cambiar las instrucciones para que funcione correctamente.

Preporučeni: