Акции
Блог
О 3DiY
  • О компании
  • Реквизиты
  • Партнеры
  • Клиенты
  • Вакансии
Оплата
Доставка
Гос. закупки
Товары под заказ
ВК Видео
Отзывы
Услуги
  • 3D печать
    • 3D печать пластиком FDM/FFF
    • 3D печать фотополимером
Контакты
  • Как до нас добраться
    8 (800) 500-45-93
    8 (800) 500-45-93отдел продаж Россия
    8 (495) 565-35-93отдел продаж Москва
    E-mail
    info@3d-diy.ru — отдел продаж

    print@3d-diy.ru — 3D печать на заказ

    support@3d-diy.ru — тех. поддержка

    buh@3d-diy.ru — Бухгалтерия
    Адрес
    Москва, Павелецкая набережная, 2с1
    Как до нас добраться, см. тут
    Режим работы
    пн - пт 09:00—18:00
    3DIY
    Войти
    0Сравнение
    0Избранное
    0Корзина
    3D принтеры3D сканерыПластик для 3D принтераФотополимерыКомплектующие 3DКомплектующие ЧПУЗапчасти 3D принтеров по брендам3D печать на заказ
    3DIY
    Войти
    0Сравнение
    0Избранное
    0Корзина
    3DIY
    Телефоны
    8 (800) 500-45-93отдел продаж Россия
    8 (495) 565-35-93отдел продаж Москва
    E-mail
    info@3d-diy.ru — отдел продаж

    print@3d-diy.ru — 3D печать на заказ

    support@3d-diy.ru — тех. поддержка

    buh@3d-diy.ru — Бухгалтерия
    Адрес
    Москва, Павелецкая набережная, 2с1
    Как до нас добраться, см. тут
    Режим работы
    пн - пт 09:00—18:00
    0
    0
    0
    • Кабинет
    • 0Сравнение
    • 0Избранное
    • 0Корзина
    • Бренды
    • Акции
    • Услуги
      • Услуги
      • 3D печать
        • 3D печать
        • 3D печать пластиком FDM/FFF
        • 3D печать фотополимером
    • Компания
      • Компания
      • О компании
      • Реквизиты
      • Партнеры
      • Клиенты
      • Вакансии
    • Блог
    • Информация
      • Информация
      • Гарантия на товар
      • Возврат товара
      • Положение о персональных данных
      • Политика конфиденциальности
      • Согласие на получение рекламы
      • Пользовательское соглашение
      • Согласие на обработку персональных данных
      • Использование cookie-файлов
      • Договор-оферта
    • Контакты
      • Контакты
      • Как до нас добраться
    8 (800) 500-45-93отдел продаж Россия
    • Телефоны
    • 8 (800) 500-45-93 отдел продаж Россия
    • 8 (495) 565-35-93 отдел продаж Москва
    • info@3d-diy.ru — отдел продаж

      print@3d-diy.ru — 3D печать на заказ

      support@3d-diy.ru — тех. поддержка

      buh@3d-diy.ru — Бухгалтерия
    • Москва, Павелецкая набережная, 2с1
      Как до нас добраться, см. тут
    • пн - пт 09:00—18:00
    Главная
    Блог
    Компоненты
    Мультиплексор

    Мультиплексор

    Мультиплексор
    Компоненты
    Содержание:
    • Назначение и принцип работы
    • Разновидности
    • Пример
    • Вывод
    • FAQ

    Назначение и принцип работы

    Мультиплексор - устройство имеющее много сигнальных входов и мало (либо вообще один) сигнальных выходов, поочередно соединяемых между собой. Порядок соединения определяется комбинацией других сигнальных входов устройства, так называемого селектора. Мультиплексор в народе также известен под названием ключ или коммутатор.

    В общем случае внутренняя принципиальная схема мультиплексора выглядит так:

    multipleksor-obshchaya-skhema.png

    Применений такому устройству можно придумать массу, входящих сигналов обычно всегда больше, чем ног у контроллера, а уделить внимание надо всем. Особенно ценен, в этом смысле, мультиплексор аналоговый, то есть передающий не только логический уровень сигнала, но и его напряжение, потому что ног с АЦП на контроллере еще меньше. А еще очень удобен для “механического” преобразования параллельного сигнала в последовательный, достаточно лишь “рубить” сигналы с входов на определенные временные куски.
    Где приобрести Ардуино комплектующие?
    Купить Arduino запчасти можно в нашем магазине 3DIY

    Разновидности

    Как уже стало понятно из предыдущего абзаца, мультиплексоры могут быть цифровыми и аналоговыми. Первые могут копировать сигнал, не передавая его напрямую, а значит обеспечивать гальваническую развязку и, при необходимости, преобразовывать уровни, например с 5V на 3.3V, что не только экономит пины, но и упрощает схему подключения а также делает ее безопасной. Кроме того, мультиплексоры отличаются количеством входов, выходов и взаимосвязью между ними. Вот лишь несколько примеров:

    dg409-adg1436.jpg

    adg441-adg444-adg442.jpg

    Задачи бывают разные, и мультиплексоры под них тоже. Наиболее популярный, “классический” имеет несколько (кратно степени двойки) входов, чаще 4, 8 или 16 и один выход. Рассмотрим его на примере самого любимого и распространенного в среде DIY-мастеров аналогового чипа CD74HC4067, а точнее платы на его основе.

    Пример

    Мультиплексор CD74HC4067 выпускается на ассиметричной, но удобной плате, со входами на одной стороне и выходом с управляющими сигналами на второй.

    CD74HC4067.jpg

    Где:
    • С0-С15 - 16 аналоговых входов,
    • SIG - один аналоговый выход,
    • EN - сигнал, включающий перемычку между входом и выходом (крайне рекомендуется отключать ее при смене коммутирующих сигналов) 0 - вкл, 1 - выкл,
    • VCC и GND - соответственно, питание 5V,
    • S0-S3 - коммутирующие сигналы, комбинацией состояния которых подключается тот или иной вход к единственному выходу.
    Комбинация сигналов S выглядит так:

    kombinaciya-signalov-S.jpg

    Если приглядеться, то можно заметить, что комбинация полностью совпадает с двоичным числом, если принять сигналы S за биты. Например, 13 = 0b1101. Этот факт делает адресацию еще удобнее, достаточно разбить байт с адресом на четыре младших бита, например, при помощи встроенной в Ардуино функции bitRead()

    byte a = 10;
    digitalWrite(S0, bitRead(a, 0));
    digitalWrite(S1, bitRead(a, 1));
    digitalWrite(S2, bitRead(a, 2));
    digitalWrite(S3, bitRead(a, 3));

    Или в виде битовых операций сдвига.

    byte a = 10;
    digitalWrite(S0, ((a & 1 << 0) >> 0));
    digitalWrite(S1, ((a & 1 << 1) >> 1));
    digitalWrite(S2, ((a & 1 << 2) >> 2));
    digitalWrite(S3, ((a & 1 << 3) >> 3));

    Или вообще, прямым копированием байта адреса в порт с пинами. Разумеется, в этом случае пины должны следовать строго по номерам выбранного порта, а остальные 4 пина не иметь недокументированных задач.

    DDRB = 0b00001111; // настройка порта
    byte a = 10;
    PORTB = a;

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

    Создадим простой проект, в котором показания 16 датчиков освещения, в виде фоторезисторов, будем считывать одним аналоговым пином при помощи четырех цифровых.

    Соберем схему.

    shema-sborki.png

    Напишем программу.
     byte MP[4] = {11, 10, 9, 8}; // пины селектора мультиплексора #define AN A0 // аналоговый пин на выход с мультиплексора #define EN 12 // enable void setup() { pinMode(EN, OUTPUT); // настройка пинов digitalWrite(EN, HIGH); pinMode(AN, INPUT); for (byte i = 0; i < 4; i++) { pinMode(MP[i], OUTPUT); digitalWrite(MP[i], LOW); } Serial.begin(9600); } void loop() { for (byte i = 0; i < 16; i++) { // опрашиваем все 16 датчиков digitalWrite(EN, HIGH); // выключаем "перемычку" на время установки селектора digitalWrite(MP[0], ((i & 1 << 0) >> 0)); // выставляем селектор digitalWrite(MP[1], ((i & 1 << 1) >> 1)); digitalWrite(MP[2], ((i & 1 << 2) >> 2)); digitalWrite(MP[3], ((i & 1 << 3) >> 3)); digitalWrite(EN, LOW); // включаем "перемычку" Serial.print(" "); // выводим информацию на терминал в текстовом виде Serial.print(i); Serial.print("="); Serial.print(analogRead(AN)); } Serial.println(" "); // перевод строки delay(500); // пауза } 
    Запустим, и увидим в терминале примерно такое:

    terminal.jpg

    Теперь мы, немного доработав программу, можем сделать, например, лазерный тир с 16 независимыми мишенями. А если заменить фоторезисторы на потенциометры, то панель управления с 16 “крутилками” настроек. Или датчик влажности почвы с 16 точками измерения. И так можно легко работать с любыми аналоговыми датчиками, которых существует великое множество, в том числе одновременно с разнотипными.

    Для особо ненасытных, функционал можно существенно расширить, увеличивая количество аналоговых входных сигналов до огромного количества. Сделать это можно параллельным или последовательным способом. В первом случае, несколько мультиплексоров параллельно подключаются к сигналам селектора, а выходы к отдельному аналоговому входу. Таким образом можем опрашивать до 8*16 = 128 аналоговых датчиков одним контроллером. Во втором, вход первого мультиплексора соединяем с выходом второго, создавая этакое дерево, количество веток которого множится в арифметической прогрессии с каждым следующим уровнем. Ограничивается такая схема лишь управляющими пинами селектора, т.к. на каждый мультиплексор требуется 4 отдельных пина. Но, в случае если цифровых пинов не хватит, всегда можно почитать на нашем сайте статью про сдвиговые регистры и решить эту проблему тоже.

    Вывод

    Мультиплексор - простой и удобный инструмент для расширения возможностей контроллера путем увеличения количества его пинов. Он понятнее в работе чем входящий сдвиговый регистр, и, самое главное, имеет возможность передавать аналоговый сигнал, недоступный другим решениям. Знать об этом устройстве и уметь применять его на практике должен каждый уважающий себя DIY-мастер.


    FAQ

    Может ли мультиплексор работать в обратном направлении, от выхода к входу?
    Если речь идет о герое нашей статьи, то да, может, он двунаправленный. Однако, придумать применение для такого использования довольно сложно, тем более, что потребуется синхронизировать селектор с приемным устройством, иначе смысл в этом подключении пропадает.

    С какой максимальной скоростью переключается селектор?
    Даташит подсказывает, что при работе с пятивольтовой логикой переключение происходит максимум за 500ns. То есть потребуется 8 мкс на все 16 переключений. Для подавляющего большинства задач этой скорости хватит с большим запасом, тем более, что при помощи функций digitalWrite() переключаться быстрее и не получится.

    Какие еще мультиплексоры можно использовать с Ардуино?
    Практически любые, которые существуют в природе. Важно лишь выбрать нужный под свою задачу и разобраться как он работает. Например, интересный четырехканальный 74HC4052 или восьмиканальный 74HC4051.

    Как еще можно уменьшить количество пинов для переключения селектора?
    Использовать цифровые мультиплексоры, управление которыми происходит по последовательному каналу, например i2c. Каждому устройству приписывается свой адрес и все они переключаются одной цепочкой команд от контроллера. Однако, такие мультиплексоры значительно дороже и заметно реже встречаются в продаже.

    Это интересно

    Сдвиговые регистры
    Компоненты
    Сдвиговые регистры
    Адресные светодиоды. WS2812B, WS2812S
    Компоненты
    Адресные светодиоды. WS2812B, WS2812S
    Цифро-аналоговый преобразователь (ЦАП)
    Компоненты
    Цифро-аналоговый преобразователь (ЦАП)
    Резисторы
    Компоненты
    Резисторы
    Динамическая индикация
    Компоненты
    Динамическая индикация
    Транзисторы
    Компоненты
    Транзисторы
    • Комментарии
    Загрузка комментариев...
    Назад к списку
    • Все публикации277
      • 3D принтеры59
      • 3D печать64
      • ЧПУ10
      • Датчики27
      • Модули38
      • 3D сканеры1
      • Arduino механика6
      • Arduino платы8
      • Дисплеи6
      • Кейсы1
      • Компоненты13
      • Мировые новости35
      • Проекты7
      • Сопутствующие2
    Связаться с нами
    8 (800) 500-45-93
    8 (800) 500-45-93отдел продаж Россия
    8 (495) 565-35-93отдел продаж Москва
    E-mail
    info@3d-diy.ru — отдел продаж

    print@3d-diy.ru — 3D печать на заказ

    support@3d-diy.ru — тех. поддержка

    buh@3d-diy.ru — Бухгалтерия
    Адрес
    Москва, Павелецкая набережная, 2с1
    Как до нас добраться, см. тут
    Режим работы
    пн - пт 09:00—18:00
    info@3d-diy.ru — отдел продаж

    print@3d-diy.ru — 3D печать на заказ

    support@3d-diy.ru — тех. поддержка

    buh@3d-diy.ru — Бухгалтерия
    Москва, Павелецкая набережная, 2с1
    Как до нас добраться, см. тут
    Магазин
    Бренды
    Акции
    Каталог
    Услуги
    Компания
    О компании
    Реквизиты
    Партнеры
    Клиенты
    Вакансии
    Информация
    Гарантия на товар
    Возврат товара
    Положение о персональных данных
    Политика конфиденциальности
    Согласие на получение рекламы
    Пользовательское соглашение
    Согласие на обработку персональных данных
    Использование cookie-файлов
    Договор-оферта
    Помощь
    Условия оплаты
    Условия доставки
    Товары под заказ
    Гос. закупки
    Как сделать заказ
    Вопрос-ответ
    2013 - 2026 © 3DiY (Тридиай) - интернет-магазин комплектующих для 3D принтеров, ЧПУ станков и робототехники
    Конфиденциальность
    Оферта
    ГлавнаяКаталог0Корзина0ИзбранныеКабинет0Сравнение
    d =
    Наш сайт использует куки. Продолжая им пользоваться, вы соглашаетесь на обработку персональных данных в соответствии с политикой конфиденциальности.
    Согласен