Πίνακας περιεχομένων:

Proyecto Laboratorio De Mecatrónica (Robot Balance Robot): 6 Βήματα
Proyecto Laboratorio De Mecatrónica (Robot Balance Robot): 6 Βήματα

Βίντεο: Proyecto Laboratorio De Mecatrónica (Robot Balance Robot): 6 Βήματα

Βίντεο: Proyecto Laboratorio De Mecatrónica (Robot Balance Robot): 6 Βήματα
Βίντεο: Pr#83 - PID Balanza y Bola | Teoría y Calibración 2024, Νοέμβριος
Anonim
Image
Image

Για την καλύτερη δυνατή προοπτική, θα λειτουργήσετε και θα χρησιμοποιήσετε το "Robot ζυγοστάθμισης δύο τροχών" μετά και μετά από εξηγήσεις σε ιδέες. Este es un sistema que konsee 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: Απαιτήσεις υλικού

o Mecánicos:

ένα. 1 metro de varilla roscada (3/8)

σι. 14 tornillos M3 x.07 x 6

ντο. 24 tuercas M8 hex

ρε. 3 tornillos M4 x.07 x 6

μι. Filamento PLA (500grs περίπου)

o Ηλεκτρονικός:

ένα. 1 διακόπτης διακοπτών

σι. Arduino uno o nano

ντο. 2 motores nema 17

ρε. 2 προγράμματα οδήγησης A4988

μι. 3 αντιστάσεις 1κ

φά. HC-05

σολ. MPU-6050

η 2 capacitores de 100uf o 47uf

Εγώ. Batería lippo 11.1 V

o Piezas fabricadas:

ένα. 3 πλακάκια από MDF (120 x 170 x 6 mm)

σι. PCB Placa (περίπου 8 x 14 cm περίπου)

ντο. Soporte batería

ρε. 2 soporte para motor

μι. 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 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: Βήμα 3: Fabricación De Piezas 3D

Παρακολουθήστε τους τρόπους χρήσης των SolidWorks, που μπορούν να χρησιμοποιηθούν για να βελτιώσετε τις δυνατότητές σας, για να σας βοηθήσουμε, να λάβετε υπόψη σας.

Βήμα 4: Βήμα 4: Sistema Eléctrico/electrónico

Βήμα 4: Sistema Eléctrico/electrónico
Βήμα 4: Sistema Eléctrico/electrónico

Εκτός από τη χρήση PCB, για την επεξεργασία των ανταλλακτικών ανταλλακτικών, για την είσοδό σας στο arduino, για τον τρόπο λειτουργίας Bluetooth HC-05, για γυροσκόπιο 6050 και 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 correctmente y no lo obedezca.

Βήμα 5: Βήμα 5: Λογισμικό

Βήμα 5: Λογισμικό
Βήμα 5: Λογισμικό

Παράλληλα με το πρόγραμμα, μπορείτε να συνεχίσετε την αναφορά σας και να συνεχίσετε το πρόγραμμα σας με εξηγήσεις ανταποκριτών, συνδέσμους ήχου και συνδέσμους, καθώς και πλήρη κωδικοποίηση:

Pos holdconfiguracion

// προεπιλεγμένα κέρδη ελέγχου POSHOLD

#define POSHOLD_P 2.00

#define POSHOLD_I 0.0

#define POSHOLD_IMAX 20 // μοίρες

#define POSHOLD_RATE_P 2.0

#define POSHOLD_RATE_I 0.08 // Έλεγχος ανέμου

#define POSHOLD_RATE_D 0.045 // δοκιμάστε 2 ή 3 για POSHOLD_RATE 1

#define POSHOLD_RATE_IMAX 20 // μοίρες

// προεπιλεγμένα κέρδη PID πλοήγησης

#define NAV_P 1.4

#define NAV_I 0.20 // Έλεγχος ανέμου

#define NAV_D 0.08 //

#define NAV_IMAX 20 // μοίρες

#define MINCHECK 1100

#define MAXCHECK 1900

Το Aqui se modifica los κερδίζει παράλληλα με το σύστημα.

Γυροσκόπηση διαμόρφωσης:

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 - SLEEP 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 = εύρος ζώνης GYRO 260Hz = 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_EL = 0; INT_RD_CLEAR = 0; FSYNC_INT_LEVEL = 0; FSYNC_INT_EL = 0; I2C_BYPASS_EL = 1; CLKOUT_EL = 0

#τέλος εαν

}

void 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)

// επιβεβαιώθηκε εδώ:

#if καθορισμένο (MPU6050_I2C_AUX_MASTER)

// σε αυτό το στάδιο, το MAG διαμορφώνεται μέσω της αρχικής λειτουργίας MAG init σε λειτουργία παράκαμψης I2C

// τώρα διαμορφώνουμε το MPU ως συσκευή I2C Master για χειρισμό του MAG μέσω της θύρας I2C AUX (γίνεται εδώ για HMC5883)

i2c_writeReg (MPU6050_ADDRESS, 0x6A, 0b00100000); // USER_CTRL - DMP_EL = 0; FIFO_EL = 0; I2C_MST_EL = 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_EL = 0; INT_RD_CLEAR = 0; FSYNC_INT_LEVEL = 0; FSYNC_INT_EL = 0; I2C_BYPASS_EL = 0; CLKOUT_EL = 0

i2c_writeReg (MPU6050_ADDRESS, 0x24, 0x0D); // I2C_MST_CTRL - MULT_MST_EL = 0; WAIT_FOR_ES = 0; SLV_3_FIFO_EL = 0; I2C_MST_P_NSR = 0; I2C_MST_CLK = 13 (δίαυλος I2C slave speed = 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 byte δεδομένων του MAG αποθηκεύονται σε 6 καταχωρητές. Η πρώτη διεύθυνση εγγραφής είναι MAG_DATA_REGISTER

i2c_writeReg (MPU6050_ADDRESS, 0x27, 0x86); // I2C_SLV0_CTRL - I2C_SLV0_EL = 1; I2C_SLV0_BYTE_SW = 0; I2C_SLV0_REG_DIS = 0; I2C_SLV0_GRP = 0; I2C_SLV0_LEN = 3 (3x2 bytes)

#τέλος εαν

}

void ACC_getADC () {

i2c_getSixRawADC (MPU6050_ADDRESS, 0x3B);

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

ACC_Common ();

}

// Η λειτουργία απόκτησης MAG πρέπει να αντικατασταθεί επειδή μιλάμε τώρα με τη συσκευή MPU

#if καθορισμένο (MPU6050_I2C_AUX_MASTER)

void Device_Mag_getADC () {

i2c_getSixRawADC (MPU6050_ADDRESS, 0x49); // 0x49 είναι το πρώτο δωμάτιο μνήμης για EXT_SENS_DATA

#if καθορισμένα (HMC5843)

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

#τέλος εαν

#if καθορισμένα (HMC5883)

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

#τέλος εαν

#if καθορισμένα (MAG3110)

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

#τέλος εαν

}

#τέλος εαν

#τέλος εαν

Βήμα 6: Βήμα 6: Consejos

1. Diseño Mecánico: Utilizar y hacer el diseño que mas les convega, 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 ten el el correcto y 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 propiagnoón programme, για να διαλέξουμε και να δούμε τις λειτουργίες και τις δυνατότητές μας για να λειτουργήσουμε σωστά με τις οδηγίες για τις λειτουργικές διορθώσεις.

Συνιστάται: