Звуковой синтезатор efm8: управление динамиком

Звуковой синтезатор efm8: управление динамиком
Звуковой синтезатор efm8: управление динамиком
Anonim

Звуковой синтезатор EFM8: управление динамиком

Введение

Часть 2 в разделе «Как создать звуковой синтезатор на основе EFM8».

Рекомендуемый уровень

промежуточный

Требуемое оборудование / программное обеспечение

  • Плата оценки SLFK2000A EFM8
  • Интегрированная среда разработки Simplicity Studio
  • Компоненты, перечисленные в спецификации
Описание Количество Digi-Key p / n
макетировать 1 377-2094-ND
Провода перемычки между розетками 4 1471-1231-ND
Напряжение питания 5 В переменного / постоянного тока 1 1470-2771-ND
Конденсаторы 0, 1 мкФ 4 399-4266-ND
Фильтр нижних частот с переключаемым конденсатором нижнего порядка 1 LTC1063CN8 # PBF-ND
Операционный усилитель общего назначения 2 LT1638CN8 # PBF-ND
Аналоговый буфер питания 1 LT1010CN8 # PBF-ND
2 мкФ конденсаторы 2 490-8835-ND
Резисторы 10 кОм 2 10KQBK-ND
100 Ом резистор 1 100QBK-ND
8 Ом, 1 Вт динамик 1 GF0771-ND

Обзор проекта

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

  1. Он содержит высокочастотный шум, называемый «прохождение часов».
  2. Он имеет ненулевое смещение постоянного тока.
  3. Он не может управлять динамиком, потому что LTC1063 не может обеспечить достаточный выходной ток.

В этой статье мы сосредоточимся на устранении этих трех недостатков с помощью некоторых простых схем формирования сигналов, а затем мы изменим прошивку так, чтобы динамик воспроизводил последовательность звуков, соответствующую шкале C major.

Вот и вся схема для этого проекта:

Image
Image

В следующих разделах соответствующие части схемы будут воспроизведены в увеличенном виде.

Прохождение часов

Фильтры с переключаемыми конденсаторами обладают значительными преимуществами по сравнению с стандартными пассивными или активными фильтрами, но всегда есть компромисс. Важным недостатком технологии с переключаемой крышкой является прохождение часов. В LTC1063 цифровой тактовый сигнал непосредственно управляет схемой, которая фильтрует аналоговый сигнал. Таким образом, неудивительно, что наша синусоидальная волна выходит из чипа, получив некоторый высокочастотный шум. Вот выход LTC1063 для сигнала 523, 25 Гц (соответствует музыкальной ноте C 5):

Image
Image

Более пристальный взгляд показывает шум, передаваемый по часам:

Image
Image

Курсоры подтверждают, что шум вызван часами, поскольку тактовая частота составляет 523, 25 Гц × 125 = 65, 4 кГц (вспомните из предыдущей статьи, что отношение сигнал-сигнал-звук составляет от 125 до 1). Вы можете видеть, что шум похож на шаблон «ступенька», который возникает в аналоговом сигнале от цифроаналогового преобразователя или в двоичных числах, генерируемых аналого-цифровым преобразователем. Это напоминает нам, что фильтр с переключаемой крышкой на самом деле производит выборку входного сигнала, например, АЦП, и мы используем «прохождение часов» для обозначения тактового шума ступени, который присутствует на выходе любой системы дискретизированных данных. Преимущество производителей ИС заключается в разработке фильтров с переключаемым конденсатором, так что отношение сигнал-отсечка является высоким, потому что тогда шум с подачей сигнала может быть эффективно подавлен простым прохождением низкочастотного фильтра первого порядка:

Image
Image

R 1 и C 3 обеспечивают спуск 20 дБ / декада с частотой среза 1 / (2πRC) = 796 Гц. Это означает, что тактовая частота, показанная выше, будет уменьшаться почти на 40 дБ, что является уменьшением амплитуды в 100 раз. Все остальные тактовые частоты будут еще более ослаблены, поскольку примечание C 5 является самой низкой записью в шкале, используемой для этого проекта, которая начинается с C 5 (523, 25 Гц) и заканчивается C 6 (1046, 5 Гц). Следующая трассировка области, измеренная на контакте 3 компонента ОУ, демонстрирует эффективность фильтра:

Image
Image

Вы можете задаться вопросом, почему частота среза установлена на уровне 796 Гц, если мы используем звуковые частоты до 1046, 5 Гц. Это хороший вопрос, и видео в конце этой статьи ясно показывает, что высшие ноты в масштабе ослабляются этим фильтром нижних частот. Вы также можете заметить, что высшие ноты не звучат менее громко, чем нижние ноты. На самом деле, они звучат немного громче. Это происходит потому, что и наш оратор, и наше чувство слуха предпочитают более высокие частоты. Человеческое ухо демонстрирует постепенно возрастающую чувствительность от C 5 (около 500 Гц) до C 6 (около 1 кГц), а частотная характеристика динамика также демонстрирует общую тенденцию роста в этой полосе:

Image
Image

Таким образом, установка частоты среза вблизи середины нашего частотного диапазона фактически помогает сбалансировать воспринимаемую громкость нот в масштабе.

Смещение DC

Среднее значение синусоидальной волны, которое мы отправляем в динамик, должно быть равно нулю, другими словами, чистый AC без компонента постоянного тока. Смещение по постоянному току в звуковом сигнале смещает звуковую катушку динамика и, таким образом, уменьшает динамический диапазон, а также может способствовать искажению. В нашей схеме мы удаляем смещение постоянного тока, просто вставив конденсатор DC-блокировки (C 6) между выходом первого операционного усилителя и входом второго.

Image
Image

В этой точке схемы мы также используем R 3 и R 4 для уменьшения амплитуды сигнала наполовину; мы делаем это, потому что сигнал с полной амплитудой потребует больше тока, чем наш буфер может надежно обеспечить, как описано в следующем разделе.

Усилитель мощности

Звуковой сигнал примечания C 5 на выходе второго операционного усилителя выглядит следующим образом:

Image
Image

Пиковая амплитуда составляет 1, 32 В. Если мы попытаемся пробить наш 8-Ом громкоговоритель с этим сигналом, пиковый ток будет примерно 1, 32 В / 8 Ом = 165 мА. Однако максимальный выходной ток операционного усилителя LT1638 находится в диапазоне 25 мА. Вот почему нам нужна ступень усилителя мощности - амплитуда напряжения прекрасна, но нам нужно что-то, что может обеспечить больше тока и тем самым доставить значительную мощность для динамика. Для этого мы используем LT1010, который является буфером с единичным усилением, который может увеличить выходную емкость тока существующей схемы ОУ до примерно 150 мА:

Image
Image

Как указано в схеме, LT1010 предназначен для включения в цикл обратной связи операционного усилителя. Положительный вывод динамика подключен к выходному выводу LT1010, а отрицательный вывод подключен к узлу заземления цепи. Вот сигнал, который управляет динамиком:

Image
Image

Почему пиковая амплитуда составляет всего 800 мВ вместо 1, 32 В? Поскольку показанное здесь напряжение представляет собой, по существу, выход резистивного делителя напряжения, состоящего из выходного импеданса LT1010 и импеданса катушки 8 Ω. Выходной импеданс LT1010 задается где-то между 5 и 10 Ом; в этом случае он составляет около 5 Ом, так как V- динамик = 800 мВ ≈ 1, 32 В × (8 Ом / (8 Ом + 5 Ом)).

При максимальной амплитуде 800 мВ, LT1010 должен подавать 800 мВ / 8 Ом = 100 мА, что удобно в пределах его максимального номинального тока. Теперь вы видите, почему мы уменьшили напряжение наполовину на входе ко второму операционному усилителю: максимальная амплитуда 1, 6 В, примененная к динамику, потребует 200 мА. LT1010, вероятно, может выдержать это, потому что мы работаем при умеренных температурах и потому, что наш синусоидальный ток не постоянно находится на уровне 200 мА, но мир достаточно напряжен, как есть, - зачем подчеркивать LT1010 только для демонстрационного проекта?

Прошивка

Прошивка для этого проекта одинакова с точки зрения ввода-вывода портов, периферийных устройств и прерываний. Новый код связан с новыми звуковыми частотами, которые мы генерируем:


#define SOUND_C5_INCREMENT 1958 #define FILTCLK_C5_INCREMENT 16 #define SOUND_D5_INCREMENT 1744 #define FILTCLK_D5_INCREMENT 14 #define SOUND_E5_INCREMENT 1554 #define FILTCLK_E5_INCREMENT 12 #define SOUND_F5_INCREMENT 1467 #define FILTCLK_F5_INCREMENT 12 #define SOUND_G5_INCREMENT 1307 #define FILTCLK_G5_INCREMENT 10 #define SOUND_A5_INCREMENT 1164 #define FILTCLK_A5_INCREMENT 9 #define SOUND_B5_INCREMENT 1037 #define FILTCLK_B5_INCREMENT 8 #define SOUND_C6_INCREMENT 979 #define FILTCLK_C6_INCREMENT 8

Теперь у нас есть звуковые сигналы и тактовые сигналы для всех музыкальных нот (исключая острые предметы и квартиры) от C 5 до C 6. Основной цикл while многократно воспроизводит масштаб C, циклически изменяя соответствующие значения приращения, при этом каждая нота удерживается в течение одной секунды:


while(1) { Current_SoundSignal_Increment = SOUND_C5_INCREMENT; Current_FilterClock_Increment = FILTCLK_C5_INCREMENT; //delay 1 second SFRPAGE = TIMER3_PAGE; TMR3 = 0; while(TMR3<10000); Current_SoundSignal_Increment = SOUND_D5_INCREMENT; Current_FilterClock_Increment = FILTCLK_D5_INCREMENT; //delay 1 second SFRPAGE = TIMER3_PAGE; TMR3 = 0; while(TMR3<10000); Current_SoundSignal_Increment = SOUND_E5_INCREMENT; Current_FilterClock_Increment = FILTCLK_E5_INCREMENT; //delay 1 second SFRPAGE = TIMER3_PAGE; TMR3 = 0; while(TMR3<10000); Current_SoundSignal_Increment = SOUND_F5_INCREMENT; Current_FilterClock_Increment = FILTCLK_F5_INCREMENT; //delay 1 second SFRPAGE = TIMER3_PAGE; TMR3 = 0; while(TMR3<10000); Current_SoundSignal_Increment = SOUND_G5_INCREMENT; Current_FilterClock_Increment = FILTCLK_G5_INCREMENT; //delay 1 second SFRPAGE = TIMER3_PAGE; TMR3 = 0; while(TMR3<10000); Current_SoundSignal_Increment = SOUND_A5_INCREMENT; Current_FilterClock_Increment = FILTCLK_A5_INCREMENT; //delay 1 second SFRPAGE = TIMER3_PAGE; TMR3 = 0; while(TMR3<10000); Current_SoundSignal_Increment = SOUND_B5_INCREMENT; Current_FilterClock_Increment = FILTCLK_B5_INCREMENT; //delay 1 second SFRPAGE = TIMER3_PAGE; TMR3 = 0; while(TMR3<10000); Current_SoundSignal_Increment = SOUND_C6_INCREMENT; Current_FilterClock_Increment = FILTCLK_C6_INCREMENT; //delay 1 second SFRPAGE = TIMER3_PAGE; TMR3 = 0; while(TMR3<10000); }

Скачать код

В следующей статье мы расширим прошивку, чтобы включить USB-подключение и дополнительные функции синхронизации, чтобы мы могли удобно синтезировать мелодии.

видео

Обратитесь к разделу «Проход по часам» для объяснения причин уменьшения амплитуды по мере увеличения частоты. Статический звук, который вы слышите, связан с процессом записи; звук, выходящий из динамика, чистый и приятный, особенно нижние ноты.

Следующая статья в серии: Синтезатор звука EFM8: воспроизведение мелодий через USB

Попробуйте этот проект сами! Получить спецификацию.