Владимир Рентюк, Александр Сыров alexandr.syrov@eltech.spb.ru
Ультразвуковой измеритель расстояния на базе микроконтроллера tinyAVR 1‑series компании Microchip с независимой от ядра периферией
Статья опубликована в журнале "Компоненты и Технологии" №8 2019
В предлагаемой статье, написанной на основе авторского перевода руководящего материала [1] и примера его использования [3] от компании Microchip Technology Inc., описывается практическая реализация ультразвукового измерителя расстояний на основе микроконтроллера архитектуры AVR с помощью независимой от ядра периферией (Core Independent Peripherals, CIP) и ультразвукового излучателя/приемника.

На совместную работу для выполнения измерений и представления результатов, независимо от загрузки процессора, ориентированы многие периферийные устройства, но в данном случае реализация устройства эффективно выполнена с использованием возможностей блока настраиваемой пользовательской логики (Configurable Custom Logic, CCL) AVR, который для генерации всех необходимых сигналов использует преимущества модулей таймера/счетчика.
Решение направлено на снижение использования ядра микроконтроллера и уменьшения энергопотребления системы и предназначено для применения в приложениях реального времени, критических к уровню энергопотребления.

Ультразвуковые измерители
Ультразвуковые приемопередатчики, или трансиверы, способны преобразовывать электрический сигнал в ультразвуковой радиоимпульс (импульс с высокочастотным, ультразвуковым заполнением, далее — импульс) и принимать результирующую отраженную
волну, направленную на препятствие в виде того или иного объекта. Исследуя свойства отраженной волны, а именно сравнение изменения характеристик сигнала переданных и полученных пачек ультразвуковых импульсов, можно определить несколько параметров.
Так, для определения расстояния до объекта может использоваться оценка времени, прошедшего между передачей пачки ультразвуковых импульсов и принятием их уже в виде отраженной волны, называемое «время прохождения» (в англ. терминологии time of flight — буквально «время пролета»). Или если расстояние до объекта точно известно, то в этом случае путем вычисления коэффициента ослабления отраженного ультразвукового сигнала можно достаточно точно идентифицировать материал отражающей поверхности. Для вычисления скорости движущегося относительно ультразвукового излучателя объекта может быть использован доплеровский сдвиг (изменение частоты, которое зависит от взаимной скорости движущих объектов), то есть измерение изменения частоты между переданным и принятыми
отраженными ультразвуковыми импульсами, направленными на движущийся объект. Возможны и другие варианты, тем не менее, приведенные три обобщают наиболее распространенные.
В предлагаемой статье рассматривается один из примеров практической реализации того, как ультразвуковой приемопередатчик может применяться для измерения расстояния до барьера, рассчитанного по времени распространения между переданным ультразвуковым импульсом и получением его отражения. Этот процесс, также называемый «эхолокация» (определение расстояния с помощью отраженного сигнала; в англ. терминологии echo ranging), лежит в основе дальномеров. Общий принцип измерения расстояния с помощью ультразвуковой волны иллюстрирует рис. 1.

Ультразвуковое измерение расстояния — относительно недорогой бесконтактный метод определения расстояния/дальности с высокой точностью. В нем используются звуковые волны с частотами выше верхнего предела слышимости человеческого слуха (20 кГц), как правило, это частоты в диапазоне 40–100 кГц. Импульс в виде пачки с заполнением ультразвуковым сигналом — радиоимпульс, производимый приемопередатчиком, отражается от объекта (что является препятствием на пути его распространения) и возвращается, чтобы быть принятым приемником через некоторый интервал времени.
Принцип измерения довольно прост: расстояние (L) можно рассчитать на основе скорости ультразвука (c) в определенной среде и времени прохождения (t) ультразвуковых волн, связанного с фактором изменения скорости звука в данной среде при данных условиях, а именно:
Типичная скорость ультразвука в воздухе при нормальных условиях составляет 340 м/с, поэтому формула расстояния здесь может быть упрощена до следующей:
где t — общее время прохождения ультразвуковых волн, то есть время между передачей ультразвукового радиоимпульса и получением его отражения. Однако здесь не все так просто и есть проблемы, о которых будет сказано дальше.
Сигналы, передаваемые и принимаемые ультразвуковым преобразователем, могут визуально контролироваться с помощью осциллографа (рис. 2). Пунктирные вертикальные линии (маркеры a и b) показывают измеримое время от излучения до приема фронта отраженного ультразвукового эха, о чем говорилось ранее. По осциллограмме видно, что отраженная волна значительно ослаблена (с 3,2 В до 80 мВ), о чем не следует забывать при разработке приложения и принимать соответствующие необходимые меры — фильтрацию и усиление, чтобы как можно скорее обнаружить отраженный и принятый приемником сигнал.

Ограничения при измерении расстояния с использованием ультразвукового метода

Ситуационные ограничения
Хотя измерение расстояния с использованием ультразвукового метода достаточно эффективно, у этой технологии существуют некоторые ситуационные требования. В идеале барьер, расстояние до которого необходимо измерить, должен представлять собой сплошную
плоскую поверхность, перпендикулярную апертуре ультразвукового излучения. Он должен иметь акустическое затухание, отличное от воздуха, чтобы отражать достаточное количество энергии ультразвукового импульса, причем настолько, чтобы его мог принять датчик приемника. Важно также, чтобы расстояние до объекта (барьера) находилось в пределах рабочего диапазона измерения ультразвукового трансивера.
На рис. 3 показаны некоторые ситуационные ограничения при измерении расстояния с использованием ультразвука. На рис. 3а расстояние до барьера слишком велико и отраженный сигнал слишком ослаблен, чтобы его можно было эффективно принимать. На рис. 3б барьер находится слишком близко, а это означает, что, когда отраженный сигнал должен быть принят, передатчик будет еще находиться в режиме его излучения. На рис. 3в объект слишком мал и отражает недостаточно энергии ультразвукового импульса. На рис. 3г показано влияние угла, не перпендикулярного ультразвуковому лучу, чтобы он эффективно отражался и принимался приемником. На рис. 3д объект по отношению к среде (в нашем случае — воздуху) имеет слишком малую плотность и, соответственно, имеет коэффициент ослабления, аналогичный коэффициенту ослабления воздуха, поэтому ультразвуковой луч поглощается, а не отражается от границы среды.
Ограничения среды измерения
Кроме особенностей ситуационной модели, измерение расстояния ультразвуковым методом зависит от температуры и влажности, которые оказывают сильное влияние на скорость звука в воздухе. Это, в свою очередь, будет способствовать значительным отклонениям в измерениях, проводимых для одного и того же расстояния, внося существенные ошибки. Воздушные потоки также могут делать свой вклад в погрешность измерения, поскольку могут действовать как
невидимые барьеры, которые на своих границах перехода плотности будут отражать ультразвуковые импульсы.
В определенной степени ошибки, вызванные изменением температуры, можно учесть. Например, одновременным измерением температуры и времени распространения ультразвукового импульса и последующего ее учета при расчете расстояния. Формула компенсации имеет вид:
где T — температура воздуха.

Практическая реализация
Практическая реализация ультразвукового дальномера, как уже было сказано в начале статьи, основана на измерении расстояний с использованием устройства из семейства 8‑битных микроконтроллеров, ранее выпускаеемых фирмой Atmel, а затем Microchip, архитектуры AVR с независимой от ядра периферией (Core Independent Peripherals, CIP) и ультразвукового излучателя, выполняющего функции передатчика и приемника ультразвуковой волны. Для этой цели преимущества данной архитектуры и общего
решения проявляются в следующем:
• простота подключения периферии;
• возможности независимой от ядра периферии, благодаря наличию блока настраиваемой пользовательской логики CCL;
• таймер/счетчик типа D (Timer/Counter Type D, TCD), используемый для маскирования синхронизированных по времени сигналов приема и передачи;
• компактный размер программного кода;
• наличие встроенной флэш-памяти.
Наличие встроенной флэш-памяти, собственно, и лежало в основе идеи разработки
этого RISC-ядра, принадлежащей двум студентам Norwegian University of Science and
Technology (NTNU) из норвежского города Тронхейма — Альфу Богену (Alf-Egil Bogen)
и Вегарду Воллену (Vegard Wollen). Именно они в 1995 году решили предложить американской корпорации Atmel, которая была известна своими чипами с флэш-памятью, выпускать новый 8‑битный RISC-микроконтроллер и снабдить его флэш-памятью для программ на одном кристалле с вычислительным ядром. Новое ядро было запатентовано и получило название AVR1. Опытный вариант микроконтроллера AT90S1200 был выпущен уже в конце 1996 года, а во второй половине 1997‑го компания Atmel приступила к серийному производству нового семейства микроконтроллеров. Объединение Atmel Corporation с Microchip Technology было непростым и завершилось лишь в январе 2016 года.
Практической реализации рассматриваемого ультразвукового измерителя расстояний соответствуют ниже перечисленные микроконтроллеры.
На рис. 4–6 показаны варианты коммерчески доступных микроконтроллеров семейства tinyAVR 0‑series, tinyAVR 1‑series и megaAVR 0‑series с разными вариантами выводов, компоновкой (корпусированием) и размерами флэш-памяти.
Вертикальная миграция вверх на рис. 4–6 возможна без изменения кода, поскольку эти устройства совместимы по выводам и предоставляют те же или более широкие функции. Нисходящая миграция может потребовать модификации кода из-за меньшего количества доступных подключений некоторых периферийных устройств. Горизонтальная миграция влево уменьшает количество выводов и, следовательно, доступные функции.
Устройства с разным объемом флэш-памяти (он указан одной первой цифрой в двухзначной кодировке, одной или двумя цифрами в трехзначной кодировке и двумя цифрами в четырехзначной) обычно имеют разные SRAM и EEPROM.
Функциональные возможности приложения ультразвукового измерения расстояния на основе, не зависимой от вычислительного ядра, сосредоточены вокруг блока настраиваемой пользовательской логики (Configurable Custom Logic, CCL). Он позволяет вводить мультиплексирование (MUXing) с настраиваемой логикой для двух таблиц для генерации сигналов (Lookup-Table, LUT). В рассматриваемом приложении одна LUT (в нашем случае это LUT1) предназначена для управления каналом передачи ультразвукового преобразователя, а другая (в нашем случае это LUT0) — для фильтрации канала приема. Время от момента генерации пачки ультразвуковых импульсов до приема отраженного сигнала может быть измерено путем подачи обоих выходов LUT в последовательный блок управления, в частности, для управления защелкой на RS-триггере (SR Latch). В результате на выходе защелки отображается импульс, показывающий время между излучением и приемом ультразвукового импульса. Эту конфигурацию можно увидеть на рис. 7 (подробнее в [1, 4]).
Таблица LUT0
Временная функциональность изображена на рис. 7. Первые три соответствуют управлению каналом передачи ультразвукового преобразователя:
• Сигнал (1) является выходным сигналом таймера/счетчика типа A (timer/counter type A, TCA), который настроен для получения сигнала ШИМ с частотой примерно 40 кГц и рабочим циклом 50%.
• Сигнал (2) представляет собой маску, создаваемую таймером/счетчиком типа D (timer/counter type D, TCD), настроенную на низкий логический уровень, когда должен генерироваться ультразвуковой импульс, а в остальное время — на высокий.
• Оба сигнала представляют собой входы для таблицы LUT1, выход которой (1 & !2) подключен к линии передачи ультразвукового преобразователя.
Результатом является специально рассчитанная диаграмма ультразвуковой передачи на частоте ШИМ (рис. 8). Защелка SR сбросится по переднему фронту и запустит счетчик захвата таймера/счетчика типа D (начало отсчета времени распространения ультразвукового импульса).
Следующие три соответствуют управлению приемной линией ультразвукового преобразователя:
• Сигнал (3) — это маска, создаваемая таймером/счетчиком типа D, настроенная на низкий логический уровень при включенной приемной линии и на высокий логический уровень при передаче.Передача будет воспринята приемной линией ультразвукового преобразователя и должна быть замаскирована, поскольку она будет ошибочно определена как отраженный сигнал. Он простирается немного дальше длины передачи, чтобы учесть резонанс. Поскольку оба маскирующих сигнала (2 и 3) вырабатываются одним и тем же таймером, они синхронизируются и, следовательно, передача эффективно маскируется от линии приема.
• Сигнал (4) представляет активность на приемной линии после обработки аналоговым компаратором.
• Эти два сигнала являются входами для LUT0, выход которых (!3 & 4) представляет собой отфильтрованную линию приема, содержащую только отражения импульсов.
Когда аналоговый компаратор (AC) обнаружит отраженный сигнал, его первый фронт «установит» защелку SR и произойдет захват сигнала таймером/счетчиком типа D, что позволит эффективно измерить время от момента излучения ультразвукового импульса
до момента приема его отраженного эха (временная диаграмма защелки SR на рис. 9).
Обнаружение ослабленного отраженного сигнала
Как видно из рис. 2, показывающего не только принцип измерения, но и затухание отраженного сигнала, этот сигнал по сравнению с передаваемым ШИМ-сигналом оказывается значительно ослаблен (с 3,2 В до 80 мВ). Для его детектирования принятый сигнал от ультразвукового преобразователя подается на аналоговый компаратор (Analog Comparator, AC) микроконтроллера, который сконфигурирован так, что имеет порог сравнения, установленный немного ниже напряжения его холостого состояния (половина напряжения питания, подаваемого на преобразователь). Это значение порогового напряжения очень точно генерируется модулем цифроаналогового преобразователя (ЦАП). В итоге результат будет таким, как показано на рис. 10, иллюстрирующем использование аналогового компаратора при обнаружении ослабленного отраженного сигнала. Такая процедура позволяет обнаруживать отраженный сигнал, как только он поступает, даже несмотря на его ослабление.
ЦАП настроен на выдачу значения опорного сигнала компаратора чуть ниже напряжения холостого хода ультразвукового преобразователя. Однако здесь есть тонкость: значение выходного напряжения ЦАП, с одной стороны, должно быть настроено так, чтобы оно было достаточно близко, чтобы отраженный сигнал обнаруживался, как только он поступил, несмотря на его затухание, но, с другой — не настолько близко, чтобы компаратор воспринимал шумы. Чтобы помочь с фильтрацией шума, можно включить сюда настройку ги‑
стерезиса для компаратора. Это даст возможность настройки выходного напряжения ЦАП еще ближе к напряжению холостого хода преобразователя, что, естественно, повышает точность измерений расстояния.

Синхронизированные маскирующие сигналы передачи и приема с использованием таймера/счетчика типа D
Для того чтобы эффективно маскировать, то есть отделить передачу ШИМ от приемной линии, необходима правильная синхронизация маскирующих сигналов передачи и приема. Это возможно при использовании режима генерации формы сигнала One Ramp (один линейно нарастающий импульс) от таймера/счетчика типа D. Получить дополнительную информацию можно в спецификации конкретного микроконтроллера, на котором выполнен ультразвуковой измеритель расстояния, — в нашем случае это tinyAVR 1‑series ATtiny817 [2]. Как видно на рис. 11, для генерации двух синхронизированных выходов могут быть сконфигурированы сравниваемые значения, которые можно использовать в качестве масок для управления передачей и приемом с помощью одного ультразвукового преобразователя.
Эти значения выполняют следующие роли и должны быть настроены в соответствии с требованиями, предъявляемыми к конечному приложению:
• Значение CMPASET установлено на «0», указывая, что приемная линия должна быть отключена с начала цикла измерения, то есть как только начинается передача пачки ультразвуковых импульсов.
• Значение CMPBSET указывает на длительность пачки ультразвуковых импульсов при передаче. Уменьшение этого значения приведет к сокращению как минимального, так и максимального диапазона. Повышение значения приведет к увеличению диапазона до определенной точки, однако, как только часть отраженного пакета будет присутствовать без затухания, выигрыш от увеличения времени передачи не будет получен.
• Значение CMPACLR указывает, когда приемная линия включена. Данное значение следует настраивать в соответствии с используемым излучателем и ситуативными требованиями. Это время, с одной стороны, должно быть достаточно большим, чтобы учитывать паразитный резонанс из-за неоптимального согласования излучателя в конкретном приложении, а, с другой — достаточно коротким, чтобы отраженный ультразвуковой импульсный пакет не маскировался передаваемым сигналом.
• Значение CMPBCLR определяет продолжительность цикла измерения. Это время должно быть достаточным для того, чтобы все отраженные сигналы были в достаточной степени ослаблены (некоторые сигналы могут несколько раз отражаться на пути от датчика до барьера). Уменьшение этого значения также приведет к снижению разрешения вычислений измерений (например, CMPBCLR = 0 х FFF дает разрешение измерения расстояния в 1 см).

Практическая реализация ультразвукового измерителя
Предлагаемый ультразвуковой измеритель расстояния в виде отдельной платы (Field Engagement Board Range Finder) [3] — это полнофункциональное аппаратное приложение, использующее для измерения времени прохождения независимые от ядра периферийные устройства, как это уже было описано выше на основании [1].
Плата выполнена на базе ATtiny817 — высокопроизводительном 8‑битном микроконтроллере tinyAVR series‑1 [2]. Ее решение направлено на снижение использования ядра микроконтроллера и уменьшение энергопотребления системы, что крайне важно для приложений реального времени или устройств с низким энергопотреблением. Основные ха‑
рактеристики данного устройства:
• для передачи пачки ультразвуковых импульсов и приема их отражения используется один ультразвуковой датчик;
• рабочая частота: 40 кГц;
• диапазон измеряемых расстояний: 0,7–4 м, разбитый на четыре поддиапазона;
• встроенный датчик температуры для внесения поправки в вычисление расстояния;
• ОСИД-дисплей 128 х 64 пикселей.
Изображение данного устройства и основных его частей показано на рис. 12, а блок-
схема представлена на рис. 13.
Кроме встроенного программного обеспечения для соответствующей настройки временных диаграмм работы ультразвукового излучателя на принципах, описанных выше, здесь, как видно из рис. 13, используется еще ряд периферийных устройств. Так, для отображения результатов измерения на экране предназначен драйвер ОСИД-дисплея (дисплея на органических светодиодах), аппаратное обеспечение содержит RGB-светодиод для указания близости к объекту по цветовой шкале и датчик температуры, чтобы учесть ошибку, вызванную изменением температуры (эта функция в текущей версии прошивки не реализована). Программирование выполняется через разъем для подключения программатора UPDI (Unified Program and Debug Interface — однопроводной интерфейс для программирования/отладки новых 8‑битных микроконтроллеров Atmel). Также имеются кнопка сброса (Reset) и кнопка выбора диапазона измерения (MODE). Пользователь должен выбрать наиболее подходящий уровень, чтобы получить максимально точный результат. Дополнительные уровни:
• 40–100 см (бета-версия);
• 70–250 см;
• 100–600 см;
• 250–1000 см.
Дополнительную информацию по ультразвуковому измерителю расстояния и использованные для его реализации конкретные схемотехнические решения можно найти в [3]. В качестве примера отдельных решений на рис. 14 показаны передающий и приемный узлы измерителя.
Если задействована нестандартная конструкция оборудования, то в этом случае имеются дополнительные компоненты, которые так или иначе необходимо учитывать. В зависимости от характеристик используемого ультразвукового преобразователя может потребоваться дополнительная схема между устройством AVR и каналами передачи и приема с подключением к ультразвуковому излучателю/приемнику. Например, контакты на AVR могут не обладать достаточной нагрузочной способностью для непосредственного подключения излучателя ввиду его большой собственной емкости. Это означает, что между выходным
контактом AVR и передающим каналом TX-преобразователя потребуется двухтактный
усилитель. Кроме того, сигнал на входе приема RX-преобразователя, прежде чем он может быть эффективно принят аналоговым компаратором AVR, будет нуждаться в некотором уровне усиления и фильтрации, как правило, для этого понадобится узкий полосовой фильтр. Решение этих элементов будет зависеть от конкретного приложения. Для справки, как это может быть выполнено на практике, обратитесь к [3].
Пример кода для программирования прошивки ультразвукового измерителя реализует настройку, описанную в этой статье. Он позволяет выводить данные измерения расстояния либо на ОСИД-дисплей, либо через UART. Опцию можно настроить с помощью хеш-определения OUTPUT_USED в верхней части основного файла. Он доступен через веб-платформу Atmel START — инструмент конфигурации и генерации ПО, позволяющий настраивать код приложения через графический интерфейс пользователя (GUI). Код можно загрузить как для Atmel Studio, так и для IAR Embedded Workbench, используя прямую ссылку [4], через кнопку BROWSE EXEMPLES («Обзор примеров») на начальной странице Atmel START или применить прямой переход [5]. Для получения дополнительной информации о том, как использовать Atmel START, прочитайте руководство по началу работы (кликнув на Getting Started guide) или посмотрите приведенные видеоуроки (кликнув на video tutorials). Через Getting Started guide можно найти пример, кликнув на имя проекта на панели конфигуратора
проекта Atmel START. Далее загрузите код в виде файла *.atzip для Atmel Studio из примера браузера в Atmel START, нажав Download («Скачать») выбранный пример. Чтобы скачать файл из Atmel START, нажмите Export («Экспортировать проект»), а затем загрузите пакет. Для этого дважды щелкните загруженный файл *.atzip, и проект будет импортирован в Atmel Studio 7.0. Подробно о программировании микроконтроллеров семейства tinyAVR 1‑series можно узнать в [6].
Можно также воспользоваться инструментами среды разработки IAR Embedded Workbench [8].
Интегрированная среда разработки IAR Embedded Workbench для ARM является профессиональной средой для разработки и отладки приложений для микроконтроллеров с ядром ARM. Это мощный, но вместе с тем простой и очень удобный инструмент программирования для встраиваемых микропроцессорных устройств и систем. Для получения информации о том, как им‑портировать проект в IAR Embedded Workbench, откройте руководство пользователя Atmel START [7] и выберите раздел Using Atmel Start Output in External Tools («Использовать исходный вывод Atmel во внешних инструментах») и IAR Embedded Workbench.

Заключение
Реализация устройства эффективно выполнена с применением возможностей блока настраиваемой пользовательской логики (Configurable Custom Logic, CCL) микроконтроллера AVR, который для генерации всех необходимых сигналов обращается к преимуществам модулей таймера/счетчика. Решение направлено на сокращение использования ядра микроконтроллера и уменьшение энергопотребления системы, оно ориентировано на применение в приложениях реального времени и устройствах, критических к уровню энерго‑
потребления. Рассмотренный пример реализации ультразвукового измерителя расстояния в виде платы пригоден не только как решение отдельного устройства, но и как часть того или иного оборудования.

Литература
1. Roy E. Core Independent Ultrasonic Distance Measurement with the tinyAVR 1‑series. AN2548. 2018. Microchip Technology Inc.http://ww1.microchip.com/downloads/en/AppNotes/AN2548-Core-Independent-Ultrasonic-Distance-Measurement-00002548C.pdf
2. ATtiny417/817 tinyAVR 1‑series. Complete Datasheet. 2019. Microchip Technology Inc. ww1.microchip.com/downloads/en/DeviceDoc/Atmel-42721-ATtiny417-814-816-817_Complete.pdf
3. Ultrasonic Range Finder with ATtiny817 Hardware User's Guide. 2017. Microchip
Technology Inc. ww1.microchip.com/downloads/en/DeviceDoc/40001902A.pdf
4. Atmel START. Getting started. www.start.atmel.com/#
5. www.start.atmel.com/#dashboard
6. Getting Started with the tinyAVR 1‑series. Training. 2017. Microchip Technology Inc. ww1.microchip.com/downloads/en/DeviceDoc/40001949A.pdf
7. Atmel START User's Guide. ww1.microchip.com/downloads/en/DeviceDoc/Atmel-START-User-Guide-DS50002793A.pdf
8. www.iar.com/iar-embedded-workbench/