Захват звука с помощью АЦП Arduino Nano
- Войдите на сайт для отправки комментариев
Сб, 29/02/2020 - 15:29
Пытаюсь делать захват звука с помощью Arduino Nano.
Исходные данные:
Имеется аудио разветвитель, который подключается к выходу аудиокарты компьютера.
- - В первый выход разветвителя подключаются компьютерные колонки 2.1 с сопротивлением входа 10 КОм на канал, наушники-затычки 32 Ом на канал и компьютерные наушники 64 Ом на канал.
- - Во второй выход разветвителя подключается схема захвата аудио, с входным сопротивление 10 КОм на канал (которые были установлены как стягивающие резисторы)
AREF внешний, 3.3 В.
Предделитель с коэффициентом 8 (ADPS=[011])
На выходе аудиокарты: Синус 50Гц, громкость на макс.
Измерения:
Вопросы:
- Понятно, что при уменьшении входного сопротивления на приёмной стороне, напряжение на выходе аудиокарты также уменьшается, а вот ТОК, увеличивается? Мощность должна сохраниться? Значит аудиокарте нужно вливать больше тока? Если да, потребляет ли моя схема этот ток, или только напряжение?
- Как мне подключить параллельно колонки и схему захвата, чтобы аудиокарта этого не заметила? Т.е. если взять номинальное сопротивление на приёмнике 10 КОм (только колонки), то макс. напряжение на выходе аудиокарты будет 2.8 В, а потом параллельно подключить схему захвата, у которой тоже на входе 10 КОм, суммарное сопротивление на входе будет 5 КОм, и напряжение уже просядет до 2.7В. Какое нужно сделать входное сопротивление на схеме захвата, чтоб напряжение на выходе аудиокарты не просаживалось, 100 КОм? Вообще убрать?
- Между входным (общим) сопротивлением 10 КОм и 5 КОм напряжение не сильно просаживается. А какое может быть минимальное входное сопротивление чтобы колонки продолжали играть? (Потому что, если запараллелить наушники (32 Ом) и колонки (10 КОм), то колонки уже не играют, напряжения не хватает) А какое максимальное? Как рассчитать?
Не хватает двух электролитических конденсатора на 100 мкф в разрыв от ног 2 4 разъёма и двух резисторов 10к от R4 R5 на +5.
Не хватает двух электролитических конденсатора на 100 мкф в разрыв от ног 2 4 разъёма и двух резисторов 10к от R4 R5 на +5.
и С1 , С2 без сопротивлений в таком включении могут "верха" порезать.
для ТС
т.е. требуется делитель как написал nik182 и RC фильтр ФНЧ или выкинуть конденсаторы.
и да., ваша схема потребляет ток.
и ваши замеры мягко говоря ничего не показывают, активное сопротивление не есть импеданс (сопротивление, которое зависит от частоты)
Я использовал R4, R5 как стягивающий резисторы и С1, С2 как фильтры от высокочастотных помех и наводок (с воздуха или с рук)
1) Объясните для чего нужно использовать делитель напряжение с коэф. 2? Ведь это уменьшит напряжение на входе моей схемы ровно в два раза...
2) Зачем используется электролит, включенный последовательно, на 100мкф?
3) Для чего использовать RC ФНЧ? Я так понимаю он порежет все кроме низких, а мне нужен весь диапазон)
4) Электролиты правильно установил? Почему именно 100мкф?
5) Схема из поста №1 вообще имеет право на жизнь? Или я что нибудь могу спалить?
P.S. Прошу Вас, пожалуйста, давать более развернутые ответы, чтобы я смог лучше понимать Ваши советы.
hemicide, "выход аудиокарты" - очень расплывчатое понятие.
Раньше, помнится, делали карты, к которым можно было непосредственно подключать вход пассивной колонки (4 Ома). Сейчас, кажется, таких уже не делают.
Приведенная Вами схема - нерабочая. От слова "совсем". Чтобы привести ее к более или менее работоспособному состоянию, нужно:
1. Выполнить рекомендации nik182. При этом можно уменьшить номиналы дополнительных конденсаторов до 2 мкФ. Правда, схема после этого все равно не будет рабочей.
2. Отреагировать на замечание Гриши. Только с той поправкой, что не просто "могут верха порезать", а неизбежно срежут все выше 160 Гц. В общем, конденсаторы C1 и C2 из схемы надо удалить.
3. Arduino Nano тратит на один акт оцифровки 112 мкс. Раз у Вас два канала - будет 224 мкс. Т.е. частоту дискретизации выше 4 кГц Вы не сделаете. А по теореме Котельникова-Шеннона-Найквиста верхняя частота диапазона при этом будет не выше 2 кГц. Но раз Вы берете сигнал с выхода звуковой карты, значит, используется звуковой диапазон. Т.е. в звуке присутствуют частоты выше 2 кГц, что недопустимо, т.к. будет приводить к серьезным искажениям спектра сигнала. Т.е. на входе нужны дополнительные фильтры с крутизной не менее 24 дБ на октаву. Судя по Вашим познаниям в схемотехнике, это Вам не под силу. Хотя, можно использовать фильтры с цифровым управлением, например MAX261.
В качестве альтернативы можно посоветовать цифровать сигнал не самой Ардуиной, а более высокочастотным внешним АЦП, например, MCP3008.
PS. По вновь опубликованной схеме: С3 и С4 можно уменьшить, как я написал выше (и полярность включения обратная). Но альтернатива: фильтры с большой крутизной на входе либо внешний АЦП - остается.
Звук имеет размах от - до + , ардуина может цифровать только от нуля до плюс, поэтому нужно сместить уровень нуля входного сигнала до половины питания, а это +2.5 вольта, что и делают резисторы. При этом получается на входе ардуины положительное напряжение и соответственно электролиты надо ставить плюсовой ногой к ардуине. Без них +2.5 вольта будут течь в усилитель. Схема из #1 будет писать не звук а хрип, потому что будет писать только положительную половину волны звука.
100 мкФ из общих соображений по полосе пропускания. Нагрузка 5 кОм. На входе получается фильтр пропускающий высокие частоты. Можно посчитать какой конденсатор нужен для требуемой минимальной частоты. Можно обойтись без конденсаторов, но тогда надо строить на операционном усилителе схему смещения нулевого уровня.
Спасибо за ваши ответы.
Arduino Nano тратит на один акт оцифровки 112 мкс
Предделитель с коэффициентом 8 (ADPS=[011])
Это 2 МГц. У меня на акт оцифровки уходит 12 мкс! С двух каналов 24 мкс.
Звук имеет размах от - до + , ардуина может цифровать только от нуля до плюс
Это я понимаю. Мне не нужно записывать аудио для дальнейшего воспроизведения, Я делаю визуализацию на светодиодах. Типо спектрального анализатора или VU-метра, и отсутствие отрицательной полуволны я компенсирую программно. Я вообще хотел выпрямительные диоды еще поставить чтобы ее физически срезать.
Нашёл вот такую схему модуля, который поднимает сигнал в положительный диапазон и усиливает его. Все в точности с тем что Вы мне советуете, только номиналы немного другие. Но как все эти изменения отразятся на параллельном включении моей схемы с другими приёмниками? То, о чём был мой первый пост.
Это 2 МГц.
При максимальной рекомендованной частоте в 200кГц.
При максимальной рекомендованной частоте в 200кГц.
Я руководствовался вот этой статьёй
Звук имеет размах от - до + , ардуина может цифровать только от нуля до плюс, поэтому нужно сместить уровень нуля входного сигнала до половины питания, а это +2.5 вольта, что и делают резисторы.
Это как получается, если на разъёме миниджека нет сигнала, на A1, A2 будет +2.5 В. А когда на миниджек пойдёт сигнал, напряжение положительной полуволны добавиться к 2.5В? А отрицательной отнимется? И будет диапазон от 0 до 5В? (при условии что на входе миниджека будет от -2.5 до +2.5 )
С3 и С4 можно уменьшить, как я написал выше (и полярность включения обратная).
При этом получается на входе ардуины положительное напряжение и соответственно электролиты надо ставить плюсовой ногой к ардуине. Без них +2.5 вольта будут течь в усилитель.
Спасибо, исправил.
При максимальной рекомендованной частоте в 200кГц.
Я руководствовался вот этой статьёй
Статья не открывается.
Но, в любом случае, если статья противоречит дэйташиту, IMHO предпочтение следует отдавать именно дэйташиту, а не статье.
И еще: объясните мне, для чего нужны R13 и R14 на схеме в сообщении №8.
[quote=hemicide]
Но как все эти изменения отразятся на параллельном включении моей схемы с другими приёмниками? То, о чём был мой первый пост.
/quote]Мне кажется, Вы подходите немного не с той стороны.
Выход предыдущего каскада и вход следующего должны быть согласованы. Исходить нужно именно из этого.
Что у нас на выходе - непонятно. Но, судя по всему, выход рассчитан на нагрузку где-то не меньше 2 кОм. Соответственно, если Вы будете подключать к этому выходу наушники, то вне зависимости от того, что будет параллельно, звук будет сильно подсаживаться.
Т.е. если Вы хотите использовать именно параллельное подключение (разветвитель), НИКОГДА не подключайте к нему наушники.
Можно пройти и по другому пути: сделайте отдельный усилитель для наушников (с входным сопротивлением не меньше 10 кОм) и подключайте параллельно своей схеме его вход, а не сами наушники. А наушники будете подключать к выходу этого дополнительного усилителя.
...
И еще: объясните мне, для чего нужны R13 и R14 на схеме в сообщении №8.
О! Это очень нужные резисторы на 0 Ом. Без них дорожки на плате односторонней не прокинуть.
...
И еще: объясните мне, для чего нужны R13 и R14 на схеме в сообщении №8.
Если усилитель не впаять, а резисторы поставить, то работать будет.
Выход предыдущего каскада и вход следующего должны быть согласованы
Вот это то что я хотел узнать) Точнее как правильно согласовать.Чтобы параллельно включить две нагрузки, но не спалить выход.
Статья не открывается.
Поправил ссылку
Но, в любом случае, если статья противоречит дэйташиту, IMHO предпочтение следует отдавать именно дэйташиту, а не статье.
Я понял, менять коэф. предделителя нужно исходя из частоты тактирования МК, чтобы оно попадало в диапазон 50-200 КГц. Иначе показания будут очень не точными... Побольше почитаю про внешние АЦП
Т.е. если Вы хотите использовать именно параллельное подключение (разветвитель), НИКОГДА не подключайте к нему наушники.
А если вообще резисторы убрать? Просто пустить сигнал напрямую на А1, А2, без обвязки?
Можно пройти и по другому пути: сделайте отдельный усилитель для наушников (с входным сопротивлением не меньше 10 кОм) и подключайте параллельно своей схеме его вход, а не сами наушники. А наушники будете подключать к выходу этого дополнительного усилителя.
Но ведь все равно общее сопротивление на входе будет 5 КОм.
А усилитель с входным 10 КОм должен принимать такой же высокий сигнал что и схема, и выдавать уже ослабленный для наушников в 32 Ома?
Нет, Вы мне объясните, зачем накоротко соединять выход ОУ с неинвертирующим входом.
Может они и вовсе не запаяны там.. Вот этот модуль
Нет, Вы мне объясните, зачем накоротко соединять выход ОУ с неинвертирующим входом.
Для варианта платы, на котором нет усилителя
Выход предыдущего каскада и вход следующего должны быть согласованы
Вот это то что я хотел узнать) Точнее как правильно согласовать.Чтобы параллельно включить две нагрузки, но не спалить выход.
Выше я предположил, что допустимое сопротивление нагрузки должно быть не менее 2 кОм. В отсутствие других предположений предлагаю пользоваться этим.
Поправил ссылку
Экспериментально можно получить значение предделителя – 16 (ADPS[2:0]=[100]), при котором возможен компромисс 10-кратного прироста скорости, при сохранении точности.
Т.к. сам автор говорит лишь "можно", но ничего не предпринимает для доказательства этого утверждения, это напоминает:
"Совсем не сложно доказать, что 2*2=5. В дальнейшем будем исходить именно из этого доказанного утверждения."
Рекомендую задуматься вот о чем: если бы АЦП изделия Atmel действительно было способно на то, о чем пишет автор, стала бы это скрывать сама компания, ставя свое изделие в явно проигрышное положение по сравнению с продукцией конкурентов?
Кстати, в дальнейшем автор в коде снижает разрешение АЦП до 8 разрядов (причем, нигде не доказывая, что всем 8 разрядам можно верить).
А если вообще резисторы убрать? Просто пустить сигнал напрямую на А1, А2, без обвязки?
???
Мне казалось, выше Вам уже вполне доходчиво объяснили, что так работать не будет. От слова "совсем".
hemicide, при измеренных вами напряжениях сигнала уровня громкости в наушниках хватает?
это на заметку https://doctorhead.ru/advice/75476/
hemicide, при измеренных вами напряжениях сигнала уровня громкости в наушниках хватает?
это на заметку https://doctorhead.ru/advice/75476/
Если параллельно со схемой, то да, вполне, ведь суммарно входное сопротивление практически не меняется. (кроме варианта: схема+колонки, когда входное ~5 KOm, но напряжение падает всего на 4% относительно 10 KOm)
Я использовал R4, R5 как стягивающий резисторы и С1, С2 как фильтры от высокочастотных помех и наводок (с воздуха или с рук)
1) Объясните для чего нужно использовать делитель напряжение с коэф. 2? Ведь это уменьшит напряжение на входе моей схемы ровно в два раза...
2) Зачем используется электролит, включенный последовательно, на 100мкф?
3) Для чего использовать RC ФНЧ? Я так понимаю он порежет все кроме низких, а мне нужен весь диапазон)
4) Электролиты правильно установил? Почему именно 100мкф?
5) Схема из поста №1 вообще имеет право на жизнь? Или я что нибудь могу спалить?
P.S. Прошу Вас, пожалуйста, давать более развернутые ответы, чтобы я смог лучше понимать Ваши советы.
Предельная частота оцифровки у НАНО - 1Мгц тактовой для АЦП согласно даташиту, что дает 74 тысячи замеров по 13.5 тактов блока АЦП. Если у Вас 2 входа, то верхняя частота оцифровки получится чуть выше 20кГц из-за затрат на переключения входов и пр. накладных расходов. Согласно теореме, получите верхнюю частоту сигнала не более 10-14кГц.
Но что-то делать ещё, в этом случае окажется фактически невозможным (100% ЦП). Соответственно, можно будет наполнять некий "буфер", а потом его обрабатывать так или иначе. С учетом того, что ОЗУ там всего на пару килобайт - "маловато будет".
Как вывод: брать иной МК, и лучше с большей частотой АЦП и существенно большим размером оперативы. Задача не для НАНО или уйти на одноканальный вариант.