Sommario:
- Passaggio 1: Passaggio 1: Richiesta di materiale
- Fase 2: Fase 2: Sistema Meccanico-estructura
- Passaggio 3: Passaggio 3: Fabricación De Piezas 3D
- Passaggio 4: Passaggio 4: Sistema elettrico/elettronico
- Passaggio 5: Passaggio 5: Software
- Passaggio 6: Passaggio 6: Suggerimenti
Video: Proyecto Laboratorio De Mecatrónica (Robot per l'equilibrio a due ruote): 6 passaggi
2024 Autore: John Day | [email protected]. Ultima modifica: 2024-01-30 10:02
En este proyecto se mostrara, el funcionamiento y el como hacer para elaborar un "Two wheel balance robot" 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.
Passaggio 1: Passaggio 1: Richiesta di materiale
o Meccanici:
un. 1 metro di varilla rossa (3/8)
B. 14 tornilli M3 x.07 x 6
C. 24 tubi M8 esagonali
D. 3 tornilli M4 x.07 x 6
e. Filamento PLA (500grs circa)
o Elettronica:
un. 1 interruttore interruttore
B. Arduino uno o nano
C. 2 motori nema 17
D. 2 driver A4988
e. 3 resistenze 1k
F. HC-05
G. MPU-6050
h. 2 condensatori da 100uf o 47uf
io. Batteria lippo 11.1 V
o Piezas fabbricate:
un. 3 placche in MDF (120 x 170 x 6 mm)
B. PCB Placa (8 x 14 cm circa)
C. Soporte batería
D. 2 porte per motore
e. 2 pneumatici
o Extra:
Software consigliati per la realizzazione del progetto.
un. Software Arduino IDE
B. SolidWorks 2018
C. Software Kidcad
Fase 2: Fase 2: Sistema Meccanico-estructura
El modelado de las piezas y estructura general se realizo en SolidWorks, primero se crearon las placas de MDF per checar el espacio disponible para posteriores us. Estas placas son diferentes entre ellas, la placa lower tendrá los orificios para los soportes de motors y batería, la central para nuestra PCB y la superior solo tendrá los orificios para darle su estructura.
Passaggio 3: Passaggio 3: Fabricación De Piezas 3D
Per il modello dei supporti e degli pneumatici vengono utilizzati di diritto SolidWorks, possono essere modificati anche in caso di necessità, per un migliore funzionamento, i supporti hanno un diametro di 35 cm, per una maggiore necessità.
Passaggio 4: Passaggio 4: Sistema elettrico/elettronico
In questo modo si utilizza un PCB, per elaborare le connessioni corrispondenti, l'aggancio tra l'arduino, il modulo Bluetooth HC-05, un giroscopio 6050 e i driver dei motori. 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.
Passaggio 5: Passaggio 5: Software
Para el programa utilizamos un arduino, a continuación anexamos una parte de la programación con su explicación corrispondenti, al igual anexo link, con el codigo completo:
Pos holdconfiguracion
// guadagno del controllo POSHOLD predefinito
#define POSHOLD_P 2.00
#define POSHOLD_I 0.0
#define POSHOLD_IMAX 20 // gradi
#define POSHOLD_RATE_P 2.0
#define POSHOLD_RATE_I 0.08 // Controllo del vento
#define POSHOLD_RATE_D 0.045 // prova 2 o 3 per POSHOLD_RATE 1
#define POSHOLD_RATE_IMAX 20 // gradi
// guadagno PID di navigazione predefinito
#define NAV_P 1.4
#define NAV_I 0.20 // Controllo del vento
#define NAV_D 0.08 //
#define NAV_IMAX 20 // gradi
#define MINCHECK 1100
#define MAXCHECK 1900
Aqui se modifica los gains para el poss hold del sistema.
Giroscopio di configurazione:
void Gyro_init() {
TWBR = ((F_CPU / 400000L) - 16) / 2; // cambia la frequenza di clock I2C a 400kHz
i2c_writeReg(MPU6050_ADDRESS, 0x6B, 0x80); //PWR_MGMT_1 -- DEVICE_RESET 1
ritardo(5);
i2c_writeReg(MPU6050_ADDRESS, 0x6B, 0x03); //PWR_MGMT_1 -- SONNO 0; CICLO 0; TEMP_DIS 0; CLKSEL 3 (PLL con riferimento giroscopio Z)
i2c_writeReg(MPU6050_ADDRESS, 0x1A, MPU6050_DLPF_CFG); //CONFIG -- EXT_SYNC_SET 0 (disabilita il pin di input per la sincronizzazione dei dati); default DLPF_CFG = 0 => larghezza di banda ACC = 260Hz larghezza di banda GYRO = 256Hz)
i2c_writeReg(MPU6050_ADDRESS, 0x1B, 0x18); //GYRO_CONFIG -- FS_SEL = 3: Fondo scala impostato su 2000 gradi/sec
// abilita il bypass I2C per AUX I2C
#se definito(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
#finisci se
}
void Gyro_getADC () {
i2c_getSixRawADC(MPU6050_ADDRESS, 0x43);
GYRO_ORIENTATION(((rawADC[0]2, // range: +/- 8192; +/- 2000 gradi/sec
((rawADC[2]2, ((rawADC[4]2);
GYRO_Common();
}
void ACC_init() {
i2c_writeReg(MPU6050_ADDRESS, 0x1C, 0x10); //ACCEL_CONFIG -- AFS_SEL=2 (Full Scale = +/-8G); ACCELL_HPF=0 //nota che qualcosa non va nelle specifiche.
//nota: c'è qualcosa che non va nelle specifiche qui. Con AFS=2 1G = 4096 ma secondo la mia misura: 1G=2048 (e 2048/8 = 256)
//confermato qui:
#se definito(MPU6050_I2C_AUX_MASTER)
//in questa fase, il MAG è configurato tramite la funzione di init originale del MAG in modalità bypass I2C
//ora configuriamo MPU come dispositivo I2C Master per gestire il MAG tramite la porta I2C AUX (fatto qui per HMC5883)
i2c_writeReg(MPU6050_ADDRESS, 0x6A, 0b0010000); //USER_CTRL -- DMP_EN=0; FIFO_EN=0; I2C_MST_EN=1 (modalità 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 (bus velocità slave I2C = 400kHz)
i2c_writeReg(MPU6050_ADDRESS, 0x25, 0x80|MAG_ADDRESS);//I2C_SLV0_ADDR -- I2C_SLV4_RW=1 (operazione di lettura); I2C_SLV4_ADDR=INDIRIZZO_MAG
i2c_writeReg(MPU6050_ADDRESS, 0x26, MAG_DATA_REGISTER);//I2C_SLV0_REG -- 6 byte di dati di MAG sono memorizzati in 6 registri. L'indirizzo del primo registro è 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 byte)
#finisci se
}
void ACC_getADC () {
i2c_getSixRawADC(MPU6050_ADDRESS, 0x3B);
ACC_ORIENTATION(((rawADC[0]3, ((rawADC[2]3, ((rawADC[4]3);
ACC_Comune();
}
//La funzione di acquisizione MAG deve essere sostituita perché ora parliamo con il dispositivo MPU
#se definito(MPU6050_I2C_AUX_MASTER)
void Device_Mag_getADC() {
i2c_getSixRawADC(MPU6050_ADDRESS, 0x49); //0x49 è la prima stanza di memoria per EXT_SENS_DATA
#se definito(HMC5843)
MAG_ORIENTATION(((rawADC[0]<<8) | rawADC[1]), ((ADC non elaborato[2]<<8) | ADC non elaborato[3]), ((rawADC[4]<<8) | rawADC[5]));
#finisci se
#se definito (HMC5883)
MAG_ORIENTATION(((rawADC[0]<<8) | rawADC[1]), ((ADC non elaborato[4]<<8) | ADC non elaborato[5]), ((rawADC[2]<<8) | rawADC[3]));
#finisci se
#se definito (MAG3110)
MAG_ORIENTATION(((rawADC[0]<<8) | rawADC[1]), ((ADC non elaborato[2]<<8) | ADC non elaborato[3]), ((rawADC[4]<<8) | rawADC[5]));
#finisci se
}
#finisci se
#finisci se
Passaggio 6: Passaggio 6: Suggerimenti
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 perfezione.
2. Disegno elettrico: Hacer su proprio 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 programación base expuesta, pero tratar de hacer su propia programación, para llegar a entender bien el funcionamiento y en caso de que non funcionar la programación saber como changer las instrucciones para que funcione correttamente.
Consigliato:
Robot autobilanciante a due ruote: 7 passaggi
Robot autobilanciato a due ruote: questo tutorial seguirà il processo di progettazione e costruzione di un robot autobilanciante. Come nota, voglio solo dire che i robot autobilanciati non sono un concetto nuovo e sono stati costruiti e documentati da altri. Voglio sfruttare questa opportunità
Arduino R3 Bluetooth 4 ruote per auto: 9 passaggi
Arduino R3 Bluetooth 4 ruote auto: ECCO GLI STRUMENTI & MATERIALI DI CUI HAI BISOGNO! MATERIALI: _4-ruote_4-motori_1-batteria (12v 2000mAh)_1-arduino R3 & 1-scudo motore arduino_1-chip bluetooth (HC-005)_1-rotolo di saldatura metal_bolts & noci e separatori di schede_telaio auto in acrilico
Robot di bilanciamento / Robot a 3 ruote / Robot STEM: 8 passaggi
Robot di bilanciamento / Robot a 3 ruote / Robot STEM: Abbiamo costruito un robot combinato di bilanciamento e 3 ruote per l'uso educativo nelle scuole e nei programmi educativi dopo la scuola. Il robot è basato su un Arduino Uno, uno shield personalizzato (tutti i dettagli costruttivi forniti), un pacco batteria agli ioni di litio (tutti co
Costruisci un ENORME RC MONSTER TRUCK - Ruote per carrello da golf - Motore per ciclomotore - Telecomando: 10 passaggi
Costruisci un ENORME RC MONSTER TRUCK - Ruote per carrello da golf - Motore per ciclomotore - Telecomando: ecco un fai-da-te per costruire un ENORME RC Monster Truck. Avrai bisogno di un saldatore. Mi è piaciuto vedere i camion telecomandati fare molta strada negli ultimi due decenni. Ne ho anche posseduti diversi lungo il wa
Costruisci un robot molto piccolo: crea il robot a ruote più piccolo del mondo con una pinza.: 9 passaggi (con immagini)
Costruisci un robot molto piccolo: crea il robot a ruote più piccolo del mondo con una pinza: costruisci un robot da 1/20 di pollice cubo con una pinza che può raccogliere e spostare piccoli oggetti. È controllato da un microcontrollore Picaxe. A questo punto, credo che questo potrebbe essere il robot su ruote più piccolo al mondo con una pinza. Questo senza dubbio ch