www.robo.com.ua

Проекты


Геннадий Стегняк. 1978г рождения, живу в Киеве, начинающий, увлекся с февраля 2005 года. Закончил КИВВС, направление – радиолокационное оборудование летательных аппаратов.

Довольно простая для повторения и усовершенствования конструкция – учебный проект робота для существования и перемещения в условиях комнаты, квартиры, офиса и т.п.

Монстр Дух-1 или как все начиналось


Итак, было решено увлечся робототехникой. Благо, появился на просторах украинского интернета этот сайтик, за что выражаю благодарность его создателю, Александру.

Мое описание проекта будет несколько наивным и, возможно, дилетантским, но цель его не глубокое научное исследование о смысле жизни робота и его влияние на значение суммы интеллекта в околосолнечном пространстве, а просто показать начинающему робототехнику, что не все так запущено и доступно каждому с более-менее прямыми руками и Ай-Кью ненамного выше среднего. По-сему, прошу людей опытных не пинать меня ногами, для меня все еще только начинается, а простых и понятных статей с практической ориентацией довольно мало. За их наличие, так же за постоянную поддержку, хочется сказать Саше спасибо, что и делаю с удовольствием.
Кроме того, буду приводить примерные цены с ориентировкой на розничную продажу на кардачах в Киеве (кто не знаком с украинской валютой – курс доллара у нас – 5.3 грн за 1 зеленый), чтоб человек начинающий, как и я, мог примерно представлять, во сколько ему это обойдется.

За основу была взята машинка, любезно предоставленая Александром, с дивным названием Монстр-2. В качестве управления движками классическая L293D, в качестве вычислителя – Рic16F84, тоже своего рода классика. На борту имеется ИК-бампер спаяный по несколько измененной опять же классической схеме на ТСОП1736 и TSAL5300, из которого была сделана попытка выжать максимальное количество информации об окружающем мире, но об этом ниже.


Шасси или «реквизированные ценности»

Итак, разглядывая игрушку, было принято решение извлечь из нее максимум деталей. Не помню, на каком сайте был раздел «спасенное имущество», это из той оперы. Первое – проводки из пульта управления в монстра, с этим все ясно, трохи обрезали и припаяли к концам (проводков, естественно) разьем 4-пиновый, вот и движки есть чем подключить. Дальше – больше. Верхняя крышка от пульта управления пригодилась в качестве базы для размещения элементов робота, да еще как! Она уже пластмассовая J и значит класть изоляционный слой не надо, кроме того, прекрасно сверлится и шурупы (взятые, кстати, из той же машинки) крутятся просто прелесть. Как видите на фотографиях, она перевернута, кнопками обращена вперед. В небольшое углубление, где кнопки были, прекрасно, как там и сидел, входит блок аккумуляторных батарей, а отверстия – чудные лючки для проводов. Впереди есть такой себе выступик, который пригодился для того, чтоб зафиксировать сенсор (см. фото) без разнообразных сверлильно-вкручивающе-ввинчивающих операций, причем довольно надежно. Ага, сама крышка была закреплена шурупчиком из машинки, вкрученым в уже приготовленое предусмотрительными китайцами отверстие, раньше туда крепилась «кабина» и винтиком с гаечкой (их китайцы к сожалению в комплект не положили, пришлось раскурукулиться), отверстие в шасси тоже было предусмотрено, сверлить пришлось только крышку. Ну и наконец, пружинки, которые были под кнопками, пригодились для укрепления аммортизаторов. Пустячек а приятно.

Решение поставить батарею впереди было принято не просто так, таким образом передняя часть стала тяжелой, это позволяет передом брать барьер примерно в 3 сантиметра. Без этого робот пробуксовывал.
Итак, о некоторых особенностях шасси. Сравнительно небольшая скорость и довольно неплохая для своих размеров проходимость. А кроме того, и это, ИМХО, главное, офигенная маневреность – машинка может разворачиваться на месте. Правда, в моем варианте, если попадается что-то при движении назад, имеет место быть переворот сперва вперед, а потом на крышу, но случается такое довольно редко. Моторы фонят просто жах якийсь, поэтому конденсаторами пришлось обвязать движки, один поставить на питании платы и один на питании сборки в сенсоре (ТСОП). Батарея аккумуляторов закрепелна с помощью двухстороннего скотча.
В общем, конструкцию надо утяжелять, это однозначно, только в идеале центр тяжести нужно смещать вперед-вниз, идеальная схема – как у камаза-тягача. Ну, хватит о шасси, дальше речь пойдет о мозгах.
Затраты на данном этапе составили около 20 грн.

