Мобильный робот на микроконтроллере реагирующий на свет. Маленький самодельный робот. Есть какие-то особенные требования у вашего робота

Выбор микроконтроллера для создания вашего робота. Сначала нужно разобраться с понятием, что такое микроконтроллер и что он делает?

Микроконтроллер — это вычислительное устройство, способное выполнять программы (то есть последовательность инструкций).

Он часто упоминается как “мозг” или “центр управления” робота. Как правило, микроконтроллер отвечает за все вычисления, принятие решений и коммуникации.

Для того, чтобы взаимодействовать с внешним миром, микроконтроллер имеет ряд штырей или выводов для электрического распознавания сигнала. Так сигнал может быть включен на максимум (1/С) или минимум (0/выкл) с помощью инструкции программирования. Эти выводы также могут быть использованы для считывания электрических сигналов. Они поступают с датчиков или других приборов и определяют, являются сигналы высокими или низкими.

Большинство современных микроконтроллеров может также измерять напряжение аналоговых сигналов. Это сигналы, которые могут иметь полный диапазон значений вместо двух четко определенных уровней. Происходит это с помощью аналогового цифрового преобразователя (АЦП). В результате микроконтроллер может присвоить сигналу числовое значение в виде аналогового напряжения.Это напряжение не является ни высоким, ни низким и, как правило, находится в диапазоне 0 — 10 вольт.

Что может делать микроконтроллер?

Хотя микроконтроллеры могут показаться довольно ограниченными, на первый взгляд, многие сложные действия можно выполнять, используя контакты высокого и низкого уровня сигнала для программирования алгоритма. Тем не менее создавать очень сложные алгоритмы, такие как интеллектуальное поведение или очень большие программы, может быть просто невозможно для микроконтроллера из-за ограниченных ресурсов и ограничения в скорости.

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


Аналогичным образом, микроконтроллеры могут быть использованы для контроля других электрических устройств. В первую очередь таких как приводы (при подключении к контроллеру двигателя), устройства хранения (например, карты SD), WiFi или bluetooth-интерфейсы и т. д. Как следствие этой невероятной универсальностью, микроконтроллеры можно найти в повседневной жизни.

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

В отличие от микропроцессоров (например, центральный процессор в персональных компьютерах), микроконтроллер не требует периферийных устройств. Таких как внешняя оперативная память или внешнее устройство хранения данных для работы. Это означает, что хотя микроконтроллер может быть менее мощным, чем их коллеги ПК. Почти всегда разработка схем и продуктов, основанных на микроконтроллерах значительно проще и дешевле.Потому что требуется очень мало дополнительных аппаратных компонентов.

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

Какие существуют более специализированные функции микроконтроллера?

Специальное оборудование, встроенное в микроконтроллеры позволяет этим устройствам сделать больше, чем обычный цифровой ввод/вывод, базовые расчеты и принятие решений. Многие микроконтроллеры с готовностью поддерживает наиболее популярные протоколы связи, такие как UART (RS232 или другой), SPI и I2C. Эта функция невероятно полезна при общении с другими устройствами, такими как компьютеры, датчики, или другие микроконтроллеры.

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


Аналого-цифровые преобразователи (АЦП), используются для преобразования аналоговых сигналов напряжения в цифровые. Там количество пропорционально величине напряжения, и это число может затем использоваться в программе микроконтроллера. Для того, чтобы выходное промежуточное количество энергии отличается от высокого и низкого, некоторые микроконтроллеры имеют возможность использовать широтно-импульсную модуляцию (ШИМ). Например, этот способ позволяет плавно изменять яркость свечения светодиода.

Наконец, в некоторые микроконтроллеры интегрирован стабилизатор напряжения. Это достаточно удобно, так как позволяет микроконтроллеру работает с широким диапазоном напряжения. Поэтому вам не требуется обеспечивать необходимые значения напряжений. Это также позволяет легко подключать различные датчики и другие устройства без дополнительного внешнего регулируемого источника питания.

Аналоговые или цифровые?

Какие нужно использовать входные и выходные сигналы зависит от поставленной задачи и условий. Например, если у вас стоит задача просто что-то включить или выключить, то вам достаточно чтобы сигнал на входном контакте микроконтроллера был цифровой. Двоичное состояние переключателя 0 или 1. Высокий уровень сигнала может быть 5 вольт, а низкий 0. Если же вам нужно измерить, например, температуру, то нужен аналоговый входной сигнал. Далее АЦП на микроконтроллере интерпретирует напряжение и преобразует его в числовое значение.


Как программировать микроконтроллеры?

Программирование микроконтроллеров стало более простым благодаря использованию современных интегрированных сред разработки IDE с полнофункциональными библиотеками. Они легко охватывают все наиболее распространенные задачи и имеют много готовых примеров кода.

В настоящее время микроконтроллеры могут быть запрограммированы на различных языках высокого уровня. Это такие языки как C, C++, С#, Ява, Python, Basic и другие. Конечно, всегда можно написать программу на ассемблере. Хотя это для более продвинутых пользователей с особыми требованиями (с намеком на мазохизм). В этом смысле, любой должен быть в состоянии найти язык программирования, который лучше всего соответствуют его вкусу и предыдущему опыту программирования.

Программировать микроконтроллеры становится еще проще, так как производители создают графические среды программирования. Это пиктограммы, которые содержат в себе несколько строк кода. Пиктограммы соединяются друг с другом. В результате создается программа визуально простая, но содержащая в себе большое количество кода. Например, одно изображение может представлять управление двигателем. От пользователя требуется только разместить пиктограмму там, где необходимо и указать направление вращения и обороты.


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

Почему не использовать стандартный компьютер?

Очевидно, что микроконтроллер очень похож на процессор компьютера. Если это так, почему бы просто не использовать компьютер для управления роботом? Итак, что выбрать настольный компьютер или микроконтроллер?


По сути, в более продвинутых роботах, особенно тех, которые включают сложные вычисления и алгоритмы, микроконтроллер часто заменяются (или дополняются) стандартным компьютером. В настольном компьютере установлена материнская плата, процессор, оперативная память устройства (например, жесткий диск), видеокарта (встроенная или внешняя).

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

Как выбрать микроконтроллер правильно?

Если вы изучаете робототехнику, то вам понадобится микроконтроллер для любого робототехнического проекта. Для новичка, выбор правильного микроконтроллера может показаться сложной задачей. Особенно учитывая ассортимент, технические характеристики и области применения. Есть много различных микроконтроллеров доступны на рынке:

  • Ардуино
  • BasicATOM
  • BasicX
  • Lego EV3
  • и многие другие

Для того чтобы правильно выбрать микроконтроллер задайте себе следующие вопросы:

Какой микроконтроллер самый популярный для моего приложения?

Конечно, создание роботов и электронных проектов в целом-это не конкурс популярности. Очень хорошо если микроконтроллер имеет большую поддержку сообщества. И успешно используется в похожих или даже одинаковых ситуациях. В результате это может значительно упростить этап проектирования. Таким образом, вы могли бы извлечь пользу из опыта других пользователей, как среди любителей, так и среди профессионалов.

Участники сообществ конструкторов роботов делятся друг с другом результатами, кодами, картинками, видео, и подробно рассказывают об успехах и даже неудачах. Все это является доступными материалами и возможностью получать советы от более опытных пользователей. Следовательно, может оказаться очень ценным.

Есть какие-то особенные требования у вашего робота?

Микроконтроллер должен быть способен выполнять все специальные действия вашего робота, чтобы функции исполнялись правильно. Некоторые особенности являются общими для всех микроконтроллеров (например, наличие цифровых входов и выходов, возможность выполнять простые математические действия, сравнение значений и принятие решений).

Возможно другим контроллерам требуется специфическое оборудование (например, АЦП, ШИМ, и коммуникационный протокол поддержки). Также требования к памяти и скорости, а также число выводов должны быть приняты во внимание.

Какие компоненты доступны для конкретного микроконтроллера?

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

Большинство датчиков и компонентов может взаимодействовать напрямую со многими микроконтроллерами. Хотя некоторые комплектующие предназначены для взаимодействия с конкретным микроконтроллером. Возможно они будут уникальными и несовместимыми другими типами микроконтроллеров.

Что нас ждет в будущем?

Цена на компьютеры резко идет вниз, и достижения в области технологии делают их меньше и эффективнее. В результате одноплатные компьютеры стали привлекательным вариантом для роботов. Они могут работать с полноценной операционной системой (Windows и Linux являются наиболее распространенными).

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

Практическая часть

Для того чтобы выбрать микроконтроллер составим список нужных нам критериев:

  • Стоимость микроконтроллера должна быть низкой
  • Он должен быть простым в использовании и хорошо поддерживаться
  • Важно наличие доступной документации
  • Он должен программироваться в графической среде
  • Он должен быть популярен и иметь активное сообщество пользователей
  • Так как наш робот будет использовать два двигателя и различные датчики, то микроконтроллеру понадобится как минимум два порта для управления двигателями и несколько портов для подключения датчиков. Также должна быть возможность для расширения количества подключаемых устройств в будущем.

Этим критериям соответствует модуль EV3 из набора Lego Mindstorms EV3.


Обзор модуля EV3

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

Одобряется при создании робота использовать как можно меньшее число электронных элементов и можно даже пустить в ход электронные отходы.

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

Движение является неотьемлимым признаком (свойством) любого живого существа. Это самое простое, что можно реализовать в BEAM роботе. В моем понимании движение бывает самопроизвольное или обдуманное (намеренное). По отношению к умным роботам можно сказать, что от них требуются только обдуманные движения. Например у человека невольно могут придти в движение мышцы лица для передачи мимики (например из-за внезапно возникшей эмоции), а для робота любое ненужное движение ведет к нерациональной трате энергии.

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

Питание

В большинстве случаев элементом питания является батарейка. Но если вы хотите создать робота с автономным питанием, то нужно использовать энергию излучения (например солнечный свет). Устройство, преобразующее солнечную энергию в постоянный электрический ток называется солнечная батарея, состоящая из полупроводниковых фотоэлементов. Солнечные батареи дают небольшое количество электрической энергии в режиме реального времени, но только в присутствии солнца. Для того чтобы не "умереть" при отсутствии солнца, целесообразно использовать аккумуляторные элементы для сохранения накопленной энергии на "черный день"...ну или на пасмурный день.

Адаптация и поведение

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

Концепция BEAM-роботов, предложенная Марком Тилденом, состояла в том, что реакция на внешние факторы должна обеспечиваться на первом этапе самой машиной, без участия какого-либо "мозга", как это происходило и в живой природе, на пути от простейших к человеку. По этому же пути должно идти совершенствование и создание более сложных робосистем.

Виды

Существуют разные виды роботов BEAM, которые созданы для выполнения разных задач.
Аудиотропы - реагируют на звуки.
Фототропы - реагируют на свет.
Радиотропы - реагируют на радиочастоты.
Термотропы - реагируют на тепловое излучение.

Наиболее часто встречаются фототропы, поскольку поиск света является наиболее очевидной задачей для использующего солнечную энергию робота.

Модульная структура

Лично мне нравится идея создания BEAM робота из отдельных функциональных модулей, и руководствуясь принципом "от простого к сложному" можно будет развивать робота, добавляя все новые и новые модули. Каждый модуль сам по себе может работать отдельно, т.е. не будет использоваться централизованный мозг для обработки информации.

Шасси

Для того, чтобы робот мог двигаться, нужно сконструировать для него шасси.
Оно бывает разных типов: гусеничное, на колесах и даже на ногах...
Давайте рассмотрим их подробнее.

1. Гусеничное.

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

2. Шасси на колесах.


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

3. Робот на ногах.


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

ДЕЛАЕМ САМИ!

Шасси для своего робота можете сделать так как показано на рисунке ниже.

За основу можно взять коробочку. Лучше из пластмассы, потому что это легкий материал. В этой же коробке удобно разместить элемент питания: аккумулятор, батарейки и т.п.
Учитывайте, что чем больше колеса, тем медленнее будет ехать робот (а может и не сдвинуться с места).

Второй вариант. Здесь использованы пластиковые хомутики для закрепления моторчиков.

Электромоторы можно взять со старой техники: магнитофоны, игрушки, дисководы и пр.

У меня дома имелись моторчики трех типов:

Выбор пал на верхний моторчик. Он показал хорошие характеристики по тяге и потреблению тока.

Также нам потребуется батарейный отсек, чтобы обеспечить питание. Питание можно организовать раздельное: для моторов (силовое) и для логической схемы.

Ниже представлена простая схема робота, который едет на свет фонарика.

Схема 1. "Идущий на свет".

В этой схеме использованы фотодиоды. Их выбираем по диапазону чувствительности, т.е. учитывая на какой свет робот будет идти. К примеру на свет от фонарика (видимый диапазон) или на лучик пульта от телевизора (инфракрасный диапазон). Если осветить фотоэлемент VD1, то будет вращаться Мотор 1, а если осветить фотоэлемент VD2, то будет вращаться Мотор 2. Учитывая это, моторы расположим так, чтобы когда VD1 освещен Мотор 1 поворачивал робота к свету.

А если моторы поменять местами, то робот наоборот будет отворачиваться от света.

Теперь рассмотрим фотоэлементы.
В качестве элементов, чувствительных к свету используются фотодиоды, фототранзисторы, фоторезисторы и т.п. В интернете присутствует много информации по этим элементам, поэтому я опишу их вкратце.

1. Фоторезистор: в темноте он представляет собой высокоомный резистор, а при освещении светом его сопротивление падает пропорционально интенсивности света, проявляя линейную зависимость. Как правило воспринимают только видимый свет.

2. Фотодиод: полупроводниковый прибор, так же как и обычный диод имеет анод и катод.
Если применить прямое включение, то освещенный фотодиод будет вырабатывать напряжение на выводах.
При обратном включении сопротивление облученного фотодиода падает так же как у фоторезистора.
По диапазону света фотодиоды делятся на ИК-диоды и для видимого света. ИК-диоды воспринимают только инфракрасное излучение, но также хорошо реагируют на лампы накаливания и на Солнце.

3. Фототранзистор: отличается от обычного транзистора тем, что на область базы подается свет, который управляет усилением тока эмиттер-коллектор.

Без особого успеха в качестве светочувствительного элемента можно использовать светодиод. Он обладает слишком малой чувствительностью и усилить ее можно лишь с помощью дополнительной схемы.

BEAM-робот, который получился у меня

В своем роботе я использовал разные фотодиоды неизвестного происхождения. На видео видно, что чувствительность одного из них больше.
Один из фотодиодов реагирует на лучик пульта от телевизора.
Также вся "начинка" залита термоклеем.
Надеюсь у вас получится лучше и красивее!

Список радиоэлементов

Обозначение Тип Номинал Количество Примечание Магазин Мой блокнот
VT1, VT3 Биполярный транзистор

КТ3102

2 КТ315 В блокнот
VT2, VT4 Биполярный транзистор

КТ361Б

2 КТ816

Чтобы создать своего робота, необязательно получать высшее или читать массу . Достаточно воспользоваться пошаговой инструкцией, которую предлагают мастера робототехники на своих сайтах. В Интернете можно найти много полезной информации, посвящённой разработке автономных роботизированных систем.

10 ресурсов для начинающего робототехника

Информация на сайте позволяет самостоятельно создать робота со сложным поведением. Здесь можно найти примеры программ, схемы, справочные материалы, готовые примеры, статьи и фотографии.

Новичкам на сайте посвящён отдельный раздел. Создатели ресурса делают немалый упор на микроконтроллеры, разработку универсальных плат для робототехники и пайку микросхем. Здесь также можно найти исходные коды программ и множество статей с практическими советами.

На сайте есть специальный курс «Шаг за шагом», в котором детально описан процесс создания простейших BEAM-роботов, а также автоматизированных систем на основе микроконтроллеров AVR.

Сайт, где начинающие создатели роботов смогут найти всю необходимую теоретическую и практическую информацию. Здесь также размещается большое количество полезных тематических статей, обновляются новости и можно задать вопрос опытным робототехникам на форуме.

Данный ресурс посвящён постепенному погружению в мир сотворения роботов. Начинается всё с познания Arduino, после чего начинающему разработчику рассказывают о микроконтроллерах AVR и более современных аналогах ARM. Подробные описания и схемы очень доступно объясняют, как и что делать.

Сайт о том, как сделать BEAM-робота своими руками. Здесь есть целый раздел, посвящённый основам, также приведены логические схемы, примеры и т. д.

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

Огромнейший живой форум, посвящённый созданию роботов. Здесь открыты темы для новичков, рассматриваются интересные проекты и идеи, описываются микроконтроллеры, готовые модули, электроника и механика. А главное - можно задать любой вопрос по роботостроению и получить развёрнутый ответ от профессионалов.

Ресурс робототехника-любителя посвящён в первую очередь его собственному проекту «Самодельный робот». Однако здесь можно найти очень много полезных тематических статей, ссылок на интересные сайты, узнать о достижениях автора и обсудить различные конструкторские решения.

Аппаратная платформа Arduino является наиболее удобной для разработки роботизированных систем. Информация сайта позволяет быстро разобраться в этой среде, освоить язык программирования и создать несколько несложных проектов.

26.01.2011, 09:18
Источник:

Обычно, в статьях, я стараюсь излагать материал в порядке его разработки, но думаю, что это не тот случай. Поэтому, пропустим этапы проектирования принципиальной электрической схемы, разводки печатной платы и всего прочего. На рисунке 1 смотрим какое «безобразие» у меня получилось.

С первого взгляда кажется просто нагромождением железа, электроники и проводов. Наверное, это потому, что в ход пошли куски разнородных материалов. Давайте разбираться.

Теперь все по порядку. На микроконтроллер Attiny2313 с двух инфракрасных датчиков поступает сигнал о препятствии (логическая единица или нуль). Затем, согласно, прошивки микроконтроллер управляет микросхемой драйвер двигателя L293D (ток управления до 1 Ампера). На рисунке 3 представлена фотография перевернутого робота.

Основой конструкции самодельного робота является согнутая в трапецию металлическая полоска. Угол изгиба порядка 120°. Принципиально важно, чтобы с обеих сторон получился одинаковый изгиб, иначе робот будет двигаться не прямолинейно. Хотя, с другой стороны, что плохо сделал механик или электроник, иногда может загладить программист, скажем, с помощью ШИМ добиться прямолинейного движения робота

Из курса школьной геометрии все мы знаем, что плоскость образуется или тремя точками или прямой и точкой в пространстве. Третей точкой является свободно вращающееся роликовое колесо.

Приемники ИК-датчиков, фототранзисторы находятся снизу, дабы снизить засветку и свести к минимуму ложное срабатывание. Сами ИК-датчики крепятся на подвижных шарнирах, что позволяет производить настройку зоны сканирования. Интересная, кстати, реакции была моего кота на ползающего робота в коридоре?. Кот у меня черный. ИК-датчики я настраивал серого цвета обои, поэтому робот поворачивал перед котом почти в самый последний момент, а кот отпрыгивал на шаг назад с громким шипением.

Следующий моддингом для роботы стали ИК-датчики на его пузе, позволяющие роботу следовать по черной линии, нарисованной на белой бумаге маркером. Для реализации потребовалось три датчика и компаратор на микросхеме LM339N, чтобы разгрузить микроконтроллер. Существенным минусом оказалось, необходимая предварительная настройка датчиков подстроечными резисторами в зависимости от освещения в помещении.

P.S. Наградой за потраченное время на создание бессмысленного устройства, пожалуй, будет наглядность работы микроконтроллера и память которая будет пылиться на полке, до тех пор пока ей может быть не заинтересуется чей то ребенок.