Энкодеры
Мы давно строим роботов из LEGO Mindstorms и привыкли к тому, что повернуть вал мотора на определенный угол или заставить вращаться мотор с заданной скоростью - задача простая, ведь каждый NXT/EV3-мотор имеет встроенные энкодеры (датчики угла поворота), позволяющие работать с точностью до 1 градуса. Во всех роботах, которых мы строили из Arduino таких полезных штук не было, соответственно эти роботы не могли перемещаться на строго заданное расстояние или поддерживать заданную скорость.
В проекте "большого железного робота" мы решили попробовать сделать энкодеры своими руками. Энкодеры нам нужны для следующих задач:
- Перемещение на заданное расстояние
- Поворот на заданный угол относительно текущего направления
- Поддержание заданной скорости
- Одометрия - использование данных с энкодеров для оценки перемещения
- Компенсация разницы в скоростях вращения колес для сохранения заданного направления движения. Эту задачу можно решать разными способами, например используя компас, но наличие энкодеров как нам кажется облегчит решение
Наш робот - не станок с ЧПУ, а учебная модель, с которой работают дети, поэтому энкодеры будем делать простые в изготовлении и наглядные в работе. В качестве датчиков будем использовать популярные Arduino Line Sensor (KY-033), выглядят они вот так:
Эти датчики работают на отраженный свет. Датчик важно смонтировать таким образом, чтобы была возможность плавной регулировки высоты и угла установик датчика к диску энкодера. Мы сделали вот такую конструкцию из U-образного профиля, крышки кабель канала и винтов М4:
На обратную сторону колесных дисков прикрепим "полосатые диски", на которые будут смотреть датчики. Такие симпатичные и полезные роботу диски мы сделали из ненужных CD/DVD-болванок с приклеенными сверху распечатками:
Чем меньше отсчетов на оборот, тем проще настраивать энкодер, но тем меньшее разрешение он дает. В видео и на фото на разных колесах энкодеры у нас с разным разрешением - экспериментируем с нужным нам количеством отсчетов, планируем распечатать итоговый вариант на самоклеящейся пленке.
Звук
Молчаливый робот - это не интересно. В нашем роботе будет аудиосистема и мы надеемся что робот сможет применять ее с умом - озвучивать системные сообщения, сигнализировать о событиях, да и просто - болтать.
Для сборки аудиоподсистемы робота нам потребуются следующие компоненты:
- Динамик
- Усилитель мощности
- Акустического оформление для динамика
В качестве динамика мы используем автомобильный коаксиальный динамик Supra SSB-5 диаметром 13 см
Динамики продаются парой, нам же понадобится в роботе только один.
Динамик SSB-5 не слишком тяжел для мобильного робота, недорог и обладает приемлемыми характеристиками для наших задач (4 Ом, до 140 Вт).
Чтобы усилить звук Raspberry Pi мы воспользуемся усилителем НЧ на базе микросхемы TDA7297
Динамик, подключенный к усилителю играть конечно будет, но очень тихо, поэтому аудиосистеме должна иметь соответствующее акустическое оформление. Мы выбрали вариант типа "закрытый ящик" и решили собрать корпус колонки из ДСП. Габариты указаны на рисунке ниже.
Лист ДСП (мы использовали готовую мебельную полку из строительного магазина размерами 300x800x16) можно раскроить так:
Собраем раскроенное ДСП в ящик с помощью саморезов, заделываем швы с помощью герметика, шпатлюем при необходимости и красим. Отверстие под динамик можно высверлить по кругу дрелью и обработать затем напильником.
Внутрь поместим немного синтепона, динамик крепим через уплотнительное резиновое кольцо, вырезанное из старой автомобильной камеры, отверстие, через которое выходит провод герметизируем кусочком спички и клеем ПВА.
Теперь наш робот выглядит вот так (фото ниже). В задней части - будущий отсек для монтажа силовой электроники (драйвер двигателей, усилитель мощности НЧ, предохранители).
Для сборки аудиоподсистемы нам понадобились:
- Автодинамик 13 см с комплектным проводом (Supra SSB-5) - 1 шт.
- Усилитель НЧ на базе микросхемы TDA7297
- Лист ДСП ("полка мебельная") 300x800x16 мм
- Саморезы 3,5 x 30
- Шпатлевка по дереву, герметик
- Автодинамик 13 см с комплектным проводом (Supra SSB-5) - 1 шт.
- Усилитель НЧ на базе микросхемы TDA7297
- Лист ДСП ("полка мебельная") 300x800x16 мм
- Саморезы 3,5 x 30
- Шпатлевка по дереву, герметик
- Краска
Для энкодеров пригодились:
- Пара CD/DVD болванок (мы использовали прозрачные, такие встречаются на дне упаковки)
- Arduino Line Sensor (KY-033) 2 шт.
- профиль аллюм. U-обр. 20x10x20x2
- заглушка кабель-канала 15 мм
- винты М3 и М4 с гайками
Для энкодеров пригодились:
- Пара CD/DVD болванок (мы использовали прозрачные, такие встречаются на дне упаковки)
- Arduino Line Sensor (KY-033) 2 шт.
- профиль аллюм. U-обр. 20x10x20x2
- заглушка кабель-канала 15 мм
- винты М3 и М4 с гайками