Satura rādītājs:

Proyecto Laboratorio De Mecatrónica (divu riteņu līdzsvara robots): 6 soļi
Proyecto Laboratorio De Mecatrónica (divu riteņu līdzsvara robots): 6 soļi

Video: Proyecto Laboratorio De Mecatrónica (divu riteņu līdzsvara robots): 6 soļi

Video: Proyecto Laboratorio De Mecatrónica (divu riteņu līdzsvara robots): 6 soļi
Video: Control de un robot hexápodo usando estructuras celulares 2024, Jūlijs
Anonim
Image
Image

En este proyecto se mostrara, el funcionamiento y el como hacer para elaborar un "Divu riteņu līdzsvara robots" paso a paso y con explicación y concejos. Este es un sistēma 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.

1. darbība: 1. darbība: materiāla pieprasījums

o Mecánicos:

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

b. 14 tornīļi M3 x.07 x 6

c. 24 tuercas M8 hex

d. 3 tornīļi M4 x.07 x 6

e. Filamento PLA (aptuveni 500 grami)

o Elektronika:

a. 1 pārtraucēja slēdzis

b. Arduino uno vai nano

c. 2 motores nema 17

d. 2 autovadītāji A4988

e. 3 pretestības 1k

f. HC-05

g. MPU-6050

h. 2 kondensatori 100uf vai 47uf

i. Batería lippo 11,1 V

o Piezas fabricadas:

a. 3 MDF plāksnes (120 x 170 x 6 mm)

b. Placa PCB (aptuveni 8 x 14 cm)

c. Akumulatora proporcija

d. 2 dažādi dzinēji

e. 2 llantas

o Papildus:

Programmatūra, kas ieteicama realizācijas projektam.

a. Arduino IDE programmatūra

b. SolidWorks 2018

c. Kidcad programmatūra

2. darbība: 2. darbība: Sistema Mecánico-estructura

2. solis: Sistēma Mecánico-estructura
2. solis: Sistēma Mecánico-estructura
2. solis: Sistēma Mecánico-estructura
2. solis: Sistēma Mecánico-estructura

El modelado de las piezas y estructura 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 y la superior solo tendrá los orificios para darle su estructura.

3. darbība: 3. darbība: 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. darbība: 4. darbība: Sistema Eléctrico/Electronico

4. solis: Sistema Eléctrico/Electronico
4. solis: Sistema Eléctrico/Electronico

En este paso utilizamos una PCB, para elaborar las conexionesrespondientes, haciendo el enlace entre el arduino, el Bluetooth modulis HC-05, un 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.

5. darbība: 5. darbība: programmatūra

5. solis: programmatūra
5. solis: programmatūra

Para el programmas utilizamos un arduino, anexamos una parte de la programción con su explicación korespondence, al igual anexo link, con el codigo complete:

Pos holdconfiguracion

// noklusējuma POSHOLD vadības ieguvumi

#define POSHOLD_P 2.00

#define POSHOLD_I 0.0

#define POSHOLD_IMAX 20 // grādi

#define POSHOLD_RATE_P 2.0

#define POSHOLD_RATE_I 0.08 // Vēja kontrole

#define POSHOLD_RATE_D 0.045 // izmēģiniet 2 vai 3, lai iegūtu POSHOLD_RATE 1

#define POSHOLD_RATE_IMAX 20 // grādi

// noklusējuma navigācijas PID pieaugums

#define NAV_P 1.4

#define NAV_I 0.20 // Vēja kontrole

#define NAV_D 0.08 //

#define NAV_IMAX 20 // grādi

#define MINCHECK 1100

#define MAXCHECK 1900

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

Žiroskonfigurācijas konfigurācija:

void Gyro_init () {

TWBR = ((F_CPU / 400000L) - 16) / 2; // mainīt I2C takts frekvenci uz 400kHz

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

kavēšanās (5);

i2c_writeReg (MPU6050_ADDRESS, 0x6B, 0x03); // PWR_MGMT_1 - SLEEP 0; CIKLS 0; TEMP_DIS 0; CLKSEL 3 (PLL ar Z Gyro atsauci)

i2c_writeReg (MPU6050_ADDRESS, 0x1A, MPU6050_DLPF_CFG); // CONFIG - EXT_SYNC_SET 0 (atspējot ievades tapu datu sinhronizācijai); noklusējuma DLPF_CFG = 0 => ACC joslas platums = 260 Hz GYRO joslas platums = 256 Hz)

i2c_writeReg (MPU6050_ADDRESS, 0x1B, 0x18); // GYRO_CONFIG - FS_SEL = 3: pilna skala ir iestatīta uz 2000 grādiem sekundē

// iespējot I2C apvedceļu AUX I2C

#ja definēts (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 (((neapstrādāta ADC [0] 2, // diapazons: +/- 8192; +/- 2000 grādi/s

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

GYRO_Common ();

}

void ACC_init () {

i2c_writeReg (MPU6050_ADDRESS, 0x1C, 0x10); // ACCEL_CONFIG-AFS_SEL = 2 (pilna skala = +/- 8G); ACCELL_HPF = 0 // atzīmējiet, ka specifikācijās kaut kas nav kārtībā.

// piezīme: šķiet, ka šeit ir kaut kas nepareizs. Ar AFS = 2 1G = 4096, bet saskaņā ar manu mērījumu: 1G = 2048 (un 2048/8 = 256)

// apstiprināts šeit:

#if definēts (MPU6050_I2C_AUX_MASTER)

// šajā posmā MAG tiek konfigurēts, izmantojot sākotnējo MAG init funkciju I2C apvedceļa režīmā

// tagad mēs konfigurējam MPU kā I2C Master ierīci, lai apstrādātu MAG, izmantojot I2C AUX portu (šeit darīts HMC5883)

i2c_writeReg (MPU6050_ADDRESS, 0x6A, 0b00100000); // USER_CTRL - DMP_EN = 0; FIFO_LV = 0; I2C_MST_EN = 1 (I2C galvenais režīms); 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 vergu ātruma kopne = 400 kHz)

i2c_writeReg (MPU6050_ADDRESS, 0x25, 0x80 | MAG_ADDRESS); // I2C_SLV0_ADDR - I2C_SLV4_RW = 1 (lasīšanas darbība); I2C_SLV4_ADDR = MAG_ADDRESS

i2c_writeReg (MPU6050_ADDRESS, 0x26, MAG_DATA_REGISTER); // I2C_SLV0_REG - 6 MAG datu baiti tiek glabāti 6 reģistros. Pirmā reģistra adrese ir 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 baiti)

#endif

}

void ACC_getADC () {

i2c_getSixRawADC (MPU6050_ADDRESS, 0x3B);

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

ACC_Common ();

}

// MAG iegūšanas funkcija ir jāaizstāj, jo mēs tagad runājam ar MPU ierīci

#if definēts (MPU6050_I2C_AUX_MASTER)

void Device_Mag_getADC () {

i2c_getSixRawADC (MPU6050_ADDRESS, 0x49); // 0x49 ir pirmā atmiņas telpa EXT_SENS_DATA

#if definēts (HMC5843)

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

#endif

#if definēts (HMC5883)

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

#endif

#ja definēts (MAG3110)

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

#endif

}

#endif

#endif

6. solis: 6. solis: 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 Entender bien el funcionamiento y en caso de que no funcionar la programción saber como cambiar las instrucciones para que funcione correctamente.

Ieteicams: