Taula de continguts:

Projecte Laboratori de Mecatrònica (Robot d’equilibri de dues rodes): 6 passos
Projecte Laboratori de Mecatrònica (Robot d’equilibri de dues rodes): 6 passos

Vídeo: Projecte Laboratori de Mecatrònica (Robot d’equilibri de dues rodes): 6 passos

Vídeo: Projecte Laboratori de Mecatrònica (Robot d’equilibri de dues rodes): 6 passos
Vídeo: Miquel Àngel Essomba parla del Dret a l'educació. Febrer 2016 2024, De novembre
Anonim
Image
Image

En aquest projecte es mostra, el funcionament i com fer per elaborar un "Two wheel balance robot" pas a pas i amb explicació i conceptes. Aquest és un sistema que consisteix en que el robot no ha de caure, ha de mantenir-se en el punt 0 del seu punt de gravetat del giroscopi, i així poder moure-ho i que es regrese per si mateix a la seva posició original.

Pas 1: Pas 1: Requerido material

o Mecànics:

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ònics:

a. 1 interruptor interruptor

b. Arduino uno o nano

c. 2 motors nema 17

d. 2 conductors A4988

e. 3 resistències 1k

f. HC-05

g. MPU-6050

h. 2 capacitores de 100uf o 47uf

jo. Batería lippo 11,1 V

o Piezas fabricades:

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

b. Placa PCB (8 x 14 cm aprox)

c. Soporte bateria

d. 2 suport per a motor

e. 2 llantes

o Extres:

Programes recomanats per a la realització del projecte.

a. Programari IDE Arduino

b. SolidWorks 2018

c. Programari Kidcad

Pas 2: Pas 2: Sistema Mecànic-estructura

Pas 2: Sistema Mecànic-estructura
Pas 2: Sistema Mecànic-estructura
Pas 2: Sistema Mecànic-estructura
Pas 2: Sistema Mecànic-estructura

El modelat de les peces i l’estructura general es realitzen a SolidWorks, primer es creen les plaques de MDF per a l’espai disponible per a usos posteriors. 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.

Pas 3: Pas 3: Fabricació de peces 3D

Per al modelat dels suports i llantes que utilitzem de manera habitual SolidWorks, aquests suports poden ser modificats si així ho desitgin, per a un millor funcionament, els suports tenen orificis de.35 cm de diàmetre, per a una millor sujecció.

Pas 4: Pas 4: Sistema Elèctric / electrònic

Pas 4: Sistema Elèctric / electrònic
Pas 4: Sistema Elèctric / electrònic

En aquest pas s’utilitza una PCB, per elaborar les connexions corresponents, fent l’enllaç entre l’arduino, el mòdul de Bluetooth HC-05, un giroscopi 6050 i els conductors dels motors. Las conexiones son las que se muestran en la imagen. Assegurar-se de fer les connexions correctament, ja que de no ser així pot ocasionar que el sistema no funcioni correctament i no ho obedi.

Pas 5: Pas 5: Programari

Pas 5: programari
Pas 5: programari

Per al programa utilitzem un arduino, a continuació anexem una part de la programació amb la seva explicació corresponent, al mateix anexo link, amb el codi complet:

Pos holdconfiguracion

// guanys predeterminats del control POSHOLD

#define POSHOLD_P 2.00

#define POSHOLD_I 0.0

#define POSHOLD_IMAX 20 // graus

#define POSHOLD_RATE_P 2.0

#define POSHOLD_RATE_I 0,08 // Control del vent

#define POSHOLD_RATE_D 0,045 // prova 2 o 3 per POSHOLD_RATE 1

#define POSHOLD_RATE_IMAX 20 // graus

// guanys predeterminats de PID de navegació

#define NAV_P 1.4

#define NAV_I 0.20 // Control del vent

#define NAV_D 0.08 //

#define NAV_IMAX 20 // graus

#define MINCHECK 1100

#defineix MAXCHECK 1900

Aqui es modifica els guanys per tenir el sistema.

Configuració giroscòpica:

void Gyro_init () {

TWBR = ((F_CPU / 400000L) - 16) / 2; // canvieu la freqüència de rellotge I2C a 400 kHz

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

retard (5);

i2c_writeReg (MPU6050_ADDRESS, 0x6B, 0x03); // PWR_MGMT_1 - DORMIR 0; CICLE 0; TEMP_DIS 0; CLKSEL 3 (PLL amb referència Gyro Z)

i2c_writeReg (MPU6050_ADDRESS, 0x1A, MPU6050_DLPF_CFG); // CONFIG - EXT_SYNC_SET 0 (desactiva el pin d'entrada per a la sincronització de dades); DLPF_CFG per defecte = 0 => amplada de banda ACC = ample de banda GYRO = 256Hz)

i2c_writeReg (MPU6050_ADDRESS, 0x1B, 0x18); // GYRO_CONFIG - FS_SEL = 3: escala completa definida a 2000 deg / seg

// habilita la derivació I2C per a AUX I2C

#if definit (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, // interval: +/- 8192; +/- 2000 deg / seg)

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

GYRO_Common ();

}

void ACC_init () {

i2c_writeReg (MPU6050_ADDRESS, 0x1C, 0x10); // ACCEL_CONFIG - AFS_SEL = 2 (escala completa = +/- 8G); ACCELL_HPF = 0 // tingueu en compte que alguna cosa no funciona a l'especificació.

// nota: alguna cosa sembla que no funciona a l'especificació aquí. Amb AFS = 2 1G = 4096 però segons la meva mesura: 1G = 2048 (i 2048/8 = 256)

// confirmat aquí:

#if definit (MPU6050_I2C_AUX_MASTER)

// en aquesta etapa, el MAG es configura mitjançant la funció inicial MAG inicial en mode de bypass I2C

// ara configurem MPU com a dispositiu mestre I2C per gestionar el MAG a través del port AUX I2C (fet aquí per a HMC5883)

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

i2c_writeReg (MPU6050_ADDRESS, 0x25, 0x80 | MAG_ADDRESS); // I2C_SLV0_ADDR - I2C_SLV4_RW = 1 (operació de lectura); I2C_SLV4_ADDR = MAG_ADDRESS

i2c_writeReg (MPU6050_ADDRESS, 0x26, MAG_DATA_REGISTER); // I2C_SLV0_REG: 6 bytes de dades de MAG s’emmagatzemen en 6 registres. La primera adreça de registre és 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)

#endif

}

void ACC_getADC () {

i2c_getSixRawADC (MPU6050_ADDRESS, 0x3B);

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

ACC_Common ();

}

// Cal substituir la funció d'adquisició MAG perquè ara parlem amb el dispositiu MPU

#if definit (MPU6050_I2C_AUX_MASTER)

void Device_Mag_getADC () {

i2c_getSixRawADC (MPU6050_ADDRESS, 0x49); // 0x49 és la primera sala de memòria per a EXT_SENS_DATA

#if definit (HMC5843)

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

#endif

#if definit (HMC5883)

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

#endif

#if definit (MAG3110)

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

#endif

}

#endif

#endif

Pas 6: Pas 6: Consells

1. Disseny Mecànic: Utilitzar i fer el disseny que es converteixin, per a l’ús que se li doni al robot, medir tot bé, per a l’hora de fer corts làser o impressions en 3D, sense tenir que tornar a fer-ho i tot quede a la perfecció.

2. Disseny elèctric: Feu la seva pròpia PCB, per a que tingueu ben ubicades les connexions que tinguin que fer, de igual manera fer primer les connexions en un protoboard, per comprendre que quan el pongan en el PCB el funcionament sigui correcte i no tingui. que agregar més connexions o tornar a imprimir el PCB.

3. Disseny de programari: Guiarse amb la programació base exposta, però tractar de fer la seva pròpia programació, per arribar a entendre bé el funcionament i en cas que no funcioni la programació sabent com canviar les instruccions per a que funcioni correctament.

Recomanat: