Inhoudsopgave:
2025 Auteur: John Day | [email protected]. Laatst gewijzigd: 2025-01-23 15:01
Dit is een van de meest recente projecten, die u kunt gebruiken voor de uitwerking van een "Two wheel balance robot" voor een paso y con explicación y concejos. Dit is een bestaand uit een robot die nog niet bestaat uit een mantener en een punt waarop het graf van een graf kan worden gevonden, en dat er een nieuwe manier is gevonden om een originele positie in te nemen.
Stap 1: Stap 1: Materiaalbehoefte:
o Mecanico's:
A. 1 metro de varilla roscada (3/8)
B. 14 tornillo's M3 x.07 x 6
C. 24 tuercas M8 hex
NS. 3 tornillo's M4 x.07 x 6
e. Filamento PLA (ongeveer 500 gram)
o Elektronica:
A. 1 onderbrekerschakelaar
B. Arduino uno of nano
C. 2 motoren nema 17
NS. 2 stuurprogramma's A4988
e. 3 weerstanden 1k
F. HC-05
G. MPU-6050
H. 2 condensatoren van 100uf of 47uf
l. Batería lippo 11.1 V
o Piezas fabricadas:
A. 3 platen van MDF (120 x 170 x 6 mm)
B. Placa PCB (8 x 14 cm ongeveer)
C. Soporte batería
NS. 2 soporte para motor
e. 2 llanta's
o Extra's:
Software aanbevolen voor de realisatie van het project.
A. Arduino IDE-software
B. SolidWorks 2018
C. Kidcad-software
Stap 2: Stap 2: Sistema Mecánico-estructura
Het 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 andtre 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.
Stap 3: Stap 3: Fabricación De Piezas 3D
Voor het oplossen van problemen en het gebruiken van SolidWorks, wordt het mogelijk gemaakt om wijzigingen aan te brengen in de huidige functie, voor het uitvoeren van de taak van.35 cm voor het uitvoeren van de taak.
Stap 4: Stap 4: Sistema Eléctrico/electrónico
U kunt gebruik maken van PCB's, een uitgebreide lijst van correspondenties, haciendo en enlace entre el arduino, de module van Bluetooth HC-05, en stuurprogramma's van 6050 en los motoren. 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 el el sistema no funcione correctamente y no lo obedezca.
Stap 5: Stap 5: Software
Para el programa utilizamos un arduino, een continuación anexamos un parte de la programación con su explicación correspondiente, al igual anexo link, con el codigo completo:
Pos hold-configuratie
// standaard POSHOLD-besturingswinst
#define POSHOLD_P 2.00
#define POSHOLD_I 0.0
#define POSHOLD_IMAX 20 // graden
#define POSHOLD_RATE_P 2.0
#define POSHOLD_RATE_I 0.08 // Windcontrole
#define POSHOLD_RATE_D 0.045 // probeer 2 of 3 voor POSHOLD_RATE 1
#define POSHOLD_RATE_IMAX 20 // graden
// standaard navigatie PID winst
#define NAV_P 1.4
#define NAV_I 0.20 // Windcontrole
#define NAV_D 0,08 //
#define NAV_IMAX 20 // graden
#define MINCHECK 1100
#define MAXCHECK 1900
Aqui se modifica los gains para el poss hold del sistema.
Configuratie gyro:
ongeldig Gyro_init() {
TWBR = ((F_CPU / 400000L) - 16) / 2; // verander de I2C kloksnelheid naar 400kHz
i2c_writeReg (MPU6050_ADDRESS, 0x6B, 0x80); //PWR_MGMT_1 -- DEVICE_RESET 1
vertraging (5);
i2c_writeReg (MPU6050_ADDRESS, 0x6B, 0x03); //PWR_MGMT_1 -- SLAAP 0; CYCLUS 0; TEMP_DIS 0; CLKSEL 3 (PLL met Z Gyro-referentie)
i2c_writeReg (MPU6050_ADDRESS, 0x1A, MPU6050_DLPF_CFG); //CONFIG -- EXT_SYNC_SET 0 (ingangspin uitschakelen voor gegevenssynchronisatie); standaard DLPF_CFG = 0 => ACC bandbreedte = 260Hz GYRO bandbreedte = 256Hz)
i2c_writeReg (MPU6050_ADDRESS, 0x1B, 0x18); //GYRO_CONFIG -- FS_SEL = 3: Volledige schaal ingesteld op 2000 graden/sec
// schakel I2C-bypass in voor AUX I2C
#indien gedefinieerd(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
#stop als
}
ongeldig Gyro_getADC () {
i2c_getSixRawADC(MPU6050_ADDRESS, 0x43);
GYRO_ORIENTATION(((rawADC[0]2, // bereik: +/- 8192; +/- 2000 graden/sec
((ruweADC[2]2, ((ruwe ADC[4]2);
GYRO_Common();
}
ongeldig ACC_init () {
i2c_writeReg (MPU6050_ADDRESS, 0x1C, 0x10); // ACCEL_CONFIG -- AFS_SEL = 2 (Volledige schaal = +/- 8G); ACCELL_HPF=0 //merk op dat er iets mis is in de specificatie.
//opmerking: er lijkt iets mis te zijn in de specificatie hier. Met AFS=2 1G = 4096 maar volgens mijn meting: 1G=2048 (en 2048/8 = 256)
//hier bevestigd:
#indien gedefinieerd(MPU6050_I2C_AUX_MASTER)
// in dit stadium wordt de MAG geconfigureerd via de originele MAG init-functie in I2C-bypassmodus
// nu configureren we MPU als een I2C Master-apparaat om de MAG te verwerken via de I2C AUX-poort (hier gedaan voor HMC5883)
i2c_writeReg (MPU6050_ADDRESS, 0x6A, 0b00100000); //USER_CTRL -- DMP_EN=0; FIFO_EN=0; I2C_MST_EN=1 (I2C-mastermodus); 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-snelheidsbus = 400 kHz)
i2c_writeReg(MPU6050_ADDRESS, 0x25, 0x80|MAG_ADDRESS);//I2C_SLV0_ADDR -- I2C_SLV4_RW=1 (leesbewerking); I2C_SLV4_ADDR=MAG_ADDRESS
i2c_writeReg (MPU6050_ADDRESS, 0x26, MAG_DATA_REGISTER);//I2C_SLV0_REG -- 6 databytes van MAG worden opgeslagen in 6 registers. Eerste registeradres is 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)
#stop als
}
ongeldig ACC_getADC () {
i2c_getSixRawADC(MPU6050_ADDRESS, 0x3B);
ACC_ORIENTATION(((ruweADC[0]3, ((ruweADC[2]3, ((ruwe ADC[4]3);
ACC_Common();
}
// De MAG-acquisitiefunctie moet worden vervangen omdat we nu met het MPU-apparaat praten
#indien gedefinieerd(MPU6050_I2C_AUX_MASTER)
ongeldig Device_Mag_getADC() {
i2c_getSixRawADC(MPU6050_ADDRESS, 0x49); //0x49 is de eerste geheugenruimte voor EXT_SENS_DATA
#indien gedefinieerd(HMC5843)
MAG_ORIENTATION(((rawADC[0]<<8) | rawADC[1]), ((rawADC[2]<<8) | rawADC[3]), ((rawADC[4]<<8) | rawADC[5]));
#stop als
#indien gedefinieerd (HMC5883)
MAG_ORIENTATION(((rawADC[0]<<8) | rawADC[1]), ((rawADC[4]<<8) | rawADC[5]), ((rawADC[2]<<8) | rawADC[3]));
#stop als
#indien gedefinieerd (MAG3110)
MAG_ORIENTATION(((rawADC[0]<<8) | rawADC[1]), ((rawADC[2]<<8) | rawADC[3]), ((rawADC[4]<<8) | rawADC[5]));
#stop als
}
#stop als
#stop als
Stap 6: Stap 6: Consejos
1. Diseño Mecánico: Gebruik van de gebruiker om samen te komen, para el uso que se le quiere dar al robot, medir todo bien, para la hora de hacer cortes laser o impresiones en 3D, no tengan que volver a hacerlo y todo quede a la perfección.
2. Elektriciteitsdistributie: 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 el funcionamieny no el correcto que agregar mas conexiones of volver a imprimir el PCB.
3. Diseño Software: Het is mogelijk om het programma te gebruiken om het programma te starten, om een entender bien el funcionamiento en caso de que no funcionar la programación sabre como cambiar las instrucciones para que funcione correctamente.
Aanbevolen:
PROYECTO PERSOONLIJKE TUTORIAL: 5 stappen
PROYECTO PERSOONLIJKE TUTORIAL: Este proyecto consistent en elegir un tema libre, y crear un producto de la onderzoeken de este tema. La investigación, planeación, acción y reflexión del proyecto son escritas en un informe, y todo el registro de