Вы здесь:
Главная » Все записи » Генератор звуковых частот от 1Гц до 65кГц на ATtiny2313

Генератор звуковых частот от 1Гц до 65кГц на ATtiny2313

Простой многофункциональный НЧ генератор DDS на микропроцессоре с низким искажением

Простой многофункциональный НЧ генератор DDS на микропроцессоре с низким искажениемЭтот генератор для аудио устройств с низким искажением генерирует частоту от 1 Гц до выше 65 кГц.

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

Генератор собран на недорогом микропроцессоре ATtiny2313 и КМОП микросхеме 4015.

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

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

Я явно нуждался в хорошем, точном, синусоидальном генераторе. Когда я рассматривал варианты, я решил, что, вероятно, будет так же легко построить полный функциональный генератор с синусоидальной, квадратной и несколькими другими формами волны.

Следующий вопрос состоял в том, чтобы спроектировать свой собственный блок, построить существующий дизайн или купить функциональный генератор. Я быстро избавился от идеи «покупки». Инструменты в моем ценовом диапазоне имели ограниченные возможности, и те, которые мне нравились, были далеко за пределами моего бюджета.

Микропроцессорные разработки программного обеспечения DDS понравились мне, так как у меня есть несколько навыков в этой области. Большинство проектов, которые я нашел, использовали семейство процессоров fast Atmel AVR. Тем не менее, несмотря на поиск ряда потенциальных проектов, большинство, если не все, имели проблемы.

Например, один дизайн, с которым я столкнулся, был действительно красивым набором функциональных генераторов от Altronics, опубликованным в июньском выпуске 2009 года Silicon Chip. Но он был ограничен максимальной частотой 30 кГц, и у него было удивительно высокое искажение 4%. Метод, используемый для управления устройством, тоже был чем-то вроде проблемы. Кнопки Вверх / Вниз были использованы для выбора необходимой частоты. Это не очень удобно использовать на практике, и что еще хуже, у него были некоторые необычные шаги настройки. Например, генератор способен настраивать только шаги 500 Гц на частотах выше 1 кГц. Если бы я хотел получить выход 1250 Гц, это бы не вышло.

Итак, было решением собрать свой генератор.

Функциональное описание НЧ генератора

Этот генератор будет использоваться для различных аудио тестовых работ, а также для конкретного тестирования цифрового аудиофильтра, для которого изначально все разрабатывалось. Моя цель состояла в том, чтобы создать функциональный генератор с низким искажением, в идеале менее 0,5%, охватывающий по крайней мере от 1 Гц до 50 кГц, с разрешением 1 Гц. Я также хотел, чтобы генератор имел разумный диапазон выходных уровней, чтобы позволить тестировать микрофонные входы, что требует низких уровней mV, а также фильтры, где часто требуется несколько вольт выходного уровня.

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

Особенности конструкции моего функционального генератора приведены в Таблице 1:

Простой многофункциональный НЧ генератор DDS на микропроцессоре с низким искажением

Таблица 1: Характеристики Функционального Генератора

Описание схемы генератора

Ядром этой конструкции является микропроцессор, недорогой Atmel ATtiny2313 из семейства Atmel AVR. Этот микропроцессор способен на высокоскоростной деятельности, существенной для цифрового синтеза формы волны. Он синхронизируется внешним Кварцем 16.934 МГц. Этот кристалл может показаться необычной частотой, но это часто встречающийся Кристалл и часто используется в проигрывателях компакт-дисков. Использование кристалла значительно повышает точность и стабильность работы функционального генератора по сравнению с альтернативным внутренним микропроцессорным генератором, применяемым в некоторых других конструкциях.

Простой многофункциональный НЧ генератор DDS на микропроцессоре с низким искажением

 

Рисунок 2: Принципиальная схема функционального генератора DDS

Существует несколько способов получения желаемой формы сигнала. Одним из способов является использование широтно-импульсной модуляции (ШИМ). В этом случае ширина импульса высокоскоростной прямоугольной волны, скажем, около 1 МГц или более, изменяется с помощью программного обеспечения.

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

Квадратные импульсы 1 МГц будут отфильтрованы. Фильтр нижних частот обычно отсекает около 100 кГц. Аудиовыход может включать синусоидальные, квадратные или другие формы сигнала.

Преимущество этого подхода заключается в том, что он требует только использования одного контакта на микропроцессоре. Многие микропроцессоры имеют ШИМ функциональность встроена в чип в эти дни.

Я потратил некоторое время на работу над этим подходом, прежде чем отбросить его как непрактичный для этого приложения. Несмотря на некоторую обширную дополнительную фильтрацию, этот метод не смог обеспечить производительность, которую я искал. (Эта работа не была потрачена впустую – она превратилась в миниатюрный генератор прямоугольных волн с ШИМ, разверткой и фиксированными синусоидальными выходами, которые я также построил для использования с проектными работами SMPS)

Альтернативный метод более широко используется. Это использует 8-разрядный порт на чипе для привода пассивного резистора цифро-аналогового (D/A) преобразователя. Это в некоторой степени упрощает программное обеспечение, но требует в восемь раз больше ресурсов pin-кода метода PWM. Поскольку это обеспечивало требуемую производительность, это был метод, используемый в этой конструкции.

Такой подход не требует использования 1% резисторов, хотя они обычно встречаются в этом типе аналого-цифрового преобразователя. Единственное требование для точного коэффициента резистора 2:1.

Поворотный энкодер

Частота функционального генератора выбирается с помощью поворотного энкодера. Я восстановил довольно много из них из старых автомобильных радиоприемников и несуществующих стереосистем.

Простой многофункциональный НЧ генератор DDS на микропроцессоре с низким искажениемРисунок 3: Типичный поворотный энкодер с интегральным переключателем

Эти роторные шифраторы производят пару прямоугольных волн сдвинутых участком, с руководством или запаздыванием в участке показывая направление вращения ручки. Эти шифраторы почти все приходят с интегрированным переключателем, активированным путем отжимать вниз на ручке, и это использовано в этой конструкции для того чтобы выбрать необходимый настраивая тариф шага. Шаги настройки 1, 10 или 100 Гц могут быть выбраны в любом месте диапазона генератора.

Если вы не можете найти один из этих кодеров, можно сделать один из старых — компьютерная мышь. Поиск в Google поможет сделать свой собственный поворотный кодер с помощью компьютерной мыши.

ЖК-дисплей и интерфейс

ЖК-дисплей представляет собой стандартный 2-строчный 8-символьный буквенно-цифровой дисплей. Большинство конструкций функциональных генераторов используют более крупный 16-символьный дисплей на строку, а затем оставляют большую часть дисплея пустой и неиспользуемой. Я стремился к компактному блоку, поэтому этот меньший дисплей был идеальным, хотя нет почти никакой экономии средств по сравнению с более крупным 16-символьным типом.

Для сопряжения этого ЖК-дисплея требуется не менее шести контактов, но у меня закончились контакты, так как мне нужно было восемь контактов для D/A. с недостаточными контактами, доступными на ATtiny2313, я мог бы просто использовать более крупный микропроцессор AVR. Однако я обнаружил, что цена на эти более крупные чипы выросла довольно быстро. Оказалось, что гораздо дешевле использовать доступные компоненты, в данном случае сдвиговый регистр CMOS 4015, для решения проблемы.

Простой многофункциональный НЧ генератор DDS на микропроцессоре с низким искажением

Рисунок 4: ЖК-интерфейс с регистром сдвига CD4015

Умная идея состояла в том, чтобы использовать два разных синхронизированных импульса для фиксации значения 0 или 1 бит в регистре сдвига. На рисунке 4 логический уровень, присутствующий на D-входе в 4015, синхронизируется с восходящим фронтом каждого из этих синхронизированных импульсов. Короткий импульс 1uS слишком короток, чтобы изменить высокий логический уровень, присутствующий на C8 (2n2), и поэтому ‘1’ синхронизируется восходящим фронтом этого импульса. Однако более длинного импульса 15uS достаточно для разряда C8, в результате чего “0” синхронизируется с 4015 восходящим фронтом этого импульса. Следующий 30uS высокий логический уровень «хвост» восстанавливает C8 до высокого логического уровня.

В результате до восьми битов могут быть сдвинуты в 4015. Это может занять до 400uS, но это ничего в схеме вещей. ЖК-дисплей гораздо медленнее реагирует на события.

Пятый бит, отправленный на 4015, используется для управления выводом R/S ЖК-дисплея. Это устанавливает режим ЖК-дисплея. ЖК-дисплей включен с отдельным выводом от микропроцессора. Программное обеспечение ожидает, пока данные на 4015 выходах установятся, прежде чем включить ЖК-дисплей с этим соединением, и это позволяет новым данным на 4015 выходах считываться ЖК-дисплеем.

Небольшая перемычка на плате (обозначенная на схеме SW5) использовалась для включения и выключения светодиодной подсветки. Светодиодная подсветка потребляет много тока от аккумулятора. Первоначально я думал, что будет важно иметь подсветку, но через некоторое время я выключил его, и с тех пор я его не использовал. Дисплей имеет адекватный контракт без дополнительной помощи от подсветки.

Кроме того, в то время как я использовал резистор 56 ом для внутреннего светодиода подсветки ЖК-дисплея, и это значение показано на принципиальной схеме (оно обозначено R3 на схеме), я обнаружил, что R3 можно увеличить до 150 Ом без действительно заметного изменения уровня подсветки. Однако ЖК-дисплеи и подсветка будут отличаться. Если вам нужна подсветка, вам может потребоваться попробовать разные значения. Однако я не рекомендую использовать что-либо более низкое по значению, чем 56 ом для R3.

VR2 (10k) устанавливает контрастность ЖК-дисплея. Когда вы впервые включите устройство, это должно быть отрегулировано, чтобы вы могли четко видеть дисплей. Попробуйте установить его изначально по середине.

Выход Функционального Генератора

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

Если необходимо, добавьте конденсатор большого значения последовательно с каждым выходом. Электролитический конденсатор 22uF 16V подходит, хотя выходной уровень будет скатываться несколько ниже 10 Гц, но более крупные конденсаторы тоже нежелательны.

Первый (синфазный) выход генератора управляется непрерывно с переменной передней панели “уровень” управления, в то время как второй (инвертированный) выход имеет дополнительный трехступенчатый аттенюатор, чтобы обеспечить более низкие уровни выходного сигнала. Я использую этот выход для тестирования более чувствительных схем, таких как микрофонные входы на передатчиках. Этот выход также инвертирует формы волны, но это имеет значение только с пилообразной волной. Полезная вещь в этом выходном дизайне заключалась в том, что он избавил меня от необходимости кодировать в обоих пилообразных волновых формах в ПЗУ.

Я использовал TL072 — она имеет лучшие характеристики, чем более распространенный LM358, и она дала гораздо лучшую производительность в верхнем конце частотного диапазона. Здесь также могут использоваться другие современные операционные усилители.

Источник питания

Функциональный генератор питается от стандартной батареи 9В. Ток относительно высок для этого типа батареи, поэтому обязательно следует использовать щелочной тип. На сегодняшний день эта батарея оказалась удовлетворительной, хотя примечания, выше о подсветке следует иметь в виду. Использование подсветки приведет к довольно быстрому разряду батареи, если на R3 не используется резистор 150 Ом (или более высокое значение).

Чтобы еще больше увеличить срок службы батареи, был использован регулятор падения низкого напряжения (LP2951). Это позволяет напряжению батареи упасть примерно до 5,5 в, прежде чем мне придется выбросить её. Вы можете использовать тип 7805 или 78L05, но время автономной работы будет уменьшено, потому что эти стабилизаторы требуют, чтобы на них падало несколько вольт.

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

Все программное обеспечение было написано на ассемблере, чтобы обеспечить оптимальную скорость. Существует четыре основных раздела кода:

  • Инициализация – настройка прибора при включении питания
  • Входной код — управляет поворотным энкодером и переключателями
  • Генерация тона — крошечный сегмент кода, который выполняет основную часть работы
  • Display code — код для управления ЖК-дисплеем и 2-проводным ЖК-интерфейсом через сдвиговый регистр 4015

Начальный код запускает генератор с коротким двухстрочным скроллинговым сообщением о входе, а затем функциональный генератор выводит синусоидальную волну 1000 Гц. Генератор инициализирован с размером шага настройки 1Hz.

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

Диоды D1 и D2 обнаруживают замыкания переключателя и инициируют необходимую процедуру прерывания, в то время как активность вращающегося кодера обнаруживается непосредственно со вторым входом прерывания.

Использование прерываний вызывает кратковременное мерцание на выходном сигнале, когда производится изменение настройки генератора. Процессор работает очень быстро, но недостаточно быстро, чтобы успеть прочитать новые настройки коммутатора, обновить ЖК-дисплей и одновременно сохранить цифровую форму сигнала. Это типично для всех этих конструкций и мало беспокоит, когда генератор фактически используется.

Большая часть ЖК-кода большинство буквенно-цифровых дисплеев используют либо Hitachi HD44780, либо совместимый вариант этого интерфейсного чипа. Мой дисплей использовал совместимый китайский чип Sunplus SPLC780D.

Эти чипы или их совместимые эквиваленты используются уже несколько лет и редко дают какие-либо проблемы. Однако мой стандартный основной ЖК-код позволяет довольно широко варьировать время отображения ЖК-дисплея. Это проблема с некоторыми из менее дорогих дисплеев от некоторых поставщиков, и это породило проблемы в других проектах. Мое программное обеспечение должно быть совместимо со всеми этими дешевыми ЖК-дисплеями.

Некоторые незначительные дополнения к этому основному коду драйвера LCD обеспечивают необходимую поддержку необычного интерфейса CMOS 4015 serial to parallel. Влияние на размер кода минимально.

Каждая форма сигнала хранится в 256 байтах ПЗУ. Эти “таблицы поиска» формы сигнала должны быть расположены на определенных 256-байтовых адресных границах. Как следствие, это трудно, чтобы получить весь код вместе с как можно больше сигналов. Мне удалось получить весь код и четыре разных сигнала в небольшие 2048 байт (”2kb») пространства ROM, всего 2 байта, чтобы сэкономить!

Монтаж

Я собрал устройство на прототипной плате, а не проектировал конкретную печатную плату для устройства.

В прототипе использовалась композитная деревянная основа толщиной 5 мм размером около 100 х 85 мм и соответствующая алюминиевая передняя панель толщиной 1,5 мм одинакового размера. Четыре нейлоновые шестигранные прокладки длиной 30 мм используются для удержания передней панели на месте и параллельно задней деревянной базовой панели. Эта передняя панель была покрыта лазерной печатной панелью (доступна в области загрузки в конце статьи.

Использование многофункционального НЧ-генератора

Включите генератор. Сообщение о входе будет прокручиваться на ЖК-дисплее. Затем дисплей переключится на обычное отображение настроек частоты и формы сигнала. Начальная установка на включение питания-это синусоида 1000 Гц. Скорость настройки, также устанавливается на 1 Гц при включении питания, поэтому вращение ручки частоты должно увеличивать или уменьшать выходную частоту с шагом 1 Гц.

Нажатие на регулятор частоты активирует встроенный ступенчатый переключатель. Нажатие этой кнопки позволяет выбрать следующий размер шага настройки, от 1 до 10 до 100 Гц, а затем снова вернуться к шагам 1 Гц. Это позволяет быстрее или медленнее настраивать по мере необходимости.

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

Уровень выхода можно установить используя сочетание из непрерывно регулируемое ровное управление и переключатель амортизатора. Регулятор уровня обеспечивает непрерывную регулировку выходных уровней до максимума, выбранного с помощью переключателя аттенюатора (50mV, 500mV или 5Vpp)

Максимальная мощность выхода зависит от напряжения батареи. Будьте осторожны при использовании более высоких выходных уровней!

Предупреждение: аудиовыходы не изолированы от постоянного тока. Хотя большинство входов на фильтрах и оборудовании, которые могут быть протестированы с помощью этого генератора, оснащены изолирующими конденсаторами, это не всегда так. Если вам нужны выходы, свободные от постоянного напряжения, добавьте подходящий конденсатор последовательно с выходным резистором 560 ом.

Искажение формы волны выхода низко на всех формах сигнала. Искажение синусоидальной волны было измерено на уровне менее 0,2%. На рис. 5 показан выходной сигнал, измеренный с помощью звуковой карты ПК. Рисунок иллюстрирует чистый выход функционального генератора, искажения около 0,15%.

Простой многофункциональный НЧ генератор DDS на микропроцессоре с низким искажением

Рисунок 5: Производительность синусоидальной волны 1 кГц была измерена с помощью программного обеспечения на основе звуковой карты ПК и иллюстрирует низкий выход искажений генератора

Другие измерения через ряд уровней и частот выхода (в пределах ограничений измерения ПК и используемой звуковой карты) предлагают что представление искажения было меньше чем 0.2%.

Простой многофункциональный НЧ генератор DDS на микропроцессоре с низким искажением

Простой многофункциональный НЧ генератор DDS на микропроцессоре с низким искажением

P.S. Я использую этот генератор уже более десяти лет и этот опыт показал, что во-первых он соответствует всем целям, которые я поставил для него в начале, он прост в использовании и батареи 9V хватает на долго.

Загрузки: Исходный код: DDS_4015LCD_asm.zip (11kB); Шестнадцатеричный код: DDS_4015LCD_hex.zip (3kB); Передняя панель: панель.gif (29kB); Настройки AVR: ddsFcnGen_FuseBits.txt (2kB)

Автор: Andrew Woodfield ZL2PD



ПОДЕЛИТЕСЬ С ДРУЗЬЯМИ



П О П У Л Я Р Н О Е:

  • Аудио колонки на рупорных динамиках Fostex
  • Аудио колонки на динамиках Fostex

    Модернизация акустических систем

    Ранее я написал о изготовлении аудиоколонок на динамиках Fostex FE206En fullrange с фазоинвертором. Для своих размеров и стоимости на Fostex FE206En двойной бас-рефлекс колонки действительно отлично звучат. Но хочется большего…  Подробнее…

  • Музыкальный центр своими руками
  • Как просто сделать самодельный музыкальный центр?

    Как просто сделать самодельный музыкальный центр?Если у Вас завалялась старая акустическая система, а ещё лучше если она активная, то из неё легко можно сделать хороший музыкальный центр.

    Для этого сейчас в Китае можно купить MP3 панель и пристроить её к Вашей колонке.

    В нём будет поддержка USB флешки, SD карты, FM приемника, bluetooth, а также управление с пульта ДУ.

    Подробнее…

  • Простейший усилитель НЧ для начинающих
  • Простейший усилитель НЧ для начинающих

    Усилитель низкой час­тоты — неотъемлемая часть любого радио-приемника, телевизора, магнитофона, металлоискателя и многих электронных автоматов и приборов. Данный усилитель потребляет мало тока и рекомендуется использовать в аппаратах и устройствах с малым потреблением тока. Подробнее…


Популярность: 1 435 просм.
Вы можете следить за комментариями к этой записи через RSS 2.0. Вы можете оставить комментарий:.

Ваш комментарий


- НАВИГАТОР -




Прислать свою поделку!

А ТАКЖЕ ЕЩЁ ИНТЕРЕСНОЕ:



MasterVintik