Proyecto Laboratorio De Mecatrónica (Dalawang Wheel Balance Robot): 6 na Hakbang
Proyecto Laboratorio De Mecatrónica (Dalawang Wheel Balance Robot): 6 na Hakbang
Anonim
Image
Image

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

Hakbang 1: Hakbang 1: Kahilingan sa Materyal

o Mecánicos:

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

b. 14 tornillos M3 x.07 x 6

c. 24 tuercas M8 hex

d. 3 tornillos M4 x.07 x 6

e. Filamento PLA (500grs aprox)

o Electrónicos:

a. 1 switch ng interruptor

b. Arduino uno o nano

c. 2 motores nema 17

d. 2 driver A4988

e. 3 resistencias 1k

f. HC-05

g. MPU-6050

h 2 capacitores de 100uf o 47uf

ako Batería lippo 11.1 V

o Piezas fabricadas:

a. 3 placas de MDF (120 x 170 x 6 mm)

b. Placa PCB (8 x 14 cm aprox)

c. Soporte batería

d. 2 soporte para sa motor

e. 2 llantas

o Mga Dagdag:

Inirerekumenda ng mga softwares ang para sa realización del proyecto.

a. Software ng Arduino IDE

b. SolidWorks 2018

c. Kidcad software

Hakbang 2: Hakbang 2: Sistema Mecánico-es konstrura

Hakbang 2: Sistema Mecánico-es konstrura
Hakbang 2: Sistema Mecánico-es konstrura
Hakbang 2: Sistema Mecánico-es konstrura
Hakbang 2: Sistema Mecánico-es konstrura

El modelado de las piezas y es konstrura general se realizo en SolidWorks, primero 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 batería, la central para nuestra PCB at ang superior solo tendrá los orificios para darle su es konstrura.

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

Para sa modelo ng 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 sa una kong pag-ibig.

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

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

Sa pamamagitan ng paggamit ng isang PCB, para sa mga detalyadong sanggunian, impormasyon tungkol sa Bluetooth HC-05, un giroscopio 6050 mga driver ng los motores. Las conexiones son las que se muestran en la imagen. Asegúrese de hacer las conexiones correctionamente, ya que de no ser as puede ocasionar que el sistema no funcione correctamente y no lo obedezca.

Hakbang 5: Hakbang 5: Software

Hakbang 5: Software
Hakbang 5: Software

Para sa programa utilizamos un arduino, isang pagpapatuloy anexamos una parte de la programación con su explicación correspondiente, al igual anexo link, con el codigo completeo:

Pos holdconfiguracion

// default na mga nadagdag sa kontrol ng POSHOLD

# tukuyin ang POSHOLD_P 2.00

# tukuyin ang POSHOLD_I 0.0

# tukuyin ang POSHOLD_IMAX 20 // degree

# tukuyin ang POSHOLD_RATE_P 2.0

# tukuyin ang POSHOLD_RATE_I 0.08 // Kontrol ng hangin

# tukuyin ang POSHOLD_RATE_D 0.045 // subukan ang 2 o 3 para sa POSHOLD_RATE 1

# tukuyin ang POSHOLD_RATE_IMAX 20 // degree

// default Navigation PID nakakuha

# tukuyin ang NAV_P 1.4

#define NAV_I 0.20 // Wind control

#define NAV_D 0.08 //

# tukuyin ang NAV_IMAX 20 // degree

# tukuyin ang MINCHECK 1100

# tukuyin MAXCHECK 1900

Maaari kong magawa ang mga nadagdag para makapaghawak ng sistema.

Configuración gyro:

walang bisa Gyro_init () {

TWBR = (((F_CPU / 400000L) - 16) / 2; // baguhin ang rate ng orasan ng I2C sa 400kHz

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

antala (5);

i2c_writeReg (MPU6050_ADDRESS, 0x6B, 0x03); // PWR_MGMT_1 - TULOG 0; CYCLE 0; TEMP_DIS 0; CLKSEL 3 (PLL na may sanggunian na Z Gyro)

i2c_writeReg (MPU6050_ADDRESS, 0x1A, MPU6050_DLPF_CFG); // CONFIG - EXT_SYNC_SET 0 (huwag paganahin ang input pin para sa pag-sync ng data); default DLPF_CFG = 0 => bandwidth ng ACC = 260Hz GYRO bandwidth = 256Hz)

i2c_writeReg (MPU6050_ADDRESS, 0x1B, 0x18); // GYRO_CONFIG - FS_SEL = 3: Ang buong sukat na itinakda sa 2000 deg / sec

// paganahin ang I2C bypass para sa AUX I2C

#kung tinukoy (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

#tapusin kung

}

walang bisa Gyro_getADC () {

i2c_getSixRawADC (MPU6050_ADDRESS, 0x43);

GYRO_ORIENTATION ((((rawADC [0] 2, // saklaw: +/- 8192; +/- 2000 deg / sec

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

GYRO_Common ();

}

walang bisa ACC_init () {

i2c_writeReg (MPU6050_ADDRESS, 0x1C, 0x10); // ACCEL_CONFIG - AFS_SEL = 2 (Full Scale = +/- 8G); ACCELL_HPF = 0 // tandaan na may mali sa spec.

// note: parang may mali sa spec dito. Sa AFS = 2 1G = 4096 ngunit ayon sa aking pagsukat: 1G = 2048 (at 2048/8 = 256)

// nakumpirma dito:

# kung tinukoy (MPU6050_I2C_AUX_MASTER)

// sa yugtong ito, ang MAG ay naka-configure sa pamamagitan ng orihinal na pag-andar ng MAG init sa I2C bypass mode

// ngayon ay na-configure namin ang MPU bilang isang aparato ng I2C Master upang hawakan ang MAG sa pamamagitan ng I2C AUX port (tapos dito para sa HMC5883)

i2c_writeReg (MPU6050_ADDRESS, 0x6A, 0b00100000); // USER_CTRL - DMP_EN = 0; FIFO_EN = 0; I2C_MST_EN = 1 (I2C master mode); 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 bus speed bus = 400kHz)

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

i2c_writeReg (MPU6050_ADDRESS, 0x26, MAG_DATA_REGISTER); // I2C_SLV0_REG - 6 na byte ng data ng MAG ang nakaimbak sa 6 na rehistro. Ang unang address sa pagrehistro ay 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 bytes)

#tapusin kung

}

walang bisa ACC_getADC () {

i2c_getSixRawADC (MPU6050_ADDRESS, 0x3B);

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

ACC_Common ();

}

// Ang pagpapaandar ng pagkuha ng MAG ay dapat mapalitan dahil nakikipag-usap kami ngayon sa aparato ng MPU

# kung tinukoy (MPU6050_I2C_AUX_MASTER)

void Device_Mag_getADC () {

i2c_getSixRawADC (MPU6050_ADDRESS, 0x49); // 0x49 ang kauna-unahang memory room para sa EXT_SENS_DATA

# kung tinukoy (HMC5843)

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

#tapusin kung

# kung tinukoy (HMC5883)

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

#tapusin kung

# kung tinukoy (MAG3110)

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

#tapusin kung

}

#tapusin kung

#tapusin kung

Hakbang 6: Hakbang 6: Mga Consejos

1. Diseño Mecánico: Utilizar y hacer el diseño que mas les congaga, para sa uso sa loob ng isang robot, mag-isip ng bien, para sa oras ng hacer cortes na lumipas o impresiones sa 3D, walang tulong na volver a hacerlo y todo quede a la perfección.

2. Diseño eléctrico: Hacer su propia PCB, para sa mga 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 Mag-isip ng higit na mga koneksyon o volver isang imprimir el PCB.

3. Software ng Diseño: Maglaro ng mga programa sa base expuesta, ngunit ang tratar de hacer su propia programación, para makapagpalabas ng isang entender bien el funcionamiento y en caso de que no funcionar la programación saber como cambiar las instrucciones para que funcione correctamente.

Inirerekumendang: