Занятие 9 Компас HMC5883L, акселерометр-гироскоп MPU6050. Курс Основы робототехники. Продвинутый уровень. Занятие 9 Компас hmc5883L
![]()
|
Курс «Основы робототехники. Продвинутый уровень». Занятие 9К |
Vcc – 3,3 В Gnd – Gnd SDA – аналоговый пин 4 (А4) SCL – аналоговый пин 5 (А5) |
Практическое занятие 1. Проверка модуля компаса
Подключите модуль компаса к Arduino Uno четырьмя проводами штырек-разъем. Подключайте штырек питания Vcc к 3,3 V Arduino и не забывайте про цветовую схему проводов (+ красный, - синий или черный, сигнальные – любой другой цвет)
Скопируйте библиотеку HMC5883L в папку Мои документы\Arduino\Libraries
Если среда Arduino IDE уже запущена (открыта какая-либо программа), закройте ее полностью (все открытые окна) и запустите заново, чтобы заработала скопированная библиотека
Откройте и загрузите в контроллер программу HMC5883_02_North
Убедитесь, что при расположении модуля компаса в горизонтальном положении отслеживается угол его поворота (будем считать север 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; |
Поставьте робота и ворота на пол. Сделайте так, что при установке робота в определенной точке относительно ворот он поворачивался в направлении ворот и въезжал в них
Поставьте мяч на линии между роботом и воротами и попробуйте сделать так, чтобы робот самостоятельно повернулся к воротам и забил мяч:
![](21586_html_1ab42d33.png)
Практическое занятие 5. Танцующие роботы
Загрузите в пару роботов (или больше) одинаковую программу вида:
Повернуться в направлении А
Проехать определенное время
Повернуть в направлении B
Проехать определенное время
Вернуться к пункту 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. На них можно одновременно подключать модуль компаса, акселерометра и другие модули, работающие по этому интерфейсу и опрашивать их все по очереди в одной программе.
Домашнее задание