Если я использую схему смещения для сигнала, поступающего на аналоговый вход, повлияет ли это на работу АЦП?

Если у меня есть один сигнал переменного тока частотой 100 Гц, смещенный двумя резисторами 1 МОм (как показано на схеме ниже), а затем вывод на аналоговый входной контакт Arduino UNO с частотой дискретизации UNO около 1 кГц с использованием задержек, будет ли есть ли проблемы с результатом ADC?

Схема смещения

(Источник схемы: http://tinyurl.com/ycprqsdx)

В спецификации Atmega328P (микропроцессор UNO) рекомендуется выходное сопротивление не более 10 кОм, как показано ниже. Если бы я использовал пару резисторов 1 МОм в качестве цепи смещения, а затем намеренно замедлял выборку с задержками (т. е. в цикле выполнял аналоговое чтение, затем задержку, затем аналоговое чтение и т. д.), было бы все еще в порядке?

Выдержка из спецификации Atmega328P

, 👍0


2 ответа


Лучший ответ:

0

Это даст плохие результаты. Вы не замедляете выборку, вы берете пробы с более длительным интервалом — совсем другое дело.

Arduino использует АЦП последовательного приближения. Он использует часы для управления выходом ЦАП и сравнения этого напряжения с входным напряжением, хранящимся в конденсаторе S&H.

Чтобы конденсатор S&H зарядился до нужного уровня, он должен быть подключен к контакту GPIO достаточно долго. Поскольку есть только один АЦП и 6 аналоговых входных контактов, сначала он проходит через мультиплексор.

Задержка, которую необходимо увеличить, — это задержка между подключением вывода к конденсатору и подключением конденсатора к АЦП. Это называется время приобретения.

Функция analogRead() последовательно выполняет следующие основные операции:

  1. Подключите SHC к контакту GPIO через мультиплексор.
  2. Подождите
  3. Отключите SHC от GPIO и подключите его к АЦП.
  4. Синхронизируйте каждый бит от компаратора до регистров результата.

Задержка между каждым AnalogRead просто задерживает подключение SHC к контакту GPIO, а не увеличивает время его подключения к контакту GPIO.

Вам придется манипулировать регистрами АЦП, чтобы выполнить собственную синхронизацию выборки. Или просто уменьшите выходное сопротивление.

,

Спасибо за разъяснение между интервалом отбора проб и отбором проб с более длительным интервалом . Думаю, я также могу уменьшить выходное сопротивление с помощью буфера на основе операционного усилителя., @plu

Да, вы могли бы. Или заменить резисторы 1МОм на 10кОм., @Majenko

Меня беспокоит то, что 100 нФ с 10 кОм эффективно отключат фильтр верхних частот на частоте ~ 159 Гц; для моего приложения мне также нужны эти низкочастотные компоненты., @plu

Увеличить конденсатор, чтобы компенсировать тогда?, @Majenko

Правильно, понял. Так что мои предыдущие 100 нФ с 1 МОм можно заменить на 10 мкФ с 10 кОм., @plu

Ага. T = RC, поэтому увеличьте C и уменьшите R, и T останется прежним., @Majenko


0

Добавление емкости ко входу поможет компенсировать высокое сопротивление, но также образует фильтр нижних частот. Для Arduino с частотой 16 МГц тактовая частота АЦП установлена на 16 МГц/128 = 125 кГц. Каждое преобразование в AVR занимает 13 тактов АЦП, поэтому 125 кГц / 13 = 9615 Гц. Это максимально возможная частота дискретизации, но фактическая частота дискретизации в вашем приложении зависит от интервала между последовательными вызовами-конверсиями.

,