Крутые роботы на микроконтроллерах. Маленький самодельный робот. Какие компоненты доступны для конкретного микроконтроллера

12.10.2021 Компоненты

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

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

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

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

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

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

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

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

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

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

Введение

Итак. Что же такое робот? В большинстве случаев это автоматическое устройство, которое реагирует на какие-либо действия окружающей среды. Роботы могут управляться человеком или выполнять заранее запрограммированные действия. Обычно на роботе располагают разнообразные датчики (расстояния, угла поворота, ускорения), видеокамеры, манипуляторы. Электронная часть робота состоит из микроконтроллера (МК) – микросхема, в которую заключён процессор, тактовый генератор, различная периферия, оперативная и постоянная память. В мире существует огромное количество разнообразных микроконтроллеров для разных областей применения и на их основе можно собирать мощных роботов. Для любительских построек широкое применение нашли микроконтроллеры AVR. Они, на сегодняшний день, самые доступные и в интернете можно найти много примеров на основе этих МК. Чтобы работать с микроконтроллерами тебе нужно уметь программировать на ассемблере или на Cи и иметь начальные знания в цифровой и аналоговой электронике. В нашем проекте мы будем использовать Cи. Программирование для МК мало чем отличается от программирования на компьютере, синтаксис языка такой же, большинство функций практически ничем не отличаются, а новые довольно легко освоить и ими удобно пользоваться.

Что нам нужно

Для начала наш робот будет уметь просто объезжать препятствия, то есть повторять нормальное поведение большинства животных в природе. Всё что нам потребуется для постройки такого робота можно будет найти в радиотехнических магазинах. Решим, как наш робот будет передвигаться. Самым удачным я считаю гусеницы, которые применяются в танках, это наиболее удобное решение, потому что гусеницы имеют большую проходимость, чем колёса машины и ими удобнее управлять (для поворота достаточно вращать гусеницы в разные стороны). Поэтому тебе понадобится любой игрушечный танк, у которого гусеницы вращаются независимо друг от друга, такой можно купить в любом магазине игрушек по разумной цене. От этого танка тебе понадобится только платформа с гусеницами и моторы с редукторами, остальное ты можешь смело открутить и выкинуть. Так же нам потребуется микроконтроллер, мой выбор пал на ATmega16 – у него достаточно портов для подключения датчиков и периферии и вообще он довольно удобный. Ещё тебе потребуется закупить немного радиодеталей, паяльник, мультиметр.

Делаем плату с МК



Схема робота

В нашем случае микроконтроллер будет выполнять функции мозга, но начнём мы не с него, а с питания мозга робота. Правильное питание – залог здоровья, поэтому мы начнём с того, как правильно кормить нашего робота, потому что на этом обычно ошибаются начинающие роботостроители. А для того, чтобы наш робот работал нормально нужно использовать стабилизатор напряжения. Я предпочитаю микросхему L7805 – она предназначена, чтобы на выходе выдавать стабильное напряжение 5В, которое и нужно нашему микроконтроллеру. Но из-за того, что падение напряжения на этой микросхеме составляет порядка 2,5В к нему нужно подавать минимум 7,5В. Вместе с этим стабилизатором используются электролитические конденсаторы, чтобы сгладить пульсации напряжения и в цепь обязательно включают диод, для защиты от переполюсовки.
Теперь мы можем заняться нашим микроконтроллером. Корпус у МК - DIP (так удобнее паять) и имеет сорок выводов. На борту имеется АЦП, ШИМ, USART и много другого, что мы пока использовать не будем. Рассмотрим несколько важных узлов. Вывод RESET (9-ая нога МК) подтянут резистором R1 к «плюсу» источника питания – это нужно делать обязательно! Иначе твой МК может непреднамеренно сбрасываться или, проще говоря – глючить. Так же желательной мерой, но не обязательной является подключение RESET’а через керамический конденсатор C1 к «земле». На схеме ты так же можешь увидеть электролит на 1000 мкФ, он спасает от провалов напряжения при работе двигателей, что тоже благоприятно скажется на работе микроконтроллера. Кварцевый резонатор X1 и конденсаторы C2, C3 нужно располагать как можно ближе к выводам XTAL1 и XTAL2.
О том, как прошивать МК, я рассказывать не буду, так как об этом можно прочитать в интернете. Писать программу мы будем на Cи, в качестве среды программирования я выбрал CodeVisionAVR. Это довольно удобная среда и полезна новичкам, потому что имеет встроенный мастер создания кода.


Плата моего робота

Управление двигателями

Не менее важным компонентом в нашем роботе является драйвер двигателей, который облегчает нам задачу в управлении им. Никогда и ни в коем случае нельзя подключать двигатели напрямую к МК! Вообще мощными нагрузками нельзя управлять с микроконтроллера напрямую, иначе он сгорит. Пользуйтесь ключевыми транзисторами. Для нашего случая есть специальная микросхема – L293D. В подобных несложных проектах всегда старайтесь использовать именно эту микросхему с индексом «D», так как она имеет встроенные диоды для защиты от перегрузок. Этой микросхемой очень легко управлять и её просто достать в радиотехнических магазинах. Она выпускается в двух корпусах DIP и SOIC. Мы будем использовать в корпусе DIP из-за удобства монтажа на плате. L293D имеет раздельное питание двигателей и логики. Поэтому саму микросхему мы будем питать от стабилизатора (вход VSS), а двигатели напрямую от аккумуляторов (вход VS). L293D выдерживает нагрузку 600 мА на каждый канал, а этих каналов у неё два, то есть к одной микросхеме можно подключить два двигателя. Но, чтобы перестраховаться, мы объединим каналы, и тогда потребуется по одной микре на каждый двигатель. Отсюда следует, что L293D сможет выдержать 1.2 А. Чтобы этого добиться нужно объединить ноги микры, как показано на схеме. Микросхема работает следующим образом: когда на IN1 и IN2 подаётся логический «0», а на IN3 и IN4 логическая единица, то двигатель вращается в одну сторону, а если инвертировать сигналы – подать логический ноль, тогда двигатель начнёт вращаться в другую сторону. Выводы EN1 и EN2 отвечают за включение каждого канала. Их мы соединяем и подключаем к «плюсу» питания от стабилизатора. Так как микросхема греется во время работы, а установка радиаторов проблематична на этот тип корпуса, то отвод тепла обеспечивается ногами GND - их лучше распаивать на широкой контактной площадке. Вот и всё, что на первое время тебе нужно знать о драйверах двигателей.

Датчики препятствий

Чтобы наш робот мог ориентироваться и не врезался во всё, мы установим на него два инфракрасных датчика. Самый простейший датчик состоит из ик-диода, который излучает в инфракрасном спектре и фототранзистор, который будет принимать сигнал с ик-диода. Принцип такой: когда перед датчиком нет преграды, то ик-лучи не попадают на фототранзистор и он не открывается. Если перед датчиком препятствие, тогда лучи от него отражаются и попадают на транзистор – он открывается и начинает течь ток. Недостаток таких датчиков в том, что они могут по-разному реагировать на различные поверхности и не защищены от помех - от посторонних сигналов других устройств датчик, случайно, может сработать. От помех может защитить модулирование сигнала, но пока мы этим заморачиватся не будем. Для начала, и этого хватит.


Первый вариант датчиков моего робота

Прошивка робота

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

#include
#include

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

PORTC.0 = 1;
PORTC.1 = 0;
PORTC.2 = 1;
PORTC.3 = 0;

Значение 0xFF означает, что на выходе будет лог. «1», а 0x00 – лог. «0».

Следующей конструкцией мы проверяем, есть ли перед роботом препятствие и с какой оно стороны:

If (!(PINB & (1< {
...
}

Если на фототранзистор попадает свет от ик-диода, то на ноге микроконтроллера устанавливается лог. «0» и робот начинает движение назад, чтобы отъехать от препятствия, потом разворачивается, чтобы снова не столкнуться с преградой и затем опять едет вперёд. Так как у нас два датчика, то мы проверяем наличие преграды два раза – справа и слева и потому можем узнать с какой стороны препятствие. Команда «delay_ms(1000)» указывает на то, что пройдёт одна секунда, прежде чем начнёт выполняться следующая команда.

Заключение

Я рассмотрел большинство аспектов, которые помогут тебе собрать твоего первого робота. Но на этом робототехника не заканчивается. Если ты соберёшь этого робота, то у тебя появится куча возможностей для его расширения. Можно усовершенствовать алгоритм робота, как например, что делать, если препятствие не с какой-то стороны, а прямо перед роботом. Так же не помешает установить энкодер – простое устройство, которое поможет точно располагать и знать расположение твоего робота в пространстве. Для наглядности возможна установка цветного или монохромного дисплея, который может показывать полезную информацию – уровень заряда аккумулятора, расстояние до препятствия, различную отладочную информацию. Не помешает и усовершенствование датчиков – установка TSOP (это ик-приёмники, которые воспринимают сигнал только определённой частоты) вместо обычных фототранзисторов. Помимо инфракрасных датчиков существуют ультразвуковые, стоят подороже, и тоже не лишены недостатков, но в последнее время набирают популярность у роботостроителей. Для того, чтобы робот мог реагировать на звук, было бы неплохо установить микрофоны с усилителем. Но по-настоящему интересным, я считаю, установка камеры и программирование на её основе машинного зрения. Есть набор специальных библиотек OpenCV, с помощью которых можно запрограммировать распознавание лиц, движения по цветным маякам и много всего интересного. Всё зависит только от твоей фантазии и умений.
Список компонентов:
  • ATmega16 в корпусе DIP-40>
  • L7805 в корпусе TO-220
  • L293D в корпусе DIP-16 х2 шт.
  • резисторы мощностью 0,25 Вт номиналами: 10 кОм х1 шт., 220 Ом х4 шт.
  • конденсаторы керамические: 0.1 мкФ, 1 мкФ, 22 пФ
  • конденсаторы электролитические: 1000 мкФ х 16 В, 220 мкФ х 16В х2 шт.
  • диод 1N4001 или 1N4004
  • кварцевый резонатор на 16 МГц
  • ИК-диоды: подойдут любые в количестве двух штук.
  • фототранзисторы, тоже любые, но реагирующие только на длину волны ик-лучей
Код прошивки:
/*****************************************************
Прошивка для робота

Тип МК: ATmega16
Тактовая частота: 16,000000 MHz
Если у тебя частота кварца другая, то это нужно указать в настройках среды:
Project -> Configure -> Закладка "C Compiler"
*****************************************************/

#include
#include

Void main(void)
{
//Настраиваем порты на вход
//Через эти порты мы получаем сигналы от датчиков
DDRB=0x00;
//Включаем подтягивающие резисторы
PORTB=0xFF;

//Настраиваем порты на выход
//Через эти порты мы управляем двигателями
DDRC=0xFF;

//Главный цикл программы. Здесь мы считываем значения с датчиков
//и управляем двигателями
while (1)
{
//Едем вперёд
PORTC.0 = 1;
PORTC.1 = 0;
PORTC.2 = 1;
PORTC.3 = 0;
if (!(PINB & (1< {
//Едем назад 1 секунду
PORTC.0 = 0;
PORTC.1 = 1;
PORTC.2 = 0;
PORTC.3 = 1;
delay_ms(1000);
//Заворачиваем
PORTC.0 = 1;
PORTC.1 = 0;
PORTC.2 = 0;
PORTC.3 = 1;
delay_ms(1000);
}
if (!(PINB & (1< {
//Едем назад 1 секунду
PORTC.0 = 0;
PORTC.1 = 1;
PORTC.2 = 0;
PORTC.3 = 1;
delay_ms(1000);
//Заворачиваем
PORTC.0 = 0;
PORTC.1 = 1;
PORTC.2 = 1;
PORTC.3 = 0;
delay_ms(1000);
}
};
}

О моём роботе

В данный момент мой робот практически завершён.


На нём установлена беспроводная камера, датчик расстояния (и камера и этот датчик установлены на поворотной башне), датчик препятствия, энкодер, приёмник сигналов с пульта и интерфейс RS-232 для соединения с компьютером. Работает в двух режимах: автономном и ручном (принимает сигналы управления с пульта ДУ), камера также может включаться/выключаться дистанционно или самим роботом для экономии заряда батарей. Пишу прошивку для охраны квартиры (передача изображения на компьютер, обнаружение движений, объезд помещения).

По пожеланиям выкладываю видео:

UPD. Перезалил фотографии и сделал небольшие поправки в тексте.

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

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

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

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

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

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

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

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

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

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

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

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

Лет так 20 назад, когда я был студентом ЧПТ и работал на практике на Станкомаше (это отдельная эпичная история красочно описанная в моем блоге), то в послеобеденное время, как и положено добропорядочному студенту, отлынивал от работы, шараебясь в поисках ништяков по многочисленным внутренним промышленным свалкам, что щедро были рассыпаны возле каждого заброшенного цеха, а то и внутри цехов;) Чего там только ни было, но в основном, всякий чермет. Цветмет, включая обмотки движков, спиздили еще задолго до меня.

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

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

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


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

Микросхема LSM303DLH
Особо любопытно выглядит пузико — натуральная печатная плата. С дорожками и переходными дырками. Сразу расхотелось делать под ней дорожки. А то какая-нибудь заусеница на дорожке проковыряет лак на пузе и коротнет не туда.


Что еще не понравилось — контактные площадки не видно с торцов. Позиционировать и проверять точность запайки сложно. В этом плане QFN корпуса удобней.


Размером корпус 5х5 мм. Как тетрадная клеточка. Ужас:)

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

Итак, кто не помнит как управляются сервы может прогуляться в и освежить знания.

Возьмем, для начала, 8 сервомашинок. На каждую серву идет вот такой сигнал:


На каждую серву со своей ноги контроллера должна идти такая вот последовательность. Итого подобие ШИМ’a на 8 каналов. Как сгенерировать эту бодягу? Да проще простого. Принцип тут простой. Импульсы медленные — всего то 50Гц, меняются тоже нечасто — серва штука инерционная, поэтому даже сто раз в секунду ей не подергаешь. Так что времени на обработку у нас вагон и маленькая тележка.

Сами импульсы будут генерироваться одним таймером, в фоновом режиме. Принцип генерации прост: Все импульсы стартуют одновременно, выставляя свои уровни в 1.
Затем в таймер, в регистр сравнения, заносится время длительности первого импульса. По прерыванию сравнения происходит:

  • Сброс бита на порту первого канала
  • Загрузка в регистр сравнения таймера значения длительности второго импульса

Это очередной робоконструктор — механическая рука с пятью степенями свободы. Velleman Robotic Arm KSR10
Штука довольно редко встречающася, т.к. на Ebay я нашел всего одного продавца и в exUSSR эта редиска слать не желает. Встречается в нескольких буржуйских магазинах и вроде бы была в ЧиД, но оттуда была выкуплена нами:) Цена вопроса от 60…100 баксов.

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

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

Тут на помощь придет виртуальная машина. Суть в чем — в памяти контроллера, в основную программу, занесены основные процедуры управления устройством. Если это робот, то это могут быть такие простые команды как «вперед», «назад», «повернуть» и так далее.

Потом нам нужен обработчик скриптов, который бы брал откуда нибудь, нашу последовательность действий — скрипт и преобразовывал это в вызовы реальных кусков кода -микрооперации.
Обработчик скриптов может быть той же самой задачей диспетчера, запущенной фоном. А откуда он будет брать данные неважно. Их вполне можно засасывать по usart или тащить из EEPROM памяти. А можно загнать на IIC память и получится сменный картридж:)

Фирма Inex Global кроме робоконструкторов барыжит еще и прикольными мотор-редукторами. Теми самыми, что стоят в и . В Челябинск их периодически таскает . Я прикупил парочку на пробу, есть у меня одна задумка на их счет, но об этом несколько позже;)

Пока же расскажу о самом движке. Бывают они двух моделей IE-BO2-120M и IE-BO2-48M , отличаются друг от друга передаточным отношением редуктора 1:120 и 1:48.

Помните я обещал русский мануал к ? Так вот, я не успел и конструктор смели с прилавков быстрей чем я договорился выцыганить книжку на сканирование. Однако Bschepan , один из довольных обладателей этой игрушки, сделал доброе дело и выложил скан упиханый в DejaVu.

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

Если взять, например, транзистор MJE3055T у него максимальный ток 10А, а коэффициент усиления всего около 50, соответственно, чтобы он открылся полностью, ему надо вкачать в базу ток около двухста миллиампер. Обычный вывод МК столько не потянет, а если влючить между ними транзистор послабже (какой-нибудь BC337), способный протащить эти 200мА, то запросто. Но это так, чтобы знал. Вдруг придется городить управление из подручного хлама — пригодится.

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

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

Попутно скидывая мне мылом некоторые свои наработки.

SWG:

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

Под бамперами будет крепиться пластина толщиной миллиметров 10 из довольноплотного поролона или даже микропористой резины, пока еще не решил, пробую разные материалы. Надо чтобы был мягкий, но не очень. Будет выступать запределы плат миллиметров на 10-15, защищая светодиоды подсветки и сами платы. Пока просто положил платы бамперов в коробку, чтобы показать общуюкомпоновку.

Определившись с размещением и креплением плат, сделаю соединительные шлейфики из МГТФ, оптимальной длины, чтобы зря не болтались,но и не в натяжку. Прикидываю также варианты, конструкцию и размещение датчиков одометров, и оборудования, которое будет установлено в будущем,чтобы по нескольку раз не переделывать.

На платах бамперов синие колодочки снизу — датчики пола с фоторезисторами ибелыми светодиодами подсветки. (Сделал из клеммников, слегка рассверлив их местами). Прозрачные светодиоды сверху — подсветка ИК локатора на TSOP (стоят посредине, вверх ногами).Черные кубики на внутренних углах — оптопары на отражение датчиков столкновения. Над ними к боковым стенкам будуткрепиться угольники — шторки с белой областью на черном фоне или отверстием определенной формы.

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

ДПМ-25-Н1-7Т с редукторами (27v, но неплохо тянут уже при 12, надо будет больше — сделаю преобразователь 12->27 ), и самодельный поворотный узел с роликом (третье колесо).

Потребление от 12v: 33 мА при выкл. двигателях, при макс. скорости без нагрузки (колеса не касаются пола) = 103 мА вперед, 115 мА назад. При одном заклиненном колесе — 300 мА, при обоих заклиненных колесах = 500 мА.
L293DN чуть теплая. Будет греться — приклею радиатор. Да, частоту ШИМ взял пока 500 Гц. (период 2 мс). Померяю скорость нарастания тока в двигателях — определю более оптимальную (За самый короткий импульс ток в двигателе должен успеть достигнуть максимума).
Максимальная скорость движения по полу сейчас 15-20 см/сек. Больше мне пока ни к чему, слишком быстро будет комнату пробегать. Диаметр колес = 80мм (резиновые “бублики” вроде от какой-то сантехники, полно на базаре).

Честно говоря, я был сильно удивлен когда нагуглил характеристики движка ДПМ

Блок питания.
У нас же стоит свинцовый аккумулятор на 12 вольт, а контроллеру нужно 5 вольт. Вот я и сварганил импульсный блок питания. Можно было, конечно, поставить какой нибудь LM7805 (как у меня на макетке) и на нем сбросить напряжение, но это тупой метод. Дело все в том, что разницу напряжений LM7805 отрыгнет в виде тепла. Так что КПД данного девайса будет ниже 50% , а питание у нас батарейное. Так что выход один — это DC-DC преобразование. В качестве контроллера взял проверенный временем, популярный, доступный и дешевый MC33063A . Изобретать ничего не стал и взял типовую понижающую схему (Step — Down ) из его даташита. Как работает схема этого блока питания я расскажу несколько позже, отдельным постом. После выхода статьи в «Хакер», где я толкнул статью про источники питания.

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

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

Важнейшим принципом конструирования 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