Подключение модуля MPU6050

  • Views Views: 3,438
  • Last updated Last updated:
  • gy-521-5.jpg

    MPU6050 - позволяет определить положение и перемещение прибора в пространстве: углы крена и тангажа, ориентируясь по вектору силы тяжести и скорости вращения. При перемещении определяет линейное ускорение и угловую скорость по трем осям, что дает полную картину положения.
    Данные с модуля передаются по интерфейсу I2C.

    Подключение и работа


    Модуль передает данные по интерфейсу I2C и подключается к Arduino через пины SDA и SCL.
    Адрес линии I2C MPU6050 устанавливается путем подтяжки пина AD0 на питание или землю.
    Если пин никуда не подключен, или подключен к земле, адрес модуля - 0x68, а если он подтянут к питанию - 0x69.

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

    Схема подключения к Arduino:
    mpu5060-gy-521.png


    Пример работы

    В скетче считываются данные с акселерометра и гироскопа и выводятся их в serial порт.
    Загрузите в Arduino скетч ниже, предварительно установив библиотеки I2CDev и MPU6050.
    C++:

    #include "I2Cdev.h" //Библиотека для работы с I2C устройствами
    #include "MPU6050.h" //Библиотека для работы с MPU6050

    //В строках 5, 6 и 7: в зависимости от версии библиотеки I2Cdev проверяем, нужна ли библиотека Wire
    #if I2CDEV_IMPLEMENTATION == I2CDEV_ARDUINO_WIRE
    #include "Wire.h"
    #endif

    MPU6050 accelgyro; //Инициализируем объект MPU5060 с именем accelegyro; По умолчанию, если к пину ADO модуля MPU6050 ничего не подключено оставьте все как есть...
    //MPU6050 accelgyro(0x69); //Если же пин AD0 подтянут к 5 или 3.3 вольтам раскомментируйте эту строку, и закомментируйте предыдущую

    int16_t ax, ay, az; //Переменные для хранения значений полученных с акселерометра
    int16_t gx, gy, gz; //Переменные для хранения значений полученных с гироскопа

    void setup() {
    //Те же настройки, что и в строках 5, 6 и 7...
    #if I2CDEV_IMPLEMENTATION == I2CDEV_ARDUINO_WIRE
    Wire.begin();
    #elif I2CDEV_IMPLEMENTATION == I2CDEV_BUILTIN_FASTWIRE
    Fastwire::setup(400, true);
    #endif

    Serial.begin(112500); //Инициализируем Serial со скоростью 112500 бод
    Serial.println("Initializing I2C devices..."); //Выводим сообщение о начале инициализации MPU5060
    accelgyro.initialize(); //Инициализируем MPU6050
    Serial.println("Testing device connections..."); //Выводим сообщение о проверке, подключен ли модуль MP6050 к Arduino
    Serial.println(accelgyro.testConnection() ? "MPU6050 connection successful" : "MPU6050 connection failed"); //Выводим сообщение с результатом проверки
    }

    void loop() {
    accelgyro.getMotion6(&ax, &ay, &az, &gx, &gy, &gz); //Получаем данные с акселерометра и гироскопа и заносим их в ранее созданные переменные
    //accelgyro.getAcceleration(&ax, &ay, &az); //Вариант получения данных только с акселерометра
    //accelgyro.getRotation(&gx, &gy, &gz); //Вариант получения данных только с гироскопа

    Serial.print("a/g:\t");
    Serial.print(ax); Serial.print("\t"); //Выводим значение полученное с оси x акселерометра и делаем табуляцию
    Serial.print(ay); Serial.print("\t"); //Выводим значение полученное с оси y акселерометра и делаем табуляцию
    Serial.print(az); Serial.print("\t"); //Выводим значение полученное с оси z акселерометра и делаем табуляцию
    Serial.print(gx); Serial.print("\t"); //Выводим значение полученное с оси x гироскопа и делаем табуляцию
    Serial.print(gy); Serial.print("\t"); //Выводим значение полученное с оси y гироскопа и делаем табуляцию
    Serial.println(gz); //Выводим значение полученное с оси z гироскопа и переходим на новую строку
    }

    Подключение к Espruino

    Схемы подключения к Iskra JS и Espruino Pico :
    gy-521_iskra-js.png
    gy-521_pico.png


    Пример работы

    В скрипте считываются данные с акселерометра и гироскопа и выводятся в консоль.
    JavaScript:

    I2C1.setup({scl:B8, sda:B9}); //Настройка I2C1 на пинах В8 и B9
    var mpu = require("MPU6050").connect(I2C1); //Библиотека для работы с MPU6050

    //Массивы для хранения необработаных данных с акселерометра и гироскопа
    var acceleration, gravity;
    //Массивы для хранения обработанных данных с акселерометра и гироскопа
    var rotation, degreesPerSecond;

    console.log('a/g:\t');

    //Функция, исполняемая каждые 50 мс
    setInterval(function() {
    //Массив необработанных данных с акселерометра ([x, y, z])
    acceleration = mpu.getAcceleration();
    //Массив необработанных данных с гироскопа ([x, y, z])
    gravity = mpu.getGravity();

    //Массив обработанных данных с акселерометра (x, y, z)
    //Направление и величина ускорения в м/с² по оси
    rotation = mpu.getRotation();
    //Массив обработанных данных с гироскопа ([x, y, z])
    //Угловая скорость в градусах в секунду относительно оси
    degreesPerSecond = mpu.getDegreesPerSecond();

    console.log(acceleration + '\t' + gravity); //Вывод необработанных данных с акселерометра и гироскопа
    console.log(rotation + '\t' + degreesPerSecond); //Вывод обработанных данных с акселерометра и гироскопа
    console.log('----'); //Отделение новых данных от старых
    }, 50);

    Технические характеристики и описание


    Назначение пинов

    VCCПитание
    GNDПитание (общий)
    SCLI2C SCL (вход)
    SDAI2C SDA (вход)
    XDAДополнительный I2C интерфейс для подключения внешнего магнитометра - SDA
    XCLДополнительный I2C интерфейс для подключения внешнего магнитометра - SCL
    ADOУстановка адреса
    INTПрерывание

    Характеристики



    ЧипMPU6050
    Напряжение питания3-5 вольт
    ИнтерфейсI2C
    Вывод данных16-разрядный
    Диапазон гироскопа± 250 500 1000 2000
    Диапазон ускорений±2g, ±4g, ±8g, ±16g

    Ссылки




    Библиотека I2Cdev.
    Библиотека MPU6050.

    Купить MPU6050
    Aliexpress: MPU6050

  • Loading…
Top