Блок мультиплексора 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
Капитан
Сообщения: 908
Зарегистрирован: 04 окт 2015, 19:10
Откуда: Новосибирск
Имя: Павел
Благодарил (а): 20 раз
Поблагодарили: 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Нет идей?
Вывод в сериал порт в сам блок зря вставили.
При этом из блока в саму программу не передаются данные с опрашиваемого канала (нет выхода, данные отправляются в сериал порт, зачем? почему не на выход блока?).
Да и какой канал в данный момент опрашивается - непонятно. Задать номер опрашиваемого канала нечем, каналы опрашиваются в цикле.
Для чего данный блок и как им пользоваться?
Добрый день и спасибо за ответ, а то я уж было отчаялся.
принцип и описания работы, впрочем как и сам скетч, я взял отсюда
https://www.youtube.com/watch?v=OgaeEiHemU4
как вытащить отправку в сериал порт не представляю да и не знаю засем
1. Нет входа задания канала. Каналы перебираются по циклу. Как определить с какого канала поступили данные?
2. Нет выхода данных с канала. Как Вы планируете использовать в программе данные с этого блока?
3. Внутрь блока вставлен вывод в сериал порт - могут быть конфликты с другими частями/блоками программы.

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

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

Сообщение Ushakovkz »

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

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

Сообщение Naladchik »

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

Блок мультиплексора 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
Капитан
Сообщения: 908
Зарегистрирован: 04 окт 2015, 19:10
Откуда: Новосибирск
Имя: Павел
Благодарил (а): 20 раз
Поблагодарили: 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
Имя: Василий

Блок мультиплексора 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
Капитан
Сообщения: 908
Зарегистрирован: 04 окт 2015, 19:10
Откуда: Новосибирск
Имя: Павел
Благодарил (а): 20 раз
Поблагодарили: 22 раза

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

Сообщение Naladchik »

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

Блок мультиплексора 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
Капитан
Сообщения: 908
Зарегистрирован: 04 окт 2015, 19:10
Откуда: Новосибирск
Имя: Павел
Благодарил (а): 20 раз
Поблагодарили: 22 раза

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

Сообщение Naladchik »

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

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

Сообщение konsys »

Благодарю за помощь, честно говоря не ожидал, что столько человек откликнется!
Работа исходного кода
https://youtu.be/4MfbqGPqIF0

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

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

Мультиплексор от edyapd - я увеличил частоту от 20 мс до 500 мс что бы смотреть изменения
https://youtu.be/Y-wUalq9JWg

Мультиплексор от Labu559 схему не пересобирал, включил как есть, только пины переназначил
https://youtu.be/TDh6UEC7LrM

Мультиплексор от меня
работает, но все равно криво - наверное, намудрил что то с частотой обновления
multiplexor.flp
https://youtu.be/9i3V1hGeTn8
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Последний раз редактировалось 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
Имя: Василий

Блок мультиплексора 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 раза.
Ответить

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

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

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