Мультиплексор кодирования для 64 ИК-датчиков
Я новичок в arduino, и я надеялся, что кто-нибудь может показать мне, как закодировать мультиплексор (CD4051BE) для 64 ИК-датчиков? Действительно нужно это!
Ладно, если быть более откровенным, проблема заключается в программном обеспечении, а не в аппаратном. Это я могу сделать, но в части кодирования я застрял.
THX заранее
@Momme94, 👍-3
Обсуждение2 ответа
Что вам следует сделать, так это:
- Узнайте, как записать (и, возможно, прочитать) вывод (
digitalWrite
). - Получите таблицу данных для CD4051.
- Создайте на бумаге простую диаграмму/схему в каком порядке вы хотите что-то делать (как установить каждый вывод в каком порядке) и проверьте, делает ли это то, что вы хотите.
- Кодирование того, что вы создали.
Третье действие может выглядеть следующим образом:
ДЛЯ каждого датчика (один из 64)
Запишите биты для определения вывода (ввод A, B, C), используя `digitalWrite`)
Прочитайте датчик (не уверен, как работает ваш датчик, возможно, с помощью `analogRead`).
Рассчитайте значение IR.
Обработайте/сохраните значение
конец
На самом деле я думаю, что на CD4051 возможно только 8, поэтому вам нужно их больше, в этом случае используйте второй цикл for, чтобы правильно установить второй CD4051.
Это проблема как аппаратного, так и программного обеспечения. Я сосредоточусь на аппаратной части, а также кратко расскажу о том, как выбрать один из ваших ИК-датчиков после того, как вы построите оборудование.
Предполагая, что CD4051 мультиплексирует только 8 каналов, вам потребуется построить 2-уровневый мультиплексор, чтобы иметь возможность выбрать один из 64 ИК-датчиков.
Вы бы прикрепили вывод CD4051 верхнего уровня к своему Arudino. Затем вы бы подключили каждый из входов этого первого CD4051 к выходу другого CD4051. Вам понадобится в общей сложности 9 CD4051. Вы бы использовали 3-разрядный вход для CD4051 верхнего уровня, чтобы выбрать один из 8 мультиплексоров второго уровня. Затем вы можете связать 3 линии селектора каналов каждого CD4051 2-го уровня вместе. (Вы бы связали вывод выбора канала Со всеми CD4051s 2-го уровня вместе, все контакты выбора канала Bs вместе и все каналы Cs вместе).
3 управляющих вывода CD4051 верхнего уровня и 3 управляющих вывода CD4051s 2-го уровня будут подключены к 6 цифровым выходам Arudino и будут служить в качестве 6-битного селектора каналов. который выбрал бы один из 64 входных контактов на CD4051s 2-го уровня.
Чтобы выбрать 1 из 64 входов, вы должны установить 3 бита на CD4051 верхнего уровня, который выберет один из 8 входных контактов, который, в свою очередь, подключен к одному из 8 CD4051 второго уровня. 3 управляющих бита для CD4051 2-го уровня будут выбирать один из входов для активного CD4051 2-го уровня. (Он выберет один из входов на ВСЕХ CD4051 2-го уровня, но только выбранный выход CD4051 2-го уровня будет подаваться на CD4051 верхнего уровня и перенаправляться на Arduino.)
Как только вы настроите свои 9 CD4051s таким образом, 3 бита с CD4051 верхнего уровня и 3 бита с CD4051 2-го уровня будут служить 6-битным адресом одного из 64 входов. Затем вы подключили бы свои 64 ИК-датчика ко всем 64 входам CD4051s 2-го уровня и написали программное обеспечение Arduino, чтобы использовать 6 выводов цифровых выходов для вывода 6-разрядного адреса нужных ИК-датчиков в массив мультиплексора CD4051.
- Как использовать SPI на Arduino?
- Как сбросить или отформатировать Arduino?
- Управление скоростью вентилятора с помощью библиотеки Arduino PID
- Как получить уникальный идентификатор для всех плат Arduino?
- Как очистить буфер FIFO на MPU6050?
- Элегантное решение для обновления содержимого TFT-дисплея
- Считывание нескольких поворотных энкодеров
- Что выбрать между датчиками температуры и влажности: AM230x или DHT22?
Я не уверен, что вы действительно знаете, о чем просите. Мультиплексор позволяет выбрать один ИК-приемник в данный момент времени. Поэтому при прослушивании одного ИК-приемника сигналы всех остальных приемников просто теряются. Чего вы пытаетесь достичь? Используете ли вы 64 различных типа приемников (разная длина волны и/или модуляция) или приемники распределены по области без прямой видимости для каждого из них? Если вы пытаетесь получить ИК-сигналы от 64 различных источников с прямой видимостью, то вам обычно нужен один, два или, может быть, три приемника., @Kwasmich
Пожалуйста, покажите нам код, который вы написали до сих пор., @VE7JRO