Сайт о роботах

Проект Робот-1 » Роботы своими руками


Робототехнический проект по созданию управялемого робота. Краткое описание и несколько фото.
Навигация
Самые интересные статьи
Из робота сделают гусеницу
Из робота сделают гусеницу
Специалисты университета Тафс выступили с инициативой разработки роботов с гибкими конечностями. Согласно проекту, в новых моделях пластичным будет все, начиная от...

Обратите внимание Будьте в курсе событий.

Проект "Робот-1", он же БЖ (бывшая жаба)


12.07.2010, 19:54
Автор: Шульга Александр
http://robo.com.ua/projects2.php


В качестве основы был использован набор Valleman "Turning frog" (артикул KSR2). Я собрал этого "робота", включил его, но, как оказалось, ничего путного он делать не умеет. Пришлось лишить его родной платы управления и использовать только "моторную часть".

Для начала я приобрел программатор. Название или какие-то характеристики его не знаю, но AVR Studio его прекрасно видит. На плате стоят микросхемы HIN232IP и AT90S2313, а также пассивные элементы.

Для своей платы я использовал макетку, МК AT90S2313-10PI, L293 и диоды (они такие мощные и оранжевые), а также разъемы, светодиоды, кварц на 4 МГц, и так далее. МК практически сразу начал программироваться, вот только с самими программами была проблема. Я хоть и программист со стажем, но в данный момент специализируюсь на РНР, с С++ давно не имел дело, а с ассемблером и подавно. Пришлось купить книжку "Atmel Classic" и разбираться с регистрами и ассемблером.

Как ни странно, но первая программа получилась у меня довольно -таки быстро и робот начал выполнять команды. Это было захватывающе! Но у робота не было сенсоров и он ехал только до того момента, пока я его не останавливал. Да, как и у всех, у меня сразу же возникла проблема с питанием микросхем и двигателя. При подключении двигателей микроконтроллер перезагружался и не хотел ничего делать. Пришлось включить дополнительный блок батарей для двигателей и для МК. Двигатели- 3 батарейки по 1.5В, МК- 4 батарейки по 1.5В.

Позднее я купил аккумуляторы и зарядное устройство и использовал их для питания двигателей. МК запитал 4-мя почти севшими батарейками. Конечно же, первым делом нужно было бы обвязать микросхемы и двигатели конденсаторами, но их в тот момент не было под рукой. Раздельное питание, на мой взгляд, намного эффективнее. Например, я уже купил и в следующих проектах буду использовать аккумуляторы от фонарика (который заряжается в розетке 220В). Их там 3 штуки и они дают напряжение примерно 3.6 В. Стоимость всего фонарика 2-3 доллара, т.е. я получил зарядное устройство и аккумуляторы всего за такую сумму.

Дальше. Начальное напряжение питания МК- 2.7В. Соответственно, можно использовать батарейки типа 2032, 2025 (таблетки, стоимость примерно 1 - 15. доллара). Потолок питающего напряжения- 6В, хотя по даташитам на самом деле максимум- 6.5В. Т.е для того, чтобы робот дольше работал, я могу взять и 2 "таблетки".

Дальше. МК не обязательно работать постоянно. В те места программы, где используется пустая задержка, можно вставить "засыпание" МК на некоторое время. В результате, он будет работать как бы в импульсном режиме, т.е. просыпаться только тогда, когда нужно дать команду, обработать прерывание или считать данные с сенсоров. Это будет существенная экономия, и если довести экономию питания до совершенства, робот сможет работать от батарейки для наручных часов.

Контактные датчики вначале были из медного провода толстого сечения и микрики с рычажком. Потом я где-то увидел, что используют трубочки от сока (соломинки) и попробовал. Есть преимущества: они легкие, достаточно прочные, действительно похожи на "усы". Конечно, они не идеальны, как и другие сенсоры. 100%-й сенсор пока не придумали.

Когда платформа заработала, настал час триумфа для программиста. Конечно, писать на ассемблере не так просто, но я смотрел программы на Си - не знаю зачем так извращаться? Ведь по сути получается то же самое- работа с регистрами. Записал, прочитал. Си используется для организации циклов, передачи управления, подпрограммы и функции. Но ведь то же самое есть и у ассемблера. Точнее, макроассемблера, что не одно и то же. Я могу переопределить имена регистров, и сделать те же переменные, также я могу использовать ячейки памяти МК и присвоить им имена. Компилятор все сделает за меня. Ну, есть конечно сложные участки программы. Но ведь никто не отменял подпрограммы, можно ведь написать небольшую библиотеку и использовать её в дальнейшем. Кстати, если поискать, в сети, то можно найти уже готовые.

К чему я веду? Памяти у МК не так много. Конечно, заполнить всю мне пока не удавалось. Но написать небольшую, красивую программу- чем не интерес? Вы спросите: "как совместить виртуозное владение дрелью и напильником со знанием тонкостей регистров?". А вот в этом то и есть интерес.

На данном этапе я только - только подошел к мысли о создании собственных библиотек. Пока есть одна, достаточно распространенная функция- задержка. Практически во всех программах она есть. По мере совершенствования знания ассемблера набор функций будет пополняться. Сайт www.robo.com.ua тоже ведь построен с использованием собственных библиотек функций.

В окончательном варианте робот умел не только отъезжать от препятствий на своем пути, но и выполнять некие псевдослучайные движения. Например, робот двигается по прямой. По истечении некоего времени он изменяет направление движения- поворачивает влево, вправо, или разворачивается. То же самое и с препятствиями. Специальная переменная - ячейка памяти используется для хранения числа, которое используется для определения направления поворота. Таким образом, робот, конечно, не умеет объезжать препятствия, но он просто двигается не по прямой, а случайным образом меняет направление движения. Это достаточно интересно.

Шульга Александр. 2004 год. Киев.
Мастерская:




Сенсор для робота (соревнования следование по линии и лабиринт по линии)
  • Робототехнический проект по созданию управялемого робота. Краткое описание и несколько ...
  • НАЗАД

    Робот на платформе радиоуправляемого Мерседеса
  • Робототехнический проект по созданию управялемого робота. Краткое описание и несколько ...
  • ВПЕРЁД