สารบัญ:

Proyecto Laboratorio De Mecatrónica (หุ่นยนต์ทรงตัวสองล้อ): 6 ขั้นตอน
Proyecto Laboratorio De Mecatrónica (หุ่นยนต์ทรงตัวสองล้อ): 6 ขั้นตอน

วีดีโอ: Proyecto Laboratorio De Mecatrónica (หุ่นยนต์ทรงตัวสองล้อ): 6 ขั้นตอน

วีดีโอ: Proyecto Laboratorio De Mecatrónica (หุ่นยนต์ทรงตัวสองล้อ): 6 ขั้นตอน
วีดีโอ: Proyecto Final | Laboratorio de Sistemas Mecatrónicos 2024, พฤศจิกายน
Anonim
Image
Image

En este proyecto se mostrara, el funcionamiento y el como hacer para elaborar un "หุ่นยนต์ทรงตัวสองล้อ" เพื่ออธิบายและอธิบาย Este es un sistema que ประกอบด้วย 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 เมกานิโกส:

NS. 1 เมโทร เดอ วาริลลา รอสคาดา (3/8)

NS. 14 ทอร์นิลโล M3 x.07 x 6

ค. 24 ยูโร M8 hex

NS. 3 ทอร์นิลโล M4 x.07 x 6

อี Filamento PLA (500grs ประมาณ)

o เครื่องใช้ไฟฟ้า:

NS. สวิตช์ขัดขวาง 1 ตัว

NS. Arduino uno o นาโน

ค. 2 มอเตอร์ nema 17

NS. 2 ไดรเวอร์ A4988

อี 3 ความต้านทาน 1k

NS. HC-05

NS. MPU-6050

ชม. 2 ตัวเก็บประจุ 100uf o 47uf

ผม. Batería lippo 11.1 V

o Piezas fabricadas:

NS. แผ่น MDF 3 แผ่น (120 x 170 x 6 มม.)

NS. Placa PCB (8 x 14 ซม. โดยประมาณ)

ค. Soporte batería

NS. 2 soporte พารามอเตอร์

อี 2 ลานตา

o ความพิเศษ:

โปรแกรมแนะนำ para la realización del proyecto

NS. ซอฟต์แวร์ Arduino IDE

NS. 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

รูปแบบการใช้งานทั่วไปและโครงสร้างทั่วไปบน SolidWorks, การใช้งานจริงบน SolidWorks, การทำงานแบบครบวงจรและแบบมืออาชีพ Estas placas son diferentes entre ellas, la placa inferior tendrá los orificios para los soportes de motores y batería, ศูนย์กลางสำหรับ nuestra PCB y la superior solo tendrá los orificios para darle su estructura.

ขั้นตอนที่ 3: ขั้นตอนที่ 3: Fabricación De Piezas 3D

สำหรับรุ่นอื่นๆ และ llantas igualmente utilizamos SolidWorks, estos soportes pueden ser modificados si así lo desean, para un mejor funcionamiento, los soportes Tienen orificios de.35 cm de diámetro, มากกว่า ปกติ

ขั้นตอนที่ 4: ขั้นตอนที่ 4: Sistema Eléctrico/electrónico

ขั้นตอนที่ 4: Sistema Eléctrico/electrónico
ขั้นตอนที่ 4: Sistema Eléctrico/electrónico

สำหรับการใช้งานบน PCB, สำหรับรายละเอียดเพิ่มเติมเกี่ยวกับการติดต่อสื่อสาร, สภาพแวดล้อมการใช้งานสำหรับ Arduino, โมดูลบลูทูธ HC-05, การใช้งาน 6050 และไดรเวอร์ของมอเตอร์ 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 และ no lo obedezca.

ขั้นตอนที่ 5: ขั้นตอนที่ 5: ซอฟต์แวร์

ขั้นตอนที่ 5: ซอฟต์แวร์
ขั้นตอนที่ 5: ซอฟต์แวร์

สำหรับโปรแกรมที่ใช้สำหรับ Arduino, ความต่อเนื่องของ anexamos una parte de la programación con su explicación ที่สอดคล้อง, ลิงก์ al igual anexo, เนื้อหาที่สมบูรณ์:

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 มินเชค 1100

#define MAXCHECK 1900

Aqui se modifica los gains para el poss hold del sistema. ได้เปรียบ

การกำหนดค่าไจโร:

เป็นโมฆะ 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

#ถ้ากำหนดไว้(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, // range: +/- 8192; +/- 2000 องศา/วินาที

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

GYRO_Common();

}

เป็นโมฆะ 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_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

#if กำหนดไว้ (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

#ถ้ากำหนดไว้ (MAG3110)

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

#endif

}

#endif

#endif

ขั้นตอนที่ 6: ขั้นตอนที่ 6: Consejos

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, ไม่มีหมวดหมู่ quede a la perfección

2. ส่วนประกอบอิเล็กทรอนิกส์: Hacer su propia PCB, สำหรับ que tengan bien ubicadas las conexiones que tienen que hacer, การแก้ไขที่ถูกต้อง manera hacer primero las conexiones en una protoboard, para comprobar que cuando la pongan funcionel PCB ในทะเล que agregar mas conexiones o volver a imprimir el PCB

3. ซอฟต์แวร์ที่ไม่รองรับ: โปรแกรมที่ใช้กับโปรแกรมพื้นฐาน 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

แนะนำ: