255-голосный pcm звуковой генератор

255-Voice PCM Sound Generator. Part 1. Schematic

» Circuits » Audio · Games · Microcontrollers usage

03-14-2011

This is a simple sound generator based on 8-pin SD Audio Player. It is built with an Atmel ATtiny861 microcontroller from Atmel and an SD memory card. The tiny861 has fast PWM outpus like tiny85 so that it can generate clear sound compared to any other AVR chips. On 20-pin device, many GPIO pins are available. It enables to control the sound generator by external signals.

Because it can be controlled with ease, this project is usable as sound module for toys, tone ringers, amusement machines and gadgets.

Hardware

A MicroSD card is used as storage media and also SD and MMC can be used with proper socket conversion. It is controlled in SPI mode via USI. The audio signal is output in PWM and it can drive loudspeakers directly.

Attiny861 Block Diagram

Click to enlarge

It may be thought that the output current exceeds the rating but it is no problem because the output current is limited by output impedance at 3.3 volt supply voltage even if the output pin is tied to the rail.

Therefore it cannot sound loud but it will create sufficient sound that listen on the desk with high efficiency speakers. When connect the audio outputs to the amplifier, the high frequency component must be filtered out with LPF.

Do not input the PWM signals directly to the amplifier or the amplifier and speakers can be damaged.

Click to enlarge

Selecting an Audio Output Circuit

There are three different output circuit shown in the Circuit Diagram. These are exclusive each other. The firmware to be written into the AVR must be fit for the output configuration of the circuit. Each output configuration (Mono-OCL/Stereo/Mono-HR) correcponds the hex file (sdsg_mo.

hex/sdsg_st.hex/sdsg_hr.hex). The fuse settings are combined with the hex files, however, some flash programmer does not support this sort of hex files. In this case, remove last three lines from the hex file and initialize the fuse bits separately with the fuse values found in main.c.

LED indicator

The LED indicates that a sound file is being played. It also flashes on any error. The number of flashes + a second of blank corresponds to the type of errors as follows:

  • Two fhash – I/O error. (hard error or file system error)
  • Three flash – The sound file is not found.
  • Four flash – Invalid sound file.

Part 2. Software, configuration, sound file format, operating modes and control commands.

elm-chan.org

Источник: https://www.radiolocman.com/shem/schematics.html?di=84101

Компьютер – осциллограф, генератор, анализатор спектра

SoundCard Oszilloscope – программа превращающая компьютер в двухканальный осциллограф, двухканальный генератор низкой частоты и анализатор спектра

Доброго дня уважаемые радиолюбители!
Каждый радиолюбитель знает, что для создания более-менее сложных радиолюбительских устройств необходимо иметь в своем распоряжение не только мультиметр.

Сегодня в наших магазинах можно купить практически любой прибор, но – есть одно “но” – стоимость приличного качества любого прибора не менее нескольких десятков тысяч наших рублей, и не секрет, что для большинства россиян это значительные деньги, а посему эти приборы недоступны вовсе, или радиолюбитель покупает приборы давно находящиеся в употреблении.
Сегодня на сайте Радиолюбитель, мы попробуем оснастить лабораторию радиолюбителя бесплатными виртуальными приборами – цифровой двухканальный осциллограф, двухканальный генератор звуковой частоты, анализатор спектра. Единственный недостаток этих приборов – все они работают только в полосе частот от 1 Гц до 20000 Гц. На сайте уже давалось описание похожей радиолюбительской программы: “Digital Oscilloscope“ – программа превращающая домашний компьютер в осциллограф.
Сегодня я хочу предложить вашему вниманию очередную программу – “SoundCard Oszilloscope“. Меня эта программа привлекла неплохими характеристиками, продуманным дизайном, простотой изучения и работы в ней. Данная программа на английском, русского перевода нет. Но я не считаю это недостатком. Во-первых – разобраться как работать в программе очень легко, вы сами это увидите, во-вторых – когда нибудь вы обзаведетесь хорошими приборами (а у них все обозначения на английском, хотя сами китайские) и сразу и легко освоитесь с ними.

Программа разработана C. Zeitnitz и является бесплатной, но только для частного использования.

Лицензия на программу стоит около 1500 рублей, и есть еще так называемая “частная лицензия” – стоимостью около 400 рублей, но это скорее пожертвование автору на дальнейшее совершенствование программы.

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

Скачать программу (последняя версия на декабрь 2012 года): 

  Компьютер – осциллограф, генератор, анализатор спектра (28.1 MiB, 47,328 hits)

Для начала давайте разберемся с “понятиями”:
Осциллограф – прибор предназначенный для исследования, наблюдения, измерения амплитудных и временных интервалов.

Осциллографы классифицируются:
♦ по назначению и способу вывода информации: – осциллографы с периодической разверткой для наблюдения сигналов на экране (на Западе их называют oscilloscop) – осциллографы с непрерывной разверткой для регистрации кривой сигнала на фотоленте (на Западе называются oscillograph)

♦ по способу обработки входного сигнала:

– аналоговый

– цифровой

Программа работает в среде не ниже W2000 и включает в себя:
– двухканальный осциллограф с частотой пропускания (зависит от звуковой карты) не менее чем от 20 до 20000 Гц;
– двухканальный генератор сигналов ( с аналогичной генерируемой частотой);
– анализатор спектра
– а также имеется возможность записи звукового сигнала для его последующего изучения

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

Начнем мы с генератора сигналов (Signalgenerator):

