תוכן עניינים:

Proyecto Laboratorio De Mecatrónica (רובוט איזון דו גלגלי): 6 שלבים
Proyecto Laboratorio De Mecatrónica (רובוט איזון דו גלגלי): 6 שלבים

וִידֵאוֹ: Proyecto Laboratorio De Mecatrónica (רובוט איזון דו גלגלי): 6 שלבים

וִידֵאוֹ: Proyecto Laboratorio De Mecatrónica (רובוט איזון דו גלגלי): 6 שלבים
וִידֵאוֹ: Control de prótesis biónica con sensor Muscular - Robotica 2024, יולי
Anonim
Image
Image

En este proyecto se mostrara, el funcionamiento y el como hacer para elaborar un "רובוט איזון דו גלגלי" paso a paso y con explicación y concejos. Este es un sistema 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: שלב 1: חומר Requerido

o מקניקוס:

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

ב. 14 טורנילים M3 x.07 x 6

ג. 24 טורקס M8 משושה

ד. 3 טורנילים M4 x.07 x 6

ה. פילמנטו PLA (500 גרם בערך)

o Electrónicos:

א. מתג מפסק אחד

ב. Arduino uno o nano

ג. 2 מנועים nema 17

ד. 2 נהגים A4988

ה. 3 התנגדות 1k

ו. HC-05

ז. MPU-6050

ח. 2 קבלים של 100uf או 47uf

אני. Batería lippo 11.1 V

o פאבז פיאזאס:

א. 3 שלוחות של MDF (120 x 170 x 6 מ מ)

ב. לוח PCB (8 x 14 ס מ בערך)

ג. Soporte batería

ד. מנוע 2 soporte

ה. 2 לאנטות

o תוספות:

תוכנות המלצות על מימוש הפרוייקט.

א. תוכנת Arduino IDE

ב. SolidWorks 2018

ג. תוכנת Kidcad

שלב 2: שלב 2: Sistema Mecánico-estructura

שלב 2: Sistema Mecánico-estructura
שלב 2: Sistema Mecánico-estructura
שלב 2: Sistema Mecánico-estructura
שלב 2: Sistema Mecánico-estructura

El modelado de las piezas and estructura general se realizo en SolidWorks, primero se crearon las placas de MDF para checar el espacio disponible for 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: שלב 3: 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 major funcionamiento, los soportes tienen orificios de.35 cm de dimetro, for a una major sujeción.

שלב 4: שלב 4: Sistema Eléctrico/electrónico

שלב 4: Sistema Eléctrico/electrónico
שלב 4: Sistema Eléctrico/electrónico

En este paso utilizamos for PCB, for elaborar las conexiones correspondentses, haciendo el enlace entre el arduino, el modulo de Bluetooth 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 sistema no funcione correctamente y no lo obedezca.

שלב 5: שלב 5: תוכנה

שלב 5: תוכנה
שלב 5: תוכנה

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

תצוגת pos hold

// רווחי ברירת מחדל ב- POSHOLD

#define POSHOLD_P 2.00

#define POSHOLD_I 0.0

#הגדר POSHOLD_IMAX 20 // מעלות

#הגדר POSHOLD_RATE_P 2.0

#define POSHOLD_RATE_I 0.08 // בקרת רוח

#define POSHOLD_RATE_D 0.045 // נסה 2 או 3 עבור POSHOLD_RATE 1

#הגדר POSHOLD_RATE_IMAX 20 // מעלות

// רווחי PID בניווט ברירת מחדל

#הגדר NAV_P 1.4

#הגדר NAV_I 0.20 // בקרת רוח

#define NAV_D 0.08 //

#הגדר NAV_IMAX 20 // מעלות

#define MINCHECK 1100

#define MAXCHECK 1900

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

גירוס תצורה:

void Gyro_init () {

TWBR = ((F_CPU / 400000L) - 16) / 2; // שנה את קצב השעון I2C ל- 400kHz

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

עיכוב (5);

i2c_writeReg (MPU6050_ADDRESS, 0x6B, 0x03); // PWR_MGMT_1 - שינה 0; מחזור 0; TEMP_DIS 0; CLKSEL 3 (PLL עם הפניה ל- Z Gyro)

i2c_writeReg (MPU6050_ADDRESS, 0x1A, MPU6050_DLPF_CFG); // CONFIG - EXT_SYNC_SET 0 (השבת סיכת קלט לסנכרון נתונים); ברירת מחדל DLPF_CFG = 0 => רוחב פס ACC = 260Hz רוחב פס GYRO = 256Hz)

i2c_writeReg (MPU6050_ADDRESS, 0x1B, 0x18); // GYRO_CONFIG - FS_SEL = 3: קנה מידה מלא מוגדר ל- 2000 מעלות לשנייה

// הפעל מעקף I2C עבור AUX I2C

#if מוגדר (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

}

בטל Gyro_getADC () {

i2c_getSixRawADC (MPU6050_ADDRESS, 0x43);

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

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

GYRO_Common ();

}

void ACC_init () {

i2c_writeReg (MPU6050_ADDRESS, 0x1C, 0x10); // ACCEL_CONFIG-AFS_SEL = 2 (סולם מלא = +/- 8G); ACCELL_HPF = 0 // שימו לב שמשהו לא בסדר במפרט.

// הערה: נראה שמשהו כאן לא בסדר במפרט. עם AFS = 2 1G = 4096 אבל לפי המדידה שלי: 1G = 2048 (ו- 2048/8 = 256)

// אושר כאן:

#אם מוגדר (MPU6050_I2C_AUX_MASTER)

// בשלב זה, ה- MAG מוגדר באמצעות הפונקציה המקורית MAG init במצב מעקף I2C

// כעת אנו מגדירים את MPU כמכשיר I2C Master לטיפול ב- MAG דרך יציאת AUX I2C (נעשה כאן עבור HMC5883)

i2c_writeReg (MPU6050_ADDRESS, 0x6A, 0b00100000); // USER_CTRL - DMP_EN = 0; FIFO_EN = 0; I2C_MST_EN = 1 (מצב אב 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 = 400kHz)

i2c_writeReg (MPU6050_ADDRESS, 0x25, 0x80 | MAG_ADDRESS); // I2C_SLV0_ADDR - I2C_SLV4_RW = 1 (פעולת קריאה); I2C_SLV4_ADDR = MAG_ADDRESS

i2c_writeReg (MPU6050_ADDRESS, 0x26, MAG_DATA_REGISTER); // I2C_SLV0_REG - 6 בתים של MAG מאוחסנים ב -6 רשמים. כתובת הרישום הראשונה היא 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 בתים)

#endif

}

בטל ACC_getADC () {

i2c_getSixRawADC (MPU6050_ADDRESS, 0x3B);

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

ACC_Common ();

}

// יש להחליף את פונקציית רכישת MAG מכיוון שאנו מדברים כעת עם התקן MPU

#אם מוגדר (MPU6050_I2C_AUX_MASTER)

בטל Device_Mag_getADC () {

i2c_getSixRawADC (MPU6050_ADDRESS, 0x49); // 0x49 הוא חדר הזיכרון הראשון ל- EXT_SENS_DATA

#אם מוגדר (HMC5843)

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

#endif

#אם מוגדר (HMC5883)

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

#endif

#if מוגדר (MAG3110)

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

#endif

}

#endif

#endif

שלב 6: שלב 6: קונסגו

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 לסגת א -לה -פרפקשן.

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 teng que agregar mas conexiones o volver a imprimir el PCB.

3. תוכנת Diseño: Guiarse con la programación base expuesta, pero tratar de hacer su propia programación, para llegar a entender bien el funcionamiento y en caso de que no funcionar la programación saber como cambiar las instrucciones para que funcione corramente.

מוּמלָץ: