Блок мультиплексора 74HC4051 из скетча

Создаем свой блок. Вопросы, помощь знатоков.
konsys
Сержант
Сообщения: 103
Зарегистрирован: 13 июл 2017, 23:21
Контактная информация:

Блок мультиплексора 74HC4051 из скетча

Сообщение konsys »

Добрый день.
есть скетч работы мультиплексора 74HC4051
AnalogMultiplexing.ino
я попробовал создать пользовательский блок
74HC4051_(Code_-_Basic).ubi
Посмотрите пожалуйста правильно ли я его сделал?
Правильно ли назначил и присвоил типы данных на входы и выходы блока?
У вас нет необходимых прав для просмотра вложений в этом сообщении.
konsys
Сержант
Сообщения: 103
Зарегистрирован: 13 июл 2017, 23:21
Контактная информация:

Блок мультиплексора 74HC4051 из скетча

Сообщение konsys »

Нет идей?
Naladchik
Капитан
Сообщения: 899
Зарегистрирован: 04 окт 2015, 19:10
Откуда: Новосибирск
Имя: Павел
Благодарил (а): 21 раз
Поблагодарили: 22 раза

Блок мультиплексора 74HC4051 из скетча

Сообщение Naladchik »

konsys писал(а): 18 апр 2021, 20:49Нет идей?
Вывод в сериал порт в сам блок зря вставили.
При этом из блока в саму программу не передаются данные с опрашиваемого канала (нет выхода, данные отправляются в сериал порт, зачем? почему не на выход блока?).
Да и какой канал в данный момент опрашивается - непонятно. Задать номер опрашиваемого канала нечем, каналы опрашиваются в цикле.
Для чего данный блок и как им пользоваться?
Win10-64. FLProg Portable.
Изображение
konsys
Сержант
Сообщения: 103
Зарегистрирован: 13 июл 2017, 23:21
Контактная информация:

Блок мультиплексора 74HC4051 из скетча

Сообщение konsys »

Naladchik писал(а): 19 апр 2021, 07:47
konsys писал(а): 18 апр 2021, 20:49Нет идей?
Вывод в сериал порт в сам блок зря вставили.
При этом из блока в саму программу не передаются данные с опрашиваемого канала (нет выхода, данные отправляются в сериал порт, зачем? почему не на выход блока?).
Да и какой канал в данный момент опрашивается - непонятно. Задать номер опрашиваемого канала нечем, каналы опрашиваются в цикле.
Для чего данный блок и как им пользоваться?
Добрый день и спасибо за ответ, а то я уж было отчаялся.
принцип и описания работы, впрочем как и сам скетч, я взял отсюда

как вытащить отправку в сериал порт не представляю да и не знаю засем
1. Нет входа задания канала. Каналы перебираются по циклу. Как определить с какого канала поступили данные?
2. Нет выхода данных с канала. Как Вы планируете использовать в программе данные с этого блока?
3. Внутрь блока вставлен вывод в сериал порт - могут быть конфликты с другими частями/блоками программы.

1) в порядке очередности через точку с запятой
2)
005.jpg
3) за это не знаю - а как правильно
1. Два входа. Разрешение работы блока и задание номера опрашиваемого канала.
2. Один выход. Данные с опрашиваемого канала.
3. Номера пинов для подключения модуля должны задаваться в параметрах блока, а не его выходами
1) а зачем разрешать? пусть фигачит цикл при включении устройства? или разрешение обязательно?
2) один выход с данными есть
3) если честно не понял
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Ushakovkz
Рядовой
Сообщения: 4
Зарегистрирован: 27 мар 2021, 09:19
Откуда: Казахстан
Имя: Alexandr

Блок мультиплексора 74HC4051 из скетча

Сообщение Ushakovkz »

Добрый день! под свои нужды состряпал вот так.
в блоке поменяй под свои пины.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Naladchik
Капитан
Сообщения: 899
Зарегистрирован: 04 окт 2015, 19:10
Откуда: Новосибирск
Имя: Павел
Благодарил (а): 21 раз
Поблагодарили: 22 раза

Блок мультиплексора 74HC4051 из скетча

Сообщение Naladchik »

[ref]Ushakovkz[/ref],
Код из Вашего блока:
...
if(Mux1_State[0] < 100) {a1 = 1; } else {(a1 = 0);}
...
Получается если на канале нет сигнала "Mux1_State[(х)] < 100", то на выходе блока значение - "a(х+1) = (х+1)",
иначе, если есть сигнал то на выходе блока нуль - "a(х+1) = 0"
Как то нелогично, или это так и задумано?
Win10-64. FLProg Portable.
Изображение
Ushakovkz
Рядовой
Сообщения: 4
Зарегистрирован: 27 мар 2021, 09:19
Откуда: Казахстан
Имя: Alexandr

Блок мультиплексора 74HC4051 из скетча

Сообщение Ushakovkz »

делал блок под свои нужды, "опрос кнопок".
Если не нажимать кнопку то на выходе 1023, при нажатии прыгает от 20 до 0 поэтому от поставил от фонаря "< 100"

if(Mux1_State[0] < 100) {a1 = 1; } else {(a1 = 0);}
если номер в массиве равен 0 и значение меньше 100 - записать в переменную int а1-1, иначе а1 = 0
if(Mux1_State[1] < 100) {a2 = 2; } else {(a2 = 0);}
если номер в массиве равен 1 и значение меньше 100 - записать в переменную int а2 - 2, иначе а2 = 0
...................................................................и.т.д.

Отправлено спустя 17 минут 17 секунд:
вот пример, делал на скорую руку.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Naladchik
Капитан
Сообщения: 899
Зарегистрирован: 04 окт 2015, 19:10
Откуда: Новосибирск
Имя: Павел
Благодарил (а): 21 раз
Поблагодарили: 22 раза

Блок мультиплексора 74HC4051 из скетча

Сообщение Naladchik »

[ref]Ushakovkz[/ref],
Понял.
Win10-64. FLProg Portable.
Изображение
Labu559
Лейтенант
Сообщения: 359
Зарегистрирован: 25 янв 2018, 22:23
Откуда: Bukovyna
Имя: Василий
Поблагодарили: 1 раз

Блок мультиплексора 74HC4051 из скетча

Сообщение Labu559 »

konsys писал(а): 19 апр 2021, 11:18 а зачем разрешать? пусть фигачит цикл при включении устройства? или разрешение обязательно?
С таким подходом, даже при успешной реализации Вашего проекта играть вживую/совершенствовать технику игры/получать удовольствие на таком инструменте будет невозможно. Время от нажатия клавиши до начала воспроизведения семпла (ноты) должно быть как можно меньше и не превышать ~20mSec (из моего практического опыта) и так-же с отпусканием клавиши/прекращением воспроизведения. Повторю для концентрации внимания: для живой игры, а не запуска секвенсера (лупа) как на многих подобных видео из Youtube (например). Для примера в моем Roland-е рассинхронизация (задержка) живой игры с автоакомпаниментом равна 7 mSec. При использования в качестве семплера внешнего устройства (особенно програмного, VST/DXi) задержка соответственно увеличивается. Нужно чистить всё лишнее, разбивать микропрограмму на отдельные части/выполняемые только по определённому условию/совпадению условий. Применение аналогового мультиплексора для МИДИ клавиатур связано по моему мнению с аналоговыми сигналами от клавиатуры для определения скорости нажатия клавиши и послекасания (MIDI parameters- velocity,aftertouch). Для саксофона роль первого параметра задается (вероятно) датчиком давления воздуха. Другие аналоговые параметры МИДИ (или SysEx сообщения) для GM их 128 не являются настолько критичными к скорости отработки. На мой взгляд нажатие/отпускание клавиш должно обрабатываться мгновенно, по внешнему прерыванию, запускать алгоритм определения ноты (номер клавиши/сочетания клавиш - к счастью это одноголосный инструмент) и уровня её громкости, а остальные параметры (в том числе легато), рассчитываться и корректироваться уже по ходу воспроизведения семпла. Это моё личное мнение и опыт использования (не проектирования !!!) клавишных инструментов и можете игнорировать это сообщение при наличии твёрдой уверенности в успешном исходе Вашего начинания. :) Желаю успехов.
Я рассмотрел эту тему в контексте этой другой темы ув. ТС, как общий подход к программированию МК.
Последний раз редактировалось Labu559 20 апр 2021, 14:46, всего редактировалось 1 раз.
Naladchik
Капитан
Сообщения: 899
Зарегистрирован: 04 окт 2015, 19:10
Откуда: Новосибирск
Имя: Павел
Благодарил (а): 21 раз
Поблагодарили: 22 раза

Блок мультиплексора 74HC4051 из скетча

Сообщение Naladchik »

Labu559 писал(а): 20 апр 2021, 14:02 Нужно чистить всё лишнее
Золотые слова!
Win10-64. FLProg Portable.
Изображение
Ushakovkz
Рядовой
Сообщения: 4
Зарегистрирован: 27 мар 2021, 09:19
Откуда: Казахстан
Имя: Alexandr

Блок мультиплексора 74HC4051 из скетча

Сообщение Ushakovkz »

Не подскажете?
кто нибудь сможет помочь с таким блоком, реально уже не туда копаю.
viewtopic.php?p=102787#p101858
konsys
Сержант
Сообщения: 103
Зарегистрирован: 13 июл 2017, 23:21
Контактная информация:

Блок мультиплексора 74HC4051 из скетча

Сообщение konsys »

Ushakovkz писал(а): 20 апр 2021, 06:49 Добрый день! под свои нужды состряпал вот так.
в блоке поменяй под свои пины.
Собрал макетку - буду пробовать 4 варианта программ мультиплексора
Labu559 писал(а): 20 апр 2021, 14:02
Давайте в данной теме обсуждать мультиплексор, а инструмент в другой теме.
Labu559
Лейтенант
Сообщения: 359
Зарегистрирован: 25 янв 2018, 22:23
Откуда: Bukovyna
Имя: Василий
Поблагодарили: 1 раз

Блок мультиплексора 74HC4051 из скетча

Сообщение Labu559 »

konsys писал(а): 21 апр 2021, 15:32
Labu559 писал(а): 20 апр 2021, 14:02
Давайте в данной теме обсуждать мультиплексор, а инструмент в другой теме.
Какой именно мультиплексор предлагаете обсуждать? Тот, что в 1-м сообщении? О нём уже всё сказано в сообщении ув. [ref]Naladchik[/ref], и более добавить нечего.
konsys писал(а): 21 апр 2021, 15:32 Собрал макетку - буду пробовать 4 варианта программ мультиплексора
[spoiler title=5 -й вариант для случая, если стенка окажется крепче черепа:]
Layout_74HC4051.png
Multiplexer74HC4051.flp
[/spoiler]
Странно, помогаешь человеку, а в ответ получаешь словесные гадости и минусы, как бы на 51-ом уже, не "молодо-зелено". :(
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Последний раз редактировалось Labu559 22 апр 2021, 12:04, всего редактировалось 1 раз.
edyapd
Капитан
Сообщения: 768
Зарегистрирован: 20 сен 2019, 11:38
Имя: Эдуард

Блок мультиплексора 74HC4051 из скетча

Сообщение edyapd »

[ref]Labu559[/ref], я вижу, что у вас собран проект в Протеусе. Если вы ещё не удалили его, попробуйте загнать в него вот это
Multiplexer74HC4051_v2.flp
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Naladchik
Капитан
Сообщения: 899
Зарегистрирован: 04 окт 2015, 19:10
Откуда: Новосибирск
Имя: Павел
Благодарил (а): 21 раз
Поблагодарили: 22 раза

Блок мультиплексора 74HC4051 из скетча

Сообщение Naladchik »

Ну тогда и я свой вариант предложу, может кому то будет интересно.
74HC4051_(Code_-_Professional).ubi
Версия FLP 7.3.5
Вся необходимая информация в описании блока.
Из особенностей: пины задаются в самом блоке, 2 режима работы (номер канала/все каналы).
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Win10-64. FLProg Portable.
Изображение
Labu559
Лейтенант
Сообщения: 359
Зарегистрирован: 25 янв 2018, 22:23
Откуда: Bukovyna
Имя: Василий
Поблагодарили: 1 раз

Блок мультиплексора 74HC4051 из скетча

Сообщение Labu559 »

edyapd писал(а): 22 апр 2021, 05:03 [ref]Labu559[/ref], ... попробуйте загнать в него вот это Multiplexer74HC4051_v2.flp
Здравствуйте ув. Эдуард, рад Вашему возвращению! По Вашему проекту: кажется понял Вашу мысль (циклический автоскан)- работает отлично, но пришлось включатель INH выхода 4051 заземлить (согласно Datasheet) и кнопки как елемент/способ переключения в таком случае конечно лишние [spoiler title= Симуляция и схема.]
EduardVerProteus.png
[/spoiler]
Naladchik писал(а): 22 апр 2021, 06:16 может кому то будет интересно.
Конечно интересно, по крайней мере мне, спасибо Вам! Тоже работает отлично! [spoiler title= До кучи:]
NaladchikVerProteus.png
Multiplexer74HC4051_Naladchik.flp
[/spoiler]
Вам успехов и всем нам меньше агрессии и больше уважения в конце Большого Поста и накануне Светлого Праздника!

Исправил вторую симуляцию в Протеусе.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Последний раз редактировалось Labu559 22 апр 2021, 12:21, всего редактировалось 1 раз.
Naladchik
Капитан
Сообщения: 899
Зарегистрирован: 04 окт 2015, 19:10
Откуда: Новосибирск
Имя: Павел
Благодарил (а): 21 раз
Поблагодарили: 22 раза

Блок мультиплексора 74HC4051 из скетча

Сообщение Naladchik »

del.
Win10-64. FLProg Portable.
Изображение
konsys
Сержант
Сообщения: 103
Зарегистрирован: 13 июл 2017, 23:21
Контактная информация:

Блок мультиплексора 74HC4051 из скетча

Сообщение konsys »

Благодарю за помощь, честно говоря не ожидал, что столько человек откликнется!
Работа исходного кода


Хочу сказать сразу
Возможно я сделал ошибки в создании и подключении блоков и метода перебора
Мультиплексор от Naladchik написал в личку

Код от Ushakovkz я не понял как правильно назначить пины ардуино

Мультиплексор от edyapd - я увеличил частоту от 20 мс до 500 мс что бы смотреть изменения


Мультиплексор от Labu559 схему не пересобирал, включил как есть, только пины переназначил


Мультиплексор от меня
работает, но все равно криво - наверное, намудрил что то с частотой обновления
multiplexor.flp
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Последний раз редактировалось konsys 22 апр 2021, 14:05, всего редактировалось 2 раза.
edyapd
Капитан
Сообщения: 768
Зарегистрирован: 20 сен 2019, 11:38
Имя: Эдуард

Блок мультиплексора 74HC4051 из скетча

Сообщение edyapd »

Labu559 писал(а): 22 апр 2021, 10:25 По Вашему проекту: кажется понял Вашу мысль (циклический автоскан)- работает отлично, но пришлось включатель INH выхода 4051 заземлить (согласно Datasheet) и кнопки как елемент/способ переключения в таком случае конечно лишние
Спасибо, что опробовали. Да, я забыл упомянуть о сигнале выбора микросхемы мультиплексора, там изменения всё правильно. Ну а кнопки они конечно никак не влияют, так как не участвуют в коде.
Меня смутило несколько другое. И вашем и в моём проекте дважды отправляется один и тот же канал. Сперва со старыми данными, потом с обновлёнными. И кажется я нашёл причину. Нужно в блок отправки, на вход send подавать сигнал разрешения с выхода R-триггера, который разрешает запись переменной Input(в моём проекте). В вашем думаю тоже можно обойтись косметическими изменениями, чтобы не было двойной отправки.

Теперь из личного опыта работы с мультиплексорами. Я не использовал 4051, не знаю как она будет работать. Использовал её советский аналог КП2. Так вот, при напряжении питания 3.3В, её можно было опрашивать не чаще 2 раз в секунду, иначе она не успевала переключаться и выдавала всякий мусор. Но для моего проекта это было не критично, так как я собирал данные по освещённости и влажности.
Второе, пока я искал как избавиться от мусора на выходе мультиплексора, наткнулся на обсуждение снятия сигнала с DRUM-установки. Там тоже боролись с тем, что шёл перенос сигнала с предыдущего канала. При этом чем сильнее был сигнал, тем он сильнее влиял. Они пришли к выводу, что нужно жертвовать одним входом на мультиплексоре, заземляя его. И считывание производить чередуя с ним. Например 0 вход заземлён, тогда считывание будет выглядеть как 1-0-2-0-3-0-4-0-5-0-6-0-7-0-1.....
Либо находить задержку на считывание, после переключения адресов.
Labu559
Лейтенант
Сообщения: 359
Зарегистрирован: 25 янв 2018, 22:23
Откуда: Bukovyna
Имя: Василий
Поблагодарили: 1 раз

Блок мультиплексора 74HC4051 из скетча

Сообщение Labu559 »

edyapd писал(а): 22 апр 2021, 13:18 Меня смутило несколько другое. И вашем и в моём проекте дважды отправляется один и тот же канал.
Ув.Эдуард, нет повода для смущений. Включив порядок выполнения блоков, всё становится на свои места- отправка в UART по изменению данных, сначала отправляется значения счётчика, потом значение АЦП и это две (вторая и предпоследняя) части одной строки. На самом деле данные по отдельности меняются один раз. [spoiler title= Конечно в наших проектах можно вывод в монитор легко поправить: ]
New4051MUX_DMX.png
[/spoiler] А в проекте Ув. Павла это все происходит неразрывно (атомарно?) в пользовательском блоке.
edyapd писал(а): 22 апр 2021, 13:18 ...её можно было опрашивать не чаще 2 раз в секунду, иначе она не успевала переключаться и выдавала всякий мусор...Они пришли к выводу, что нужно жертвовать одним входом на мультиплексоре, заземляя его...
И я о том же, об практическом опыте, потому у меня в проекте стоит слабо подтягивающий к земле аналоговый выход резистор, и в момент переключения я сначала кратковременно отключаю выход мультимплексора (подаю HIGH на INH), пока идет расчёт данных, а PULLDOWN делает свою работу с А0. Кроме того в наших версиях можно использовать несколько мультиплексоров на единственном общем аналоговом входе и на уже используемых (тоже общие для всех) цифровых А, В, С, управляя по отдельности выводом INH для каждого мультиплексора раздельными выходами МК. Для таких именно случаев у меня отдельный INH, а не на земле постоянно.
Приятно вести разговор с людьми, которые понимают о чём речь. :)
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Последний раз редактировалось Labu559 22 апр 2021, 17:09, всего редактировалось 4 раза.
Ответить

Вернуться в «Разработка пользовательских блоков»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость