Главная страница
Навигация по странице:

  • 4.27. ПОДКЛЮЧЕНИЕ УЛЬТРАЗВУКОВОГО ДАЛЬНОМЕРА К МИКРОКОНТРОЛЛЕРУ

  • Устройства управления роботами, схемотехника и программирование (М. Предко, 2004). Устройства управления роботами, схемотехника и программирование. Устройствауправления роботамисхемотехника и микроконтроллеров picmicro


    Скачать 6.79 Mb.
    НазваниеУстройствауправления роботамисхемотехника и микроконтроллеров picmicro
    АнкорУстройства управления роботами, схемотехника и программирование (М. Предко, 2004).pdf
    Дата29.08.2017
    Размер6.79 Mb.
    Формат файлаpdf
    Имя файлаУстройства управления роботами, схемотехника и программирование .pdf
    ТипРеферат
    #8441
    КатегорияПромышленность. Энергетика
    страница21 из 33
    1   ...   17   18   19   20   21   22   23   24   ...   33
    4.26. УЛЬТРАЗВУКОВОЙ ДАЛЬНОМЕР
    Мы уже разобрали два метода реализации детектора столкновений: механический контактный и на основе приемника отраженного инфракрасного излучения. В этом разделе будет рассмотрен третий метод обнаружения объектов; он также будет бес- контактным, только на этот раз мы будем использовать ультразвук. Примерно та- ким же образом летучие мыши ориентируются в пространстве: они излучают впе- ред направленный пучок звуковых колебаний и ловят отраженный сигнал.
    Звуковые волны распространяются в воздухе с определенной скоростью, поэтому по задержке прихода отраженного сигнала можно с достаточной степенью точности судить, на каком расстоянии находится тот предмет, который отразил звук.
    Оба бесконтактных способа обнаружения объектов (инфракрасный и ультра- звуковой) прекрасно дополняют друг друга: предметы, которые не отражают ин- фракрасные лучи, например пластмассовые детали черного цвета, могут обнару- живаться ультразвуковым детектором, поскольку отражают звуковые волны,
    и наоборот, материалы, прозрачные для ультразвуковых колебаний (вроде тон- кой ткани), могут быть замечены с помощью инфракрасного детектора.
    Ультразвуковые дальномеры или сонары), используемые на морских кораблях и подводных лодках, работают несколько иначе, чем описан- ный здесь дальномер. Излучатель гидролокатора не имеет узкой диаграммы на- правленности - он излучает ультразвуковой сигнал во всех направлениях, а для определения направления до ближайшего объекта используется узконаправлен- ный микрофон. При этом расстояние до объекта вычисляется не по задержке прихода отраженного сигнала, а с помощью триангуляции по нескольким под- ряд сделанным изменениям при различных координатах движущегося корабля.

    Подключение к микроконтроллеру периферийных устройств 253
    Дело в том, что скорость звука в воде сильно зависит от ее температуры, плотно- сти, количества находящейся в ней соли и многих других факторов, поэтому не может служить основой для точных измерений.
    Для ультразвукового обнаружителя объектов удобно использовать какой-ни- будь готовый промышленный например дальномер фотоаппарата Polaroid
    6500. Он обеспечивает довольно небольшой обзор, игнорируя все, что находится вне угла ±5°. Этот недостаток можно компенсировать, разместив дальномер на управляемом который мог бы периодически изменять его ориентацию,
    сканируя пространство необходимой ширины.
    Значительно более серьезная проблема состоит в том, что дальномер потреб-
    I ляет много энергии, в результате чего резко снижается срок службы батарей авто-
    I
    робота. Например, дальномер Polaroid 6500 во время генерации ультра- звукового сигнала имеет ток потребления около 1 А. Разумеется, сигнал можно
    ; генерировать с перерывами, запасая во время паузы необходимую энергию в
    | денсаторах, но это только частично решает проблему.
    При своей работе ультразвуковой дальномер посылает узконаправленный зву- импульс и измеряет, с какой задержкой придет отраженный сигнал. В воз- скорость звука составляет около 1087,4 футов в секунду (то есть примерно
    331,4 м/с); значит, дистанцию длиной в один дюйм (2,54 см) туда и обратно звук преодолеет за 153,3 с. Если, например, объект находится на расстоянии одного сантиметра от ультразвукового детектора, то отраженный сигнал будет обнару- j жен спустя 60,4 мкс после того, как сработает излучатель. Большинство ленных дальномеров (в том числе и Polaroid 6500) игнорирует отраженный сиг- нал, пришедший с задержкой, меньшей 2,76 мс, то есть исходящий от предметов,
    расположенных на расстоянии менее 18 дюймов (46 см).
    Ультразвуковой дальномер Polaroid 6500 выпускается с 1970-х годов. Сначала он был очень дорогим, но сейчас широко доступен и весьма надежен в работе.
    Поэтому его часто используют радиолюбители в своих проектах.
    Дальномер Polaroid 6500 состоит из двух частей: из небольшой печатной платы и круглого черного блока, в котором расположен излучатель. Плата соединена с де- тектором с помощью провода длиной около 15 дюймов (38 см). На плате располо- жен разъем, с помощью которого она может сопрягаться с различны- ми устройствами. Назначение контактов этого разъема объясняется в табл. 4.14.
    Таблица
    Назначение контактов разъема дальномера Polaroid 6500
    Вывод
    Имя
    Комментарий
    /
    2
    Вход
    Когда
    -
    любой отраженный
    игнорируется
    3
    4
    5
    6
    INIT
    -
    OSC
    Вход
    Выход
    Когда INIT =
    изучается
    инфракрасный импульс
    Импульсы частотой 49,4 кГц

    254 Устройства управления роботами
    Таблица
    Назначение контактов разъема дальномера Polaroid 6500
    (окончание)
    Вывод
    7
    8
    9
    Имя
    ECHO
    Vcc
    Вход/выход
    Выход
    Вход
    -
    Комментарий
    Принятый отраженный сигнал
    с открытым коллектором; необходимо
    использовать «подтягивающий»
    резистор сопротивлением 4,7
    Когда BINH 1 (blank inhibit),
    выключается игнорирование сигнала,
    отраженного от близких объектов
    Обычно при конструировании своих устройств я выпаиваю этот разъем и исполь- зую многожильный провод для подключения платы дальномера к основной схеме.
    Во время работы дальномера на линиях и
    поддерживается сиг- нал низкого уровня. При этом на линии INIT вырабатываются прямоугольные им- пульсы. Во время высокого уровня напряжения сигнала INIT излучатель дально- мера вырабатывает ультразвуковой сигнал. Отраженный сигнал, принятый приемником, формируется на линии ECHO. На рис. 4.62 показаны осциллограм- мы обоих сигналов. На рисунке этого не видно, но после приема отраженного сигнала на линии INIT устанавливается низкий уровень напряжения.
    Рис. 4.62. Осциллограммы и принимаемого сигналов дальномера
    В документации рекомендовано включать между шинами питания конденса- тор емкостью 1000 мкФ для снижения скачков напряжения во время работы из- лучателя.
    Следует помнить, что для работы ультразвукового излучателя в схеме выраба- тывается достаточно большое напряжение, и если держать модуль излучателя

    Подключение к микроконтроллеру периферийных устройств 255
    в руках, то можно получить серьезный удар током. Ни в коем случае не допускайте того, чтобы сразу обе ваши руки контактировали с излучателем или соединитель- ными проводами. По собственному опыту я могу утверждать, что касание одной рукой не проходит безболезненно.
    Максимальное расстояние, на котором дальномер Polaroid 6500 может обна- руживать предметы, равно 35 футам (примерно м). Соответствующая задерж- ка прихода отраженного сигнала составляет около 64,4 мс. Это значит, что если отраженный сигнал не обнаружен спустя 65 мс, то можно считать, что в зоне дей- ствия детектора нет посторонних объектов.
    4.27. ПОДКЛЮЧЕНИЕ УЛЬТРАЗВУКОВОГО ДАЛЬНОМЕРА
    К МИКРОКОНТРОЛЛЕРУ
    В одном из вышеописанных проектов для декодирования команд дистанционного управления мы осуществляли программное измерение длительности импульсов,
    подаваемых на вход RBO/INT микроконтроллера. Этот же принцип будет исполь- зоваться для измерения задержки прихода отраженного сигнала ультразвукового дальномера. Время, прошедшее с момента срабатывания ультразвукового излуча- теля до регистрации сигнала приемником, будет пересчитываться микроконтрол- лером в футы и дюймы и выводиться на экран жидкокристаллического дисплея.
    Принципиальная схема рассматриваемого устройства показана на рис. 4.63,
    схема размещения элементов на макетной плате - на рис. 4.64, а список использо- ванных элементов приведен в табл. 4.15.
    Vcc
    =
    Vcc
    Vcc
    Рис. 4.63. Принципиальная схема ультразвукового дальномера

    256 Устройства управления роботами
    Дальномер
    Polaroid 6500
    а
    а а а а в
    а вв о
    Рис. 4.64. Схема размещения элементов дальномера на макетной плате
    Таблица
    Список использованных элементов
    Обозначение Элемент
    Примечание
    U1
    Микроконтроллер
    U2
    CR1
    R1
    R2
    R3
    1N914
    10
    0,25 Вт
    1 кОм; 0,25 Вт
    кОм,
    4,7 Ом;
    0,25 Вт
    Сдвиговый регистр
    Любой кремниевый диод
    «подтягивания» напряжения на выводе
    до напряжения положительной шины питания
    Для
    контрастности
    напряжения питания микросхем
    сз
    Жидкокристаллический дисплей
    /14 выводов), совместимый
    с Hitachi 44780
    Оксидный
    конденсатор
    Керамический резонатор
    на 4 МГц, со встроенными
    конденсаторами
    Для генератора тактовых импульсов
    микроконтроллера
    Polaroid 6500
    Материалы
    Макетная плата, монтажные провода,
    источник питания +5 В
    ' В скобках указаны отечественные аналоги, добавленные при переводе. —
    перев.
    Так как линии INIT и ECHO дальномера имеют выход с открытым коллекто- ром, то приходится использовать «подтягивающие» резисторы R4 и R5 сопротив- лением 4,7 кОм. Для фильтрации бросков напряжения на шинах питания, которые

    Подключение к микроконтроллеру периферийных устройств 257
    возникают из-за большого тока потребления ультразвукового излучателя и могут негативно повлиять на работу всех остальных элементов схемы, используется кон- денсатор СЗ емкостью 1000 мкФ.
    В качестве источника питания для этого устройства лучше взять что-нибудь помощнее. Если для всех конструкций, рассмотренных выше, можно было исполь- зовать одну 9-вольтовую щелочную батарейку (или набор батареек АД соединен- ных последовательно), то наша новая схема с таким источником питания, скорее всего, не заработает.
    Текст программы можно найти в файле Code\Ultra\ultrac:
    // 19 апреля 2002 - ультразвуковой
    Polaroid 6500.
    // Индикация измеренного расстояния на жидкокристаллическом дисплее.
    //
    // Для индикации используется жидкокристаллический дисплей,
    // подключенный к микроконтроллеру через двухпроводной интерфейс
    // на основе сдвигового регистра 74LS174.
    // Используются прерывания от таймера каждую миллисекунду.
    //
    // Замечания по аппаратным средствам:
    // Микроконтроллер PIC16F84/PIC16F627 работает на частоте 4 МГц.
    // Используется внешний тактовый генератор.
    //
    // Подключение выводов
    // RBO - сигнал ECHO ультразвукового дальномера Polaroid 6500
    // (с "подтягивающим
    //
    - линия Clock интерфейса жидкокристаллического дисплея;
    // RB2 - линия Data интерфейса жидкокристаллического дисплея;
    //
    - сигнал INIT ультразвукового дальномера Polaroid 6500.
    // Глобальные переменные и константы:
    int RTC = 0; // Счетчик реального volatile char LCDDlay = 20; // Длительность volatile char LCDState = 1; // Номер текущего состояния.
    volatile bit Clock static volatile bit ClockTRIS
    static volatile bit Data static volatile bit DataTRIS
    char *
    volatile char MessageOuti = 0;
    char
    =
    char Message2[9] =
    unsigned int CheckDlay = 50;
    unsigned int PulseStartRTC;
    unsigned int PulseEndRTC;
    unsigned char
    // Указатель на выводимое сообщение.
    // Смещение текущего символа в строке.
    // Формат вывода измеренной дальности.
    // Сообщение об ошибке.
    // Пауза 500 мс между моментами
    // срабатывания ультразвукового излучателя.
    // Когда начался излучаемый импульс.
    // Когда закончился излучаемый импульс.
    // Значение счетчика таймера TMRO
    // в момент окончания излучаемого импульса.
    9-2101

    258 Устройства управления роботами unsigned char
    = 0;
    - ожидание перед новым измерением.
    // 1 - измерение задержки прихода отраженного сигнала.
    // 2 - расстояние измерено.
    // 3 - ошибка измерения.
    unsigned long unsigned long unsigned long PulseFeet;
    // Задержка в миллисекундах.
    // Количество дюймов.
    // Количество футов.
    // Слово defined
    PIC16F84
    defined(_16F627)
    PIC16F627
    _CONFIG(Ox03F61);
    Unsupported
    «endif selected
    // Для МК PIC16F84: • .
    // кварцевый тактовый генератор,
    // таймер включен,
    // сторожевой таймер выключен,
    // защита кода отключена.
    with external XT oscillator selected
    // Для МК PIC16F627:
    // внешний тактовый генератор XT,
    // RA6/RA7 используются для ввода-вывода,
    // внешний сигнал сброса,
    // таймер включен,
    // сторожевой таймер
    // защита кода отключена,
    // детектор BODEN включен.
    MCU selected
    // Служебные подпрограммы:
    LCDNybble(char Nybble, char RS)
    // Запись полубайта в ЖКИ.
    LCDByte(char Byte, char RS)
    // Запись байта в ЖКИ.
    // Инициализация ЖКИ.
    const LCDString) // Вывод строки на ЖКИ.
    // Обработчик прерываний:
    void interrupt char temp;
    if
    {
    0;
    RTC++;
    // Обработчик прерываний от таймера
    // Сбросить флаг прерываний от таймера TMRO.
    // Инкремент счетчика реального времени.

    Подключение к микроконтроллеру периферийных
    259
    // Здесь можно разместить дополнительный код
    // для обработки прерываний от таймера
    // Работа с ультразвуковым дальномером:
    if
    == 0) { // Пора выдать импульс
    // на ультразвуковой излучатель.
    RTC;
    = 1; // Измерение расстояния.
    RB3 = 1; // Подать сигнал ШТ.
    INTF = 0; // Сбросить флаг прерывания.
    INTE =
    // Разрешить прерывания
    // по приходе сигнала на вход RBO/INT.
    CheckDlay = 500; // Ждать 500 мс.
    if (RTC > 64900) // Увеличить задержку
    CheckDlay += 200; // на 200 мс.
    if
    == 1)
    RB3
    = 0;
    INTF = 0;
    INTE = 0;
    PulseState = 3;
    + 60) <
    {
    // Неправильная задержка,
    // выключить дальномер.
    // Конец кода для работы с
    // Конечный автомат для
    } // Конец обработчика прерываний от таймера.
    // Здесь можно разместить другие обработчики прерываний.
    if (INTF) { // Обработчик прерываний
    // по фронту сигнала на выводе RBO/INT.
    = TMRO; // Запомнили момент окончания импульса.
    = RTC;
    RB3 = 0; // Сброс сигнала INIT дальномера.
    PulseState = 2;
    INTF =
    // Сбросили флаг прерывания.
    INTE = 0; // Запретили прерывания по входу RBO/INT.
    } // Конец обработки прерываний по фронту сигнала
    // на входе RBO/INT.
    } // Конец обработчика прерываний.
    // Главная программа:
    void unsigned int
    Служебная переменная.
    OPTION = OxOD1; //
    работает с таймером TMRO,
    // коэффициент деления равен 4.
    TMRO
    . // Начальный сброс таймера TMRO.
    TOIE
    // Разрешение прерываний от таймера TMRO.
    6IE = 1; // Разрешение обработки прерываний.

    260 Устройства управления роботами
    // Инициализация порта, к которому подключен
    // Здесь можно другие периферийные устройства.
    RB3 = 0; // Вывод RB3 перевели в режим выходного
    TRISB3
    вывели сигнал низкого уровня.
    while (1 == 1) { // Бесконечный цикл.
    // Здесь можно разместить код верхнего уровня.
    { // В зависимости от case 2: // Вывод результата измерения.
    =
    * 256) +
    (long) PulseEndTMRO) * 40;
    PulseTime -=
    PulseStartRTC *
    (256 *
    PulseTime / 1533;
    PulseFeet = Pulselnches / 12;
    Pulselnches = Pulselnches % 12;
    if
    PulseFeet / 10) == 0)
    1] = ' ';
    // Расстояние меньше 10 футов,
    // отображаем пробел
    // вместо первой else
    Message[1] = temp +
    = (PulseFeet % 10) +
    if
    = Pulselnches / 10)
    0)
    = ' ';
    else
    Message[5] = temp +
    = (Pulselnches % 10) +
    LCDOut(Message);
    PulseState = 0; // Ждать следующего break;
    case 3: // Ошибка.
    LCDOut(Message2);
    PulseState = 0; // Ждать следующего
    } // Конец оператора switch.
    } // Конец оператора while.
    } // Конец главной программы.
    Здесь после включения питания и небольшой задержки (около 50 мс) начина- ется процесс измерения расстояния до ближайшего объекта в поле зрения детек- тора. Если объект не найден, то есть находится слишком близко (на расстоянии менее 46 см) или слишком далеко (дальше м), то на жидкокристаллическом дисплее отображается сообщение INVALID (ошибка). Если расстояние до объек- та лежит в пределах рабочего диапазона дальномера, то на дисплей выводится из- меренная дальность в футах и дюймах.
    Для перевода длительности задержки отраженного сигнала в единицы дли- ны полученное количество микросекунд умножается на 10 и делится на 1533.
    Это эквивалентно делению на но не требует использования вещественной

    Подключение к микроконтроллеру периферийных устройств 261
    арифметики. После того как вычислено расстояние в дюймах, полученное значе- ние делится на целая часть результата дает необходимое количество футов.
    Результат вычислений высвечивается на жидкокристаллическом дисплее.
    Перед загрузкой этой программы в микроконтроллер желательно выполнить моделирование с помощью симулятора MPLAB. Для имитации входных воздей- ствий я подготовил файл Code\Ultra\ultrasti:
    ! Моделирование сигнала, принимаемого дальномером.
    !
    ! Предполагаем, что излучатель посылает импульс
    ! через 51200
    после включения питания.
    ! Через 23148,3 мкс после этого приходит отраженный
    ! что соответствует расстоянию
    7" (12 футов 7 дюймов).
    I
    ! Момент прихода отраженного сигнала: 51200 + 23148 = 74348.
    !
    ! Приемник дальномера подключен к выводу
    ! Майк Предко
    ! 19 апреля 2002 года
    Step
    1 15000 30000 45000 60000 74348
    RBO
    0 0
    0 0
    0 1
    RB4 0
    0 0
    0 1
    1
    RB5 0
    0 0
    1 1
    1
    RB6 0
    0 1
    1 1
    1
    RB7 0
    1 1
    1 1
    1 .
    ! Сначала
    ! уровни
    ! Пришел все низкие.
    передни
    ! отраженного импульса.
    75000
    фронт
    ! отраженного импульса.
    Здесь мы моделируем расстояние до объекта, равное 12 футам 7 дюймам
    (3,84 м). В файле стимулов указываются только входные сигналы; здесь не опре- деляется значение выхода RB3, к которому подключена линия INIT дальноме- ра. Состояние этой линии определяется программой, а не файлом стимулов. Мы предполагаем, что программа устанавливает на линии INIT сигнал высокого уровня через 51200 мкс после начала моделирования. Спустя 23148 мкс после этого приходит отраженный сигнал, то есть мы подаем единичный уровень на вход RBO микроконтроллера.
    Внимательный читатель заметит, что входы RB4, RB5, RB6 и RB7 в схеме не используются, поэтому их включение в файл стимулов может вызвать недоумение.
    Дело в том, что я (как, вероятно, и кто-нибудь из вас) часто терял много времени,
    выполняя пошаговый прогон программы, прежде чем обнаружить, что забыл в са- мом начале подключить файл стимулов. Тогда все приходится начинать заново.
    То есть на количество микросекунд, которое требуется звуку для преодоления расстояния длиной один дюйм (туда и обратно). - Прим. перев.
    В одном футе двенадцать дюймов. - Прим. перев.

    262 Устройства управления роботами
    Если указать в файле стимулов неиспользуемые входы и изменять их состояние с самых первых шагов, то уже в начале моделирования можно убедиться в том, что входные воздействия подаются правильно.
    Разумеется, вы можете не использовать данный прием - в этом случае ваш файл стимулов для отладки описанной программы будет состоять всего из двух столбцов (номера шага и соответствующих значений на входе RBO).
    Напомню, что для подключения файла стимулов к проекту надо выполнить команду главного меню
    1   ...   17   18   19   20   21   22   23   24   ...   33


    написать администратору сайта