Генератор сигналов, как я уже говорил, – двухканальный – Channel 1 и Channel 2.

Рассмотрим назначение его основных переключателей и окошек:
1 – кнопки включения генераторов;
2 – окно установки формы выходного сигнала:
sine – синусоидальный
triangle – треугольный
square – прямоугольный
sawtooth – пилообразный
white noise – белый шум
3 – регуляторы амплитуды выходного сигнала (максимальная – 1 вольт);
4 – регуляторы установки частоты (нужную частоту можно установить вручную в окошках под регуляторами). Хотя на регуляторах максимальная частота – 10 кГц, но в нижних окошках можно прописать любую допускаемую частоту (зависит от звуковой карты);
5 – окошки для выставления частоты вручную;
6 – включение режима “Sweep – генератор”. В этом режиме выходная частота генератора периодически изменяется от минимального значения установленного в окошках “5” до максимального значения установленного в окошках “Fend” в течение времени, установленного в окошках “Time”. Этот режим можно включить или для любого одного канала или сразу для двух каналов;
7 – окна для выставления конечной частоты и времени Sweep режима;
8 – программное подключение выхода канала генератора к первому или второму входному каналу осциллографа;
9 – установка разности фаз между сигналами с первого и второго каналов генератора.
10установка скважности сигнала (действует только для прямоугольного сигнала).

Теперь давайте рассмотрим сам осциллограф:

1Amplitude – регулировка чувствительности канала вертикального отклонения
2Sync – позволяет (установив или сняв галочку) производить раздельную, или одновременную регулировку двух каналов по амплитуде сигналов
3, 4 – позволяет разнести сигналы по высоте экрана для их индивидуального наблюдения
5 – установка времени развертки (от 1 миллисекунды до 10 секунд, при этом в 1 секунде – 1000 миллисекунд)
6запуск/остановка работы осциллографа. При остановке на экране сохраняется текущее состояние сигналов, а также появляется копка Save (16) позволяющая сохранить текущее состояние на компьютере в виде 3-х файлов (текстовые данные исследуемого сигнала, черно-белое изображение и цветное изображение картинки с экрана осциллографа в момент остановки)
7Trigger – программное устройство, которое задерживает запуск развертки до тех пор, пока не будут выполнены некоторые условия и служит для получения стабильного изображения на экране осциллографа. Имеется 4 режима:
включение/выключение. При выключенном триггере, изображение на экране будет выглядеть “бегущим” или даже “размазанным”.
автоматический режим. Программа сама выбирает режим (нормальный или одиночный).
нормальный режим. В этом режиме осуществляется непрерывная развертка исследуемого сигнала.
одиночный режим. В этом режиме осуществляется одноразовая развертка сигнала ( с промежутком времени, установленным регулятором Time).
8 – выбор активного канала
9Edge – тип запуска сигнала:
rising – по фронту исследуемого сигнала
falling – по спаду исследуемого сигнала
10Auto Set – автоматическая установка времени развертки, чувствительности канала вертикального отклонения Amplitude, а так-же изображение выгоняется в центр экрана.
11Channel Mode – определяет как будут выводится сигналы на экран осциллографа:
single – раздельный вывод двух сигналов на экран
СН1 + СН2 – вывод суммы двух сигналов
СН1 – СН2 – вывод разницы двух сигналов
СН1 * СН2 – вывод произведения двух сигналов
12 и 13 – выбор отображения на экране каналов (или любой из двух, или два сразу, рядом изображается величина Amplitude)
14 – вывод осциллограммы канала 1
15 – вывод осциллограммы канала 2
16 – уже проходили – запись сигнала на компьютер в режиме остановки осциллографа
17 – шкала времени ( у нас регулятор Time стоит в положении 10 миллисекунд, поэтому шкала отображается от 0 до 10 миллисекунд)
18Status – показывает текущее состояние триггера а также позволяет выводить на экран следующие данные:
HZ and Volts – вывод на экран текущей частоты напряжения исследуемого сигнала
cursor – включение вертикальных и горизонтальных курсоров для измерения параметров исследуемого сигнала
log to Fille – посекундная запись параметров исследуемого сигнала.

Производство измерений на осциллографе

Для начала давайте настроим генератор сигналов:

1. Включаем канал 1 и канал 2 (загораются зеленные треугольники) 2. Устанавливаем выходные сигналы – синусоидальный и прямоугольный 3. Устанавливаем амплитуду выходных сигналов равную 0,5 (генератор генерирует сигналы с максимальной амплитудой 1 вольт, и 0,5 будет означать амплитуду сигналов равную 0,5 вольта) 4. Устанавливаем частоты в 50 Герц

5. Переходим в режим осциллографа

Измерение амплитуды сигналов:

1. Кнопкой под надписью Measure выбираем режим HZ and Volts, ставим галочки у надписей Frequency и Voltage.

При этом у нас сверху появляются текущие частоты для каждого из двух сигналов (почти 50 герц), амплитуда полного сигнала Vp-p и эффективное напряжение сигналов Veff.
2.

Кнопкой под надписью Measure выбираем режим Cursors и ставим галочку у надписи Voltage.

При этом у нас появляются две горизонтальные линии, а внизу надписи, показывающие амплитуду положительной и отрицательной составляющей сигнала (А), а также общий размах амплитуды сигнала (dA).
3. Выставляем горизонтальные линии в нужном нам положении относительно сигнала, на экране мы получим данные по их амплитуде:

Измерение временных интервалов:

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

Определение частоты и амплитуды сигнала

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

Установки генератора оставляем как и были, за исключением – амплитуду сигналов устанавливаем 1,0, а установки осциллографа выставляем как на картинке:

Регулятор амплитуды сигнала выставляем на 100 милливольт, регулятор времени развертки на 50 миллисекунд, и получаем картинку на экране как сверху.

Принцип определения амплитуды сигнала:
Регулятор Amplitude у нас стоит в положении 100 милливольт, а это означает, что цена деления сетки на экране осциллографа по вертикали составляет 100 милливольт.

Считаем количество делений от нижней части сигнала до верхней (у нас получается 10 делений) и умножаем на цену одного деления – 10*100= 1000 милливольт= 1 вольт, что означает, что амплитуда сигнала у нас от верхней точки до нижней составляет 1 вольт.

Точно так-же можно измерить амплитуду сигнала на любом участке осциллограммы.

Определение временных характеристик сигнала:
Регулятор Time у нас стоит в положении 50 миллисекунд.

Количество делений шкалы осциллографа по горизонтали равно 10 (в данном случае у нас на экране помещается 10 делений), делим 50 на 10 и получаем 5, это значит что цена одного деления будет равна 5 миллисекундам.

Выбираем нужный нам участок осциллограммы сигнала и считаем в какое количество делений он умещается ( в нашем случаем – 4 деления). Умножаем цену 1 деления на количество делений 5*4=20 и определяем что период сигнала на исследуемом участке составляет 20 миллисекунд.

Определение частоты сигнала.
Частота исследуемого сигнала определяется по обычной формуле. Нам известно, что один период нашего сигнала равен 20 миллисекунд, остается узнать сколько периодов будет в одной секунде- 1 секунда/20 миллисекунд= 1000/20= 50 Герц.

Анализатор спектра

Анализатор спектра – прибор для наблюдения и измерения относительного распределения энергии электрических (электромагнитных) колебаний в полосе частот.

Низкочастотный анализатор спектра (как в нашем случае) предназначен для работы в диапазоне звуковых частот и используется, к примеру, для определения АЧХ различных устройств, при исследовании характеристик шума, настройки различной радиоаппаратуры.

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

Вот так выглядит анализатор спектра в нашей программе:

Что здесь – что:

1. Вид отображения шкалы анализатора по вертикали
2. Выбор отображаемых каналов с генератора часто и вида отбражения
3. Рабочая часть анализатора
4. Кнопка записи текущего состояния осциллограммы при остановке
5. Режим увеличения рабочего поля
6.

Переключение горизонтальной шкалы (шкалы частоты) из линейного в логарифмический вид
7. Текущая частота сигнала при работе генератора в свип-режиме
8. Текущая частота в позиции курсора
9. Указатель коэффициента гармоник сигнала
10.

Установка фильтра для сигналов по частоте

Просмотр фигур Лиссажу

Фигуры Лиссажу – замкнутые траектории, прочерчиваемые точкой, совершающей одновременно  два гармонических колебаниях в двух взаимно перпендикулярных направлениях. Вид фигур зависит от соотношения между периодами (частотами), фазами и амплитудами обоих колебаний. 

Если подать на входы «X» и «Y» осциллографа сигналы близких частот, то на экране можно увидеть фигуры Лиссажу. Этот метод широко используется для сравнения частот двух источников сигналов и для подстройки одного источника под частоту другого.

Когда частоты близки, но не равны друг другу, фигура на экране вращается, причем период цикла вращения является величиной, обратной разности частот, например, период оборота равен 2 с — разница в частотах сигналов равна 0,5 Гц.

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

Использовать для сравнения можно не только одинаковые частоты, но и находящиеся в кратном отношении, например, если образцовый источник может выдавать частоту только 5 МГц, а настраиваемый источник — 2,5 МГц.

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

 Функция записи звукового сигнала

Я уже говорил, что программа позволяет записать какой-либо звуковой сигнал на компьютере с целью его дальнейшего изучения. Функция записи сигнала не представляет сложностей и вы легко разберетесь как это делать:

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

Советуем прочитать:
Подключение устройств к виртуальному осциллографу и генератору через звуковую карту

Программа “Компьютер-осциллограф”

Источник: http://radio-stv.ru/radio_tehnologii/izuchenie-radio-programm/kompyuter-ostsillograf-generator

255-голосный PCM звуковой генератор

Этот простой звуковой генератор построен на базе проекта SD аудио-плеера. В конструкции использован микроконтроллер ATtiny861 и SD карта памяти. МК Tiny861 содержит два ШИМ-генератора как и Tiny85, это позволяет генерировать качественный звук по сравнению с другими AVR контроллерами. Т.к. у данного МК 20 ножек, то появляется возможность управлять генератором внешними сигналами.

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

Техническая часть

В качестве устройства для хранения данных используется MicroSD карта памяти, но если применить соответствующие сокеты, то могут использоваться и SD и MMC карточки. Управление происходит в SPI-режиме через USI-интерфейс. Выход аудиосигналов с ШИМ-генераторов может быть подан на динамики напрямую. Громкость звучания будет недостаточной, т.к.

выходная мощность с ШИМ-выхода МК все равно не превысит макс. возможную, которую обеспечивает источник питания МК (3.3 Вольта). Однако данной мощности вполне хватает, чтобы подключить небольшие настольные колоночки. Если данный звуковой генератор планируется подключать к усилителю, то нужно ставить ФНЧ, иначе можно спалить усилитель и динамики.

Представлено несколько различных вариантов принципиальной схемы звукового генератора. При прошивке AVR, необходимо использовать соответствующий для конфигурации динамиков (Mono-OCL/Stereo/Mono-HR) HEX-файл прошивки (sdsg_mo.

hex/sdsg_st.hex/sdsg_hr.hex). Конфигурация фьюзов уже прописана в HEX-файлах, однако некоторые программаторы не понимают данный формат, в таком случае нужно удалить последние три строчки в файле. Фьюзы можете посмотреть в файле main.

c.

Программная часть

Поддерживаемый аудио формат: RIFF/WAVE в LPCM, 8/16bit, моно/стерео и 8кГц-48кГц. Все другие аудио-форматы, такие как ADPCM, MP3 и AAC должны быть сконвертированы в PCM. Имя файла должно быть вида xxx.wav, где xxx-три числа в диапазоне от 001 до 255. Файлы должны находиться в корне, а не в какой-либо директории.

Управление генератором происходит при помощи переключателей SW1-SW8 которые соответствуют двоичному коду выбранного звукового фрагмента (к примеру комбинация 00110110 соответствует файлу 054.wav). В файле 000.txt содержится конфигурация звукового генератора, всего предусмотрено 4 режима.

Опишем каждый их них:
Режим 0: В соответствии с набранным кодом переключателями SW проигрывается соотв. звуковой файл в авто-повторе. Когда набран новый код, звуковой файл также переключается. Если все выключатели отключены, то воспроизведение останавливается.

Режим 1: То же самое, что и 0 режим, но файл всегда проигрывается до конца.
Режим 2: Проигрывается файл в соответствии с набранным кодом переключателей, но любые изменения кода во время воспроизведения игнорируются.

Режим 3: То же, что и 2-ой режим, но изменения кода отрабатываются. Для изменения воспроизводимого файла необходимо переключить в 0, а затем ввести код снова.

Индикация

Светодиод показывает состояние воспроизведения, а также индицирует ошибки путем моргания: две вспышки – ошибка ввода вывода (ошибка МК или файловой системы) три вспышки – звуковой файл не найден

четыре вспышки – ошибка файла

Оригинал статьи

Прикрепленные файлы:

  • pcm_sound_gen.rar (25 Кб)

Колтыков А.В.Опубликована: 2011 г.0Вознаградить Я собрал 0 0

x

  • Техническая грамотность
  • Актуальность материала
  • Изложение материала
  • Полезность устройства
  • Повторяемость устройства
  • Орфография

Источник: http://cxem.net/izmer/izmer79.php

255-голосный звуковой генератор PCM на микроконтроллере ATtiny861 | avr | programming

Источник: http://microsin.net/programming/avr/sound-gerenerator-attiny861.html

Звуковой PCM генератор на микроконтроллере ATtiny861. Часть 1. Схема

» Схемы » Аудио · Игры · Применение микроконтроллеров

14-03-2011

Основным элементом рассматриваемого устройства является микроконтроллер ATtiny861 производства компании Atmel, который имеет более быстрый встроенный ШИМ, по сравнению с ATtiny85. Следовательно, микроконтроллер может генерировать более чистый звук, по сравнению с другими устройствами семейства AVR.

Для хранения звуковых файлов и конфигурационного файла используется карта памяти SD (microSD), но возможно использование и карт памяти MMC с соответствующим слотом.

Дополнительно, 20-выводный микроконтроллер имеет много доступных линий ввода/вывода, что позволяет ввести систему управления генератором от внешних сигналов. Благодаря своим компактным размерам, простоте изготовления и управления,  данный звуковой генератор может использоваться в качестве звукового модуля для игрушек, музыкального звонка, развлекательного устройства и пр.

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

Карта памяти (microSD) используется в качестве устройства хранения и подключена к микроконтроллеру по интерфейсу SPI с использованием встроенного аппаратного модуля USI (универсальный последовательный интерфейс).

Аудиосигнал генерирует встроенный ШИМ, и поэтому динамик может подключаться непосредственно к выходу ШИМ.

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

Блок-схема микроконтроллера ATtiny861

Кликните для увеличения

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

Для питания генератора потребуется источник напряжения 3.3 В

Принципиальная схема генератора с различными вариантами конфигурации выхода.

Кликните для увеличения

Как видно по схеме, имеется три различных варианта конфигурации выходного каскада:

  • режим монофонического выхода (файл для прошивки sdsg_mo.hex);
  • режим стереофонического выхода (файл для прошивки sdsg_st.hex);
  • режим монофонического выхода с высоким разрешением (файл для прошивки sdsg_hr.hex);
  • режим монофонического выхода с высоким разрешением и усилителем (файл для прошивки sdsg_hr.hex).

Следует учитывать, что для каждого варианта конфигурации выхода имеется и свое программное обеспечение, которое необходимо запрограммировать в микроконтроллер (для режима монофонического выхода с высоким разрешением и усилителем используется то же ПО, что и для режима с монофоническим выходом с высоким разрешением).

Также, следует обратить внимание на установку Fuse-битов при программировании микроконтроллера. Установки Fuse-битов содержаться в каждом .hex файле (sdsg_mo.hex/sdsg_st.hex/sdsg_hr.hex, соответствуют конфигурации выхода), однако не все программаторы поддерживают такой формат файлов.

Поэтому, в такой ситуации, пользователю необходимо будет вручную установить конфигурацию Fuse-битов, а также необходимо удалить последние три строчки из .hex файла. О необходимой конфигурации Fuse-битов указано в тексте исходного кода в фале main.

c, скачать который можно по ссылке в конце статьи.

Светодиод, по схеме подключенный к порту PB2, является индикатором статуса при воспроизведении звукового файла и индикатором ошибок:

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

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

Источник: https://www.rlocman.ru/shem/schematics.html?di=84101

Звуковая карта в качестве генератора

Мне нужно было отладить одно устройство на AVR микроконтроллере. Точнее сказать приём данных с АЦП. При сигнал этих данных должен быть ультранизкой частоты, порядка 1 Гц.

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

По сему было предпринято решение модернизировать звуковую карту.

Чтобы не рисковать, было решено реализовать это на внешней звуковой карте. Но данный опыт справедлив и для встроенных звуковых карт, но он достоин джедаев.

На молотке была куплена звуковая карта Sound Blaster Live. После беглого просмотра, стало понятно, что разобраться в схемотехнике 4-х слойной платы без хорошей травы нельзя.

Но достаточно очевидно, что все выходные и входные аналоговые сигналы сначала идут на ОУ, а потом уже в ЦАП/АЦП. Ну ОУ нагуглиcь быстро. Затем я обратил внимание на микросхему, в которую ориентировочно приходят все сигналы.

Она была вторая по величине. Я вбил маркировку в гугл, и о чудо! Нашёлся даташит!

Звуковая карта и центральная микросхема ЦАП/АЦП.

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

Распиновка микросхемы.

Нас интересует линейный выход ЦАП (подчёркнуты красным). Я выбрал только правый канал. Если кто решит делать и осциллограф, то нужно будет подпаяться к линейному входу (голубой прямоугольник).

Разумеется через соответствующую схему развязки (которая гуглится в Интернете).
Чтобы не пожечь ЦАП своими адскими опытами, я решил его немного защитить.

И рекомендую в обязательном порядке сделать такую схему.

Схема развазки.

Конденсатор должен отсечь постоянную составляющую, которая есть в любом ЦАПе. Но поскольку я подавал сигнал прямо на вход АЦП, и к тому же у меня были очень низкочастотные сигналы, я решил конденсатор не ставить. Главное поставить резистор.

Надо отметить, что номинал резистора взят не с потолка, а по допустимому току ЦАП. Если у нас максимальное напряжение ЦАП 6 вольт, а по даташиту ток составляет 15 миллиампер, то сопротивление, в случае замыкания на землю должно быть не менее 333 Ом.

Я взял с запасом и поставил 10 килоом. Резистор я запаял прямо на плату.

Запаянный резистор

Для вывода сигнала из компьютера, я заюзал разъём VGA, который каким-то чудом валялся у меня в столе. Чем хорош этот провод: у него имеется 5 раздельно экранированных проводов. Я просто завёл на 1 пин (сигнал RED) провод.

Поскольку экраны всех сигналов соеденены с землёй и так, я не стал заморачиватся и выводом земли.

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

VGA-кабель от старого монитора

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

Установленная звуковуха, и гнездо нашего генератора

В качестве генератора я использую примитивную программку «Tone Generator», которую можно качнуть Она позволяет генерировать синус, пилу, меандр, белый шум и какой-то странный сигнал.

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

Подрубленный осциллограф.

То что на картинке несколько синусойд – это просто руки дрожали во время фотографирования. Я специально отснял отдельно экран осциллографа.

Чистый синус нашего генератора.

Ну что ж, смещение без конденсатора, у моего ЦАП составляет порядка 2-х вольт. Проверим, как же скушает АЦП моего микроконтроллера.

Тестируемый девайс.

Результат был предсказуем, сигнал вылезает за область максимального значения АЦП микроконтроллера

Генератор, и программа, читающая значения АЦП микроконтроллера.

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

За сим откланиваюсь, удачных экспериментов.

Источник: http://easyelectronics.ru/zvukovaya-karta-v-kachestve-generatora.html

Ссылка на основную публикацию
Adblock
detector
",css:{backgroundColor:"#000",opacity:.6}},container:{block:void 0,tpl:"
"},wrap:void 0,body:void 0,errors:{tpl:"
",autoclose_delay:2e3,ajax_unsuccessful_load:"Error"},openEffect:{type:"fade",speed:400},closeEffect:{type:"fade",speed:400},beforeOpen:n.noop,afterOpen:n.noop,beforeClose:n.noop,afterClose:n.noop,afterLoading:n.noop,afterLoadingOnShow:n.noop,errorLoading:n.noop},o=0,p=n([]),h={isEventOut:function(a,b){var c=!0;return n(a).each(function(){n(b.target).get(0)==n(this).get(0)&&(c=!1),0==n(b.target).closest("HTML",n(this).get(0)).length&&(c=!1)}),c}},q={getParentEl:function(a){var b=n(a);return b.data("arcticmodal")?b:(b=n(a).closest(".arcticmodal-container").data("arcticmodalParentEl"),!!b&&b)},transition:function(a,b,c,d){switch(d=null==d?n.noop:d,c.type){case"fade":"show"==b?a.fadeIn(c.speed,d):a.fadeOut(c.speed,d);break;case"none":"show"==b?a.show():a.hide(),d();}},prepare_body:function(a,b){n(".arcticmodal-close",a.body).unbind("click.arcticmodal").bind("click.arcticmodal",function(){return b.arcticmodal("close"),!1})},init_el:function(d,a){var b=d.data("arcticmodal");if(!b){if(b=a,o++,b.modalID=o,b.overlay.block=n(b.overlay.tpl),b.overlay.block.css(b.overlay.css),b.container.block=n(b.container.tpl),b.body=n(".arcticmodal-container_i2",b.container.block),a.clone?b.body.html(d.clone(!0)):(d.before("
"),b.body.html(d)),q.prepare_body(b,d),b.closeOnOverlayClick&&b.overlay.block.add(b.container.block).click(function(a){h.isEventOut(n(">*",b.body),a)&&d.arcticmodal("close")}),b.container.block.data("arcticmodalParentEl",d),d.data("arcticmodal",b),p=n.merge(p,d),n.proxy(e.show,d)(),"html"==b.type)return d;if(null!=b.ajax.beforeSend){var c=b.ajax.beforeSend;delete b.ajax.beforeSend}if(null!=b.ajax.success){var f=b.ajax.success;delete b.ajax.success}if(null!=b.ajax.error){var g=b.ajax.error;delete b.ajax.error}var j=n.extend(!0,{url:b.url,beforeSend:function(){null==c?b.body.html("
"):c(b,d)},success:function(c){d.trigger("afterLoading"),b.afterLoading(b,d,c),null==f?b.body.html(c):f(b,d,c),q.prepare_body(b,d),d.trigger("afterLoadingOnShow"),b.afterLoadingOnShow(b,d,c)},error:function(){d.trigger("errorLoading"),b.errorLoading(b,d),null==g?(b.body.html(b.errors.tpl),n(".arcticmodal-error",b.body).html(b.errors.ajax_unsuccessful_load),n(".arcticmodal-close",b.body).click(function(){return d.arcticmodal("close"),!1}),b.errors.autoclose_delay&&setTimeout(function(){d.arcticmodal("close")},b.errors.autoclose_delay)):g(b,d)}},b.ajax);b.ajax_request=n.ajax(j),d.data("arcticmodal",b)}},init:function(b){if(b=n.extend(!0,{},a,b),!n.isFunction(this))return this.each(function(){q.init_el(n(this),n.extend(!0,{},b))});if(null==b)return void n.error("jquery.arcticmodal: Uncorrect parameters");if(""==b.type)return void n.error("jquery.arcticmodal: Don't set parameter \"type\"");switch(b.type){case"html":if(""==b.content)return void n.error("jquery.arcticmodal: Don't set parameter \"content\"");var e=b.content;return b.content="",q.init_el(n(e),b);case"ajax":return""==b.url?void n.error("jquery.arcticmodal: Don't set parameter \"url\""):q.init_el(n("
"),b);}}},e={show:function(){var a=q.getParentEl(this);if(!1===a)return void n.error("jquery.arcticmodal: Uncorrect call");var b=a.data("arcticmodal");if(b.overlay.block.hide(),b.container.block.hide(),n("BODY").append(b.overlay.block),n("BODY").append(b.container.block),b.beforeOpen(b,a),a.trigger("beforeOpen"),"hidden"!=b.wrap.css("overflow")){b.wrap.data("arcticmodalOverflow",b.wrap.css("overflow"));var c=b.wrap.outerWidth(!0);b.wrap.css("overflow","hidden");var d=b.wrap.outerWidth(!0);d!=c&&b.wrap.css("marginRight",d-c+"px")}return p.not(a).each(function(){var a=n(this).data("arcticmodal");a.overlay.block.hide()}),q.transition(b.overlay.block,"show",1*")),b.overlay.block.remove(),b.container.block.remove(),a.data("arcticmodal",null),n(".arcticmodal-container").length||(b.wrap.data("arcticmodalOverflow")&&b.wrap.css("overflow",b.wrap.data("arcticmodalOverflow")),b.wrap.css("marginRight",0))}),"ajax"==b.type&&b.ajax_request.abort(),p=p.not(a))})},setDefault:function(b){n.extend(!0,a,b)}};n(function(){a.wrap=n(document.all&&!document.querySelector?"html":"body")}),n(document).bind("keyup.arcticmodal",function(d){var a=p.last();if(a.length){var b=a.data("arcticmodal");b.closeOnEsc&&27===d.keyCode&&a.arcticmodal("close")}}),n.arcticmodal=n.fn.arcticmodal=function(a){return e[a]?e[a].apply(this,Array.prototype.slice.call(arguments,1)):"object"!=typeof a&&a?void n.error("jquery.arcticmodal: Method "+a+" does not exist"):q.init.apply(this,arguments)}}(jQuery)}var debugMode="undefined"!=typeof debugFlatPM&&debugFlatPM,duplicateMode="undefined"!=typeof duplicateFlatPM&&duplicateFlatPM,countMode="undefined"!=typeof countFlatPM&&countFlatPM;document["wri"+"te"]=function(a){let b=document.createElement("div");jQuery(document.currentScript).after(b),flatPM_setHTML(b,a),jQuery(b).contents().unwrap()};function flatPM_sticky(c,d,e=0){function f(){if(null==a){let b=getComputedStyle(g,""),c="";for(let a=0;a=b.top-h?b.top-h{const d=c.split("=");return d[0]===a?decodeURIComponent(d[1]):b},""),c=""==b?void 0:b;return c}function flatPM_testCookie(){let a="test_56445";try{return localStorage.setItem(a,a),localStorage.removeItem(a),!0}catch(a){return!1}}function flatPM_grep(a,b,c){return jQuery.grep(a,(a,d)=>c?d==b:0==(d+1)%b)}function flatPM_random(a,b){return Math.floor(Math.random()*(b-a+1))+a}
");let k=document.querySelector(".flat_pm_modal[data-id-modal=\""+a.ID+"\"]");if(-1===d.indexOf("go"+"oglesyndication")?flatPM_setHTML(k,d):jQuery(k).html(b+d),"px"==a.how.popup.px_s)e.bind(h,()=>{e.scrollTop()>a.how.popup.after&&(e.unbind(h),f.unbind(i),j())}),void 0!==a.how.popup.close_window&&"true"==a.how.popup.close_window&&f.bind(i,()=>{e.unbind(h),f.unbind(i),j()});else{let b=setTimeout(()=>{f.unbind(i),j()},1e3*a.how.popup.after);void 0!==a.how.popup.close_window&&"true"==a.how.popup.close_window&&f.bind(i,()=>{clearTimeout(b),f.unbind(i),j()})}f.on("click",".flat_pm_modal .flat_pm_crs",()=>{jQuery.arcticmodal("close")})}if(void 0!==a.how.outgoing){let b,c="0"==a.how.outgoing.indent?"":" style=\"bottom:"+a.how.outgoing.indent+"px\"",e="true"==a.how.outgoing.cross?"":"",f=jQuery(window),g="scroll.out"+a.ID,h=void 0===flatPM_getCookie("flat_out_"+a.ID+"_mb")||"false"!=flatPM_getCookie("flat_out_"+a.ID+"_mb"),i=document.createElement("div"),j=jQuery("body"),k=()=>{void 0!==a.how.outgoing.cookie&&"false"==a.how.outgoing.cookie&&h&&(jQuery(".flat_pm_out[data-id-out=\""+a.ID+"\"]").addClass("show"),j.on("click",".flat_pm_out[data-id-out=\""+a.ID+"\"] .flat_pm_crs",function(){flatPM_setCookie("flat_out_"+a.ID+"_mb",!1)})),(void 0===a.how.outgoing.cookie||"false"!=a.how.outgoing.cookie)&&jQuery(".flat_pm_out[data-id-out=\""+a.ID+"\"]").addClass("show")};switch(a.how.outgoing.whence){case"1":b="top";break;case"2":b="bottom";break;case"3":b="left";break;case"4":b="right";}jQuery("body > *").eq(0).before("
"+e+"
");let m=document.querySelector(".flat_pm_out[data-id-out=\""+a.ID+"\"]");-1===d.indexOf("go"+"oglesyndication")?flatPM_setHTML(m,d):jQuery(m).html(e+d),"px"==a.how.outgoing.px_s?f.bind(g,()=>{f.scrollTop()>a.how.outgoing.after&&(f.unbind(g),k())}):setTimeout(()=>{k()},1e3*a.how.outgoing.after),j.on("click",".flat_pm_out .flat_pm_crs",function(){jQuery(this).parent().removeClass("show").addClass("closed")})}countMode&&(flat_count["block_"+a.ID]={},flat_count["block_"+a.ID].count=1,flat_count["block_"+a.ID].click=0,flat_count["block_"+a.ID].id=a.ID)}catch(a){console.warn(a)}}function flatPM_start(){let a=flat_pm_arr.length;if(0==a)return flat_pm_arr=[],void jQuery(".flat_pm_start, .flat_pm_end").remove();flat_body=flat_body||jQuery("body"),!flat_counter&&countMode&&(flat_counter=!0,flat_body.on("click","[data-flat-id]",function(){let a=jQuery(this),b=a.attr("data-flat-id");flat_count["block_"+b].click++}),flat_body.on("mouseenter","[data-flat-id] iframe",function(){let a=jQuery(this),b=a.closest("[data-flat-id]").attr("data-flat-id");flat_iframe=b}).on("mouseleave","[data-flat-id] iframe",function(){flat_iframe=-1}),jQuery(window).on("beforeunload",()=>{jQuery.isEmptyObject(flat_count)||jQuery.ajax({async:!1,type:"POST",url:ajaxUrlFlatPM,dataType:"json",data:{action:"flat_pm_ajax",data_me:{method:"flat_pm_block_counter",arr:flat_count}}})}).on("blur",()=>{-1!=flat_iframe&&flat_count["block_"+flat_iframe].click++})),flat_userVars.init();for(let b=0;bflat_userVars.textlen||void 0!==a.chapter_sub&&a.chapter_subflat_userVars.titlelen||void 0!==a.title_sub&&a.title_subc&&cc&&c>d&&(b=flatPM_addDays(b,-1)),b>e||cd||c-1!=flat_userVars.referer.indexOf(a))||void 0!==a.referer.referer_disabled&&-1!=a.referer.referer_disabled.findIndex(a=>-1!=flat_userVars.referer.indexOf(a)))&&(c=!0),c||void 0===a.browser||(void 0===a.browser.browser_enabled||-1!=a.browser.browser_enabled.indexOf(flat_userVars.browser))&&(void 0===a.browser.browser_disabled||-1==a.browser.browser_disabled.indexOf(flat_userVars.browser)))){if(c&&void 0!==a.browser&&void 0!==a.browser.browser_enabled&&-1!=a.browser.browser_enabled.indexOf(flat_userVars.browser)&&(c=!1),!c&&(void 0!==a.geo||void 0!==a.role)&&(""==flat_userVars.ccode||""==flat_userVars.country||""==flat_userVars.city||""==flat_userVars.role)){flat_pm_then.push(a),flatPM_setWrap(a),flat_body.hasClass("flat_pm_block_geo_role")||(flat_body.addClass("flat_pm_block_geo_role"),flatPM_ajax("flat_pm_block_geo_role")),c=!0}c||(flatPM_setWrap(a),flatPM_next(a))}}}let b=jQuery(".flatPM_sticky");b.each(function(){let a=jQuery(this),b=a.data("height")||350,c=a.data("top");a.wrap("
");let d=a.parent()[0];flatPM_sticky(this,d,c)}),debugMode||countMode||jQuery("[data-flat-id]:not([data-id-out]):not([data-id-modal])").contents().unwrap(),flat_pm_arr=[],jQuery(".flat_pm_start, .flat_pm_end").remove()}

Этот простой звуковой генератор основан на SD аудиоплейере [2], и построен с использованием микроконтроллера ATtiny861 компании Atmel и карты памяти microSD.

Микроконтроллер ATtiny861 имеет на борту выходы аппаратного формирования fast PWM (быстрый ШИМ), так что он, как и ATtiny85, может генерировать более чистый звук по сравнению с другими чипами AVR.

В 20-выводном корпусе DIP20 чипа ATtiny861 имеется больше портов ввода/вывода GPIO, что позволяет управлять звуковым генератором внешними сигналами.

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

[Hardware]

В качестве носителя данных для звука использовалась карта microSD, однако с таким же успехом можно применить стандартные SD и miniSD с соответствующим сокетом. Аудиосигнал, выводимый с помощью PWM (ШИМ), может быть подключен напрямую к громкоговорителю (т. е. динамик можно напрямую подключить к выходу PWM микроконтроллера).

Такая нагрузка может оказаться слишком большой для порта микроконтроллера, однако максимально допустимый ток никогда не превышает установленного предела при напряжении питания 3.3 V, даже если выходной порт замкнуть на шины питания.

При такой схеме подключения звук получается не очень громким, однако он хорошо слышен, если подключить настольные высокоэффективные колонки. Если Вы хотите подключить выход плеера к усилителю, то высокочастотная составляющая ШИМ должна быть отфильтрована фильтром низких частот (ФНЧ, Low Pass Filter, LPF).

Не подключайте ШИМ-сигнал напрямую к аналоговому усилителю, потому что это может повредить усилитель или динамики. Выходная схема может быть собрана по трем вариантам, см. рисунок.

Каждый вариант схемы организации вывода звука (Mono-OCL/Stereo/Mono-HR) исключает использование других вариантов, и для каждого варианта написана отдельная модификация программы firmware.

Таким образом, каждой конфигурации Mono-OCL/Stereo/Mono-HR соответствует свой HEX-файл (sdsg_mo.hex/sdsg_st.hex/sdsg_hr.hex). Значения фьюзов скомбинированы с HEX-файлами (встроены в них), однако некоторые программаторы AVR могут не поддерживать такой формат HEX.

В этом случае просто удалите последние 3 строки их HEX-файла. Необходимые значения фьюзов можно найти в файле main.c.

[Firmware]

Программа firmware, написанная для микроконтроллера ATtiny861, поддерживает только формат RIFF/WAVE LPCM, 8/16bit, mono/stereo, sample rate 8..48 кГц. Звуковые файлы должны называться NNN.wav. Сочетание NNN соответствует диапазону чисел от 001 до 255. Звуковые файлы должны находиться в корневом каталоге карты памяти (root directory).

Команда на проигрывание соответствующего файла выдается через двоичный код, подаваемый на 8 контактов SW1..SW8. Например, SW1 соответствует файлу 001.wav, SW4 соответствует файлу 008.

wav, и SW1+SW5 соответствуют файлу 017.wav. Имеется 4 режима работы, определяющие поведение звукового генератора при подаче команд управления, эти режимы конфигурируются с помощью файла 000.txt.

Пример такого файла, который задает режим 3:

3 # Trigger mode (0..3)   # 0:Level triggered   # 1:Level triggered (sustained)   # 2:Edge triggered

  # 3:Edge triggered (retriggerable)

Каждый из режимов работает следующим образом:

Mode 0 : Level trigger Воспроизводит с автоповтором звуковой файл, который соответствует входному коду. Когда входной код меняется, меняется также и воспроизводимый файл. Когда на всех входах SW1..SW8 логический 0, то воспроизведение звука прекращается.

Mode 1 : Level trigger (sustained)

То же самое, что и mode 0, но воспроизведение продолжается только либо до окончания файла, либо до момента, когда все входы SW1..SW8 становятся в 0.

Mode 2 : Edge trigger

Однократно воспроизводит звуковой файл, соответствующий входному коду SW1..SW8. Любые изменения входных сигналов SW1..SW8 во время воспроизведения игнорируются.

Mode 3 : Edge trigger (re-triggerable)

То же самое, что и mode 2, однако изменение SW1..SW8 влияет на воспроизводимый файл. Чтобы воспроизвести файл заново, все входы SW1..SW8 должны перейти в 0, и на них должен быть снова выставлен нужный код.

Светодиодный индикатор LED показывает, что в данный момент воспроизводится звуковой файл. Количество миганий и секундная пауза соответствует определенному типу ошибки:

– двойное мигание – I/O error (ошибка аппаратуры или файловой системы).- тройное мигание – соответствующий звуковой файл не найден.

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

[Ссылки]

1. 255-Voice PCM Sound Generator site:elm-chan.org – оригинал статьи на английском языке.
2. Простой аудиоплеер файлов на карте SD, собранный на 8-выводном микроконтроллере ATtiny85.
3. Firmware (gcc project + hex file).