Плата управления или «Голова в ответе за то, куда сядет зад...»

Электроника робота проста и банальна. Так как проект – первый, требование было – научится и понять на простом. В плате на куске одностороннего текстолита размещены микросхема управления движками, контроллер, марку рассказывал выше и еще расскажу ниже, и несколько разъемов. Неприятно поразило то, как греется микруха управления движками, это ж сколько энергии аккумуляторов уходит только туда. Как охлаждать её, еще не определился. Пару слов о мозгах. Контроллер, а это классика фирмы Микрочип – PIC16F84-04 (последние цифры – тактовая частота), достаточно производителен и функционален для простых задач, имеет 8+5 портов ввода-вывода, из обвязки только кварц, так как конденсаторы в частотозадающей цепи ставлю только если температура сильно отличается от комнатной, работает неплохо, да еще резистор в цепи сброса. Фактическая производительность – 1 MIPS то есть каждая команда выполняется за микросекунду. Есть встроеный таймер и один вектор прерывания. Джентельменский набор, как говорится. Тем не менее, у меня всюду стоят циклы задержки. Памяти у него – килобайт, это на программу, 68 байт ОЗУ, плюс 64 байт энергонезависимой. Тем не менее, хватает, об этом дальше. Что мне больше всего нравится в подобных конструкциях – минимум навесных элементов. Что не хватает в этом плане, часто можно решить програмно. Сравнимо, как если б вместо рук мы обладали способностью телекинеза.
Плата управления расчитана на два непростых и один простой бампер, хотя концепция может менятся.
Ну, об этом рассказать больше нечего, читайте проекты этого сайта, идеи оттуда.
Затраты – 18 грн контроллер, 9,5грн – управление движками, да еще пару на разъемы и шлейфы, итого, не более 30-35 грн


Непростой простой ИК-бампер или «видящий да увидит»

Итак, Александром была подсказана конструкция ИК-бампера, схему можете найти на сайте. Первая мысль – получить как можно больше информации, осуществив минимум вложений не чужда, думаю, каждому. Применительно к вопросу, было решено сделать управление светодиодами раздельным. Получаем две выгоды. Первая, очевидная. Можем принимать решение о том, с какой стороны препятствие (об этом – ниже) и соответственно реагировать, в таком случае, поведение робота будет не таким простым, а, как бы, более осмысленным. Вторая, тоже не сложна, но несколько скрыта. Когда излучаем одновременно двумя светодиодами, получаем большую напряженность отраженного сигнала, соответсвенно, большую чувствительность. Таким образом получаем, кроме всего прочего, некоторую информацию о дальности. Это касательно идей. Теперь о практике. Датчик, который был мною спаян, имеет перемычку, которая, если надо, замыкает базы транзисторов, что позволяет управлять двумя светодиодами вместе, экономя вывод контроллера. В качестве деталей – с детства любимые КТ315, плюс 5 резисторов, плюс, как оказалось необходимым позже, еще резистор, электролит 10мкФ и обычный конденсатор 0,1мкФ. В качестве передатчика – TSAL5300, в качестве приемника – TSOP1736. От аналога производства Самсунг отличается несколько большей помехозащищенностью, хотя в некоторых случаях это и недостаток. Она более критична к параметрам сигнала от передатчика. Зато совсем не реагирует на лампу дневного света. На выходе эта сборка дает 2.5 вольта в случае несрабатывания или лог. 0 в ином. У меня получалось, что на тестовом стенде (просто контроллер с имитацией двигателей светодиодами) все работает прекрасно, а вот на шасси с работающими движками, да еще если батарея подсела, сборка вела себя странно. Она то после реакции больше не сбрасывалась, в итоге получалось постоянное срабатывание датчика, то единожды среагировав, в 0 больше не устанавливалась. Было решено принять комплекс мер. 15кОм-ным резистором подтянул выход к питанию (вместо 2.5 получил уверенных 5, в доке по сборке, кстати, есть рекомендации по этому поводу), 10мкФ в цепи питания помогло избавится от скачков напряжения, а 0,1мкФ – от движковой помехи. И еще одно. Как только я менял (програмно) чувствительность датчика, начинались появлятся засветки. От пола и от самого светодиода (прямой сигнал). Поэтому из банки из под пива было сделано гнездо, на фотографии его можно видеть. Даже при таком повороте светодиодов чувствительность была очень даже, приходилось гасить програмно.
Затраты на этом этапе – в районе 7 грн, не больше (сборка Самсунг стОит на кардачах 4, оригинальная – 4.90, светодиоды по 80 коп.). Датчик можно купить готовый, работает по отзывам здорово, обращатся к Александру.


Такая получилась железная часть. Далее, как все это работает.

Алгоритм или «компьютер – просто окно, окно в мир программы»

Несколько отойдя от порядка изложения, сразу напишу о затратах на этом этапе. Из материальных – только программатор. Они разные и это отдельная тема для обсуждения. Лично у меня (для ПИКа) это JDM с оболочкой ICProg, который не стоил и 10 гривен, правда и работает не очень, буду собирать Москит. Но на этом этапе, написания програмного обеспечения, окупились абсолютно все затраты. Робот то ездил по понятным только ему законам, то падал и издавая звуки затихал (домашние просто животы рвали, сдох - говорили), то усиленно и крепко обнимался с ножкой стула, все это сопровождалось атакующим его котом, который, потеряв бдительность и заснув только недавно отошел от шока, когда машинка начала на него взбираться, а потом еще и в угол загнала (не повезло) а он, сонный, не мог одуплится и часа 2 на люди не показывался. В общем приобрел пару дополнительных лет жизни, хотя помехи от движков здорово поколупали мозги на этом этапе.
Сам алгоритм прост. Главное сформировать правильную пачку импульсов, чтоб приемник мог её «видеть». Остальное – полет фантазии программиста. В моем случае я имел возможность получить кроме факта присутствия помехи движению, еще и информацию о том, справа, слева или прямо по центру находится препятствие. Итак алгоритм примерно такой. Опрашиваем один, отмечаем была ли реакция, опрашиваем второй, далее, если есть ответ по левому, вертимся направо(аналогично с правым) опять опрос . Вертимся до тех пор, пока не будем иметь реакцию от двух или реакцию потеряем. В первом случае некоторое время двигаемся назад, потом поворачиваем куда-нибудь, тоже некоторое время (у меня назад 1.2 сек, влево 0.6 сек). Когда движемся назад, датчики можно не опрашивать, сзади то у нас их нет (прям как в жизни, если в голове нет, то в заднице не найти). При потере реакции – полный вперед.
Элементарно, даже писать было несколько неудобно. Только все, что рассказал выше позволило роботу выбраться из щели , которая на 4-5 сантиметров больше его ширины (это на входе, внутри у него было немного больше места для маневра, совсем немного). Заезжает он туда не всегда, по его желанию, но не выехал пока 2 раза, один из которых Все – благодаря постоянному опросу датчиков, так что производительности камня было вполне достаточно. Программа занимает в памяти 135 байт, и это довольно много (примерно 1/10 всей програмной памяти) , но никакой оптимизации не проводилось, хотелось чтоб было понятно, в первую очередь мне. Задействовано 9 байт ОЗУ


Выводы или «конец первого уровня»

Ну, несмотря на простоту, ушло у меня на создание первого робота чуть более трех недель. Даже не пойму, чего так долго. На одни эксперименты с датчиком ушло 2/3 всего времени. Отсутствие осциллографа стало основной причиной. Но мои эксперименты с датчиком еще не закончены. В проекте – дальномер на ИК, предварительные опыты дали оптимистичный результат, получальось 4 ступени по дальности, от 240 до 30 мм при примерно средней отражающей способности препятствия. Целый вечер ушел на то, чтоб поставить конденсатор в цепи питания платы управления, и ещё вечер на приспосабливание датчика к реальным условиям. Но удовольствие полученное как от результата, так и от самого процесса, стоило потраченного времени. Поэтому, желаю всем удачи, и творческих успехов.
У кого возникли вопросы – будем рады обсудить на форуме сайта www.robo.com.ua

С уважением, Геннадий.
Киев.
2005 год.

bigmir)net TOP 100