Как увеличить количество доступных мне аналоговых (входных) контактов?

Я уже знаю, как увеличить количество цифровых выводов на Arduino с помощью мультиплексора.

Я хочу увеличить количество имеющихся у меня аналоговых входных каналов. Одним из решений является добавление еще одного Arduino в качестве ведомого устройства.

Как увеличить количество аналоговых входных каналов? (Я предполагаю, что задействованы некоторые мультиплексоры и АЦП). Если это слишком сложно для написания ответа, подойдет и общий план схемы/кода.

Я также открыт для защиты предложений, хотя я бы предпочел, чтобы было не слишком сложное аппаратное решение.

Связанный пост electronics.stackexchange.com/a/62500/7036

Ответы (3)

Если вы уже знакомы с микросхемами цифрового мультиплексора, у нас есть хорошие новости! Их можно использовать и для аналоговых сигналов.

http://playground.arduino.cc/Learning/4051

Основная предпосылка точно такая же, как и при мультиплексировании цифрового сигнала. Вы используете микросхему 4051 в качестве «переключателя полос» и считываете сигнал любой полосы, на которую вы указываете микросхеме переключиться. 4051 использует 3 цифровых контакта и 1 дополнительный аналоговый (или цифровой) контакт на Arduino для создания до 8 дорожек ввода. Некоторые мультиплексоры поддерживают цепочку, поэтому вы можете довольно легко добавить еще 8 сигналов, не отбирая их от самой Arduino.

Это точно так же, как метод, который вы уже знаете для цифровых сигналов, просто подключите канал, с которого вы читаете, к аналоговому контакту вместо цифрового, затем циклически перебирайте двоичные состояния и считывайте аналоговые значения.

Я сделал анимированный GIF для вас.

введите описание изображения здесь

Хотя ссылка отвечает на вопрос, не могли бы вы немного уточнить? Напишите про схему вкратце? (Ответы только по ссылке не приветствуются в сети)
Хорошо. Ответ расширен.
Одно уточнение: 4051, о котором вы упоминаете, является аналоговым мультиплексором, а не цифровым мультиплексором, я бы уточнил в вашем ответе, потому что определенно есть цифровые мультиплексоры, которые не могут этого сделать, потому что их выходные и входные драйверы не предназначены для линейного отклика. Возможно, стоит добавить, что объединение аналоговых мультиплексоров в цепочку может повлиять на сигнал в зависимости от характеристик мультиплексора.
Стоит отметить, что выбор аналоговых мультиплексоров не тривиален, разработчик должен учитывать размах напряжения (большинство из них работает только в пределах диапазона питания, как операционные усилители), полосу пропускания, сопротивление в открытом состоянии, перекрестные помехи и т. д. и т. д., причем размах напряжения является самым большим потенциалом. показать пробку.
Я считаю, что вы также можете использовать цифровой вывод для питания датчика, поэтому просто включите один цифровой вывод по отношению к датчику VCC и используйте тот же аналог.
Это будет примерно так: blueberryde.com/shop/24-channel-analog-expander-shield/… ? И будут ли проблемы с производительностью?

Возможно, важно помнить, что сам чип ATmega Arduino использует аналоговый мультиплексор. Чипы на базе Uno (ATmega328) имеют только один АЦП. 6 аналоговых входов на самом деле являются мультиплексором, который подключается к этому одному АЦП.

Вот почему вы можете считывать только 1 аналоговый вход за раз.

При расширении аналоговых входов может быть необходимо учитывать, сколько времени потребуется для выполнения всего этого MUX и нужны ли в вашем приложении дополнительные внешние АЦП.

Подумайте об этом: добавьте ATtiny 85 с последовательной связью с Arduino, он использует 2 контакта для Rx, Tx, и у вас есть еще 3 контакта, которые можно использовать как аналоговые. Вы можете разработать свой собственный протокол, ATtiny может обрабатывать алгоритм и отправлять обработанную информацию в Arduino, это также очень дешево, я пробовал это сам, я думаю, это хорошая архитектура.

Добрый день