MPU6050: модуль для позиционирования с Arduino

Плата MPU6050

Если вам нужно создать проект и его позиционировать, то есть знать как это размещено что касается места, вы можете использовать модуль MPU6050. То есть этот модуль представляет собой инерциальный измерительный блок или IMU (Inertial Measurment Units) с 6 степенями свободы (DoF). Это благодаря 3-осевым датчикам типа акселерометра и 3-осевому гироскопу, которые он реализует для работы.

Этот MPU6050 может знать, как расположенный объект расположен для использования в применения навигация, гониометрия, стабилизация, управление жестами и т. д. Мобильные телефоны обычно включают в себя датчики этого типа, например, для управления определенными функциями с помощью жестов, таких как остановка при переворачивании смартфона, вождение транспортных средств в видеоиграх путем поворота мобильного устройства, как если бы это был руль и т.

Что такое акселерометр и гироскоп?

Примеры МЭМС

Примеры МЭМС

Ну что ж, по частям. Во-первых, нужно посмотреть, что это за типы датчиков, которые способны определять ускорение и повороты, как можно понять из их собственных имен.

  • акселерометр: измеряет ускорение, то есть изменение скорости в единицу времени. Помните, что в физике изменение скорости со временем (a = dV / dt) - это определение ускорения. Согласно второму закону Ньютона, у нас также есть, что a = F / m, и это то, что акселерометры используют для работы, то есть они используют параметры силы и массы объекта. Чтобы это могло быть реализовано в электронике, используются методы MEMS (Micro Electro Mechanical Systems), которые отличаются от традиционных технологий производства электронных микросхем, поскольку механические части создаются в MEMS. В этом случае создаются дорожки или элементы, способные измерять ускорения. Это означает, что можно использовать многие другие единицы, такие как скорость (если ускорение интегрировано во времени), если оно снова интегрировано, у нас есть смещение и т. Д. То есть очень интересные параметры для определения положения или обнаружения движения объекта.
  • гироскоп: также называемый гироскопом, это устройство, которое измеряет угловую скорость объекта, то есть угловое смещение в единицу времени или скорость вращения тела вокруг своей оси. В этом случае методы MEMS также используются для измерения этой скорости с использованием эффекта, известного как Кориолиса. Благодаря этому можно измерить угловую скорость или, интегрировав угловую скорость по времени, можно получить угловое смещение.

Модуль MPU6050

Распиновка MPU6050

Теперь, когда вы знаете, что такое акселерометр и гироскоп, модуль MPU6050 Это электронная доска, которая объединяет эти два элемента, чтобы вы могли измерять эти изменения положения элемента и, таким образом, иметь возможность вызвать реакцию. Например, когда объект движется, загорается светодиод или другие гораздо более сложные вещи.

Как я уже сказал, у него 6 осей свободы, глубина резкости, 3-осевой акселерометр ускорения по осям X, Y и Z и другой 3-осевой гироскоп для измерения угловой скорости. Вы должны принять во внимание, чтобы не ошибиться в том, как вы позиционируете модуль и направление вращения для измерений, так как если вы сделаете неправильный знак, это будет немного хаотично. Посмотрите на следующее изображение, где указано направление осей (однако обратите внимание, что на самой печатной плате оно также напечатано с одной стороны):

Даташит MPU6050

Учитывая это и распиновка, более-менее у вас все ясно, чтобы начать пользоваться MPU6050. Как вы можете видеть на предыдущем изображении, соединения довольно просты и позволяют поддерживать связь I2C с большинством микроконтроллеров, включая Arduino. Контакты SCL и SDA имеют на плате подтягивающий резистор для прямого подключения к плате Arduino, поэтому вам не нужно беспокоиться о том, чтобы добавить их самостоятельно.

Для работы с обоими направлениями на шине I2C вы можете использовать эти булавки и направления:

  • AD0 = 1 или High (5v): для адреса I0C 69x2.
  • AD0 = 0 или Low (GND или Nc): для адреса 0x68 шины I2C.

Помните, что рабочее напряжение модели составляет 3v3, но, к счастью, у нее есть встроенный регулятор, поэтому его можно без проблем переключить с помощью 5V Arduino, и он преобразует его в 3.3 В.

Кстати, имея внутреннее сопротивление к GND, если этот вывод не подключен, адрес по умолчанию это будет 0x68, так как по умолчанию он будет подключен к земле, интерпретируя его как логический 0.

Интеграция с Arduino

Подключение Arduino и MPU6050

Ты можешь получить больше информации о шине I2C в этой статье. Вы уже знаете, что в зависимости от платы Arduino контакты, используемые для шины, различаются, но в Arduino UNO аналоговый вывод A4 и A5, для SDA (данные) и SCL (часы) соответственно. Это единственные контакты Arduino, наряду с контактами 5 В и GND для питания платы, которые вы должны использовать. Так что подключение максимально простое.

Для функций MPU6050 вы можете использовать библиотеки, о которых вы можете получить дополнительную информацию по этой ссылке для I2C модуля и автобуса MPU6050.

Программирование платы Arduino с MPU6050 не слишком прямолинейно, поэтому оно не для новичков. Кроме того, зная пределы ускорений или диапазоны углов, вы можете откалибровать, чтобы определить точное движение или ускорение. Однако, чтобы у вас был хотя бы пример того, как прокомментировать его использование, вы можете увидеть этот код в Пример скетча для вашей Arduino IDE который будет считывать значения, записанные акселерометром и гироскопом:

// Bibliotecas necesarias:
#include "I2Cdev.h"
#include "MPU6050.h"
#include "Wire.h"

// Dependiendo del estado de AD0, la dirección puede ser 0x68 o 0x69, para controlar así el esclavo que leerá por el bus I2C
MPU6050 sensor;

// Valores RAW o en crudo leidos del acelerometro y giroscopio en los ejes x,y,z
int ax, ay, az;
int gx, gy, gz;

void setup() {
  Serial.begin(57600);    //Función para iniciar el puerto serie con 57600 baudios
  Wire.begin();           //Inicio para el bus I2C 
  sensor.initialize();    //Iniciando del sensor MPU6050

  if (sensor.testConnection()) Serial.println("Sensor iniciado correctamente");
  else Serial.println("Error al iniciar el sensor");
}

void loop() {
  // Leer las aceleraciones y velocidades angulares
  sensor.getAcceleration(&ax, &ay, &az);
  sensor.getRotation(&gx, &gy, &gz);

  // Muestra las lecturas que va registrando separadas por una tabulación 
  Serial.print("a[x y z] g[x y z]:\t");
  Serial.print(ax); Serial.print("\t");
  Serial.print(ay); Serial.print("\t");
  Serial.print(az); Serial.print("\t");
  Serial.print(gx); Serial.print("\t");
  Serial.print(gy); Serial.print("\t");
  Serial.println(gz);

  delay(100);
}

Если вы новичок и плохо знаете как программировать с Arduino IDE, вам будет сложно это понять, поэтому вы можете бесплатно обратиться к нашему руководству с вводным курсом по программированию Arduino ...


Будьте первым, чтобы комментировать

Оставьте свой комментарий

Ваш электронный адрес не будет опубликован. Обязательные для заполнения поля помечены *

*

*

  1. Ответственный за данные: Мигель Анхель Гатон
  2. Назначение данных: контроль спама, управление комментариями.
  3. Легитимация: ваше согласие
  4. Передача данных: данные не будут переданы третьим лицам, кроме как по закону.
  5. Хранение данных: база данных, размещенная в Occentus Networks (ЕС)
  6. Права: в любое время вы можете ограничить, восстановить и удалить свою информацию.