0

Терменвокс без «антенн»

Предлагаемым электромузыкальным инструментом исполни­тель управляет движениями рук подобно известной конструкции Л. Термена. Однако по принципу действия он не имеет с настоя­щим терменвоксом ничего общего — вместо взаимодействия рук исполнителя с электромагнитным полем антенн инструмента и биений сигналов двух генераторов использованы измерение расстояний до рук с помощью ИК-дальномеров и цифровое фор­мирование сигналов нужной частоты и громкости. Однако инструмент получился простым и пригодным для повторения. При дальнейшем совершенствовании он может найти примене­ние в музыкальной практике.

Журнал «Радио» не раз публиковал описания конструкций терменвок-сов, построенных по традиционному принципу [1, 2]. Поскольку этот музы­кальный инструмент своим необычным звучанием всегда привлекает внима­ние, он был изготовлен и автором пред­лагаемой статьи для демонстрации в музее науки «Ньютон-парк» в Краснояр­ском музейном центре.

Однако его демонстрация при сво­бодном доступе посетителей музея к экспонатам (а посетители эти — в ос­новном школьники младших классов) выявила специфический недостаток. Когда вокруг инструмента, имеющего довольно объёмную зону чувствитель­ности, собираются несколько посетите­лей и пытаются управлять им одновре­менно, результат бывает непредсказуе­мым.

В предлагаемой конструкции этот недостаток устранён. Вместо антенн и генераторов с колебательными конту­рами использованы триангуляционные инфракрасные датчики расстояния (дальномеры) GP2Y0A41SK и GP2Y0A21.

Первый измеряет расстояние от 4 до 30 см, а второй — от 10 до 80 см. Их зоны чувствительности имеют вид конусов с углами при вершине около 17°. Ладонь исполнителя в рабочем интервале расстояний полностью пере­крывает такую зону. Выходное напря­жение датчиков изменяется в указан­ных интервалах приблизительно на 2 В. Размеры датчиков — 29x12x18 мм, напряжение питания — 5 В, потребляе­мый ток — 30 мА. Описание таких дат­чиков и принципа их работы можно найти в [3, 4].

Инструмент воспроизводит ноты нескольких октав. Как и в классическом терменвоксе, один датчик (с большим максимальным измеряемым расстоя­нием) задаёт высоту тона формируемо­го звука, второй — его громкость. Сиг­налы датчиков обрабатывает и пре­образует в звуковой сигнал микроконт­роллер.

Схема терменвокса изображена на рис. 1. Он выполнен на микроконтроллере ATmega16-16PU, тактовая частота которого (16 МГц) стабилизирована кварцевым резонатором ZQ1. Поэтому частоты нот имеют высокую стабиль­ность. Блок питания и выходной усили­тель на схеме не показаны.

Рис. 1

Рис. 1

Датчики В1 и В2 подключают к разъ­ёмам Х1 и Х2 двумя трёхпроводными гибкими кабелями длиной около 0,5 м из провода МГТФ. Их сигналы посту­пают соответственно на входы ADC6 и ADC7 микроконтроллера (это входы ка­налов его АЦП). Форма выходного сиг­нала задана в программе массивом, содержащим 64 константы — отсчёты мгновенных значений сигнала в одном его периоде. Частоту выборки отсчётов из массива (в 64 раза большую задан­ной частоты выходного сигнала) задаёт шестнадцатиразрядный таймер Т1. Он работает в режиме СТС и генерирует запросы прерывания с периодом, за­данным числом, загруженным в его регистр OCR1A.

В зависимости от измеренного дат­чиком В2 расстояния до руки исполни­теля программа вычисляет индекс эле­мента массива aChastota, содержащего нужное для загрузки в регистр OCR1A число. По прерываниям от таймера про­грамма выводит в порт С очередные мгновенные значения формируемого сигнала.

Зависимость выходного напряжения датчика Uд от расстояния D (на рабочем участке) описывает функция вида0

Методика определения её коэффи­циентов А и В приведена в статье на сай­те [3]. Но более удобно, на мой взгляд, использовать для этого электронную таблицу Excel.

Сначала измерьте напряжение на выходе датчика при различном расстоя­нии от его панели, на которой располо­жены окна ИК-излучателя и фотоприём­ника, до преграды. Ею может служить любой плоский предмет — книга, короб­ка и даже собственная ладонь. Напря­жение измеряют любым точным вольт­метром постоянного тока. Замеры до­статочно делать через каждые 10 см расстояния. Результаты заносите в таб­лицу. На рис. 2 показана эта таблица, готовая к расчёту. В электронном виде она находится в файле tables.xls на Листе 1.

Рис. 2

Рис. 2

В ячейках В7—В13 указаны расстоя­ния D в сантиметрах. В ячейках С7— С13 — соответствующие им измерен­ные значения напряжения на выходе датчика Uизм в милливольтах. В ячейках D7—D13 выведены рассчитанные про­граммой Excel по приведённой выше формуле значения этого напряжения Uд. Коэффициенты А и В помещены со­ответственно в ячейки D2 и D3. Их на­чальные значения А=20000 и В=150 заданы произвольно. Графики изме­ренной (красный) и расчётной (синий) зависимостей напряжения от расстоя­ния расположены в колонках J—N.

В столбец Е выведены значения раз­ностей измеренного и расчётного на­пряжения, а в столбец F — квадраты этих разностей. Подсчитанная програм­мой Excel сумма квадратов разностей, характеризующая точность совпадения экспериментальной и расчётной зави­симостей, выведена в ячейку F15.

Процедура подборки коэффициен­тов занимает не более 10 мин. Изменяя их, наблюдайте, как графики сближают­ся, а сумма в ячейке F15 уменьшается. В рассматриваемом случае минимальное значение в этой ячейке, равное 848, достигается при А=23910 и В=173. При этом графики практически сливаются. Следовательно, для использованного автором экземпляра датчика зависи­мость выходного напряжения в милли­вольтах от расстояния в сантиметрах аппроксимирует формула0

Выходной код К канала ADC7 АЦП микроконтроллера, оцифровывающего это напряжение, равен0

где Uобр — образцовое напряжение АЦП; N — число двоичных разрядов АЦП. В рассматриваемом случае Uобр = 5090 мВ (точное значение напряжения питания микроконтроллера), N=8 (два младших разряда десятиразрядного АЦП не используются).

После подстановки значений Uд, Uобр, N и несложных преобразований полу­чим0

По этой формуле микроконтроллер и должен рассчитывать расстояние в сан­тиметрах, но потребуется использовать 32-разрядную арифметику. Можно уп­ростить расчёты, если пропорционально уменьшить и округлить коэффициенты. В результате, приняв образцовое напря­жение АЦП равным 5120 мВ, получим0

Эта приближённая формула и использована в программе микроконт­роллера. Погрешность вычисления по ней на расстоянии 74 см не превышает 1,5 см, а на расстоянии меньше 60 см она уже меньше сантиметра. Такой погрешностью можно пренебречь, тем более что гриф создаваемого инстру­мента — виртуальный.

При расстоянии до преграды от 10 до 60 см напряжение Uд изменяется в пределах 2550…770 мВ. Значения кодов АЦП при этом изменяются от 127 до 28. Если в зоне чувствительности датчика ничего нет, напряжение Uд будет около 200 мВ, при этом АЦП выдаёт код 10. На расстояниях менее 10 см характер зависимости напряже­ния от расстояния резко меняется — оно быстро падает [3], что связано с конструктивными особенностями дат­чика. Чтобы не учитывать этот эффект, на удалении около 10 см от датчика ус­тановлено искусственное препятствие, мешающее приблизить руку к датчику на меньшее расстояние.

Индекс элемента массива aChastota, содержащего константы для загрузки в регистр OCR1A таймера 1, получается уменьшением значения D на 10. Чтобы заполнить этот массив, была создана электронная таблица Excel, находящая­ся в файле tables.xls на Листе 2. Её стол­бец В заполнен получаемыми от АЦП значениями К от 127 до 23 с шагом 1. В столбце С — вычисленные по приведён­ной выше упрощённой формуле целые части значений D. Дело в том, что про­грамма микроконтроллера при вычис­лениях с фиксированной запятой отбра­сывает дробные части чисел.

В столбец D помещены значения ин­дексов массива aChastota. Цветом вы­делены строки нижней части таблицы, где индекс становится больше 63 и вы­ходит за границу массива. Это происхо­дит на больших расстояниях руки от датчика, когда выходной код АЦП стано­вится меньше 25. В этом случае про­грамма выключает звуковой сигнал, ус­танавливая его амплитуду равной нулю.

Зависимость получилась крайне не­равномерной. В её начальной части при изменении расстояния на сантиметр код АЦП проходит несколько последо­вательных значений. Например, в ин­тервал от 10 до 11 см укладываются коды от 122 до 113. В интервале при­близительно от 25 до 35 см каждому сантиметру расстояния соответствует изменение кода на единицу. А в конце грифа код изменяется на единицу лишь при изменении расстояния на несколь­ко сантиметров. Например, К=31 соот­ветствует расстоянию 53 см, а К=32 — уже 56 см. Следовательно, при пере­мещении руки от 53 до 55 см включи­тельно программа будет обращаться к одному и тому же элементу массива aChastota[43] и генерировать звук од­ной и той же тональности. К элементам aChastota[44] и aChastota[45] обраще­ний не будет никогда, поэтому их значе­ния можно сделать любыми, например, равными aChastota[43].

Массив aChastota заполнен с помо­щью ещё одной электронной таблицы (Лист 3 в файле tables.xls). В её столб­це В, начиная с ячейки В10, находятся значения индекса от 0 до 63. Цветной заливкой выделены строки с индекса­ми, не встречающимися в предыдущей таблице. Всего их 18. Это значит, что ин­струмент сможет воспроизвести 46 нот (почти четыре октавы). Пусть это будут малая, первая, вторая октавы и часть третьей до ноты ля включительно.

Столбец С заполним значениями частот нот. Для этого в ячейку СЮ поместим частоту ноты ля третьей октавы 1760 Гц. Значение в следующей ячейке получим делением предыдуще­го значения на 1,0595 [5]. Тем же спо­собом заполняем все последующие ячейки столбца С, пропуская выделен­ные заливкой. В пропущенные ячейки поместим значения, взятые из преды­дущих.

В столбец D программа Excel поме­стит значения, загружаемые в регистр OCR 1А таймера Т1, вычислив их по взя­той из [6] формуле0

где Fclk= 16000000 Гц — тактовая частота микроконтроллера; F — частота выход­ного сигнала; PS=8 — коэффициент де­ления частоты предварительным дели­телем таймера; S=64 — число отсчётов сигнала за период.

Можно было бы поручить вычислять эти значения программе микроконтрол­лера, однако экономнее с точки зрения расхода машинного времени вычислить их заранее, занести в массив и выби­рать оттуда по необходимости. Памяти для хранения таблиц у микроконтролле­ра достаточно.

Предварительно заполнив столбец F символами запятой, можно скопиро­вать столбцы Е и F в буфер обмена Windows, а затем выгрузить из буфера прямо в текст программы.

С полученным массивом гриф раз­рабатываемого терменвокса похож на классический — частота выходного сигнала тем выше, чем ближе рука к датчику.

Выходной аналоговый сигнал фор­мируют умножающий десятиразряд­ный ЦАП 572ПА1А (DA3) и операцион­ный усилитель КР140УД8А (DA4), вклю­чённые по типовой схеме. Из порта С на ЦАП поступают восьмиразрядные коды, два младших разряда ЦАП не используются.

Образцовое напряжение Uref для ЦАП, которому пропорциональна амплитуда выходного сигнала, программа форми­рует с помощью работающего в режиме FastPWM таймера ТО микроконтролле­ра. Оцифрованный каналом 6 АЦП сиг­нал датчика В1 задаёт коэффициент заполнения импульсов, генерируемых таймером 0 на выходе ОСО. Выделенная фильтром R5C6 постоянная составляю­щая этих импульсов через повторитель напряжения на ОУ DA2 поступает на вход Uref, ЦАП.

Сформированный звуковой сигнал с выхода ОУ DA4 поступает на разъём ХЗ. Это гнездо для стандартного аудио­штекера диаметром 3,5 мм. Резистор R6 нужен, если предполагается про­слушивать звук через головные теле­фоны.

Питают инструмент от любого источ­ника постоянного напряжения 5 В. На­пряжения +9 В и -9 В для питания ОУ DA2 и DA4 получают от преобразователя напряжения, входящего в состав микро­схемы адаптера последовательного ин­терфейса МАХ232СРЕ (DA1).

Как уже было сказано, форма выход­ного сигнала задана массивами его мгновенных значений. Всего их четыре по числу реализуемых форм сигналов, показанных на рис. 3. Каждый массив содержит 64 отсчёта одного периода сигнала. При работе инструмента мас­сивы, из которых выбираются отсчёты, перебираются программно, сменяясь каждые несколько минут. Смена сопро­вождается изменением тембра звуча­ния.

Рис. 3

Рис. 3

Управляют инструментом двумя ру­ками. Правой рукой задают тон звука, левой — его громкость. Ось зоны чувст­вительности датчика В1 должна быть направлена влево-вверх от исполните­ля, а ось зоны чувствительности датчи­ка В2 — вправо-вверх. Наклоны осей особого значения не имеют, нужно лишь проследить, чтобы при движении руки не попадали в зоны чувствительности «чужих» датчиков. Для удобства обе оси должны быть наклонены одина­ково относительно горизонтальной плоскости.

Электронный блок инструмента со­бран на макетной плате проводным монтажом и встроен в один из экспона­тов музея (макет робота). В нём приме­нены резисторы ОМЛТ-0,125, конден­саторы КМ5. Вместо микроконтролле­ра, указанного на схеме, можно ис­пользовать ATmega8535 или ATmega32 без изменения схемы, но для этого нужно перетранслировать программу под применённый микроконтроллер. ОУ КР140УД8А можно заменить дру­гим, например, К544УД2 или импорт­ным с предельной скоростью нараста­ния выходного напряжения не менее 2 В/мкс. Усилители с меньшим быстро­действием искажают высокочастотные сигналы.

Вместо К140УД14А можно приме­нить другой ОУ с низким потреблением. Амплитуда выходного сигнала меняется медленно, в такт движениям руки, и быстродействие усилителя здесь не­критично. Если применить ОУ с боль­шим потреблением, напряжение их пи­тания может «просесть». Например, при использовании двух ОУ КР140УД8А с общим потреблением 10 мА от микро­схемы MAX232CPE будут получены на­пряжения +7,5 В и -6 В [7].

Программа для микроконтроллера написана на языке С в среде WinAVR (AVR Toolchain), входящей в состав IDE AVR Studio v4.19.

Прибор имеет ряд недостатков — искажение формы сигнала из-за малого числа отсчётов на период, недостаточ­ный диапазон воспроизводимых нот, пропуски в таблице частот. Чтобы устра­нить их, нужно применить более произ­водительный микроконтроллер и АЦП большей разрядности. Всё это имеет смысл при разработке инструмента для серьёзного применения.

ЛИТЕРАТУРА

  1. Королёв Л. Терменвокс. — Радио, 2005, № 8, с.49-51; № 9, с. 48-51.
  2. Суров С. Терменнот или терменвокс на микроконтроллере. — Радио, 2013, № 12, с. 21-24
  3. ИК-дальномеры SHARP. — URL: http://roboforum.ru/wiki/MK-AaabHOMepbiSHARP
  4. ИК-Дальномеры Sharp GP2D12 и GP2Y0A — URL: http://roboforum.ru/wiki/GP2D12 (30.08.15).
  5. Ноты и частота. — URL: http://gtwiki.su/index.php?title=HoTbi и частота
  6. Прокопенко В. С. Программирование микроконтроллеров ATMEL на языке С. — Киев: «МК-Пресс», СПб.: «КОРОНА-ВЕК», 2012.
  7. МАХ232СРЕ: 5V-Powered, Multichannel RS-232 Drivers/Receivers. — URL: http://pdf1.alldatasheet.com/datasheet-pdf/view/73108/MAXIM/MAX232CPE.html

Архив к проекту (электронные таблицы и программа микроконтроллера)

Автор: С. СВЕЧИХИН, г. Красноярск
Источник: журнал Радио №12, 2015

admin

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *