Введение
Итак. Что же такое робот? В большинстве случаев это автоматическое устройство, которое реагирует на какие-либо действия окружающей среды. Роботы могут управляться человеком или выполнять заранее запрограммированные действия. Обычно на роботе располагают разнообразные датчики (расстояния, угла поворота, ускорения), видеокамеры, манипуляторы.
Электронная часть робота состоит из микроконтроллера (МК) – микросхема, в которую заключён процессор, тактовый генератор, различная периферия, оперативная и постоянная память. В мире существует огромное количество разнообразных микроконтроллеров для разных областей применения и на их основе можно собирать мощных роботов.
Для любительских построек широкое применение нашли микроконтроллеры AVR. Они, на сегодняшний день, самые доступные и в интернете можно найти много примеров на основе этих МК. Чтобы работать с микроконтроллерами тебе нужно уметь программировать на ассемблере или на Cи и иметь начальные знания в цифровой и аналоговой электронике.
Сначала была паранойя
Как истинный параноик, сразу выскажу опасения, которые у меня изначально были относительно конструктора. В моём детстве сперва были добротные советские конструкторы, потом рассыпающиеся в руках китайские игрушки… а потом детство кончилось:(
Поэтому из того, что осталось в памяти об игрушках, было:
- Пластмасса будет ломаться и крошиться в руках?
- Детали будут неплотно подходить друг к другу?
- В наборе будут не все детали?
- Собранная конструкция будет непрочной и недолговечной?
И, наконец, урок, который был вынесен из советских конструкторов:
- Часть деталей придётся допиливать напильником
- А части деталей просто не будет в наборе
- И ещё часть будет изначально не работать, её придётся менять
Что я могу сказать сейчас: не зря в моем любимом клипе Believe главный герой видит страхи там, где их нет.
: деталей было ровно столько, сколько нужно, все они подходили друг к другу, на мой взгляд — идеально, что очень сильно поднимало настроение по ходу работы.
Детали конструктора не только отлично подходят друг к другу, но также продуман тот момент, что детали почти что невозможно перепутать. Правда, с немецкой педантичностью создатели отложили винтиков ровно столько сколько нужно, поэтому терять винтики по полу или путать «какой куда» при сборке робота нежелательно.
Длина: 228 ммВысота: 380 ммШирина: 160 ммВес в сборке: 658 гр.
Питание: 4 батарейки типа DВес поднимаемых предметов: до 100 грПодсветка: 1 светодиодТип управления: проводной дистанционный пультПримерное время сборки: 6 часовДвижение: 5 коллекторных моторовЗащита конструкции при движении: храповик
Подвижность:Механизм захвата: 0-1,77”Движение запястья: в пределах 120 градусовДвижение локтя: в пределах 300 градусовДвижение плеча: в пределах 180 градусовВращение на платформе: в пределах 270 градусов
Вам понадобятся:
- удлинённые плоскогубцы (не получится обойтись без них)
- боковые кусачки (можно заменить на нож для бумаги, ножницы)
- крестовая отвёртка
- 4 батарейки типа D
КАК СДЕЛАТЬ РОБОТА
В нашем случае микроконтроллер будет выполнять функции мозга, но начнём мы не с него, а с питания мозга робота. Правильное питание – залог здоровья, поэтому мы начнём с того, как правильно кормить нашего робота, потому что на этом обычно ошибаются начинающие роботостроители. А для того, чтобы наш робот работал нормально нужно использовать стабилизатор напряжения.
Я предпочитаю микросхему L7805 – она предназначена, чтобы на выходе выдавать стабильное напряжение 5В, которое и нужно нашему микроконтроллеру. Но из-за того, что падение напряжения на этой микросхеме составляет порядка 2,5В к нему нужно подавать минимум 7,5В. Вместе с этим стабилизатором используются электролитические конденсаторы, чтобы сгладить пульсации напряжения и в цепь обязательно включают диод, для защиты от переполюсовки.
Теперь мы можем заняться нашим микроконтроллером. Корпус у МК — DIP (так удобнее паять) и имеет сорок выводов. На борту имеется АЦП, ШИМ, USART и много другого, что мы пока использовать не будем. Рассмотрим несколько важных узлов. Вывод RESET (9-ая нога МК) подтянут резистором R1 к «плюсу» источника питания – это нужно делать обязательно!
Иначе твой МК может непреднамеренно сбрасываться или, проще говоря – глючить. Так же желательной мерой, но не обязательной является подключение RESET’а через керамический конденсатор C1 к «земле». На схеме ты так же можешь увидеть электролит на 1000 мкФ, он спасает от провалов напряжения при работе двигателей, что тоже благоприятно скажется на работе микроконтроллера. Кварцевый резонатор X1 и конденсаторы C2, C3 нужно располагать как можно ближе к выводам XTAL1 и XTAL2.
О том, как прошивать МК, я рассказывать не буду, так как об этом можно прочитать в интернете. Писать программу мы будем на Cи, в качестве среды программирования я выбрал CodeVisionAVR. Это довольно удобная среда и полезна новичкам, потому что имеет встроенный мастер создания кода.
в случае использования BEAM-технологий достаточно просто. Часто бывает необходима всего одна микросхема, которая служит роботу и мозгом, и силовой частью, управляющей двигателями. Большинство BEAM-роботов делают в домашних условиях. Создание с использованием BEAM-технологии – одно из лучших хобби.
Управление двигателями
Не менее важным компонентом в нашем роботе является драйвер двигателей, который облегчает нам задачу в управлении им. Никогда и ни в коем случае нельзя подключать двигатели напрямую к МК! Вообще мощными нагрузками нельзя управлять с микроконтроллера напрямую, иначе он сгорит. Пользуйтесь ключевыми транзисторами.
Для нашего случая есть специальная микросхема – L293D. В подобных несложных проектах всегда старайтесь использовать именно эту микросхему с индексом «D», так как она имеет встроенные диоды для защиты от перегрузок. Этой микросхемой очень легко управлять и её просто достать в радиотехнических магазинах.
Она выпускается в двух корпусах DIP и SOIC. Мы будем использовать в корпусе DIP из-за удобства монтажа на плате. L293D имеет раздельное питание двигателей и логики. Поэтому саму микросхему мы будем питать от стабилизатора (вход VSS), а двигатели напрямую от аккумуляторов (вход VS). L293D выдерживает нагрузку 600 мА на каждый канал, а этих каналов у неё два, то есть к одной микросхеме можно подключить два двигателя.
Но, чтобы перестраховаться, мы объединим каналы, и тогда потребуется по одной микре на каждый двигатель. Отсюда следует, что L293D сможет выдержать 1.2 А. Чтобы этого добиться нужно объединить ноги микры, как показано на схеме. Микросхема работает следующим образом: когда на IN1 и IN2 подаётся логический «0», а на IN3 и IN4 логическая единица, то двигатель вращается в одну сторону, а если инвертировать сигналы – подать логический ноль, тогда двигатель начнёт вращаться в другую сторону.
Выводы EN1 и EN2 отвечают за включение каждого канала. Их мы соединяем и подключаем к «плюсу» питания от стабилизатора. Так как микросхема греется во время работы, а установка радиаторов проблематична на этот тип корпуса, то отвод тепла обеспечивается ногами GND — их лучше распаивать на широкой контактной площадке. Вот и всё, что на первое время тебе нужно знать о драйверах двигателей.
Процесс сборки
К роботу прилагается инструкция без лишних слов — только изображения и чётко каталогизированные и промаркированные детали.
Детали достаточно удобно откусываются и зачистки не требуют, но мне понравилась идея каждую деталь обработать ножом для картона и ножницами, хотя это и не обязательно.
Сборка начинается с четырёх из пяти входящих в конструкцию моторов, собирать которые настоящее удовольствие: я просто обожаю шестерёночные механизмы.
Моторчики мы обнаружили аккуратно упакованными и «прилипшими» друг к другу — готовьтесь ответить на вопрос ребёнка, почему коллекторные моторчики магнитятся (можно сразу в комментариях! 🙂
Важно: в 3 из 5 корпусов моторчиков нужно утопить гайки по бокам — на них в дальнейшем мы посадим корпуса при сборке руки. Боковые гайки не нужны только в моторчике, который пойдёт в основу платформы, но чтобы потом не вспоминать, какой корпус куда, лучше утопите гайки в каждом из четырёх жёлтых корпусов сразу. Только для этой операции будут нужны плоскогубцы, в дальнейшем они не понадобятся.
Примерно через 30-40 минут каждый из 4х моторов оказался снабжён своим шестереночным механизмом и корпусом. Собирается всё не сложнее, чем в детстве собирался «Киндер-сюрприз», только гораздо интереснее. Вопрос на внимательность по фото выше: три из четырёх выходных шестерёнок черные, а где белая? Из её корпуса должны выходить синий и чёрный провод. В инструкции это всё есть, но, думаю, обратить на это внимание ещё раз стоит.
После того, как у вас на руках оказались все моторы, кроме «головного», вы приступите к сборке платформы, на которой будет стоять наш робот. Именно на этом этапе ко мне пришло понимание, что с шурупами и винтами надо было поступать более вдумчиво: как видно на фото выше, двух винтов для скрепления моторчиков вместе за счет боковых гаек мне не хватило — они уже были где-то мною же вкручены в глубине уже собранной платформы. Пришлось импровизировать.
Когда платформа и основная часть руки собраны, инструкция предложит вам перейти к сбору механизма захвата, где полно мелких деталей и подвижных частей — самое интересное!
Но, надо сказать, что на этом спойлеры закончатся и начнутся видео, так как мне нужно было ехать на встречу с подругой и робота, которого не удалось успеть закончить, пришлось захватить с собой.
Датчики препятствий
Чтобы наш робот мог ориентироваться и не врезался во всё, мы установим на него два инфракрасных датчика. Самый простейший датчик состоит из ик-диода, который излучает в инфракрасном спектре и фототранзистор, который будет принимать сигнал с ик-диода. Принцип такой: когда перед датчиком нет преграды, то ик-лучи не попадают на фототранзистор и он не открывается.
Если перед датчиком препятствие, тогда лучи от него отражаются и попадают на транзистор – он открывается и начинает течь ток. Недостаток таких датчиков в том, что они могут по-разному реагировать на различные поверхности и не защищены от помех — от посторонних сигналов других устройств датчик, случайно, может сработать. От помех может защитить модулирование сигнала, но пока мы этим заморачиватся не будем. Для начала, и этого хватит.
Как стать душой компании при помощи робота
Легко! Когда мы продолжили сборку вместе, стало понятно: собирать робота самостоятельно —
приятно. Работать над конструкцией вместе — приятно вдвойне. Поэтому смело могу рекомендовать этот набор для тех, кто не хочет сидеть в кафе за скучными разговорами, но хочет повидаться с друзьями и хорошо провести время. Более того, мне кажется, и тимбилдинг с таким набором — например, сборка двумя командами, на скорость — практически беспроигрышный вариант.
Робот ожил в наших руках сразу, как только мы закончили сборку. Передать вам наш восторг, я, к сожалению, не могу словами, но, думаю, многие меня здесь поймут. Когда конструкция, которую ты сам собрал вдруг начинает жить полноценной жизнью — это кайф!
Прошивка робота
#include {amp}lt;mega16.h{amp}gt;#include {amp}lt;delay.h{amp}gt;
PORTC.0 = 1; PORTC.1 = 0; PORTC.2 = 1; PORTC.3 = 0; Значение 0xFF означает, что на выходе будет лог. «1», а 0x00 – лог. «0». Следующей конструкцией мы проверяем, есть ли перед роботом препятствие и с какой оно стороны: if (!(PINB {amp}amp; (1{amp}lt;{amp}lt;PINB.0))) { ... }
Если на фототранзистор попадает свет от ик-диода, то на ноге микроконтроллера устанавливается лог. «0» и робот начинает движение назад, чтобы отъехать от препятствия, потом разворачивается, чтобы снова не столкнуться с преградой и затем опять едет вперёд. Так как у нас два датчика, то мы проверяем наличие преграды два раза – справа и слева и потому можем узнать с какой стороны препятствие. Команда «delay_ms(1000)» указывает на то, что пройдёт одна секунда, прежде чем начнёт выполняться следующая команда.
Что можно воспитать благодаря данному набору?
Уверенность в себе!
Мало того, что у меня нашлись общие темы для общения с совершенно незнакомыми людьми, но мне также удалось самостоятельно не только собрать, но и починить игрушку! А значит, я могу не сомневаться: с моим роботом всегда всё будет ок. И это очень приятное чувство, когда речь идёт о любимых вещах.
Мы живём в мире, где мы страшно зависим от продавцов, поставщиков, сотрудников сервиса и наличия свободного времени и денег. Если ты почти ничего не умеешь делать, тебе за всё придётся платить, и скорее всего — переплачивать. Возможность починить игрушку самому, потому что ты знаешь, как у неё устроен каждый узел — это бесценно. Пусть у ребёнка такая уверенность в себе будет.
Заключение
Я рассмотрел большинство аспектов, которые помогут тебе собрать твоего первого робота. Но на этом робототехника не заканчивается. Если ты соберёшь этого робота, то у тебя появится куча возможностей для его расширения. Можно усовершенствовать алгоритм робота, как например, что делать, если препятствие не с какой-то стороны, а прямо перед роботом.
Так же не помешает установить энкодер – простое устройство, которое поможет точно располагать и знать расположение твоего робота в пространстве. Для наглядности возможна установка цветного или монохромного дисплея, который может показывать полезную информацию – уровень заряда аккумулятора, расстояние до препятствия, различную отладочную информацию.
Не помешает и усовершенствование датчиков – установка TSOP (это ик-приёмники, которые воспринимают сигнал только определённой частоты) вместо обычных фототранзисторов. Помимо инфракрасных датчиков существуют ультразвуковые, стоят подороже, и тоже не лишены недостатков, но в последнее время набирают популярность у роботостроителей.
Для того, чтобы робот мог реагировать на звук, было бы неплохо установить микрофоны с усилителем. Но по-настоящему интересным, я считаю, установка камеры и программирование на её основе машинного зрения. Есть набор специальных библиотек OpenCV, с помощью которых можно запрограммировать распознавание лиц, движения по цветным маякам и много всего интересного. Всё зависит только от твоей фантазии и умений.
Список компонентов:
ATmega16 в корпусе DIP-40{amp}gt;
L7805 в корпусе TO-220
L293D в корпусе DIP-16 х2 шт.
резисторы мощностью 0,25 Вт номиналами: 10 кОм х1 шт., 220 Ом х4 шт.
конденсаторы керамические: 0.1 мкФ, 1 мкФ, 22 пФ
конденсаторы электролитические: 1000 мкФ х 16 В, 220 мкФ х 16В х2 шт.
диод 1N4001 или 1N4004
кварцевый резонатор на 16 МГц
ИК-диоды: подойдут любые в количестве двух штук.
фототранзисторы, тоже любые, но реагирующие только на длину волны ик-лучей
/***************************************************** Прошивка для робота Тип МК : ATmega16 Тактовая частота : 16,000000 MHz Если у тебя частота кварца другая, то это нужно указать в настройках среды: Project -{amp}gt; Configure -{amp}gt; Закладка "C Compiler" *****************************************************/ #include {amp}lt;mega16.h{amp}gt; #include {amp}lt;delay.h{amp}gt; void main(void) { //Настраиваем порты на вход //Через эти порты мы получаем сигналы от датчиков DDRB=0x00; //Включаем подтягивающие резисторы PORTB=0xFF; //Настраиваем порты на выход //Через эти порты мы управляем двигателями DDRC=0xFF; //Главный цикл программы. Здесь мы считываем значения с датчиков //и управляем двигателями while (1) { //Едем вперёд PORTC.0 = 1; PORTC.1 = 0; PORTC.2 = 1; PORTC.3 = 0; if (!(PINB {amp}amp; (1{amp}lt;{amp}lt;PINB.0))) // Проверяем правый датчик { //Едем назад 1 секунду PORTC.0 = 0; PORTC.1 = 1; PORTC.2 = 0; PORTC.3 = 1; delay_ms(1000); //Заворачиваем PORTC.0 = 1; PORTC.1 = 0; PORTC.2 = 0; PORTC.3 = 1; delay_ms(1000); } if (!(PINB {amp}amp; (1{amp}lt;{amp}lt;PINB.1))) // Проверяем левый датчик { //Едем назад 1 секунду PORTC.0 = 0; PORTC.1 = 1; PORTC.2 = 0; PORTC.3 = 1; delay_ms(1000); //Заворачиваем PORTC.0 = 0; PORTC.1 = 1; PORTC.2 = 1; PORTC.3 = 0; delay_ms(1000); } }; }
Итоги
- Собранный по инструкции робот не потребовал отладки, запустился сразу
- Детали почти невозможно перепутать
- Строгая каталогизация и наличие деталей
- Инструкция, которую не надо читать (только изображения)
- Отсутствие значимых люфтов и зазоров в конструкциях
- Лёгкость сборки
- Лёгкость профилактики и починки
- Last but not least: свою игрушку собираешь сам, за тебя не трудятся филиппинские дети
- Ещё крепёжных элементов, прозапас
- Детали и запчасти к нему, чтобы можно было заменить при необходимости
- Ещё роботов, разных и сложных
- Идеи, что можно улучшитьприделатьубрать — словом, на сборке игра не заканчивается! Очень хочется, чтобы она продолжалась!
Собирать робота из этого конструктора — не сложнее, чем паззл или «Киндер-сюрприз», только результат гораздо масштабнее и вызываЛ бурю эмоций у нас и окружающих. Отличный набор, спасибо, Даджет!
https://www.youtube.com/watch?v=GVDwVcJKijQ
В заключение, Хабр, у меня к тебе несколько вопросов:
- Как бы ты использовал собственный манипулятор?
- Как думаешь, можно ли что-то поменять или добавить в конструкции самого робота, чтобы не останавливаться и продолжать играть?
- Что, возможно, не было мною учтено в процессе сборки?
- Да и вообще, как тебе обзор? =)