Proyecto Laboratorio De Mecatrónica (двухколесный балансировочный робот): 6 шагов
Proyecto Laboratorio De Mecatrónica (двухколесный балансировочный робот): 6 шагов
Anonim
Image
Image

Этот проект наиболее эффективен, функционирует и работает для разработки «Двухколесного балансировочного робота» в пасу и с объяснением и концепцией. 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.

Шаг 1: Шаг 1: Материал Requerido

o Mecánicos:

а. 1 метро de varilla roscada (3/8)

б. 14 торнилл M3 x 0,07 x 6

c. 24 шестигранника M8

d. 3 торнильо M4 x 0,07 x 6

е. Filamento PLA (около 500 г)

o Electrónicos:

а. 1 прерыватель

б. Ардуино уно или нано

c. 2 мотора nema 17

d. 2 драйвера A4988

е. 3 сопротивления 1k

f. HC-05

грамм. MPU-6050

час 2 емкости от 100 до 47 мкФ

я. Batería lippo 11,1 В

o Piezas fabricadas:

а. 3 площади МДФ (120 x 170 x 6 мм)

б. Плата Placa (примерно 8 x 14 см)

c. Soporte batería

d. 2 сопорта пара мотора

е. 2 лланты

o Дополнительно:

Программное обеспечение, рекомендованное для реализации проекта.

а. Программное обеспечение Arduino IDE

б. SolidWorks 2018

c. Программное обеспечение 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, сначала создает лас-пласа-де-МДФ для проверки использования, доступного для последующего использования. Estas placas son differentes entre ellas, la placa inferior тендра лос orificios para los soportes de motores y batería, la central para nuestra PCB y la superior solo тендра лос orificios para darle su estructura.

Шаг 3: Шаг 3: Fabricación De Piezas 3D

Для моделей с использованием SolidWorks, для моделей, работающих в режиме реального времени, для основных функций, для основных функций, для основных функций, диаметров 0,35 см, для основных требований.

Шаг 4: Шаг 4: Sistema Eléctrico / electrónico

Шаг 4: Sistema Eléctrico / electrónico
Шаг 4: Sistema Eléctrico / electrónico

В этом случае используется печатная плата, для разработки соответствующих подключений, подключения к ардуино, модуля Bluetooth HC-05, гироскопа 6050 и драйверов моторов. Las conexiones son las que se muestran en la imagen. Asegúrese de hacer las conexiones correctiveamente, ya que de no ser así puede ocasionar que el sistema no funcione correctiveamente 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 correiente, al igual anexo link, con el codigo complete:

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 MINCHECK 1100

#define MAXCHECK 1900

Aqui se modifica los gains para el possible hold del sistema.

Конфигурация гироскопа:

void 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 (ФАПЧ с опорным датчиком Z-гироскопа)

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

#endif

}

void Gyro_getADC () {

i2c_getSixRawADC (MPU6050_ADDRESS, 0x43);

GYRO_ORIENTATION (((rawADC [0] 2, // диапазон: +/- 8192; +/- 2000 град / сек

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

GYRO_Common ();

}

void 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)

// подтверждено здесь:

# если определено (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 (3x2 байта)

#endif

}

void ACC_getADC () {

i2c_getSixRawADC (MPU6050_ADDRESS, 0x3B);

ACC_ORIENTATION (((rawADC [0] 3, ((rawADC [2] 3, ((rawADC [4] 3);

ACC_Common ();

}

// Функция сбора данных MAG должна быть заменена, потому что теперь мы говорим с устройством MPU

# если определено (MPU6050_I2C_AUX_MASTER)

void Device_Mag_getADC () {

i2c_getSixRawADC (MPU6050_ADDRESS, 0x49); // 0x49 - первая комната памяти для EXT_SENS_DATA

#if defined (HMC5843)

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

#endif

#if defined (HMC5883)

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

#endif

#if defined (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 disño que mas les convnga, para el uso que se le quiere dar al robot, medir todo bien, para la hora de hacer cortes láser o impresiones в 3D, no tengan que volver a hacerlo y todo quede a la perfección.

2. Электрическая схема: 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 sea el правильное Вы согласны с тем, чтобы объединить печатную плату.

3. Программное обеспечение Diseño: Guiarse con la programación base expuesta, pero tratar de hacer su propia programación, para llegar an entender bien el funcionamiento y en caso de que no funcionar la programación saber como cambiar las Instrucciones para que funcione rightamente.

Рекомендуемые: