Sisällysluettelo:

Proyecto Laboratorio De Mecatrónica (kaksipyöräinen tasapainotusrobotti): 6 vaihetta
Proyecto Laboratorio De Mecatrónica (kaksipyöräinen tasapainotusrobotti): 6 vaihetta

Video: Proyecto Laboratorio De Mecatrónica (kaksipyöräinen tasapainotusrobotti): 6 vaihetta

Video: Proyecto Laboratorio De Mecatrónica (kaksipyöräinen tasapainotusrobotti): 6 vaihetta
Video: Proyecto Final | Laboratorio de Sistemas Mecatrónicos 2024, Marraskuu
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 system 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 posición original.

Vaihe 1: Vaihe 1: Materiaalivaatimus

o Mecánicos:

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

b. 14 tornilloa M3 x.07 x 6

c. 24 tuercas M8 hex

d. 3 tornilloa M4 x.07 x 6

e. Filamento PLA (noin 500 g)

o Sähkölaitteet:

a. 1 keskeytyskytkin

b. Arduino uno tai nano

c. 2 moottoripyörää nema 17

d. 2 kuljettajaa A4988

e. 3 vastusta 1k

f. HC-05

g. MPU-6050

h. 2 kapasiteettia 100uf tai 47uf

i. Batería lippo 11,1 V

o Piezas fabricadas:

a. 3 MDF -levyä (120 x 170 x 6 mm)

b. Placa -piirilevy (noin 8 x 14 cm)

c. Suhteellinen akku

d. 2 sopivaa moottoria

e. 2 llantasta

o Lisäominaisuudet:

Ohjelmistot, joita suositellaan toteuttamaan proyecto.

a. Arduino IDE -ohjelmisto

b. SolidWorks 2018

c. Kidcad -ohjelmisto

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

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

El Modelado de las piezas ja estructura general se realizo en SolidWorks, primero se crearon las placas de MDF para checar el espacio disponible para postteriores 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.

Vaihe 3: Vaihe 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.

Vaihe 4: Vaihe 4: Sistema Eléctrico/Electronico

Vaihe 4: Sistema Eléctrico/Electronico
Vaihe 4: Sistema Eléctrico/Electronico

Jos haluat käyttää PCB: tä, kehitettyjä las conexiones-kirjeenvaihtajia, haciendo el enlace entre el arduino, Bluetooth HC-05 -moduuli, ja 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 system no funcione correctamente y no lo obedezca.

Vaihe 5: Vaihe 5: Ohjelmisto

Vaihe 5: Ohjelmisto
Vaihe 5: Ohjelmisto

Ohjelman hyödyntämisohjelma ja arduino, jatkuva aneksoiminen ja osittainen lainaohjelma, jossa on selitys kirjeenvaihdosta, igual anexo -linkki, täydennetty kokonaisuudessaan:

Pidä kokoonpano

// POSHOLD -oletusohjauksen vahvistukset

#määrittele POSHOLD_P 2.00

#define POSHOLD_I 0.0

#define POSHOLD_IMAX 20 // astetta

#define POSHOLD_RATE_P 2.0

#define POSHOLD_RATE_I 0.08 // Tuulenohjaus

#define POSHOLD_RATE_D 0.045 // kokeile 2 tai 3 POSHOLD_RATE 1: lle

#define POSHOLD_RATE_IMAX 20 // astetta

// oletusnavigoinnin PID -vahvistukset

#define NAV_P 1.4

#define NAV_I 0.20 // Tuulenohjaus

#define NAV_D 0.08 //

#define NAV_IMAX 20 // astetta

#define MINCHECK 1100

#define MAXCHECK 1900

Aqui se modifica los voitot para el poss hold del system.

Konfiguroitava gyro:

