Захват звука с помощью АЦП Arduino Nano

hemicide
Offline
Зарегистрирован: 05.12.2018

Пытаюсь делать захват звука с помощью Arduino Nano.

Исходные данные:

Имеется аудио разветвитель, который подключается к выходу аудиокарты компьютера.

  • - В первый выход разветвителя подключаются компьютерные колонки 2.1 с сопротивлением входа 10 КОм на канал, наушники-затычки 32 Ом на канал и компьютерные наушники 64 Ом на канал.
  • - Во второй выход  разветвителя подключается схема захвата аудио, с входным сопротивление 10 КОм на канал (которые были установлены как стягивающие резисторы)

AREF внешний, 3.3 В.

Предделитель с коэффициентом 8 (ADPS=[011])

На выходе аудиокарты: Синус 50Гц, громкость на макс.

Измерения:

Вопросы:

  1. Понятно, что при уменьшении входного сопротивления на приёмной стороне, напряжение на выходе аудиокарты также уменьшается, а вот ТОК, увеличивается? Мощность должна сохраниться? Значит аудиокарте нужно вливать больше тока? Если да, потребляет ли моя схема этот ток, или только напряжение?
  2. Как мне подключить параллельно колонки и схему захвата, чтобы аудиокарта этого не заметила?  Т.е. если взять номинальное сопротивление на приёмнике 10 КОм (только колонки), то макс. напряжение на выходе аудиокарты будет 2.8 В, а потом параллельно подключить схему захвата, у которой тоже на входе 10 КОм, суммарное сопротивление на входе будет 5 КОм, и напряжение уже просядет до 2.7В. Какое нужно сделать входное сопротивление на схеме захвата, чтоб напряжение на выходе аудиокарты не просаживалось, 100 КОм? Вообще убрать?
  3. Между входным (общим) сопротивлением 10 КОм и 5 КОм напряжение не сильно просаживается. А какое может быть минимальное входное сопротивление чтобы колонки продолжали играть? (Потому что, если запараллелить наушники (32 Ом) и колонки (10 КОм), то колонки уже не играют, напряжения не хватает) А какое максимальное? Как рассчитать?

 

 

 

hemicide
Offline
Зарегистрирован: 05.12.2018

nik182
Offline
Зарегистрирован: 04.05.2015

Не хватает двух электролитических конденсатора на 100 мкф в разрыв от ног 2 4 разъёма и двух резисторов 10к от R4 R5 на +5. 

Гриша
Offline
Зарегистрирован: 27.04.2014

nik182 пишет:

Не хватает двух электролитических конденсатора на 100 мкф в разрыв от ног 2 4 разъёма и двух резисторов 10к от R4 R5 на +5. 

и С1 , С2 без сопротивлений в таком включении могут "верха" порезать.

для ТС

т.е. требуется делитель как написал nik182 и RC фильтр ФНЧ или выкинуть конденсаторы.

и да., ваша схема потребляет ток.

и ваши замеры мягко говоря ничего не показывают, активное сопротивление не есть импеданс  (сопротивление, которое зависит от частоты)

hemicide
Offline
Зарегистрирован: 05.12.2018

Я использовал R4, R5 как стягивающий резисторы и С1, С2 как фильтры от высокочастотных помех и наводок (с воздуха или с рук)

1) Объясните для чего нужно использовать делитель напряжение с коэф. 2? Ведь это уменьшит напряжение на входе моей схемы ровно в два раза...

2) Зачем используется электролит, включенный последовательно, на 100мкф?

3) Для чего использовать RC ФНЧ? Я так понимаю он порежет все кроме низких, а мне нужен весь диапазон)

4) Электролиты правильно установил? Почему именно 100мкф?

5) Схема из поста №1 вообще имеет право на жизнь? Или я что нибудь могу спалить?

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

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

hemicide, "выход аудиокарты" - очень расплывчатое понятие. 

Раньше, помнится, делали карты, к которым можно было непосредственно подключать вход пассивной колонки (4 Ома). Сейчас, кажется, таких уже не делают.

Приведенная Вами схема - нерабочая. От слова "совсем". Чтобы привести ее к более или менее работоспособному состоянию, нужно:

1. Выполнить рекомендации nik182. При этом можно уменьшить номиналы дополнительных конденсаторов до 2 мкФ. Правда, схема после этого все равно не будет рабочей.

2. Отреагировать на замечание Гриши. Только с той поправкой, что не просто "могут верха порезать", а неизбежно срежут все выше 160 Гц. В общем, конденсаторы C1 и C2 из схемы надо удалить.

3. Arduino Nano тратит на один акт оцифровки 112 мкс. Раз у Вас два канала - будет 224 мкс. Т.е. частоту дискретизации выше 4 кГц Вы не сделаете. А по теореме Котельникова-Шеннона-Найквиста верхняя частота диапазона при этом будет не выше 2 кГц. Но раз Вы берете сигнал с выхода звуковой карты, значит, используется звуковой диапазон. Т.е. в звуке присутствуют частоты выше 2 кГц, что недопустимо, т.к. будет приводить к серьезным искажениям спектра сигнала. Т.е. на входе нужны дополнительные фильтры с крутизной не менее 24 дБ на октаву. Судя по Вашим познаниям в схемотехнике, это Вам не под силу. Хотя, можно использовать фильтры с цифровым управлением, например MAX261.

В качестве альтернативы можно посоветовать цифровать сигнал не самой Ардуиной, а более высокочастотным внешним АЦП, например, MCP3008.

 

PS. По вновь опубликованной схеме: С3 и С4 можно уменьшить, как я написал выше (и полярность включения обратная). Но альтернатива: фильтры с большой крутизной на входе либо внешний АЦП - остается.

nik182
Offline
Зарегистрирован: 04.05.2015

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

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

 

  

hemicide
Offline
Зарегистрирован: 05.12.2018

Спасибо за ваши ответы.

andriano пишет:

Arduino Nano тратит на один акт оцифровки 112 мкс


hemicide пишет:

Предделитель с коэффициентом 8 (ADPS=[011])

Это 2 МГц.  У меня на акт оцифровки уходит 12 мкс! С двух каналов 24 мкс.

nik182 пишет:

Звук имеет размах от - до + ,  ардуина может цифровать только от нуля до плюс


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

hemicide
Offline
Зарегистрирован: 05.12.2018

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

rkit
Offline
Зарегистрирован: 23.11.2016

hemicide пишет:

Это 2 МГц.

При максимальной рекомендованной частоте в 200кГц.

hemicide
Offline
Зарегистрирован: 05.12.2018

rkit пишет:

При максимальной рекомендованной частоте в 200кГц.

Я руководствовался вот этой статьёй

hemicide
Offline
Зарегистрирован: 05.12.2018

nik182 пишет:

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

Это как получается, если на разъёме миниджека нет сигнала, на A1, A2 будет +2.5 В. А когда на миниджек пойдёт сигнал, напряжение положительной полуволны добавиться к 2.5В? А отрицательной отнимется? И будет диапазон от 0 до 5В? (при условии что на входе миниджека будет от -2.5 до +2.5 )

hemicide
Offline
Зарегистрирован: 05.12.2018

andriano пишет:

С3 и С4 можно уменьшить, как я написал выше (и полярность включения обратная).


nik182 пишет:

При этом получается на входе ардуины положительное напряжение и соответственно электролиты надо ставить плюсовой ногой к ардуине. Без них +2.5 вольта будут течь в усилитель.

Спасибо, исправил.

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

hemicide пишет:

rkit пишет:

При максимальной рекомендованной частоте в 200кГц.

Я руководствовался вот этой статьёй

Статья не открывается.

Но, в любом случае, если статья противоречит дэйташиту, IMHO предпочтение следует отдавать именно дэйташиту, а не статье.

 

И еще: объясните мне, для чего нужны R13 и R14 на схеме в сообщении №8.

 

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

[quote=hemicide]

Но как все эти изменения отразятся на параллельном включении моей схемы с другими приёмниками? То, о чём был мой первый пост.

 

/quote]Мне кажется, Вы подходите немного не с той стороны.

Выход предыдущего каскада и вход следующего должны быть согласованы. Исходить нужно именно из этого.

Что у нас на выходе - непонятно. Но, судя по всему, выход рассчитан на нагрузку где-то не меньше 2 кОм. Соответственно, если Вы будете подключать к этому выходу наушники, то вне зависимости от того, что будет параллельно, звук будет сильно подсаживаться.

Т.е. если Вы хотите использовать именно параллельное подключение (разветвитель), НИКОГДА не подключайте к нему наушники.

Можно пройти и по другому пути: сделайте отдельный усилитель для наушников (с входным сопротивлением не меньше 10 кОм) и подключайте параллельно своей схеме его вход, а не сами наушники. А наушники будете подключать к выходу этого дополнительного усилителя.

nik182
Offline
Зарегистрирован: 04.05.2015

andriano пишет:

...

И еще: объясните мне, для чего нужны R13 и R14 на схеме в сообщении №8.

 


О! Это очень нужные резисторы на 0 Ом. Без них дорожки на плате односторонней не прокинуть.

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

nik182 пишет:
andriano пишет:

...

И еще: объясните мне, для чего нужны R13 и R14 на схеме в сообщении №8.

 

О! Это очень нужные резисторы на 0 Ом. Без них дорожки на плате односторонней не прокинуть.
Нет, Вы мне объясните, зачем накоротко соединять выход ОУ с неинвертирующим входом.

nik182
Offline
Зарегистрирован: 04.05.2015

Если усилитель не впаять, а резисторы поставить, то работать будет.

hemicide
Offline
Зарегистрирован: 05.12.2018

andriano пишет:

Выход предыдущего каскада и вход следующего должны быть согласованы

Вот это то что я хотел узнать) Точнее как правильно согласовать.Чтобы параллельно включить две нагрузки, но не спалить выход.

andriano пишет:

Статья не открывается.

Поправил ссылку

andriano пишет:

Но, в любом случае, если статья противоречит дэйташиту, IMHO предпочтение следует отдавать именно дэйташиту, а не статье.

Я понял, менять коэф. предделителя нужно исходя из частоты тактирования МК, чтобы оно попадало в диапазон 50-200 КГц. Иначе показания будут очень не точными... Побольше почитаю про внешние АЦП

andriano пишет:

Т.е. если Вы хотите использовать именно параллельное подключение (разветвитель), НИКОГДА не подключайте к нему наушники.

А если вообще резисторы убрать? Просто пустить сигнал напрямую на А1, А2, без обвязки?
andriano пишет:

Можно пройти и по другому пути: сделайте отдельный усилитель для наушников (с входным сопротивлением не меньше 10 кОм) и подключайте параллельно своей схеме его вход, а не сами наушники. А наушники будете подключать к выходу этого дополнительного усилителя.

Но ведь все равно общее сопротивление на входе будет 5 КОм.
А усилитель с входным 10 КОм должен принимать такой же высокий сигнал что и схема, и выдавать уже ослабленный для наушников в 32 Ома?

andriano пишет:

Нет, Вы мне объясните, зачем накоротко соединять выход ОУ с неинвертирующим входом.

Может они и вовсе не запаяны там.. Вот этот модуль

 

rkit
Offline
Зарегистрирован: 23.11.2016

andriano пишет:

Нет, Вы мне объясните, зачем накоротко соединять выход ОУ с неинвертирующим входом.

Для варианта платы, на котором нет усилителя

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

hemicide пишет:

andriano пишет:

Выход предыдущего каскада и вход следующего должны быть согласованы

Вот это то что я хотел узнать) Точнее как правильно согласовать.Чтобы параллельно включить две нагрузки, но не спалить выход.

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

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

Цитата:

Поправил ссылку

В статье есть фраза:

Экспериментально можно получить значение предделителя – 16 (ADPS[2:0]=[100]), при котором возможен компромисс 10-кратного прироста скорости, при сохранении точности.

Т.к. сам автор говорит лишь "можно", но ничего не предпринимает для доказательства этого утверждения, это напоминает:

"Совсем не сложно доказать, что 2*2=5. В дальнейшем будем исходить именно из этого доказанного утверждения."

Рекомендую задуматься вот о чем: если бы АЦП изделия Atmel действительно было способно на то, о чем пишет автор, стала бы это скрывать сама компания, ставя свое изделие в явно проигрышное положение по сравнению с продукцией конкурентов?

Кстати, в дальнейшем автор в коде снижает разрешение АЦП до 8 разрядов (причем, нигде не доказывая, что всем 8 разрядам можно верить).

Цитата:

А если вообще резисторы убрать? Просто пустить сигнал напрямую на А1, А2, без обвязки?

???

Мне казалось, выше Вам уже вполне доходчиво объяснили, что так работать не будет. От слова "совсем". 

 

ВН
Offline
Зарегистрирован: 25.02.2016

hemicide,  при измеренных вами напряжениях сигнала уровня громкости в наушниках хватает?

это на заметку  https://doctorhead.ru/advice/75476/

 

hemicide
Offline
Зарегистрирован: 05.12.2018

ВН пишет:

hemicide,  при измеренных вами напряжениях сигнала уровня громкости в наушниках хватает?

это на заметку  https://doctorhead.ru/advice/75476/

Если параллельно со схемой, то да, вполне, ведь суммарно входное сопротивление практически не меняется. (кроме варианта: схема+колонки, когда входное ~5 KOm, но напряжение падает всего на 4% относительно 10 KOm)

test1
Offline
Зарегистрирован: 06.01.2020

hemicide пишет:

Я использовал 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% ЦП). Соответственно, можно будет наполнять некий "буфер", а потом его обрабатывать так или иначе. С учетом того, что ОЗУ там всего на пару килобайт - "маловато будет".

Как вывод: брать иной МК, и лучше с большей частотой АЦП и существенно большим размером оперативы. Задача не для НАНО или уйти на одноканальный вариант.