Двигаться по полосе

Идея создать "глазастого" робота не нова.

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

Одна из наиболее подробных инструкций по созданию такого робота здесь: http://myrobot.ru/stepbystep/el_simple_robot.php. Это очень хорошая статья про робота на одной микросхеме L293D (драйвер двигателя). В этой статье описывается робот, двигающийся по полосе.

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

Что нам понадобится?

  • платформа-машинка с двумя коллекторными двигателями с редукторами;
  • батарейки или аккумуляторы;
  • плата Марсоход;
  • "глаза" - светочувствительные датчики.

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

Светочувствительные датчики от принтера

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

Схема подключения датчиков вот такая:

Схема подключения датчиков к микросхеме Altera

На выходы DP и DN в проекте для платы Марсоход подаем сигнал логической единицы - это будет питание на излучающий светодиод. Коллекторы фототранзисторов подключаем ко входам key[2] и key[3]. Внутри микросхемы в свойствах этих входов мы включили "pull-up" резистор (подтягивающие к логической единицы резисторы).

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

Крепим эти датчики к нашей машинке вот так:

машинка со светочувствительными датчиками

Еще одно фото:

two_eyes_car2

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

Взять проект для платы Марсоход можно здесь:

Если Вы откроете проект в среде Altera QuartusII, то увидите следующую логическую схему:

prj_goline

Возможно Вы будете удивлены: "Зачем в таком проекте еще и счетчик и компаратор?". Это такая регулировка мощности/скорости двигателей. На двигатели мы подаем не постоянное напряжение, а импульсы. Чем шире подаваемые импульсы и короче паузы между ними, тем быстрее едет машинка.

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

На большом листе белой бумаги рисуем черную "дорожку". И пробуем запустить робота.

Уррррра!!! Получилось!!!

 

 


Добавить комментарий