void Gyro_init () {

TWBR = ((F_CPU / 400000L) - 16) / 2; // muuta I2C -kellotaajuus 400 kHz: iin

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

viive (5);

i2c_writeReg (MPU6050_ADDRESS, 0x6B, 0x03); // PWR_MGMT_1 - SLEEP 0; CYCLE 0; TEMP_DIS 0; CLKSEL 3 (PLL ja Z Gyro -viittaus)

i2c_writeReg (MPU6050_ADDRESS, 0x1A, MPU6050_DLPF_CFG); // MÄÄRITTÄMINEN - EXT_SYNC_SET 0 (poista syöttötappi datan synkronointia varten); oletus DLPF_CFG = 0 => ACC -kaistanleveys = 260 Hz GYRO -kaistanleveys = 256 Hz)

i2c_writeReg (MPU6050_ADDRESS, 0x1B, 0x18); // GYRO_CONFIG - FS_SEL = 3: Koko asteikon arvo on 2000 astetta/sek

// ota I2C -ohitus käyttöön AUX I2C: lle

#if määritelty (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_FI = 1; CLKOUT_EN = 0

#loppu Jos

}

void Gyro_getADC () {

i2c_getSixRawADC (MPU6050_ADDRESS, 0x43);

GYRO_ORIENTATION (((raakaADC [0] 2, // alue: +/- 8192; +/- 2000 astetta/sek

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

GYRO_Yhteinen ();

}

void ACC_init () {

i2c_writeReg (MPU6050_ADDRESS, 0x1C, 0x10); // ACCEL_CONFIG-AFS_SEL = 2 (koko asteikko = +/- 8G); ACCELL_HPF = 0 // huomaa, että teknisissä tiedoissa on jotain vialla.

// huomautus: jotain näyttää olevan pielessä tässä teknisissä tiedoissa. Kun AFS = 2 1G = 4096, mutta mittaukseni mukaan: 1G = 2048 (ja 2048/8 = 256)

// vahvistettu täällä:

#if määritetty (MPU6050_I2C_AUX_MASTER)

// tässä vaiheessa MAG konfiguroidaan alkuperäisen MAG init -toiminnon kautta I2C -ohitustilassa

// nyt määritämme MPU: n I2C Master -laitteeksi käsittelemään MAG: tä I2C AUX -portin kautta (tehty täällä HMC5883: lle)

i2c_writeReg (MPU6050_ADDRESS, 0x6A, 0b00100000); // USER_CTRL - DMP_EN = 0; FIFO_FI = 0; I2C_MST_EN = 1 (I2C -päätila); 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_FI = 0; CLKOUT_EN = 0

i2c_writeReg (MPU6050_ADDRESS, 0x24, 0x0D); // I2C_MST_CTRL - MULT_MST_EN = 0; WAIT_FOR_ES = 0; SLV_3_FIFO_FI = 0; I2C_MST_P_NSR = 0; I2C_MST_CLK = 13 (I2C -orja nopeusväylä = 400 kHz)

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

i2c_writeReg (MPU6050_ADDRESS, 0x26, MAG_DATA_REGISTER); // I2C_SLV0_REG - 6 MAG: n datatavua tallennetaan 6 rekisteriin. Ensimmäinen rekisteriosoite on MAG_DATA_REGISTER

i2c_writeReg (MPU6050_ADDRESS, 0x27, 0x86); // I2C_SLV0_CTRL - I2C_SLV0_FI = 1; I2C_SLV0_BYTE_SW = 0; I2C_SLV0_REG_DIS = 0; I2C_SLV0_GRP = 0; I2C_SLV0_LEN = 3 (3x2 tavua)

#loppu Jos

}

void ACC_getADC () {

i2c_getSixRawADC (MPU6050_ADDRESS, 0x3B);

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

ACC_Yhteinen ();

}

// MAG -keräystoiminto on vaihdettava, koska puhumme nyt MPU -laitteen kanssa

#if määritetty (MPU6050_I2C_AUX_MASTER)

mitätön Device_Mag_getADC () {

i2c_getSixRawADC (MPU6050_ADDRESS, 0x49); // 0x49 on EXT_SENS_DATA: n ensimmäinen muistihuone

#if määritelty (HMC5843)

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

#loppu Jos

#if määritelty (HMC5883)

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

#loppu Jos

#if määritelty (MAG3110)

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

#loppu Jos

}

#loppu Jos

#loppu Jos

Vaihe 6: Vaihe 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 tai volver a imprimir el PCB.

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

Suositeltava: