Sadržaj:

Proyecto Laboratorio De Mecatrónica (Robot za balansiranje na dva točka): 6 koraka
Proyecto Laboratorio De Mecatrónica (Robot za balansiranje na dva točka): 6 koraka

Video: Proyecto Laboratorio De Mecatrónica (Robot za balansiranje na dva točka): 6 koraka

Video: Proyecto Laboratorio De Mecatrónica (Robot za balansiranje na dva točka): 6 koraka
Video: Открытие души - Могут ли Пророки Новой Эры раскрыть нашу скрытую природу? 2024, Novembar
Anonim
Image
Image

En este proyecto se mostrara, el funkcionamiento 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, 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 0,07 x 6

c. 24 tureka M8 šesterokutna

d. 3 tornila M4 x.07 x 6

e. Filamento PLA (otprilike 500 gr)

o Electrónicos:

a. 1 prekidač prekidača

b. Arduino uno o nano

c. 2 motores nema 17

d. 2 vozača A4988

e. 3 otpora 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 ploče od MDF -a (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 llantasa

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 modeldo de las piezas y općenito o strukturi je realiziran u SolidWorks -u, premijerno je kreiran na svim pločama od MDF -a za escario disponible para posteriores usos. Estas placas son diferentes entre ellas, la placa inferior tendrás los orificios para los soportes de motores y batería, central central para nuestra PCB y superior superior solo tendrás los orificios para darle su estructura.

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

Za modele los soportes y llantas igualmente koristite SolidWorks, estos soportes pueden ser modifiedados si así lo desean, para un mejor funcionamiento, los soportes tienen orificios de. 35 cm de diametro, 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

Kako biste upotrijebili PCB, za detaljnije objašnjenje odgovarajućih konekcija, trebali biste unijeti arduino, po modulu Bluetooth HC-05, žiroskop 6050 i izgubiti upravljačke programe. Las conexiones son las que se muestran en la imagen. Asegúrese de hacer las conexiones correctamente, ya que de no ser así puede ocedeionar que el system no funcione correctamente y no lo obedezca.

Korak 5: Korak 5: Softver

Korak 5: Softver
Korak 5: Softver

Za korištenje programa un arduino, nastavak anexamos una parte de la programación con su objašnjenje korespondencije, al igual anexo link, con el codigo kompletno:

Pos holdconfiguracion

// 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 // stepeni

// 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

Akvi se modifikuje gubitak dobitaka za zadržavanje sistema.

Konfiguracija žiroskopa:

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 - SLEEP 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 sinhronizaciju 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 stepeni/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

#endif

}

void Gyro_getADC () {

i2c_getSixRawADC (MPU6050_ADDRESS, 0x43);

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

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

GYRO_Common ();

}

void ACC_init () {

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

// napomena: čini se da nešto nije u redu u specifikacijama ovdje. Sa 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 MAG init funkcije u I2C modu zaobilaženja

// 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 (I2C master način rada); 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 slave brzina sabirnice = 400kHz)

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 (3x2 bajta)

#endif

}

void ACC_getADC () {

i2c_getSixRawADC (MPU6050_ADDRESS, 0x3B);

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

ACC_Common ();

}

// 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

#if definirano (HMC5843)

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

#endif

#if definirano (HMC5883)

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

#endif

#ako je definirano (MAG3110)

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

#endif

}

#endif

#endif

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 funcionamiento sea el correcto y no tengan Ovaj agregat se može spojiti na štampač ili PCB.

3. Diseño softver: Guiarse con la programación base expuesta, pero tratar de hacer su propia programción, paralele 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čuje se: