Kazalo:

Proyecto Laboratorio De Mecatrónica (dvokolesni ravnotežni robot): 6 korakov
Proyecto Laboratorio De Mecatrónica (dvokolesni ravnotežni robot): 6 korakov

Video: Proyecto Laboratorio De Mecatrónica (dvokolesni ravnotežni robot): 6 korakov

Video: Proyecto Laboratorio De Mecatrónica (dvokolesni ravnotežni robot): 6 korakov
Video: Laboratorio de Mecatrónica 2024, November
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 posición original.

1. korak: 1. korak: Requerido materiala

o Mecánicos:

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

b. 14 tornil M3 x 0,07 x 6

c. 24 tuercas M8 šestkotne

d. 3 tornila M4 x 0,07 x 6

e. Filamento PLA (približno 500 g)

o Elektroniki:

a. 1 prekinitveno stikalo

b. Arduino uno o nano

c. 2 motorja 17

d. 2 gonilnika A4988

e. 3 odpornosti 1k

f. HC-05

g. MPU-6050

h 2 kondenzatorja od 100uf do 47uf

jaz. Batería lippo 11,1 V

o Piezas fabricadas:

a. 3 plošče MDF (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 Dodatki:

Priporočena programska oprema za la realización del proyecto.

a. Arduino IDE programska oprema

b. SolidWorks 2018

c. Programska oprema Kidcad

2. korak: 2. korak: Sistema Mecánico-estructura

2. korak: Sistema Mecánico-estructura
2. korak: Sistema Mecánico-estructura
2. korak: Sistema Mecánico-estructura
2. korak: Sistema Mecánico-estructura

El modelado de las piezas y estructura general se je realiziral v SolidWorks, primero se ustvarja 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.

3. korak: 3. korak: Fabricación De Piezas 3D

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

4. korak: 4. korak: Sistema Eléctrico/electrónico

4. korak: Sistema Eléctrico/electrónico
4. korak: Sistema Eléctrico/electrónico

Če uporabljate tiskano vezje, za podrobnejšo razlago ustreznih koneksov, haciendo el enlace entre el arduino, modul Bluetooth HC-05, giroskopije 6050, izgubite gonilnike. Las conexiones son las que se muestran en la imagen. Asegúrese de hacer las conexiones correctamente, ya que de no ser así puede ocadeionar que el sistema no funcione correctamente y no lo obedezca.

5. korak: 5. korak: programska oprema

5. korak: Programska oprema
5. korak: Programska oprema

Za uporabo programa un arduino, neprekinjen anexamos una parte de la programación con su explicación korespondiente, al igual anexo link, con el codigo completo:

Konfiguracija pos hold

// privzeti dobički nadzora POSHOLD

#define POSHOLD_P 2.00

#define POSHOLD_I 0.0

#define POSHOLD_IMAX 20 // stopinj

#define POSHOLD_RATE_P 2.0

#define POSHOLD_RATE_I 0,08 // Nadzor vetra

#define POSHOLD_RATE_D 0.045 // poskusite 2 ali 3 za POSHOLD_RATE 1

#define POSHOLD_RATE_IMAX 20 // stopinj

// privzeto povečanje PID navigacije

#define NAV_P 1.4

#define NAV_I 0.20 // Nadzor vetra

#define NAV_D 0,08 //

#define NAV_IMAX 20 // stopinj

#define MINCHECK 1100

#define MAXCHECK 1900

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

Konfiguracija žiroskopa:

void Gyro_init () {

TWBR = ((F_CPU / 400000L) - 16) / 2; // spremenimo uro I2C na 400kHz

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

zamuda (5);

i2c_writeReg (MPU6050_ADDRESS, 0x6B, 0x03); // PWR_MGMT_1 - SLEEP 0; CIKLUS 0; TEMP_DIS 0; CLKSEL 3 (PLL z referenco Z Gyro)

i2c_writeReg (MPU6050_ADDRESS, 0x1A, MPU6050_DLPF_CFG); // CONFIG - EXT_SYNC_SET 0 (onemogoči vhodni pin za sinhronizacijo podatkov); privzeto DLPF_CFG = 0 => pasovna širina ACC = 260Hz pasovna širina žiroskopa = 256Hz)

i2c_writeReg (MPU6050_ADDRESS, 0x1B, 0x18); // GYRO_CONFIG - FS_SEL = 3: Celotno merilo je nastavljeno na 2000 stopinj/s

// omogočim obvod I2C za AUX I2C

#if 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, // obseg: +/- 8192; +/- 2000 stopinj/s

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

GYRO_Skupno ();

}

void ACC_init () {

i2c_writeReg (MPU6050_ADDRESS, 0x1C, 0x10); // ACCEL_CONFIG-AFS_SEL = 2 (polna lestvica = +/- 8G); ACCELL_HPF = 0 // upoštevajte, da je v specifikaciji nekaj narobe.

// opomba: zdi se, da je nekaj narobe v specifikacijah tukaj. Z AFS = 2 1G = 4096, vendar glede na moje meritve: 1G = 2048 (in 2048/8 = 256)

// potrjeno tukaj:

#če je definirano (MPU6050_I2C_AUX_MASTER)

// na tej stopnji je MAG konfiguriran prek prvotne funkcije inicializacije MAG v načinu obvoda I2C

// zdaj konfiguriramo MPU kot glavno napravo I2C za upravljanje MAG prek vrat AUX I2C (tukaj za HMC5883)

i2c_writeReg (MPU6050_ADDRESS, 0x6A, 0b00100000); // USER_CTRL - DMP_EN = 0; FIFO_EN = 0; I2C_MST_EN = 1 (glavni način 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 pomožno vodilo hitrosti = 400kHz)

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

i2c_writeReg (MPU6050_ADDRESS, 0x26, MAG_DATA_REGISTER); // I2C_SLV0_REG - 6 podatkovnih bajtov MAG je shranjenih v 6 registrih. Naslov prve registracije 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)

#endif

}

void ACC_getADC () {

i2c_getSixRawADC (MPU6050_ADDRESS, 0x3B);

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

ACC_Skupno ();

}

// Funkcijo pridobivanja MAG je treba zamenjati, ker se zdaj pogovarjamo z napravo MPU

#če je definirano (MPU6050_I2C_AUX_MASTER)

void Device_Mag_getADC () {

i2c_getSixRawADC (MPU6050_ADDRESS, 0x49); // 0x49 je prva pomnilniška 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

#če je definirano (MAG3110)

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

#endif

}

#endif

#endif

6. korak: 6. korak: 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 in imprimir el PCB.

3. Diseño Software: 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.

Priporočena: