Компоненты и технологии, № 8'2004 Компоненты
Ультразвуковой детектор «близости» на микроконтроллере
фирмы Holtek
В статье показано применение микроконтроллера как основы схемы измерителя-сигнализатора, который может определять расстояние до объекта и подавать сигнал предупреждения, если это расстояние меньше 35 см.
Наи-Вен Ву
Перевод и подготовка: Николай Ракович
Принцип работы датчиков ультразвукового диапазона
Основные принципы работы датчиков ультразвукового диапазона (в том числе и детектора «близости») одинаковы и не зависят от типа используемой системы. Первоначально создается ультразвуковой импульс на определенной частоте, который представляет собой последовательность переходов между двумя уровнями напряжений (проще говоря, пачка импульсов — прим. переводчика). Затем эти пачки подаются на передатчик с частотой 40 кГц. Поскольку человек может слышать звуки в диапазоне от 20 Гц до 20 кГц, то ультразвуковой импульс он не услышит.
Звуковая волна от передатчика распространяется в воздухе радиально со скоростью звука, которая составляет порядка 346 м/с при комнатной температуре. На эту скорость незначительно влияет температура и влажность, а от давления она не зависит. Таким образом, скорость звука практически не зависит от высоты над уровнем моря. Так как звуковая волна распространяется по радиусу, то интенсивность сигнала уменьшается обратно квадрату расстояния.
Когда звуковая волна достигает предмета, то она отражается в различных направлениях в зависимости от формы этого предмета, его ориентации и свойств поверхности. Отраженная волна затем возвращается к приемнику все с той же скоростью звука. После того, как обнаружен отраженный сигнал (определено достаточное число циклов отраженного сигнала), датчик переключает выход, чтобы больше не принимать отраженные сигналы.
Все, что остается сделать — это измерить время распространения звуковой волны. Умножив это время на скорость звука, деленную пополам, можно определить расстояние до объекта.
Существует два основных типа детекторов ультразвукового диапазона (см. рис. 1), основное различие между которыми заключается в том, подключены передатчик и приемник к одному излучателю или к разным. Каждый тип датчиков имеет свои плюсы и минусы. Хотя в этой статье рассматривается детектор с разнесенными приемником и передатчиком, возможно применение и детектора второго типа.
Микроконтроллер HT48R05А-1
Среди всего разнообразия микроконтроллеров фирмы Holtek есть ИС HT48R05А-1, которая разработана специально для тех случаев, когда существует необходимость во множестве входов-выходов. Эта ИС представляет собой недорогой быстродействующий 8-разрядный микроконтроллер с RISC-архитектурой. В составе микросхемы — 8-разрядный программируемый таймер-счетчик событий с прерыванием по переполнению, 8-разрядный предварительный делитель частоты, функция останова и режим пониженного энергопотребления, встроенные кварцевый и RC-генераторы, выход для подключения зуммера и порты ввода-вывода, которые могут управляться программно.
Состав HT48R05А-1
HT48R05А-1 представляет собой недорогой быстродействующий 8-разрядный микроконтроллер с RISC-архитектурой, имеющий 63 команды и двухуровневый аппаратный стек (блок-схема на рис. 2, выводы для двух типов корпусов — на рис. 3). Сторожевой таймер (WDT) прекращает выполнение программы при случайном переходе в неопределенную область памяти, что может быть вызвано каким-либо неуправляемым внешним событием
Компоненты и технологии, № 8'2004
Компоненты
РАЗИ 1 18 □ РА4
РАЗ С 1 16 □ РА4 РА2 С 2 17 □ РА5
РА2 С 2 15 □ РА5 РА1 С 3 16 □ РА6
РА1 С 3 14 □ РАЙ РАО С 4 15 □ РА7
РАО С 4 13 □ РА7 РВ2С 5 14 □ OSC2
PB0/BZ с 5 12 □ OSC2 PBi/Bzc 6 13 □ OSC1
VSS с 6 11 □ OSC1 PBO/Bz с 7 12 □ VDD
PC0/INT С 7 10 □ VDD VSSC 8 11 □ RES
PCI AMR С 8 9 □ RES PC0/INT С 9 10 □ PCI AMR
Рис. 3
HT48R05A-1
-16SSOP-A
HT48R05A-1 -18 DIP-A/SOP-A
(например, электрическими помехами). Если это происходит, то сторожевой таймер перезапустит микроконтроллер для предотвращения любых сбоев в работе. Схема контроля напряжения питания автоматически выполнит перезапуск НТ48И05А-1, если напряжение питания упадет ниже заданного уровня. Хотя объем памяти программ только 512x14 бит, этого достаточно для большинства применений. Память данных составляет 32x8 бит. Прерывания делятся навнеш-ние и внутренние от таймера-счетчика.
Тринадцать двунаправленных входов-выходов включают 8 выводов портов РА, 3 вывода портов РВ и 2 вывода портов РС. Управление этими выводами может выполняться программным способом: вывод может быть определен как КМОП-выход или как вход с триггером Шмитта с регистром или без него. РВ0 и РВ1 — выводы для подключения выводов зуммера В2 и В2(инверс.) соответственно. Для выводов ЮТ(инверс.) и ТМИ предназначены порты РС0 и РС1. В том случае, когда порт РС0 надо установить на работу от внешнего прерывания, он должен быть сначала установлен как вход. Если требуется вход для внешнего таймера, то как вход должен быть установлен РС1.
В состав НТ48И05А-1 входит 8-разрядный таймер, который может работать от внешнего источника тактового сигнала или исполь-
зовать частоту внутреннего системного тактового генератора. Если в качестве тактовой выбрана частота внутреннего тактового генератора, то она проходит через предварительный делитель, обеспечивая 8-разрядный таймер восемью опорными частотами. Диапазон частот таймера находится от 1/2 до 1/256 частоты системного генератора.
Аппаратная реализация
Аппаратная реализация детектора «близости» (сигнализации, срабатывающей при приближении к объекту) ультразвукового диапазона приведена на рис. 4. В составе схемы — микроконтроллер HT48R05A-1, ультразвуковой датчик, зуммер, кварц на 4 МГц, операционный усилитель LM339 и несколько внешних элементов. Когда передатчик посылает ультразвуковой импульс, включается внутренний счетчик HT48R05A-1. При определении приемником отраженного сигнала счетчик останавливается, вычисляется время распространения звуковой волны и, соответственно, расстояние до объекта. Если расстояние до объекта меньше заданного значения (в нашем случае 35 см), то микроконтроллер включает зуммер для подачи звукового сигнала.
Работа схемы детектора «близости» ультразвукового диапазона
На выводе РАО микроконтроллера создается меандр частотой 40 кГц, который подается на передатчик ультразвукового датчика. Сигнал внешнего прерывания для микроконтроллера формируется ОУ LM339, который преобразует принятый ультразвуковой сигнал в прямоугольный импульс (меандр), и подается на вывод 9 (INT) как внешнее прерывание.
После того как сигнал прерывания был принят, встроенное программное обеспечение определяет: расстояние до объекта меньше 35 см или нет. Если расстояние меньше 35 см, то микроконтроллер выдает сигнал тревоги.
Для нормальной работы схемы необходимо подсоединить резистор R и конденсатор С к выводу RES (вывод 11) микроконтроллера. Это создает на данном выводе высокий уровень при работе в нормальном режиме. Если уровень меньше половины напряжения питания, то микроконтроллер будет перезапущен.
1
BUZZER
Transmitter
РАЗ PA4
РА2 PA5
РАЇ PA6
РАО PA7
РВ2 OSC2
РВ1 OSC1
PBO/BZ VDD
VSS RES
PC0/INT PCI
18
17
16
15
14
4 МГц
VCC
13
12
10
HT48R05A-1
RI 47 кОм
vcc
о
-Йг
2,4 В
Receiver
R3 39С
Рис. 4
R2
ЧШ-
1 кОм
Ом
R5 ИЮ Юм
LM339
12 R4
-си—
10 МОм
Компоненты и технологии, № 8'2004
Компоненты
[ Подпрограмма ( обработки прерывания) V от таймера J
Ґ Подпрограмма >. ( обработки внешнего ) V прерывания J
Прерывание от таймера
Внешнее
прерывание
Передача меандра 40 кГц и запуск таймера Разрешение сигнала внешнего прерывания и использование задержки 3300 мкс Остановка передатчика и таймера
Программа Установка
ожидает внешнего внутреннего
прерывания или < прерывания
прерывание
от таймера 1
^ Возврат
Сброс прерывания от таймера _ и запуск передатчика
Рис. 5
Блок-схема программы
Алгоритм работы программы представлен на рис. 5.
Описание программы
Блок данных
Задание регистра пьезоизлучателя Задание регистра счетчика Задание регистра счетчикаї Задание регистра счетчика2
Блок программ Определение программы 00 Переход на основную программу Адрес внешнего прерывания
Переход на подпрограмму обслуживания внешнего прерывания Адрес прерывания по таймеру
Переход на подпрограмму обслуживания прерывания от таймера
Установка порта А на работу на выход Выход сигнала низкого напряжения Установка порта С как входа
Установка РА0 на работу на выход
Установка внешнего прерывания и прерывания от таймера
Установка таймера как внутреннего тактового генератора
Прерывание после 250 мкс
Запуск таймера
Установка выхода РА0
Задержка 25 мкс
Реверс РА0
Ожидание программы
Подпрограмма обработки прерывания от таймера Останов таймера
Разрешение внешнего прерывания
Цикл tmrl в цикле tmr3 с задержкой 3300 мкс
Вычисляется (3?0dch?05h)?l мкс
Count2 — внутренний цикл, countl — внешний цикл Умножается sdz и переход на цикл 3
Count2 тактируется 220 мкс Если не равно 0, то переход на tmr3 Если не равно 1, то переход на tmr2 Если равно 0, то переход на timer_exit
Установка внешнего прерывания и прерывания от таймера Прерывание после 250 мкс Запуск таймера Возврат
Подпрограмма, обработки внешнего прерывания Останов выхода РА0 Останов таймера Установка флага С=0
Ультразвук проходит 35 см за 1 мс, туда и обратно — за 2 мс С=1 или 0 (С=0, короткое время, короткое расстояние, звуковой сигнал)
Если не равно 0, то переход на external_exit Если не равно 1, то переход на buzzer Реверс PB, затем запуск зуммера Задержка 250 мкс Останов зуммера Установка выхода РА0
Установка внешнего прерывания и прерывания от таймера Прерывание через 250 мкс Запуск таймера
Подпрограмма задержки (25 мкс)
О
Для аппаратной реализации помимо микроконтроллера и ультразвукового датчика требуется всего несколько внешних элементов.