@technotrasher, формально - почему нет? Допустим, используем те же самые ОУ. Имеем ограничение сверху в 1,5В. Остаётся 3,5В. Т.о., offset должен быть увеличен на 3,5/2 + прямое падение на диоде. На амплитуду сигнала остаётся около 1В, поставить на каждый выход конденсатор. АРУ убрать...
В принципе - нас рать. Потому как FastLED один фиг с байтом работает. Если приводить к значению яркости или цвета - 0-255 значений. Но, как бы всегда желательно на входе иметь разрешение по больше. Шире возможности для программной обработки.
стоп. у нас же все просто. снимаем с фильтров амплитуду. 0-5В. чем выше напряжение тем ярче. зависимость. все. и так по 7 каналам. с переключением в 10 мкс на левый правый. тут походу ареф не нужен. ару на входе я вообще отбросил. оставил компрессор.
@technotrasher, тут один подводный камень есть. Дело в том, что A6-A7 на нано не умеют работать как digital. То есть переключить мод на дигитал, и сбросить заряд конденсатора после цикла чтения, прижав вывод к земле - не удастся. Имейте это в виду.
Коллеги не ссориться. Я так и подумал, что вы ведёте ночную жизнь и поэтому про диод не сообразили. Я сам тута у молодёжи учусь.
Вообще правильное для ОУ всё же двухполярное включение, вернее предпочтительное. Если вы хотите однополярное, ставьте на вход делитель из двух резисторов одного номинала и подключите к + , создав искуственную среднюю точку. Например по 100 кОм.
@technotrasher, тут один подводный камень есть. Дело в том, что A6-A7 на нано не умеют работать как digital. То есть переключить мод на дигитал, и сбросить заряд конденсатора после цикла чтения, прижав вывод к земле - не удастся. Имейте это в виду.
"... тут походу ареф не нужен...."
"... если это так то все плохо..." @technotrasher, если Вы будете слушать все советы, то никогда ничего не сделаете. Впрочем, это - Ваша конструкция, не мне здесь Вас учить.
Версию схемы с однополярным питанием нарисую позже.
отрицательная волна будет отсекаться, тогда зачем она, какая польза? Нам то, по большему счету, нижняя часть синусоиды вообще не нужна. Нам бы верхнюю усилить, мы ж ее накапливать собрались на кондюке.
Потому что фильтр работает на полном сигнале. То же самое касается аналогового входа Ардуино: для того, чтобы сделать "цифровой фильтр" - выделение гармоник из сигнала - нам нужен весь сигнал, а не его полупериод.
То же самое касается аналогового входа Ардуино: для того, чтобы сделать "цифровой фильтр" - выделение гармоник из сигнала - нам нужен весь сигнал, а не его полупериод.
Я вам уже ранее говорил, что для аналогового входа нужен сигнал от 0 до Vmax, где границы вы задаете AREF и/или делителем, при этом сигнал должен быть смещен за счет постоянной составляющей. К примеру при размахе 5В и отсутствии сигнала вы должны иметь 2.5В постоянки, при максимальной положительной полуволне - 5В, при максимальной отрицательной - 0В.
Особенно после "идеальный синусоидальный сигнал с размахом 2В на вход АЦП ..., при этом допустим что 0В соответствует 0 результирующего значения АЦП, 1023 соответствует 2В сигнала". :-D
Версию схемы с однополярным питанием нарисую позже.
Отлично. Поможите страждущим. Одного не могу понять. Смещение нужно при однополярном питании. Зачем нужно смещение при двухполярном, объясните на пальцах.
@VictorArx, @technotrasher попросил всё сделать на одном напряжении 5В, Вы же сами отвечали на это: "версию схемы с однополярным питанием". Мне это не нравится и часть "плюшек" становится недоступной, но это - его выбор.
@VictorArx, @technotrasher попросил всё сделать на одном напряжении 5В, Вы же сами отвечали на это: "версию схемы с однополярным питанием". Мне это не нравится и часть "плюшек" становится недоступной, но это - его выбор.
Каких "плюшек"?
и да. а какие напряжения будут то? мне ж их как бы оцифровать то нужно!!!! и схему для питания бы хорошо. и что такое дигиталпин снижение, повышение. как управлять нужно там. что подавать на них. само не подастся. и действительно ли, что мы не можем использовать пины A...
для считывания сигнала. в проекте все было на пинах D. цифровых. и данные для фильтра брать из таблички Линейная передаточная функция. так проще?
далее - прошу помочь с включением микрофона. перенести включение на питание, а не землю как у меня.
схему можно уже просматривать тут https://easyeda.com/editor#id=|398b7af0fcf744898093c1e39c56d072
все в работе. постепенно меняется.
Про напряжения - здесь. Первоначально рассматривалось два блока питания (5В и 12В), но потом Вы начали ориентироваться только на 5В. Мне перерисовывать схему на единственное однополярное питание 5В, если учесть, что сейчас у Вас на схеме есть источник питания 12В?
Про DigitalPinСнижение и Повышение. Как я уже говорил, при полноценном питании возможен ряд улучшений, в частности - автоматическая подстройка верхнего опорного уровня АЦП к уровню сигнала. В отличие от обычного (внешнего) АРУ в этом случае можно сначала выровнять АЧХ по стандарту частотной плотности DIN (Входной усилитель с режекторным фильтром или Передаточная функция коррекции DIN - практически одинаковый эффект), а потом - определить максимальный уровень сигнала в полосах (АРУ сигнал версия 1.1). В этом случае общий уровень, который оцифровывает АЦП, вырастает на глубину подавления режекторного фильтра (но не более 18дБ, правда, эта цифра в принципе недостижима). Опорный уровень АЦП можно определять из каждой полосы отдельно (АРУ сигнал N версия 1.2), в этом случае общий уровень, поступающий на оцифровку увеличивается значительно (примерно на 9-10дБ) даже без применения режекторного фильтра (Линейный входной усилитель или Линейная передаточная функция). Естественно, эти уровни имеют определённые временнЫе параметры, чтобы управлять уровнями из МК, а не автоматически, можно на DigitalPinСнижение и Повышение подавать короткие импульсы, которые заставят этот уровень увеличиваться или уменьшаться соответственно. Такая функция есть, пользоваться ей или нет - Ваше право. При использовании единственного однополярного питания 5В опорное напряжение вряд ли может быть установлено выше минимального значения 1В, расчёт причины приведён выше. Соответственно, невозможно будет задействовать АРУ хоть как-то эффективно.
Про пины А... Использование их в digital-режиме было не моей идеей и смысла в этом я не вижу. Если паче чаяния это захочется сделать, то достаточно будет выделить любой свободный digital порт и с помощью него обнулять напряжение на всех конденсаторах сразу. Решений для этого масса. Вывод - спрашивайте о необходимости портов А... у того, кто это придумал.
есть и блок на 12В. но если очень все критично, то куплю блок с двуполярным питанием. может тогда посоветуете такой? и можно ли от него питать ещё и ленту. какие напряжения я буду считывать на пинах после фильтров. как использовать DigitalPinСнижение и Повышение - для того, чтобы понять какой код писать нужно понять как это работает.
Вечер добрый, коллеги. У меня остался один невыясненный вопрос. С позволения ТС вопрос озвучу. ОУ не бывает идеальных, даже при отсутствии входного сигнала и даже если оба входа соединены на землю, на выходе нет нуля и присутствует напряжение смещения на выходе. Надеюсь это понятно всем. Для установки нуля на выходе, надо подать напряжение смещения на один из входов, которое рассчитывается по формуле, либо из даташита.
Для данной микрухи оно равно 2 mv. Offset на диоде , даже если это диод Шоттки при падении напряжения на нём 0,35 V. Сколько же будет на выходе ОУ при отсутствии сигнала? Точно не ноль или нуль, как правильно.
Схема с двумя источниками питания (12В и 5В, оба - однополярные). Я бы линейный усилитель всё же заменил на режекторный фильтр, но в приведённой схеме по Вашей ссылке этого нет. Как вариант - выбирать значения пассивных элементов в фильтре из таблицы Передаточная функция коррекции DIN. (Кстати, у меня резисторы - в килоомах, у Вас на схеме - в омах).
Изменения: диоды заменены на шоттки с малым падением напряжения. Не сосредотачивайтесь на приведённой маркировке, допустимы любые с падением напряжения не более 500мВ.
В переключателе биполярные транзисторы заменены на MOSFET. 2N7002 выбраны с потолка, можно выбрать любые, у которых threshold voltage не более 2В.
Как это должно работать:
В setup:
1. устанавливаем, что опорным напряжением для АЦП будет AREF;
2. считываем А0 - А6;
3. создаём массив уровня шума для каждой линии AN0 - AN6, записываем в него значения из п. 2;
4. создаём массив гармоник AS0 - AS6, записываем в него значения из п. 2.
5. Подаём лог. 1 на DigitalSwL, лог. 0 на DigitalSwR.
В loop:
Каждые 20мс:
1. считываем A0 - A1;
2. для каждого А0 - А1 определяем, не равно ли оно 1023, если равно - посылаем импульс 1мс длиной на DigitalPinПовышение, если это действие не происходит 10 раз подряд - переходим на п. 1, иначе - продолжаем;
3. если не выполнялись изменения в п. 2 - для каждого А0 - А1 определяем, меньше ли принятое значение, чем AN0 - AN6, если меньше - посылаем импульс 1мс длиной на DigitalPinСнижение, если это действие не происходит 10 раз подряд - переходим на п. 1, иначе - заменяем соответствующее AN0 - AN6 на А0 - А1 и продолжаем;
4. DigitalSwL ^= 1; DigitalSwR ^= 1;
5. Записываем в AS0 - AS6 значения (A0-AN0) - (A6-AN6), отображаем. (Если An < ANn, то записываем 0)
По схеме - компрессор я не проверял. Для отключения микрофона по плюсу питания можно использовать p-MOSFET (например, BSS84, FDV304P, IRLML6302, BSH201...), подключив его стоком к VDD микрофона, истоком - к +5В, сопротивление 10кОм включить между затвором и +5В, на затвор подать управление. Обратите внимание, что для исключения самовозбуждения резистор 100 Ом нужно подключать непосредственно на затвор (т.е., он как бы должен представлять единое целое с транзистором).
@VictorArx, я надеюсь, что определение уровня шума поможет избавится от смещения.
@technotrasher, нет, это вместо линейного входного усилителя на U1A из последней схемы. В первой схеме у меня есть пример такого фильтра в прямоугольнике под названием "Входной усилитель с режекторным фильтром (версия 2)". Т.е., там разница в паре резисторов и паре конденсаторов. Я могу перерисовать последнюю схему с режекторным фильтром.
Работает он просто: усиление в полосе частот 100Гц - 1кГц опускается примерно на 4-5дБ, при этом в полосе частот ниже 100Гц и выше 1кГц - поднимается примерно на 2-3дБ. Это выравнивает статистическую мощность типичного музыкального сигнала и делает эффектнее отображение.
@technotrasher, а между тем, имхо, программный способ тоже имеет право на жизнь, как минимум на lgt8F328p, пульнутой на 32МГц выглядит это многообещающе
74406 @Fеnix, Тут я не скажу, я не программист, может и не хватает, попробуй другую конфигурацию с 300 диодами, например поменять вертикаль и горизонталь, будет ли зависать? Еще как вариант что там максимум 16 полос можно использовать, я не знаю как оно масштабируется. Ну и проверить...
@technotrasher, а между тем, имхо, программный способ тоже имеет право на жизнь, как минимум на lgt8F328p, пульнутой на 32МГц выглядит это многообещающе
Для программной реализации эти 32МГц погоды не делают, так что китайский клон тут особого смысла не имеет, а сам код от гайверовского варианта не далеко ушел, имея практически весь тот же набор "болячек", надо напрямую работать с АЦП в прерывании или в ручном управлении, все AnalogRead() сходу идут лесом.
@kDn,
Ну, как сказать. Если иметь в виду, что китайский клон зачастую обходит оригинал в математике в 1.5-2 раза, и еще и крутится на вдвое большей частоте, то как бы появляется больше шансов, что ресурсов контроллера хватит на обсчет относительно сложных эффектов. А не только на разложение сигнала на полосы. Правда ОЗУ все равно маловато.
*** Не, ну на счет analogRead() я спорить не собираюсь. Но клоны - хорошие камни получились.
по отдельности то все работает. посмотрим как это все будет с ардуино работать. схему перерисовал. исправил. добавил. но пока полная непонятность с бп. я так понимаю что нужно два отдельных на 5 и на 12 Вольт. а 12 Вольт переделывается в двуполярный. куда девать тогда землю от 5 вольтового. проверяйте схему.
На данном сайте используются файлы cookie, чтобы персонализировать контент и сохранить Ваш вход в систему, если Вы зарегистрируетесь.
Продолжая использовать этот сайт, Вы соглашаетесь на использование наших файлов cookie.