ARDUINO Как сделать смещение (превратить двуполярный сигнал в однополярный)?

VictorArx

★★✩✩✩✩✩
22 Мар 2021
471
78
Вопрос нарисовался один, пока чисто теоретический, чтобы не спалить дуньку. Сигнал на вход цму беру с линейного выхода компа (250 mv), его недостаточно, чтобы вся лента зажглась. Собрал на железе компрессор и ару(программно не осилю). Сигнал теперь размах 2.5 v. положительная полуволна1.25 и 1.25 отрицательная, которую нельзя подавать на аналоговый вход. Пиковый детектор уберёт отрицательную полуволну, что изменит сигнал, что не есть хорошо, подать смещение 1. 25 v, лента будет светится в отсутствие сигнала. Как решить данную проблему?
 

poty

★★★★★★✩
19 Фев 2020
2,990
895
подать смещение 1. 25 v, лента будет светится в отсутствие сигнала
что привело Вас к этому выводу? Вы же не используете сигнал без обработки. Либо делаете преобразование Фурье в каком-либо виде (и тогда нужен сигнал в неизменном виде, но сам по себе сигнал и его смещение неважны), либо анализируете амплитуду (и тогда пиковый детектор - самое то!).
 

VictorArx

★★✩✩✩✩✩
22 Мар 2021
471
78
Утро доброе! Не совсем понял. Преобразование Фурье делаю программно в скетче, а сигнал подаю на аналоговый вход дуньки. Пока сигнал разложится , вход не навернётся?
 

poty

★★★★★★✩
19 Фев 2020
2,990
895
Давайте по порядку. Я прямо так и представляю, что сигнал для Вас - нечто материальное.

Для входа:
На вход Вы должны подать любое напряжение, удовлетворяющее условию 0 < Uвхода < REFERENCE, где REFERENCE - то, что выставлено в качестве максимального для встроенного в процессор АЦП (как правило - Vcc, то есть, напряжение питания, однако во многих скетчах это напряжение переопределяется на то, что подаётся на отдельный вход AREF контроллера). В идеале, чтобы выдержать условие точности преобразования, сигнал должен изменяться (в рамках одного цикла преобразования более чем на 1 LSB) медленнее, чем частота сэмплирования, но это уже тонкости. Удовлетворяете этим требованиям - и никакого вреда входу Ардуино Вы не сделаете.
Таким образом, если у Вас REFERENCE = Vcc = 5В, Вы подаёте смещение 1,25В и сигнал амплитудой 1,25В (обращаю внимание - не RMS!), то получаете правильный сигнал для преобразования Фурье без вреда порту.

Для процедуры обработки:
С помощью чтения аналогового порта получаете значения сигнала в определённые моменты времени, в приведённом выше случае это будут значения от 0 до 614 со средним значением 307, и подаёте на алгоритм преобразования (в Вашей терминологии - "разложение"). Обычно детектируют сигнал на определённых частотах, поэтому смещение не будет влиять на результат. Если бы Вы попытались сделать полное преобразование, то смещение было бы у Вас на частоте 0Гц.
 
  • Лойс +1
Реакции: VictorArx

novvel

★★★✩✩✩✩
29 Сен 2018
568
191
@VictorArx, 250мВ должно хватать с лихвой для ЦМУ, у тебя опорное напряжение какое выставлено? При внутреннем опорном напряжении 1,1в 0,25в довольно большой сигнал и его хватает. Если опорник внешний у тебя задан резисторами, то его можно подкрутить в меньшую сторону, но я везде юзаю внутренний.
 

VictorArx

★★✩✩✩✩✩
22 Мар 2021
471
78
Напряжение у меня 5 вольт. Оно наверно и является опорным. Поэтому и не хватает амплитуды сигнала. AREF не задействован.
 

bort707

★★★★★★✩
21 Сен 2020
2,893
860
Ну так переключитесь на внутренний референс, это ж одна строчка. Вы что-нибудь еще adc меряете, кроме аудио сигнала?
 

VictorArx

★★✩✩✩✩✩
22 Мар 2021
471
78
Вечер добрый. Нужен совет. Переключил на внутреннее опорное напряжение 1.1 вольт, лента вообще не реагирует. Команда в сетапе analogReference(INTERNAL); Плата arduino uno