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

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


Робототехнический проект по созданию управялемого робота. Краткое описание и несколько фото.
Навигация
Самые интересные статьи
Создан роботизированный хобот
Создан роботизированный хобот
Немецкая компания Festo разработала устройство, напоминающее хобот слона. Bionic Handling Assistant (так называется разработка) позволяет легко брать предметы и...

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

Проект "Робот-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 год. Киев.
Мастерская:




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

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