Выбор входа АЦП Arduino Nano

Максимальная частота дискретизации АЦП для '328p при использовании предделителя по умолчанию 128 составляет примерно 10 000 выборок в секунду. Возможно, я пропустил, но не могу понять, является ли это общей частотой дискретизации для всех входов или каждый мультиплексированный вход может поддерживать такую частоту?

В любом случае, если я собираюсь использовать только один аналоговый вход (например, A0), есть ли способ отключить мультиплексирование и выбрать, какой вход будет активным, возможно, с помощью регистра ADMUX?

, 👍1

Обсуждение

Каково конкретное применение и сколько выборок в секунду вам нужно? Помимо работы АЦП в автономном режиме, о котором уже упоминалось ниже, вы можете управлять АЦП по таймеру и использовать обработчик прерываний АЦП для выполнения кода по завершении преобразования. Мультиплексирование в данном контексте означает возможность маршрутизации выбранного вывода к АЦП. Это не автоматическое и активное сканирование всех выводов, как, например, мультиплексирование семисегментного дисплея., @6v6gt

выберите, какой вход активен... разве не это делает мультиплексор?, @jsotola

@6v6gt — Действительно, я сделал необоснованное предположение, что мультиплексирование АЦП — это активное автоматическое сканирование аналоговых входов. Теперь я вижу, что это не так, и это всё проясняет., @Jim Mack


1 ответ


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

2

При предделителе по умолчанию 128 максимальная частота дискретизации составляет 9615 выборок/с (16 МГц/128/13). Этого можно добиться, установив АЦП в режим «режим свободного выполнения». При запуске analogRead() в замкнутом цикле, максимальная Частота дискретизации составляет 8929 с/с (16 МГц/128/14). Поскольку АЦП всего один, это общая скорость для всех выборочных входных данных.

Есть ли способ отключить мультиплексирование и выбрать, какой вход будет активным?

МУЛЬТИПЛЕКСОР — это физическое устройство, которое располагается между входами и АЦП. Вы не можете физически удалить его. Что вы подразумеваете под «отключить»? Можно. конечно, сохраняйте выбор каналов постоянным.

Я предполагал, что мультиплексор поочередно проверяет каждый вход, но это может быть что если я буду читать только с канала 0, то мультиплексор никогда не будет выбрать другой канал?

В самом деле. Можно представить MUX как 1P11T (один полюс, одиннадцать сигналов). Переключатель. Каждый раз, когда вы меняете настройки мультиплексора, он переключается на другой Канал. Если не изменить его настройки, он не будет двигаться.

1-полюсный, n-позиционный переключатель

,

Может быть, я преувеличиваю. Я предполагал, что мультиплексор поочередно проверяет каждый вход, но, возможно, если я всегда читаю только с канала 0, то мультиплексор никогда не выберет другой канал?, @Jim Mack

@Jim Mack Грубо говоря, мультиплексирование — это установка статического маршрута между выводом и АЦП, и в любой момент времени может быть только один такой маршрут. Если вы вызываете, скажем, AnalogRead(A1), маршрут для этого вызова устанавливается. Последующий вызов AnalogRead(A2) удалит все предыдущие маршруты и создаст свой собственный., @6v6gt

@JimMack: Смотрите отредактированный ответ., @Edgar Bonet