Я уже знаю, как увеличить количество цифровых выводов на Arduino с помощью мультиплексора.
Я хочу увеличить количество имеющихся у меня аналоговых входных каналов. Одним из решений является добавление еще одного Arduino в качестве ведомого устройства.
Как увеличить количество аналоговых входных каналов? (Я предполагаю, что задействованы некоторые мультиплексоры и АЦП). Если это слишком сложно для написания ответа, подойдет и общий план схемы/кода.
Я также открыт для защиты предложений, хотя я бы предпочел, чтобы было не слишком сложное аппаратное решение.
Если вы уже знакомы с микросхемами цифрового мультиплексора, у нас есть хорошие новости! Их можно использовать и для аналоговых сигналов.
http://playground.arduino.cc/Learning/4051
Основная предпосылка точно такая же, как и при мультиплексировании цифрового сигнала. Вы используете микросхему 4051 в качестве «переключателя полос» и считываете сигнал любой полосы, на которую вы указываете микросхеме переключиться. 4051 использует 3 цифровых контакта и 1 дополнительный аналоговый (или цифровой) контакт на Arduino для создания до 8 дорожек ввода. Некоторые мультиплексоры поддерживают цепочку, поэтому вы можете довольно легко добавить еще 8 сигналов, не отбирая их от самой Arduino.
Это точно так же, как метод, который вы уже знаете для цифровых сигналов, просто подключите канал, с которого вы читаете, к аналоговому контакту вместо цифрового, затем циклически перебирайте двоичные состояния и считывайте аналоговые значения.
Я сделал анимированный GIF для вас.
Возможно, важно помнить, что сам чип ATmega Arduino использует аналоговый мультиплексор. Чипы на базе Uno (ATmega328) имеют только один АЦП. 6 аналоговых входов на самом деле являются мультиплексором, который подключается к этому одному АЦП.
Вот почему вы можете считывать только 1 аналоговый вход за раз.
При расширении аналоговых входов может быть необходимо учитывать, сколько времени потребуется для выполнения всего этого MUX и нужны ли в вашем приложении дополнительные внешние АЦП.
Подумайте об этом: добавьте ATtiny 85 с последовательной связью с Arduino, он использует 2 контакта для Rx, Tx, и у вас есть еще 3 контакта, которые можно использовать как аналоговые. Вы можете разработать свой собственный протокол, ATtiny может обрабатывать алгоритм и отправлять обработанную информацию в Arduino, это также очень дешево, я пробовал это сам, я думаю, это хорошая архитектура.
Добрый день
Ник Алексеев