You are on page 1of 6

Cypress MicroSystems PSoC Design Challenge 2002.

Project number 268


Измеритель дальности (AN2048: «PSoC RangeFinder»)

Этот проект представляет собой простой ультразвуковой измеритель дальности.


Для создания устройства необходимы только два ультразвуковых приемника-излучателя на 40 кГц,
два резистора, две емкости, да сама PSoC-микросхема.
Обычно подобные устройства дюже нафаршированы. Использование PSoC-микросхем позволяет
резко сократить обвязку, так как в микросхемах этого семейства («Программируемые-Системы-На-
Кристалле») находятся цифровые и аналоговые модули, которые конфигурируются пользователем для
решения конкретных задач.
Типичные применения данного устройства – это определение местоположений в робототехнике,
измерение расстояний до объектов, бесконтактное определение уровней жидкости.

TimeBase Meter F40kHz


CNTR8 CNTR8 CNTR8
US TX
F40kHz_inv

Передающая часть

1,5 MHz
An_Clock
CNTR8

CMPPRG_1
BPF2_1 _/\_ BPF2_2 _/\_
US RX BPF2 BPF2

PGA_1
Vref

RefMux_1 AGND
REFMUX Приемная часть

Выход ШИМ
Последовательный
PWM_Output Baud9600 Serial TX выход
PWM8 CNTR8 TX8

Интерфейсная часть

Рис.1: Блок-схема (желтые – цифровые модули, зеленые – аналоговые)

1
Главные фичи:

• Рабочая частота: 40 кГц


• Диапазон расстояний: 25 – 220 см
• Разрешение: 1 см
• Напряжение питания: 5В
• Потребляемый ток: 25 мА (23 мА без LCD)
• Выходы: 1 ШИМ, 1 послед. канал с TTL уровнями (9600, n, 8, 1)
• Дополнительно может подключатья LCD дисплей со встроенным контроллером
(2 строки по 16 символов)
• Программная калибровка
• Динамическое увеличение чувствительности приемника в процессе измерения

Конфигурация микроконтроллера

Используются следующие Модули Пользователя::


Цифровые модули
• CNTR8 8-битный счетчик
• TX8 8-битный передатчик для RS-232
• PWM8 8-битный ШИМ генератор
• DigInv Цифровой инвертор
Аналоговые модули
• PGA Усилитель с программируемым усилением
• BPF2 Два полосовых фильтра 2-го порядка
• CMPRG Компаратор с программируемым порогом
• RefMux Источник опорных напряжений
Другие модули
• Эмулятор EEPROM (программный)
• Модуль связи с LCD (программный)

Рис 2: Расположение модулей внутри микросхемы


2
Передающая часть зиждется на четырех цифровых блоках, расположенных на позициях DBA00,
DBA01, DBA02 и DBA03. 8-битный счетчик «TimeBase» создает временные отсчеты 17240 Гц, частота
которых выбрана из следующих соображений.

При температуре среды Т [°C] скорость распространения звука в воздухе:

V = 331.4 + (0.6 × T ) [м/с]

Для температуры 22 °C скорость звука будет равна:

V = 331.4 + (0.6 × 22 ) = 344.6 м/с = 34460 см/с

Учитывая, что импульсы проходят двойной путь (туда и обратно) и требуется получать разрешение, равное
1 см, получим минимальную частоту для опроса состояния приемника (импульс пришел/не пришел):
V
F Timebase = 1[см] × 2 = 17.23 кГц

Реально, с учетом внутренних тактовых частот и дискретности коэф. деления, имеем:

«24V1» 2 МГц
f TimeBase = 116 = 116 = 17,24 кГц

Ультразвуковой излучатель запитывается от выхода 8-битового счетчика «F40kHz» («плюсовой»


конец) и инвертора «F40kHz_inv» («минусовой» конец), переворачивающего фазу выходного сигнала
счетчика на 180°. Это позволяет получить амлитуду на излучателе, равную напряжению питания.
40 кГц посылка включается 8-битным счетчиком «Meter», изменяющим свои показания через
интервал времени, соответствующий «звуковому» расстоянию в 1 см. На вход этого счетчика подается
сигнал со счетчика «TimeBase» (17240 Гц).
«Холодный» конец приемника ультразвука посажен на аналоговую землю AGND (25-я ножка
микросхемы, «P0_2»). Потенциал на этой ножке задается источником опорного напряжения «RefMux_1»,
размещенным в позиции ACA03. Сигнальный же конец приемника подключен ко входу усилителя
«PGA_1». С выхода усилителя сигнал, пройдя два полосовых фильтра («BPF2_1» and «BPF2_2»), подается
на компаратор «CMPPRG_1». Как только появляется 40 кГц сигнал, выход компаратора устанавливается в
«1», сигнализируя управляющей программе о приходе отклика.
В интерфейсную часть входят два блока – 8-битный ШИМ генератор («PWMout») и передатчик для
последовательного итерфейса («SerialTX»), который тактируется импульсами 9600 Гц, создаваемыми 8-
битным счетчиком «Baud9600».

Аппаратная часть

Схема ультразвукового измерителя дальности чрезвычайно проста (рис.3). Самая важная деталь – это
микросхема CY8C26443 фирмы Cypress, взявшая на себя всю обработку сигнала.
Два конденсатора, C1 и C2, подавляют низко- и высокочастотные шумы в цепи питания.
Резистор R1 (100к) поддерживает напряжение аналоговой земли (+2,5В) на сигнальном входе
микросхемы. Резистор R2 регулирует контрастность LCD индикатора.
Без индикатора устройство потребляет ток около 23 мА (от источника питания +5В), с индикатором –
25 мА.
Измеренное значение дальности выводится двумя путями: один – в виде ШИМ сигнала, второй –
через последовательный интерфейс с TTL уровнями, которые с помощью дополнительной микросхемы,
например, классической MAX232, могут быть приведены к уровням стандарта RS-232 и поданы на
персональный компьютер, имеющий последовательный порт.
Параметры последовательного интерфейса – 9600, n, 8, 1, ШИМ выхода – приращение длительности
импульса 5 мкс на каждый сантиметр дальности.
Дополнительно может подключаться LCD дисплей (2 строки по 16 символов) со встроенным
контроллером, в этом случае резистором R2 регулируется его контрастность.

3
5V 5V
J1
Header 4 19 28
XRES VCC
+5V 1
TX SERIAL C1 C2
2 PWMOUT US RX 100 nF 100 uF
PWM 3
GND 40 kHz 1 14
4 27 P0_7 VSS
R1 2 P0_6
100 k 26 P0_5
3 P0_4 9
AGND 25 P0_3 SMP
4 P0_2
24 P0_1 U1
P0_0
JP1 CY8C26443
Calibration
NORMAL/CALIBRATION 10 5 PWMOUT
18 P1_7 P2_7 23
11 P1_6 P2_6 6
17 P1_5 P2_5 22 SERIAL US TX
12 P1_4 P2_4 7 40 kHz
5V 16 P1_3 P2_3 21
13 P1_2 P2_2 8
15 P1_1 P2_1 20
R2 8.2 k P1_0 P2_0

10
11
12
13
14
1
2
3
4
5
6
7
8
9

J2
Vee

E
DB0
DB1
DB2
DB3
DB4
DB5
DB6
DB7
RS
Vss
Vcc

R/W

LCD
(optional)

LCD 16 X 2

Рис.3: Электрическая схема

Программное обеспечение

Алгоритм работы показан на рис.4. Вначале программа инициализирует аналоговые и цифровые


модули, затем тестирует состояние премычки JP1 и определяет, какой режим – рабочий или калибровки –
будет установлен.

В рабочем режиме:
программа непрерывно генерирует посылки и после каждой, спустя некоторое время, ожидает эхо-
сигнал. Время, прошедшее между началом передачи и началом приема посылки будет пропорционально
расстоянию между устройством и препятствием. Опрашивая состояние компаратора «CMPRG_1», мы
отсчитываем временной интервал, который затем запоминается в памяти. В итоге, расстояние до объекта
высвечивается на LCD-дисплее (если таковой установлен), выдается на последовательный канал передачи
данных, а также в виде ШИМ-импульсов, пропорциональных дальности, присутствует на выходе
устройства.

В режиме калибровки:
работа аналогична предыдущему режиму, за исключением того, что измеренное значение
сравнивается с «50», а разность заносится в энергонезависимую память EEPROM с целью коррекции
будущих показаний.

«TimeBase_int» - это прерывание от счетчика-таймера «TimeBase». Когда переменная Time1


становится больше так называемого «защитного» интервала (который необходим для того, чтобы
исключить прием прямого сигнала от излучателя), программа начинает опрашивать состояние
компаратора. Как только сигнал получен, значение переменной Time1 заносится в оперативную память,
прерывание от «TimeBase» запрещается, занесенное же значение представляет собой измеренное
расстояние до объекта. Если же выход компаратора остается равен 0, то программа постепенно увеличивает
усиление модуля «PGA_1» (делает до 16 шагов, увеличивая значение усиления в соответствующем
регистре этого модуля), в результате чего дальние сигналы будут усиливаться сильнее.

4
Главн. цикл Калибровка Timebase_int

Инициализиро- Передать 40 Увеличить time1


вать и стартовать кГц посылку
блоки
Time1 нет
Выждать >= «защит.
нет «защитный интервал»?
JP1 ? Калибровка интервал»
да
да
Ждать 40 кГц Выход нет
компара-
отклик
Передать 40 тора = 1 ?

кГц посылку да
Вычислить Запретить
Выждать поправку и прерывание
«защитный запомнить ее Timebase_int и
в EEPROM сохранить time1
интервал»

Ждать 40 кГц Увеличить


отклик Возврат
усиление PGA_1

Вычислить
дальность и Возврат
послать ее на
LCD, ШИМ и
послед. порт

Рис.4 Алгоритмы работы программы

Конструкция

Конструкция и разводка печатной платы не критичны для функционирования устройства.


На рис.5 показан пример разводки односторонней печатной платы и расположение компонентов на
ней. Вначале запаивают две перемычки, затем – панельку для микросхемы, два резистора, устанавливаемые
вертикально, две емкости, 4-контактную штырьковую и 14-контактную гнездовую колодки J1 и J2. Две
ультразвуковых головки (передающая и принимающая) припаиваются непосредственно к контактным
площадкам платы. В колодку J2 может напрямую втыкаться LCD-модуль, имеющий ответную штыревую
часть, либо для его соединения может использоваться плоский кабель или отдельные провода.

Рис.5: Печатная плата и расположение элементов

5
Список использованных компонентов

C1 100 nF US RX УЗ излучатель 40 kHz


C2 22 µF 25V US TX УЗ приемник 40 kHz
R1 100 kΩ J1 колодка «папа» на 4 контакта
R2 8.2 kΩ J2 колодка «мама» на 14 контактов
U1 CY8C26443-24PI JP1 перемыкатель (джампер)

Дополнительно (по выбору): LCD LCD модуль 16 × 2

Калибровка

Перед использованием устройство необходимо откалибровать. Процедура калибровки очень проста,


ведь все расчеты берет на себя программа.
Вам надо будет только проделать такие действия:
• расположить на расстоянии 50 см от ультразвуковых головок плоскую поверхность какого-либо
предмета;
• снять джампер JP1;
• включить питание;
• установить джампер JP1;
• выключить питание.
Все, калибровка произведена, поправка записалась в память и будет учитываться при каждом
последующем рабочем измерении.

Заключение

Хотя в устройстве применен 28-выводной микроконтроллер CY8C26443, возможно использование


20-, и даже 8-выводных модификаций из этого семейства (это в случае, если вы не планируете
подключение LCD индикатора).
При использовании LCD индикатора, на нем появятся следующие сообщения:

рабочий режим
P S o C r a n g e f i n d e r
D i s t a n c e X X X c m

режим калибровки
5 0 c m c a l i b r a t i o n
P l a c e J P 1 j u m p e r

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

Примечания.
Проект «PSoC RangeFinder» (автор – Fabio Piana) – занял 1-е место на конкурсе PSoC Design
Challenge’2002.

Адрес этого документа: http://antiradio.narod.ru/psoc/appnotes/an2048rus.pdf


Оригинал документа (AN2048, англ. версия, причем урезанная) находится на сайте производителя
микросхем http://www.cypress.com/. Вот один из полных авторских вариантов статьи на английском языке
(1,18М): http://www.circuitcellar.com/library/print/0103/piana150/2301013.pdf

Исходники (файлы проекта для среды разработки «PSoC Designer») и прошивка (архив 482K) находятся на
ftp://ftp.circuitcellar.com/pub/Circuit_Cellar/2003/150/piana150.ZIP

You might also like