Робот – самостоятельное и, часто, автономное устройство, работающее по внутренней программе. Почти живое существо, только с электронными мозгами. Роботы могут многое, но, все-таки не более того, что в них заложено их создателем.
Насмотревшись видео про роботов, решил сам попробовать сделать робота из простой игрушки. Что для этого нужно? Для начала сама игрушка. (отберите у вашего ребенка, пока не сломал). От самой игрушки зависит то, как будет выглядеть робот и что он сможет делать. Я взял простой трактор с дистанционным управлением King Force 300 ( при изготовлении робота ни один ребенок не пострадал)
Конечно, это будет не человеко-подобный робот, но трактор все-таки должен самостоятельно ездить и еще радостно пищать по поводу и без повода. Видео в конце.
При выборе игрушки для роботизации важно уточнить сколько у нее двигателей на колесах. У некоторых дешевых моделей обе гусеницы управляются одним мотором, что не позволит трактору маневрировать, а езда вперед-назад – не интересна. Китайцы как всегда сделали одноразовую вещь, поэтому для нормальной работы игрушку пришлось пришлось немного доработать после чего не страшно уже ее роботизировать. Есть уверенность, что она не отбросит колеса прямо сразу, а немного поездит на радость мне и детям.
Рожденный ездить – летать не может. Т.е. наш робот будет перемещаться вперед-назад, вправо-влево. И еще дрыгать ковшом в качестве бонуса. Изначально у King Force 300 есть еще и плуг, но он управляется тем же мотором, что и ковш и к тому же занимает ценное пространство сзади, куда я планировал поставить инфракрасный бампер, поэтому плуг пришлось зверски ампутировать. Но шурупы пошли на прикручивание выключателя, что тоже хорошо.
Т.е в машинке всег три мотора и и нам нужно управлять двумя двигателями на движение, каждый из которых должен вращаться вперед и назад и одним двигателем на подъем ковша, который должен вращаться только в одну сторону.
Если нужно включить-выключить двигатель – это реализуется просто на мощном транзисторе, но если нужно менять его полярность, то здесь без специальной схемы не обойтись. Либо реализовывать самому так называемый H-bridge, либо купить готовый драйвер двигателей.
Магазины деталей для роботов изобилуют разными готовыми платами (шилдами), который можно купить и быстро собрать в единое устройство, но здесь нужно соблюдать баланс между ценой и трудоемкостью изготовления такой платы.
Вместо покупки инфракрасного датчика рублей эдак за 500 можно спаять на простейшей макетной плате пару транзисторов и светодиодов и получить тоже самое только в десять раз дешевле, особенно, если датчиков хотите сделать несколько. В итоге я купил этот драйвер двигателей и этот ультразвуковой дальномер HC-SR04, а материнскую плату робота и инфракрасный бампер спаял на простой макетной плате просто проводками без использования травления хлорным железом и т.п. радостей. Единственное, что паяльник должен быть с тонким жалом, чтобы паять колодки микросхемы. Сначала хотел использовать беспаечную макетную плату, но все-таки решил запаять, чтобы меньше отваливались провода.
Кстати, отлично для разводки такой платы подходят провода от витой пары. Медные, в меру жесткие и хороши для пайки. Думаю, у каждого найдется метр-другой остатков витой пары для такого рода развлечений. Материнскую плату готовую не брал, чтобы сэкономить место внутри трактора. Туда много не поместится, поэтому максимально неаккуратно распаял сам. Душераздирающее зрелище перепутанных проводов можно посмотреть на видео. В последствие оказалось, что провода еще и помехи друг другу дают, особенно те, которые идут к двигателям.
Чтобы можно было собирать-разбирать устройство пришлось сделать все датчики на разъемах.
Остался главный вопрос – насчет мозгов робота. Всеми этими моторчиками нужно как-то управлять. Компьютер великоват, да и не влезет он в трактор. Поэтому берем максимально простой вариант. Один из клонов Ардуино. Их много разных по цене и размеру. Это хотя это и не лучший контроллер, не самый быстрый и в нем не слишком много возможностей, но программируется легко, много примеров как что сделать, есть готовые библиотеки работы с дальномером и инфракрасным приемником, поэтому для нашей задачи Ардуино вполне достаточен.
Arduino Nano очень даже компактный вариант, чтобы поставить внутрь трактора. У меня был клон Carduino Nano V.7 поэтому использовал его, кстати, у этой платки есть особенность – выход SPK, куда можно подключить наш ковш прямо без всяких драйверов двигателей и дополнительных транзисторов. При этом он завязан внутри через транзистор на 11 цифровой порт. Так что посмотрите по схеме транзистор нарисован снаружи, а на самом деле двигатель подключен к выходу SPK и использует внутренний транзистор.
Питание. Ардуино питается от +5 вольт. У нас двигатели воспринимают что-то около 6 вольт, если быть абсолютно точными, то в пульте у нас четыре батарейки AA, они по 1.5 вольта, никаких дополнительных схем не увидел, следовательно на двигатели подается прямиком 6 вольт – это радует, поскольку не нужно уменьшать-увеличивать напряжение с батареек. Я планирую питать схему от четырех аккумуляторов. Они 1.2 вольта, следовательно в итоге на схему пойдет 4.8 – достаточно для нормального питания Ардуино без дополнительных стабилизаторов и ограничителей, для двигателей тоже пойдет.
Для простого управления подключил приемник инфракрасного излучения фактически теперь у трактора есть инфракрасный пульт дистанционного управления и куча кнопок.
Всякие гребенки, батарейные отсеки, конденсаторы-резисторы покупал в чип-дипе Если заказывать через Интернет, то цена в общем нормальная, но в розницу там совершенно безумные цены. Но можно купить практически все детали в одном месте. А вот здесь купил макетную плату.
И еще несколько деталек.
После распайки основная проблема была в том, что Ардуина очень чувствительна к помехам. Поскольку двигатели явно щеточные, то создают сильные помехи при работе, пришлось дополнительно паять большое количество конденсаторов 0.1 мкф везде, где только можно. При этом двигатель ковша сильно влиял на дальномер, пришлось даже ставить дополнительную катушку-фильтр на двигатель ковша (выпаял из сгоревшей энергосберегающей лампы), а на дальномер кроме конденсаторов поставить ферритовый фильтр на питающий провод. У меня изначально была идея использовать дальномер как датчик поднятия и опускания ковша. Поскольку ковш заслоняет дальномер в нижнем состоянии и открывает в поднятом, то можно останавливать подъем когда дальномер резко изменил показатели. Поэтому пришлось бороться с помехами. Дальномер уж слишком близко стоит рядом с двигателем, да и разводка проводами способствует наводкам проводов друг на друга.
Двигатели колес сильно влияли вообще на все. При старте вперед Ардуина зависала. Кстати, назад ехала нормально. Что очень похоже на помеху по питанию в одну сторону двигатели мало влияли, а в другую все зависало. Пришлось в итоге от двигателей к драйверу двигателей провода заменить на экранированные, экран присоединить к минусу питания. Питание и землю сделать звездой и дополнительно на питание инфракрасного датчика поставить резистор 100 ом, который тоже немного экранирует помехи, конечно, не так как катушка, но все-таки. По хорошему каждый вывод двигателя нужно через конденсатор выводить на землю, чтобы сбрасывать помехи, но у меня просто места небыло для дополнительных конденсаторов, просто стоят параллельно. Но экранированный провод значительно уменьшил влияние двигателей на схему. Ниже схема того что получилось. Как это все работает можно посмотреть на видео.
Если не показывается видео, смотрите его на YouTube
Исходный код прошивки Arduino Nano можно списать здесь>>>