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


26

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

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

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

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


Ответы:


32

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

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

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

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

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

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


3
Хотя ссылка отвечает на вопрос, не могли бы вы уточнить немного? Напишите про схему вкратце? (Ответы только на ссылки не приветствуются в сети)
Manishearth

Хорошо. Ответ расширен.
Стив Кули

3
Одно уточнение, упомянутое вами 4051 - это аналоговый мультиплексор, а не цифровой мультиплексор. Я бы пояснил в вашем ответе, потому что, безусловно, существуют цифровые мультиплексоры, которые не могут этого сделать, потому что их драйверы вывода и ввода не предназначены для линейного отклика. Возможно, стоит добавить, что цепочка аналоговых мультиплексоров может влиять на сигнал в зависимости от характеристик мультиплексора
naven87

1
Стоит отметить, что аналоговые мультиплексоры не тривиальны для выбора, разработчик должен учитывать колебание напряжения (большинство работает только в пределах диапазона питания, например, операционные усилители), полосу пропускания, сопротивление ON, перекрестные помехи и т. Д., И т.д., колебание напряжения является самым большим потенциалом показать стопор.
Мистер Мистер

Я полагаю, что вы также можете использовать цифровой вывод для питания датчика, поэтому просто включите один цифровой вывод для считывания VCC и используйте тот же аналог.
Ciasto piekarz

10

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

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

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


1

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

Добрый день

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.