Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Занятие 9 Компас HMC5883L, акселерометр-гироскоп MPU6050

.doc
Скачиваний:
130
Добавлен:
10.03.2016
Размер:
123.39 Кб
Скачать

Курс «Основы робототехники. Продвинутый уровень». Занятие 9

Компас HMC5883L

HMC5883L трехосевой, то есть он выдает три значения, выражающие проекцию магнитного поля на каждую из осей. На рисунке изображен простой случай, когда компас расположен горизонтально поверхности земли. Красной стрелкой отмечено направление к северному полюсу.

Модуль компаса может использоваться, для определения, в каком направлении ворота в робофутболе, куда надо повернуться, чтобы ехать по определенным координатам GPS, как датчик положения в квадрокоптере

Подключение модуля компаса к контроллеру Arduino:

Vcc – 3,3 В

Gnd – Gnd

SDA – аналоговый пин 4 (А4)

SCL – аналоговый пин 5 (А5)

Практическое занятие 1. Проверка модуля компаса

  1. Подключите модуль компаса к Arduino Uno четырьмя проводами штырек-разъем. Подключайте штырек питания Vcc к 3,3 V Arduino и не забывайте про цветовую схему проводов (+ красный, - синий или черный, сигнальные – любой другой цвет)

  2. Скопируйте библиотеку HMC5883L в папку Мои документы\Arduino\Libraries

  3. Если среда Arduino IDE уже запущена (открыта какая-либо программа), закройте ее полностью (все открытые окна) и запустите заново, чтобы заработала скопированная библиотека

  4. Откройте и загрузите в контроллер программу HMC5883_02_North

  5. Убедитесь, что при расположении модуля компаса в горизонтальном положении отслеживается угол его поворота (будем считать север 0, он же 360 градусов)

Практическое занятие 2. Ориентация робота на юг

Установите на робота модуль HMC5883L и подключите к контроллеру (не забывайте, что Vcc подключается к +3,3 V).

Используем компас, чтобы сориентировать робота. Реализуйте алгоритм:

1. Если угол в пределах 0…170 – правый мотор вперед, левый назад, проехать 100 мс

2. Если угол в пределах 190…360 – правый мотор назад, левый вперед, проехать 100 мс

3. Если угол в пределах 170…190 – выключить оба мотора, ждать 100 мс

4. Вернуться к пункту 1

После включения робот должен повернуться в определенном направлении и при попытке повернуть его в другую сторону снова возвращаться на это направление

Примечание: направления вращения моторов написаны произвольно, возможно, их нужно поменять местами

Практическое занятие 3. Робот едет на юг

Реализуйте алгоритм:

1. Если угол в пределах 0…170 – правый мотор вперед, левый назад, проехать 100 мс

2. Если угол в пределах 190…360 – правый мотор назад, левый вперед, проехать 100 мс

3. Если угол в пределах 170…190 – включить оба мотора, проехать 100 мс

4. Вернуться к пункту 1

Практическое занятие 4. Протитип робота – автономного футболиста

Задайте направление, в котором едет робот, в переменных в начале программы. Например:

angle = 150;

angle_min = 145;

angle_max = 155;

Поставьте робота и ворота на пол. Сделайте так, что при установке робота в определенной точке относительно ворот он поворачивался в направлении ворот и въезжал в них

Поставьте мяч на линии между роботом и воротами и попробуйте сделать так, чтобы робот самостоятельно повернулся к воротам и забил мяч:

Практическое занятие 5. Танцующие роботы

Загрузите в пару роботов (или больше) одинаковую программу вида:

  1. Повернуться в направлении А

  2. Проехать определенное время

  3. Повернуть в направлении B

  4. Проехать определенное время

  5. Вернуться к пункту 1

Установите роботов на пол и одновременно включите

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

Акселерометр-гироскоп MPU6050

Данный модуль измеряет ускорения линейных перемещений по трем осям (X, Y, Z), а также ускорения вращений вокруг этих осей. Для нахождения самих перемещений и углов поворота эти ускорения нужно интегрировать, а также фильтровать. Мат. аппарат процесса достаточно сложный, но нам его использовать не обязательно, т.к. уже существуют библиотеки, опрашивающие модуль и выдающий готовые данные.

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

Подключение модуля акселерометра-гироскопа к контроллеру Arduino:

Vcc – 3,3 В

Gnd – Gnd

SDA – аналоговый пин 4 (А4)

SCL – аналоговый пин 5 (А5)

Практическое занятие 6. Опрос датчика

Для математической обработки данных используется библиотека Kalman.h

В Монитор порта должны выводиться углы поворота вокруг оси X и Y (наклоны датчика вперед-назад и вправо-влево)

Практическое занятие 7. Управление углом серво поворотом датчика

Подключите к контроллеру серво SG90 и задайте зависимость угла поворота серво от угла наклона гироскопа вокруг одной из осей

Примечание: команды подключения серво и задания угла поворота показаны в примере Файл / Примеры / Servo / Sweep. Подключение серво к Arduino: коричневый провод Gnd, красный провод +5 В, желтый (или белый) провод – сигнальный пин

Практическое занятие 8. Управление углом двух серво поворотом датчика – простой джойстик

Подключите к контроллеру два серво SG90 и задайте зависимость угла поворота серво первого серво от угла наклона гироскопа вокруг оси X, второго серво – от угла наклона вокруг оси Y. Чтобы подключить два серво, используйте код:

Servo myservoX;

Servo myservoY;

myservoX.attach(9);

myservoY.attach(10);

myservo1.write(pos_X);

myservo2.write(pos_Y);

Практическое занятие 9. Робот, избегающий уклонов

Робот едет вперед, пока угол не станет больше заданного (робот наехал на препятствие)

Робот едет назад, поворачивает на определенный угол, снова едет вперед

Примечание: контакты SDA (A4) и SCL (A5) работают по интерфейсу I2C. На них можно одновременно подключать модуль компаса, акселерометра и другие модули, работающие по этому интерфейсу и опрашивать их все по очереди в одной программе.

Домашнее задание