جدول المحتويات:

Proyecto Laboratorio De Mecatrónica (روبوت بميزان عجلتين): 6 خطوات
Proyecto Laboratorio De Mecatrónica (روبوت بميزان عجلتين): 6 خطوات

فيديو: Proyecto Laboratorio De Mecatrónica (روبوت بميزان عجلتين): 6 خطوات

فيديو: Proyecto Laboratorio De Mecatrónica (روبوت بميزان عجلتين): 6 خطوات
فيديو: Cierre de curso de mecatrónica UOH - Fábrica Digital O'Higgins 2024, شهر نوفمبر
Anonim
Image
Image

En este proyecto se mostrara، el funcionamiento y el como hacer para accorar un "Two wheel Balance robot" paso y con explicación y concejos. Este es un sistema que تتكون من روبوت لا حد ذاته ، يجب أن يكون الأمر كذلك ، لا يوجد أي شيء آخر.

الخطوة 1: الخطوة 1: المواد المطلوبة

س ميكانيكوس:

أ. 1 مترو دي فاريلا روسكادا (3/8)

ب. 14 tornillos M3 x.07 x 6

ج. 24 تيركاس M8 ست عشري

د. 3 tornillos M4 x.07 x 6

ه. Filamento PLA (500grs تقريبًا)

س Electrónicos:

أ. 1 مفتاح قاطع

ب. اردوينو أونو نانو

ج. عدد 2 نيما 17

د. عدد 2 سائق A4988

ه. 3 مقاومات 1 كيلو

F. HC-05

ز. MPU-6050

ح. 2 مكثف 100 فائق التوهج أو 47 فائق التوهج

أنا. باتيريا ليبو 11.1 فولت

س فابريكاداس بيزاس:

أ. 3 ألواح MDF (120 × 170 × 6 مم)

ب. Placa PCB (8 × 14 سم تقريبًا)

ج. سوبورت باتريا

د. 2 سوبورت بارا موتور

ه. 2 لانتاس

س إضافات:

تنصح البرامج بالبحث عن تنفيذ المشروع.

أ. برنامج 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 postiores usos. Estas placas son diferentes entre ellas، la placa inferior taprá 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

Para el modelado de los soportes y 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، para una mejor sujeción.

الخطوة 4: الخطوة 4: Sistema Eléctrico / electónico

الخطوة 4: سيستيما إليكتريكو / إلكترونيكو
الخطوة 4: سيستيما إليكتريكو / إلكترونيكو

En este paso تستخدم ثنائي الفينيل متعدد الكلور ، مراسلين متقاربين ومتقاربين ، ومدخل إل اردوينو ، وموديول بلوتوث HC-05 ، و giroscopio 6050 y los driver de los motores. Las conexiones ابن las que se muestran en la imagen. Asegúrese de hacer las conexiones fixamente، ya que de no ser así puede ocasionar que el sistema no funcione fixamente y no lo obedezca.

الخطوة 5: الخطوة 5: البرنامج

الخطوة 5: البرمجيات
الخطوة 5: البرمجيات

Para el programa utilizamos un arduino، a Continación anexamos una parte de la programación con su explicación planse، al igual anexo link، con el codigo completeo:

وضع Holdconfiguracion

// مكاسب التحكم POSHOLD الافتراضية

#define POSHOLD_P 2.00

#define POSHOLD_I 0.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.2 تحديث

#define NAV_I 0.20 // التحكم في الرياح

#define NAV_D 0.08 //

# تعريف NAV_IMAX 20 // درجات

#define MINCHECK 1100

#define MAXCHECK 1900

المزيد من المعلومات

التكوين الدوران:

Gyro_init باطل () {

TWBR = ((F_CPU / 400000L) - 16) / 2 ؛ // قم بتغيير معدل ساعة I2C إلى 400 كيلو هرتز

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 = 260 هرتز GYRO النطاق الترددي = 256 هرتز)

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

#إنهاء إذا

}

Gyro_getADC () باطل {

i2c_getSixRawADC (MPU6050_ADDRESS ، 0x43) ؛

GYRO_ORIENTATION (((rawADC [0] 2 ، // النطاق: +/- 8192 ؛ +/- 2000 درجة / ثانية

((rawADC [2] 2 ،

((rawADC [4] 2) ؛

GYRO_Common () ،

}

ACC_init باطل () {

i2c_writeReg (MPU6050_ADDRESS ، 0x1C ، 0x10) ؛ // ACCEL_CONFIG - AFS_SEL = 2 (المقياس الكامل = +/- 8 جم) ؛ ACCELL_HPF = 0 // لاحظ وجود خطأ في المواصفات.

// ملاحظة: يبدو أن هناك خطأ ما في المواصفات هنا. مع AFS = 2 1G = 4096 ولكن وفقًا لقياسي: 1G = 2048 (و 2048/8 = 256)

// تم التأكيد هنا: https://www.multiwii.com/forum/viewtopic.php؟f=8&t …

# إذا تم تعريفه (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 = 400 كيلو هرتز)

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 (3 × 2 بايت)

#إنهاء إذا

}

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

#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 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 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 funcionamient كيو إتفاق مع كونيكسيونس أو طباعة وثيقة ثنائي الفينيل متعدد الكلور.

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 no funcionar la programación saber como cambiar las instrucciones para que funcione التصحيح.

موصى به: