Поиск:  
  
Технологии робототехники
Фотогалерея
Книжная полка
Доска объявлений
Форумы
Контакты

  






  ***

Крутой гонщик (low rider): мой первый робот, следующий по указанному пути.


РобоКлуб/Проекты/Мобильные/Крутой гонщик (low rider): мой первый робот, следующий по указанному пути.



Крутой гонщик (low rider): мой первый робот, следующий по указанному пути

Перевод статьи Джона Вэдли (John Wadley), описывающей созданного им робота и опубликованной на сайте Dallas Personal Robotics Group.

Предпосылки. Конструирование роботов стало очень популярным хобби у любителей программирования и электротехники по всему миру. Интерес к нему растет скачками с каждым днем благодаря постоянно появляющейся в интернете информации. В старших классах школы я время от времени занимался этой темой, но серьезно не увлекался, пока недавно не наткнулся в интернете на информацию о Dallas Personal Robotics. Group (DPRG). Показалось, что это отличная возможность для такого новичка, как я, узнать подробнее о роботостроении. Мои предчувствия подтвердились после первого же визита в DPRG в феврале 1997 г. Компания предоставила мне место, где можно узнать больше о технике конструирования роботов от других членов, поделиться своим опытом в электронике, пользоваться книгами и оборудованием, принадлежащим группе, пользоваться свободным доступом и получать от этого удовольствие.

Вскоре после того, как я присоединился к группе, в DPRG решили провести конкурс. Я все еще раздумывал, сколько времени и денег я могу уделить своему новому хобби, но решил попытаться. Требования конкурса были очень простыми и не требовали от претендентов особого оборудования или опыта. Надо было построить робота, который должен был автоматически пройти от старта к месту разворота и обратно. Область ограничивалась липкой лентой, а с трех сторон были стенки. Липкой лентой был отмечен курс для более сложных роботов, и им надо было по нему пройти. Оценка выставлялась по симпатиям зрителей и/или времени, затраченным роботом на дорогу. Дополнительные очки начислялись за отслеживание заданной траектории, визуальные и звуковые эффекты, голосовой, или звуковой запуск и внешний вид робота. Несмотря на недостаток опыта в робототехнике я принял вызов.

Схема области для соревнований:

                       ЛЕНТА
 .---------------------------------------------------------.
 |          |                                   |          |
 |    ----------------------------------------------.    ^ |
С|          |                                   |    \   | |С
Т|          |                                   |     |  | |Т
Е|          |                                   |     |4'| |Е
Н|          |                                   |     |  | |Н
А|          |                                   |     |  | |А
 |  СТАРТ   |                                   |    /   | |
 |    ----------------------------------------------`    v |
 |          |                                   |          |
 `---------------------------------------------------------`
                       СТЕНА

Меня увлекают трудности, но казалось, что обстоятельства складывались не в мою пользу. За три месяца я должен был с нуля построить работающего робота для соревнований. Для победы мне была необходима простая и эффективная стратегия. Я понимал, что мог рассчитывать только на одобрение аудитории. Сделать надо было только самое необходимое с использованием имеющихся инструментов и деталей. Что казалось одобрения аудитории, так я почувствовал, что отслеживание линии – это то усложнение, которое привлечет внимание. Если останется время, я смогу добавить световую и звуковую сигнализацию и голосовую активацию. Чтобы слишком часто не изобретать велосипед, я решил воспользоваться тем, что имелось в наличии. Сначала я взял уродливый грузовик Radio Shack с дистанционным управлением, который пылился у меня на полке. Несмотря на то, что у меня уже был достаточный опыт в разработке и применении цифровых и микропроцессоров, мне не хватало оборудования для создания сложного контроллера на микропроцессоре. Также у меня не было программатора СППЗУ (стираемое программируемое постоянное запоминающее устройство). Я должен был обойтись простым динамическим контроллером, сделанным из стандартных логических схем, которые мне приходилось спаять самому.

Конструкция «скромного наездника». Конструировать робот я начал, воспользовавшись своим грузовиком с дистанционным управлением, и сразу сделал большой шаг вперед. Он дал мне колеса с моторами и часть системы управления, реализованные в стандартной пластиковой основе. Если бы я смог определить, как и куда внедрить свои сигналы управления, мне бы осталось просто добавить свои сенсоры и блок управления. Я начал этап неприятного инженерного анализа электроники ходовой части этого самого грузовика. Это была довольно нудная работа, исключительно с помощью мультиметра, но она облегчалась простотой конструкцией автомобиля фирмы Radio Shack. Все электронные соединения были на поверхности платы, а все компоненты легко определялись. Мой опыт инженера-электрика мне очень пригодился при разгадывании предназначения разных контуров. Надеюсь, что предлагаемое описание позволит многим, не столь продвинутым в электротехнике, разобраться со своими дистанционно управляемыми автомобилями и использовать их в создании своего робота.

Я определил, что приемник состоит из колебательного контура, который возбуждается радио сигналом от антенны. Сигнал с этого контура проходит через фильтр, усиливается и используется для генерации сигналов синхронизации и сброса как для счетчика со сквозным переносом на интегральной схеме (MC14024BCP), так и для триггера данных интегральной схемы (MC14174BCP). Счетчик отсчитывает некоторое 6-битное число. Два младших двоичных разряда не используются. Я думаю, что они нужны для учета шума, возникающего при запуске принимающего колебательного контура. Следующие 4 бита (после двух младших до старшего двоичного разряда) используются для сигналов, требующих движение вперед, назад, вправо и влево. После определения переданного числа счетчиком, управляющие сигналы фиксируются триггером и хранятся там некоторое время, пока и счетчик и триггер не вернутся в начальное положение. Управляющие сигналы вперед/назад с выхода триггера поступают на контур H-моста, который контролирует моторы. Управляющие сигналы вправо/влево поступают на другой контур H-моста, контролирующего следящий электродвигатель рулевого управления. Блок схема электроники автомобиля с дистанционным управлением приведена ниже.

      _
     \ / <-- Антенна
      v
      |
      |   .-----------.    .----------.    .--------.
      `-->| контур    |--->| контур   |--->|контур  |---.
          |осциллятора|    |фильтрации|    |усиления|   | запуск
          `-----------'    `----------'    `--------'   | радиочастотного
                                                        | таймера
      .-------------------------------------------------`
      |
      |    .---------------------.             left .----------.
      `--->| запуск/сброс        |     .----------->|  H-мост  |
           | таймера             |     |            | рулевого |
           `---------------------`     | .--------->|управления|
               |  | Сброс   |  |       | |  направо `----------`
               |  |         |  |       | |
 Синхронизация |  | Синхр.  |  | Сброс | |
               v  v         v  v       | |
           .---------.    .---------.  | |
           | Счетчик |-/->| Триггер |--` |  forward .----------.
           |         | 4  | данных  |----`   .----->|  H-мост  |
           `---------`    |         |--------`      |управления|
                          |         |-------------->| моторами |
                          `---------`         назад `----------`

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

                            Vdd – здесь и ниже – разъем питания. 
                             ^
                             |                     |\
                             > 390Ком          .---| > O--- >  Синхронизация
                      22нФ   >                 |   |/          счетчика
                             >   MC14069UBCP   |            (контакт 1) 
                        ||   |   |\     |\     |               
          Сигнал от > ---||---*---|>O---| > O--*---.
радиочастотного таймера ||   |   |/     |/     |   |
                             |                 |   |
                             `--------VVVV-----`   |
                                      470Ком       |
                                                   |
             .-------------------------------------` 
             |
             |        Vdd
             |         ^
             |         |
             |         > 1МОм
             |         >
             |         >   MC14069UBCP             1нФ
             |         |   |\      |\               ||
             `---|<|---*---| > O-*-| > O---*---*----||---*--- > запуск триггера
                1N914  |   |/    | |/      |   |    ||   |     (Контакт 9) 
                       |         |         |   |         >
           Точка       |         |  ||     |   |         > 4700Ом
           ввода A --> `---------+--||-----`   |         >
                                 |  ||         |         |
                                 |    2.2нФ    |        ---
             .-------------------`             |        ///
             |                                 |
             |                                 |        Vdd
             |                                 |         ^
             |                                 |         |
             |                                 |         > 56КОм
             |                                 |         >
             |                                 |         >
             |                                 |         |
             `---|<|---*---*---> Сброс         `---|<|---*--->    Сброс 
                1N914  |   | Триггера           1N914    |        счетчика
                       |   | (Контакт 1)                 |        (Контакт 2) 
                       |   |                             |        
                100нФ ---  > 2.2Мом                     --- 1нФ
                      ---  >                            ---
                       |   >                             |
                       |   |                             |
                       |   |                             |
                      --- ---                           ---
                      /// ///                           /// 

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

Сигнал от радиочастотного таймера: 
    ---------------. .-. .-. .-    . .-. .-. .-------------------- 
                   | | | | | | ....| | | | | |
                   `-` `-` `-`     `-` `-` `-`
                       Частота:    <= 2МГц и  >=629Гц
                       Период:     >= 500нс и <=1.59мс
                       Вперед:     от 8 до 11 тактов
                       Назад:      от 16 до 19 тактов
                       Налево:     от 32 до 35 тактов
                       Направо:    от 64 до 67 тактов 

Радиочастотный таймер испускает последовательность импульсов, по которым счетчик, находящийся в основном состоянии, отсчитывает определенное число, определяемое поданной командой. Этот сигнал начинается с максимума и, в соответствии с логикой, им же должен закончиться. Третий бит счетчика используется для приема сигнала движения вперед, четвертый бит для сигнала назад и так далее. Эта система позволяет двум низшим битам находиться в произвольном случайном состоянии во время прихода импульса. Для комбинаций сигналов, например, вперед и налево, необходимо отправить число импульсов, равное сумме тактов для каждой команды плюс, или минус 2 бита, отнесенных на шум, что дает для этого примера от 40 до 43 импульсов. Я не знаю точную частоту радиочастотного таймера, потому что не мог ее измерить. Я определил частоту и длительность импульса на основании максимальной скорости счетчика и минимальной задержки других элементов дистанционного блока управления.

Сигнал синхронизации счетчика: 
                   .-. .-. .-.     .-. .-. .-. 
                   | | | | | | ....| | | | | |
    ---------------` `-` `-` `-`   ` `-` `-` `--------------------

Этот сигнал точно повторяет импульсы радиочастотного таймера, но инвертирован. Это тот сигнал, который идет на разъем счетчика на интегральной схеме. Он должен начинаться с минимума и, в соответствии с логикой, им же заканчиваться, но если по какой-либо причине сигнал таймера прервется в минимуме, то за 12,4мс сигнал таймера спадет обратно до минимума.

Сигнал запуска триггера: .-. | | -------------------------------------` `------------------ 

Этот сигнал используется для сохранения битов, определенных счетчиком с начала команды отсчета, в триггере. Он достигает максимума в конце отсчета сигналов и потом спадает до минимума за 6,78 мс и остается в этом состоянии до начала следующего отсчета.

Сигнал сброса счетчика:
    -----------.                             .---------------- 
               |                             |
               `-----------------------------`

Этот сигнал сбрасывает счетчик после того, как его результаты были сохранены в триггере. Он принимает минимальное значение во время работы счетчика, а после окончания, за 80,.8 мс, переходит в максимальное значение, которое принимает до следующего начала работы.

       ______       
Сигнал сброса триггера: 
               .-----------------------------------------.    
               |                                         |
    -----------`                                         `----

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

Для внедрения собственных сигналов управления я распаял интегральную схему счетчика и заменил ее пустым разъемом, чтобы в последствии снова использовать автомобиль в режиме дистанционного управления для моего сына. Убрав счетчик, я смог подать управляющие сигналы на вход триггера с использованием платы таймера 555 (555 Timer IC), настроенную в режим работы неустойчивого осциллятора, для генерации сигналов запуска и сброса триггера. Сигнал со схемы 555 таймера подавался в точку после диода (на рисунке называется точкой A) чтобы воспользоваться имеющимися контурами задержки сигналов запуска и сброса. Вот схема таймера из книги "Radio Shack Engineer's Mini-Notebook of 555 Timer IC Circuits" Форреста Мимса третьего (Forrest M. Mims, III)

            Vdd    Vdd
             ^      ^
             |      *--.
             >      |  | 
       68Ком >    .-------. 
             >    | 8  4  |
             |    |       |
             *--->|7 555 3|---> На точку A инжектирования сигнала
             |    |       |
             >    |       |     Длительность импульса, максимум = 7,1мс
      150КОм >    |       |     Длительность импульса, минимум  = 4,9мс
             > .->|6      |     Частота        = 83,3Гц
             | |  |       |
             *-*->|2      |
             |    |   1   |
       47нФ ---   `-------`
            ---       |
             |        |   
            ---      ---
            ///      ///   

Сложной задачей была настройка рабочего цикла и частоты без осциллографа. Я думал, что смогу постоянно синхронизировать триггер, чтобы обновлять сигналы, поступающие на H-мосты. Оказалось, что вычисленные нижние пределы частоты не соответствуют истине. Потом я вспомнил, что читал в Интернете про серводвигатели, которые требуют обновление команд управления с частотой раз в 10-20 мс. Я установил ее для своего осциллятора, и это сработало. Мне понадобится осциллограф, чтобы понять, почему же это работает. Я думаю, что триггер не сбрасывается, а только синхронизируется введенным сигналом с частотой, подходящей для контроллера сервомотора. Это означает, что исходная частота запуска следования импульсов должна быть, по крайней мере, 7,.6 кГц или выше, чтобы успеть дойти до 63, прежде чем триггер сбросится.

Для управления я должен подавать четыре сигнала: налево, направо, вперед и назад. Ранее нейтральным состоянием для системы рулевого управления было отсутствие сигналов поворота в обе стороны, а для ходовой части – отсутствие сигналов движения вперед и назад. Я сделал так, чтобы состояние, когда подаются команды поворота одновременно в обе стороны, а также движения одновременно вперед и назад были запрещенными. Это позволяет избежать противоречивых сигналов управления, которые могли бы повредить моторы. Контроллер был реализован в виде, аналогичном ПЗУ (жестко смонтированная мультиплексорная логическая схема). Я собирался сделать только 4 управляющих сигнала с датчиков с помощью методики, называемой Отображение изменяемого ввода (ОИВ), (Variable-Entered Mapping, VEM) для передачи 16 состояний моих сенсоров в четыре 8-канальных мультиплексора (прошу прощения у тех, кому я ошибочно назвал эту методику свертывание мультиплексоров ("mux folding")). Ниже приведен простой пример схемы ОИВ.

  A B C | Y  При прямой реализации мультиплексора на основании этой таблицы истинности
  ------+--  в качестве селекторов 8 канального мультиплексора будут использоваться
  0 0 0 | 0  сигналы A,B и С, которые смогут принимать значения 0 или 1. 
  0 0 1 | 1  При использовании свертки мультиплексоров таблица истинности из восьми
  0 1 0 | 0  состояний может быть отображена для 4 канального мультиплексора, если
  0 1 1 | 1  использовать каналы B и С в качестве входных для селектора и используя
  ------+--  0, 1, канал A, и канал Abar в качестве входных данных для мультиплексора. 
  1 0 0 | 0  
  1 0 1 | 1           |\ .---A,B,C
  1 1 0 | 1           | \v
  1 1 1 | 0     0 --->|D0\
                1 --->|D1 |---> Y
                A --->|D2 |
             Abar --->|D3/
                      | /
                      |/

  Если B=0 и C=0, мы хотим, чтобы на выходе Y был тождественный 0, поэтому вход D0 мультиплексора может быть присоединен к логическому 0, т.е. заземлен. 
  При B=0 и C=1, мы хотим, чтобы на выходе Y была всегда логическая 1, поэтому вход D1 мультиплексора может быть присоединен к логической 1, т.е. VDD. 
  При B=1 и C=0, мы хотим, чтобы на выходе Y был сигнал, совпадающий с сигналом A, поэтому вход D2 мультиплексора может быть присоединен к контакту сигнала A. 
  При B=1 и C=0, мы хотим, чтобы на выходе Y был сигнал, совпадающий с сигналом Abar, поэтому вход D3 мультиплексора может быть присоединен к контакту сигнала Abar. 

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

Я сопоставил данные сенсоров управляющим сигналам следующим образом:

Обозначение | Сигнал с сенсора     | Обозначение | Команда двигаться 
            | расположенного       |             | (поворачивать) 
   ДЛ   =     Далеко слева               Л   =      Налево
   БЛ   =     Близко слева               П   =      Направо
   БП   =     Близко справа              В   =      Вперед
   ДП   =     Далеко справа              З   =      Назад

 ДЛ БЛ БП ДП | Л П | В З | Комментарии
 ------------+-----+-----+---------------------------------------------------
  0  0  0  0 | 0 0 | 1 0 | Лента не видна – двигаться вперед
  0  0  0  1 | 0 0 | 0 1 | Лента далеко справа – вернуться назад и попытаться еще раз. 
  0  0  1  0 | 0 1 | 1 0 | Лента близко справа – повернуть направо и двигаться вперед.
  0  0  1  1 | 0 1 | 1 0 | Лента справа (близко и далеко) - направо и вперед. 
 ------------+-----+-----+---------------------------------------------------
  0  1  0  0 | 1 0 | 1 0 | Лента близко слева – Повернуть налево и двигаться вперед. 
  0  1  0  1 | 0 0 | 1 0 | Две ленты? – Игнорировать правую, двигаться вперед. 
  0  1  1  0 | 0 0 | 1 0 | Две ленты? – Игнорировать одну, двигаться вперед. 
  0  1  1  1 | 0 1 | 1 0 | Три ленты?? – Игнорировать левую, повернуть направо. 
 ------------+-----+-----+---------------------------------------------------
  1  0  0  0 | 0 0 | 0 1 | Лента далеко слева – вернуться назад и попытаться еще раз. 
  1  0  0  1 | 0 0 | 0 1 | Две ленты? – Игнорировать обе, двигаться вперед. 
  1  0  1  0 | 0 0 | 1 0 | Две ленты? – Игнорировать левую, двигаться вперед. 
  1  0  1  1 | 0 1 | 1 0 | Три ленты?? – Игнорировать левую. Повернуть направо. 
 ------------+-----+-----+---------------------------------------------------
  1  1  0  0 | 1 0 | 1 0 | Лента слева (близко и далеко) – Повернуть налево, и вперед. 
  1  1  0  1 | 1 0 | 1 0 | Три ленты?? – Игнорировать правую, повернуть налево. 
  1  1  1  0 | 1 0 | 1 0 | Три ленты?? – Игнорировать правую, повернуть налево. 
  1  1  1  1 | 0 0 | 0 0 | Заграждение из лент, или финиш - Остановиться
 ------------+-----+-----+---------------------------------------------------

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

Для каждого детектора обнаружения ленты я сделал по два делителя напряжения. Первый состоял из переменного резистора на 10 кОм, который использовался в качестве управляемого эталона напряжения. Второй был из CdS фоторезистора и резистора сопротивлением 100 кОм, выходное напряжение на нем было пропорционально освещенности. В Radio Shack я купил два комплекта сульфидно-кадмиевых элементов и выбрал фоторезисторы с примерно одинаковым сопротивлением. Напряжение с этих делителей подавалось на блок сравнения (компаратор) с выходом с открытым коллектором. Для контроля выходных данных блока сравнения я подключил светодиод и резистор, чтобы видеть каждый сигнал, поступающий на схему управления. Когда освещенность фоторезистора возрастала (видна яркая лента), его сопротивление уменьшалось, поэтому выходное напряжение делителя возрастало и превосходило эталонное. Таким образом, на выходе блока сравнения получалось высокое напряжение, и светодиод выключался. Когда освещенность фоторезистора падала (виден темный паркет), его сопротивление возрастало, напряжения с выхода этого делителя становилось меньше эталонного, блок сравнения переключался, и светодиод загорался. Два инвертора, строго говоря, избыточные, использовались в качестве буферной схемы перед контроллером. Я мог бы инвертировать сигнал делителя с фоторезистором, воспользовавшись, таким образом, один инвертор, но они были меня готовыми, и я не хотел перепаивать схему.

                                     Vdd
        Vdd   Vdd                     ^
         ^      ^                     >  2,7кОм
         |      |                     >  
         >      > переменный |\      ---
  CdS    >      > резистор   | \      V  зеленый светодиод
 ~68кОм  >      > 10кОм      |  \    ---
         >      >< -----------| -\    |       |\    |\
         |      >            |    >---*-------|>O---|>O---> выход датчика 
         *------> ------------| +/            |/    |/       на систему управления
         |      >            |  /             74HCT04's
         >      >            | /
 100кОм  >      >            |/
         >      >            LM339N
         |      |            счетверенный 
        ---    ---           компаратор
        ///    ///

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

Ра сположение датчиков:

      Д Д       Д Д <- Сульфидно-кадмиевые датчики
      WWW       WWW
      WWW-------WWW <- Передние колеса
      WWW       WWW

WWW WWW WWW-------WWW <- задние колеса WWW WWW

Мне пришлось сделать сенсоры заново после мучений с несколькими вариантами макета. Я расположил сульфидно-кадмиевые сенсоры внутри (на расстоянии 2,5 см от края) бумажной трубки диаметром четверть дюйма, на высоте 2,5 см от пола. Таким образом, сенсор может видеть до 2,5 см пола. Область видимости получается 2,5 см потому, что в часть сенсора около трубки попадает информация с участка пола, расположенного между точкой прямо напротив нее вдоль трубки и до точки на полу в половине дюйма по другую сторону оси трубки. Так как сенсор занимает весь диаметр трубки, то с учетом другой части сенсора, получается как раз указанная величина. Пробка из бумажного платка Kleenex закрывала датчик от света сверху. Я пропустил провода от контактов датчика через эту рукотворную пробку к разъему на плате управления.

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

              | <-лента  Бумажная трубка
            ^ |   на     |        датчик
            | |   полу   |        |
            | |          v        v
  Область   | |          --------------------
         1" | |       ^           H------------ <-Vdd
  видимости | |  1/4" |           H @@@ <-- пробка из носового платка
            | |       v           H------------ <-к резистору 33кОм и блоку сравнения
            | |          --------------------
            | |
            v |<--------><--------><-------->
              |   1"        1"         1"

Питание на плату управления поступало из контуров моего автомобиля с дистанционным управлением, дополнительно я добавил светодиодный сигнализатор, чтобы знать, когда он включен. Чтобы уменьшить шум я не пожалел и добавил конденсаторы емкостью 0,01 мкФ на каждую плату.

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

Схемы отладки:

           Vdd                                  Vdd
            ^                                    ^
            |                                    |
            >                                    >
            > ~10кОм                             > ~2,7кОм
            >                                    > 
            |                                    |
            *---> тестовый входной сигнал        _ 
            |                                    V светодиод
            O                                    -
             / переключатель                     |     
            o  платы          выходной сигнал >--`        
            |                             
           ---                             
           ///                             

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

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

Заключение. По-моему, я попался. Моим следующим шагом будет раздобыть набор инструментов для реализации микроконтроллеров чтобы сделать более продвинутую схему управления движением и датчиками. Я знал, когда начинал работы, что сульфидно-кадмиевые фоторезисторы очень медленные, но не знал, что настолько, чтобы так сильно замедлить автомобиль. В следующих версиях робота я собираюсь использовать инфракрасную систему, или светодиодные устройства индикации Bright LED. Просмотрев видеозапись конкурса, я думаю, что у Клея Тиммонса (Clay Timmons) была более продвинутая конструкция датчиков с использованием мощных светодиодов в его роботе "Чудо одной недели" (One Week Wonder). Если бы его робот не застрял на ленте и не съехал с курса, я думаю, он бы обогнал моего робота. Я думаю, что вместо того, чтобы удерживать ленту между двумя датчиками, он пытался удерживать ее под одним, используя два, или три датчика поворота одновременно для уменьшения рыскания. Я был поражен, как гладко "Чудо одной недели" двигается по курсу за счет этой схемы.

Информация об авторе. Джон Вэдли (John Wadley) получил степень бакалавра инженера электрика со специализацией в вычислительной технике в Университете Канзаса (University of Kansas) в 1989 году. Он работает в Texas Instruments с 1990 года инженером по испытанию и электротехником, занимающимся речевыми системами на микропроцессорах и разработкой цифровых процессоров сигналов для рынка Цифровых Телефонных Автоответчиков (Digital Telephone Answering Devices (DTAD)). Сейчас он работает над степенью магистра инженера электрика со специализацией "цифровые микроэлектронные системы" в Техасском Университете (University of Texas) в Далласе.



 


Автор конструкции: John Wadley
gale
Dallas Personal Robotics Group

Комментарии

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