Proyecto Laboratorio De Mecatrónica (kétkerekű Balance Robot): 6 lépés
Proyecto Laboratorio De Mecatrónica (kétkerekű Balance Robot): 6 lépés
Anonim
Image
Image

En este proyecto se mostrara, el funcionamiento y el como hacer para elaborar un 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 su posición original.

1. lépés: 1. lépés: Anyagigény

o Mecánicos:

a. 1 metró varilla roscada (3/8)

b. 14 tornilló M3 x.07 x 6

c. 24 tuercas M8 hatszögletű

d. 3 tornilló M4 x.07 x 6

e. Filamento PLA (kb. 500 gramm)

o Electrónicos:

a. 1 megszakító kapcsoló

b. Arduino uno vagy nano

c. 2 motoros nema 17

d. 2 illesztőprogram A4988

e. 3 rezisztencia 1k

f. HC-05

g. MPU-6050

h. 2 kapacitás 100uf vagy 47uf

én. Batería lippo 11,1 V

o Piezas fabricadas:

a. 3 MDF lemez (120 x 170 x 6 mm)

b. Placa NYÁK (kb. 8 x 14 cm)

c. Akkumulátor aránya

d. 2 darab motor

e. 2 llantás

o Extrák:

Szoftverek ajánlottak a projekt megvalósításához.

a. Arduino IDE szoftver

b. SolidWorks 2018

c. Kidcad szoftver

2. lépés: 2. lépés: Sistema Mecánico-estructura

2. lépés: Sistema Mecánico-estructura
2. lépés: Sistema Mecánico-estructura
2. lépés: Sistema Mecánico-estructura
2. lépés: Sistema Mecánico-estructura

El módlado de las piezas y estructura general se realo en SolidWorks, primer 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 battery, la central para nuestra PCB y la superior solo tendrá los orificios para darle su estructura.

3. lépés: 3. lépés: 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.

4. lépés: 4. lépés: Sistema Eléctrico/Electronico

4. lépés: Sistema Eléctrico/Electronico
4. lépés: Sistema Eléctrico/Electronico

Enable paso utilizamos una PCB, para elaborar las conexiones levelező, haciendo el enlace entre el arduino, a Bluetooth HC-05 modul, un giroscopio 6050 and 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.

5. lépés: 5. lépés: Szoftver

5. lépés: Szoftver
5. lépés: Szoftver

Para el program utilizamos un arduino, a continuación anexamos una parte de la programción con su explicación levelezés, al igual anexo link, con el codigo complete:

Pos holdconfiguracion

// alapértelmezett POSHOLD vezérlés

#define POSHOLD_P 2.00

#define POSHOLD_I 0.0

#define POSHOLD_IMAX 20 // fok

#define POSHOLD_RATE_P 2.0

#define POSHOLD_RATE_I 0.08 // Szélvezérlés

#define POSHOLD_RATE_D 0.045 // próbálja ki a 2 -es vagy 3 -as értéket a POSHOLD_RATE 1 értékhez

#define POSHOLD_RATE_IMAX 20 // fok

// alapértelmezett navigációs PID -nyereség

#define NAV_P 1.4

#define NAV_I 0.20 // Szélvezérlés

#define NAV_D 0.08 //

#define NAV_IMAX 20 // fok

#define MINCHECK 1100

#define MAXCHECK 1900

Az Aqui se modifica los nyereség para el poss hold del system.

Giroszkóp beállítása:

void Gyro_init () {

TWBR = ((F_CPU / 400000L) - 16) / 2; // módosítsa az I2C órajelet 400 kHz -re

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

késleltetés (5);

i2c_writeReg (MPU6050_ADDRESS, 0x6B, 0x03); // PWR_MGMT_1 - 0 ALVÁS; CIKLUS 0; TEMP_DIS 0; CLKSEL 3 (PLL Z Gyro hivatkozással)

i2c_writeReg (MPU6050_ADDRESS, 0x1A, MPU6050_DLPF_CFG); // CONFIG - EXT_SYNC_SET 0 (letilthatja a bemeneti pin adatok szinkronizálás); alapértelmezett DLPF_CFG = 0 => ACC sávszélesség = 260Hz GYRO sávszélesség = 256Hz)

i2c_writeReg (MPU6050_ADDRESS, 0x1B, 0x18); // GYRO_CONFIG - FS_SEL = 3: Teljes körű set 2000 ° / sec

// az I2C bypass engedélyezése az AUX I2C számára

#if meghatározott (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 (((nyersADC [0] 2, // tartomány: +/- 8192; +/- 2000 fok/mp

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

GYRO_Common ();

}

void ACC_init () {

i2c_writeReg (MPU6050_ADDRESS, 0x1C, 0x10); // ACCEL_CONFIG-AFS_SEL = 2 (teljes skála = +/- 8G); ACCELL_HPF = 0 // vegye figyelembe, hogy valami nincs rendben a specifikációban.

// megjegyzés: úgy tűnik, valami nincs rendben az itteni specifikációban. AFS = 2 1G = 4096, de a mérésem szerint: 1G = 2048 (és 2048/8 = 256)

// megerősítve itt:

#if meghatározott (MPU6050_I2C_AUX_MASTER)

// ebben a szakaszban a MAG konfigurálása az eredeti MAG init funkción keresztül történik I2C bypass módban

// most az MPU -t I2C Master eszközként konfiguráljuk a MAG kezelésére az I2C AUX porton keresztül (itt a HMC5883 esetében)

i2c_writeReg (MPU6050_ADDRESS, 0x6A, 0b00100000); // USER_CTRL - DMP_EN = 0; FIFO_HU = 0; I2C_MST_EN = 1 (I2C mester mód); 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 fordulatszám busz = 400 kHz)

i2c_writeReg (MPU6050_ADDRESS, 0x25, 0x80 | MAG_ADDRESS); // I2C_SLV0_ADDR - I2C_SLV4_RW = 1 (olvasási művelet); I2C_SLV4_ADDR = MAG_ADDRESS

i2c_writeReg (MPU6050_ADDRESS, 0x26, MAG_DATA_REGISTER); // I2C_SLV0_REG - A MAG 6 adatbájtja tárolódik 6 regiszterben. Az első regisztrációs cím 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 bájt)

#endif

}

void ACC_getADC () {

i2c_getSixRawADC (MPU6050_ADDRESS, 0x3B);

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

ACC_Common ();

}

// A MAG beszerzési funkciót le kell cserélni, mert most az MPU eszközzel beszélünk

#if definiált (MPU6050_I2C_AUX_MASTER)

void Device_Mag_getADC () {

i2c_getSixRawADC (MPU6050_ADDRESS, 0x49); // A 0x49 az EXT_SENS_DATA első memóriaterme

#if meghatározott (HMC5843)

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

#endif

#if meghatározott (HMC5883)

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

#endif

#if meghatározott (MAG3110)

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

#endif

}

#endif

#endif

6. lépés: 6. lépés: 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 o volver a imprimir el PCB.

3. Diseño Software: Guiarse con la programción base expuesta, pero tratar de hacer su propia programción, para 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.

Ajánlott: