Cuprins:
2025 Autor: John Day | [email protected]. Modificat ultima dată: 2025-01-23 15:04
În acest proiect se afișează, funcționarea și cum se poate face pentru a elabora un "Two wheel balance robot" pas la pas și cu explicație și concepții. 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.
Pasul 1: Pasul 1: Material Requerido
o Mecanici:
A. 1 metrou de varilla roscada (3/8)
b. 14 tornillo M3 x.07 x 6
c. 24 tuercas M8 hex
d. 3 tornillos M4 x.07 x 6
e. Filamento PLA (500grs aprox)
o Electronici:
A. 1 întrerupător întrerupător
b. Arduino uno o nano
c. 2 motores nema 17
d. 2 drivere A4988
e. 3 rezistențe 1k
f. HC-05
g. MPU-6050
h. 2 capacitores de 100uf o 47uf
eu. Batería lippo 11.1 V
o Piezas fabricadas:
A. 3 plăci de MDF (120 x 170 x 6 mm)
b. Placa PCB (8 x 14 cm aprox)
c. Soporte batería
d. 2 suport pentru motor
e. 2 llante
o Extra:
Software-uri recomandate pentru realizarea proiectului.
A. Software Arduino IDE
b. SolidWorks 2018
c. Software-ul Kidcad
Pasul 2: Pasul 2: Sistema Mecánico-estructura
El modelat de piețe și structură generală se realizează în SolidWorks, în primul rând se creează plăcile de MDF pentru checar spațiul disponibil pentru utilizări posterioare. Sunt placas son different entre ellas, la placa inferior tendrá los orificios para los soportes de motores y batería, la central para nuestra PCB și la superior solo tendrá los orificios para darle su estructura.
Pasul 3: Pasul 3: Fabricarea De Piezas 3D
Pentru modelarea suporturilor și a lămpilor folosite în mod solid SolidWorks, acestea vor putea fi modificate și așa se vor desena, pentru un funcționare mai bună, suporturile au orificii de.35 cm de diametru, pentru o mai bună sugestie.
Pasul 4: Pasul 4: Sistema Eléctrico / electronic
În acest pas utilizăm o PCB, pentru a elabora conexiunile corespunzătoare, făcând legătura între arduino, modulul Bluetooth HC-05, un giroscopio 6050 și driverele motoarelor. Las conexiones son las que se muestran en la imagen. Asegúrese de a face conexiunile corect, ya that de no ser así poate ocazi că sistemul nu funcționează corect și nu lo obedezca.
Pasul 5: Pasul 5: Software
Pentru programul utilizăm un arduino, a continuat anexamos o parte a programării cu su explicarea corespondentă, la același anex link, cu codigo complet:
Pos holdconfiguracion
// câștiguri implicite ale controlului POSHOLD
#define POSHOLD_P 2.00
#define POSHOLD_I 0.0
#define POSHOLD_IMAX 20 // grade
#define POSHOLD_RATE_P 2.0
#define POSHOLD_RATE_I 0,08 // Controlul vântului
#define POSHOLD_RATE_D 0,045 // încercați 2 sau 3 pentru POSHOLD_RATE 1
#define POSHOLD_RATE_IMAX 20 // grade
// câștiguri implicite de navigare PID
#define NAV_P 1.4
#define NAV_I 0.20 // Controlul vântului
#define NAV_D 0.08 //
#define NAV_IMAX 20 // grade
#define MINCHECK 1100
#define MAXCHECK 1900
Aqui se modifică câștigurile pentru posesia sistemului.
Configurare giroscop:
void Gyro_init () {
TWBR = ((F_CPU / 400000L) - 16) / 2; // modificați rata de ceas I2C la 400kHz
i2c_writeReg (MPU6050_ADDRESS, 0x6B, 0x80); // PWR_MGMT_1 - DEVICE_RESET 1
întârziere (5);
i2c_writeReg (MPU6050_ADDRESS, 0x6B, 0x03); // PWR_MGMT_1 - SOMN 0; CICLUL 0; TEMP_DIS 0; CLKSEL 3 (PLL cu referință Z Gyro)
i2c_writeReg (MPU6050_ADDRESS, 0x1A, MPU6050_DLPF_CFG); // CONFIG - EXT_SYNC_SET 0 (dezactivează pinul de intrare pentru sincronizarea datelor); implicit DLPF_CFG = 0 => lățime de bandă ACC = 260Hz lățime de bandă GYRO = 256Hz)
i2c_writeReg (MPU6050_ADDRESS, 0x1B, 0x18); // GYRO_CONFIG - FS_SEL = 3: Scala completă setată la 2000 deg / sec
// activați bypass-ul I2C pentru 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 / sec
((rawADC [2] 2, ((rawADC [4] 2);
GYRO_Common ();
}
void ACC_init () {
i2c_writeReg (MPU6050_ADDRESS, 0x1C, 0x10); // ACCEL_CONFIG - AFS_SEL = 2 (Scală completă = +/- 8G); ACCELL_HPF = 0 // rețineți că ceva nu este în regulă în spec.
// notă: ceva pare să nu fie în regulă în specificația de aici. Cu AFS = 2 1G = 4096, dar conform măsurătorilor mele: 1G = 2048 (și 2048/8 = 256)
// confirmat aici:
#if definit (MPU6050_I2C_AUX_MASTER)
// în acest stadiu, MAG-ul este configurat prin funcția inițială MAG inițială în modul de bypass I2C
// acum configurăm MPU ca dispozitiv I2C Master pentru a gestiona MAG prin portul I2C AUX (făcut aici pentru HMC5883)
i2c_writeReg (MPU6050_ADDRESS, 0x6A, 0b00100000); // USER_CTRL - DMP_EN = 0; FIFO_EN = 0; I2C_MST_EN = 1 (modul master 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 slave bus bus = 400kHz)
i2c_writeReg (MPU6050_ADDRESS, 0x25, 0x80 | MAG_ADDRESS); // I2C_SLV0_ADDR - I2C_SLV4_RW = 1 (operație de citire); I2C_SLV4_ADDR = MAG_ADDRESS
i2c_writeReg (MPU6050_ADDRESS, 0x26, MAG_DATA_REGISTER); // I2C_SLV0_REG - 6 octeți de date MAG sunt stocate în 6 registre. Prima adresă de înregistrare este 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 octeți)
#endif
}
void ACC_getADC () {
i2c_getSixRawADC (MPU6050_ADDRESS, 0x3B);
ACC_ORIENTATION (((rawADC [0] 3, ((rawADC [2] 3, ((rawADC [4] 3);
ACC_Common ();
}
// Funcția de achiziție MAG trebuie înlocuită, deoarece vorbim acum cu dispozitivul MPU
#if definit (MPU6050_I2C_AUX_MASTER)
void Device_Mag_getADC () {
i2c_getSixRawADC (MPU6050_ADDRESS, 0x49); // 0x49 este prima cameră de memorie pentru 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
Pasul 6: Pasul 6: Consilii
1. Design Mecánico: Utilizați și faceți proiectarea care le convine, pentru utilizarea căreia le-ați dat robotului, meditând bine, pentru ora de a face corturi láser sau impresii în 3D, nu trebuie să reveniți la toate quede a la perfection.
2. Design electric: Hacer su propria PCB, pentru că trebuie să fie bine amplasate la conexiunile pe care le au, de la aceeași manieră să facă primele conexiuni într-o protoboard, pentru a comprobar când pongan-ul în PCB-ul funcționează sea corect și nu trebuie care agregă mai multe conexiuni sau vor reveni la imprimarea PCB-ului.
3. Design Software: Guiarse with the programation base expuesta, but treat of do your own programation, to get to understand well the functionation and in case of that no functionar the programation saber as change the instructions for that function correctly.
Recomandat:
Robot de asistență la urcare în turn - Control cu două picioare, RF, BT cu aplicația: 22 de pași (cu imagini)
Tower Climb Helping Robot V1 - Control cu două picioare, RF, BT cu aplicația: Când văd șopârle pe pereți, intenționez să fac un robot ca acesta. Este o idee pe termen lung, caut multe articole pentru electro-adezivi și verific într-un fel și nu am reușit capacitatea sa de a deține. Doar deocamdată intenționez să-l fac folosind electromagnetul pentru
Robot de auto-echilibrare cu două roți: 7 pași
Robot de auto-echilibrare cu două roți: Acest instructabil va trece prin procesul de proiectare și construcție pentru un robot de auto-echilibrare. Ca o notă, vreau doar să spun că roboții de auto-echilibrare nu sunt un concept nou și au fost construiți și documentați de alții. Vreau să folosesc această oportunitate
Robot de echilibrare / robot cu 3 roți / robot STEM: 8 pași
Robot de echilibrare / robot cu 3 roți / robot STEM: Am construit un robot combinat de echilibrare și 3 roți pentru utilizare educațională în școli și programe educaționale după școală. Robotul se bazează pe un Arduino Uno, un scut personalizat (toate detaliile de construcție furnizate), un acumulator Li Ion (toate constr
Curățarea unei camere de generația a doua sau a doua: 8 pași
Curățarea unui Roomba de prima sau a doua generație: un robot curat este un robot fericit
Construiți un robot foarte mic: faceți cel mai mic robot cu roți din lume cu un dispozitiv de prindere .: 9 pași (cu imagini)
Construiți un robot foarte mic: faceți cel mai mic robot cu roți din lume cu un dispozitiv de prindere. Este controlat de un microcontroler Picaxe. În acest moment, cred că acesta ar putea fi cel mai mic robot cu roți din lume, cu mâner. Fără îndoială că va