Вы ШИМом управляете непосредственно двигателем, или управляете линейным регулятором напряжения, от которого запитан двигатель?
Сорри, это я влез не в свою тему. У нас двигатели не DC. Управление, включая ШИМ, заходит в контроллер, а контроллер уже решает, какой режим включить в зависимости от ситуации.
Да, интересная задача. Стало любопытно проверить работу на макете
Делал подобную схему как замену регулятору двигателя Sharp WF-939, там штатные горят часто. Работает нормально. Но там основная проблема - сделать новую схему совместимой со старой по сигналам управления.
Re: Твик управления деки VILMA 204-STEREO [2022]
Добавлено: 02 мар 2023, 06:30
Pyku_He_oTTyda
Когда то давно, делал регулятор скорости протяжки проволоки для сварочного аппарата именно на таком принципе. Реализовано было на микроконтроллере.
Сейчас хочу решить задачу без оного.
Re: Твик управления деки VILMA 204-STEREO [2022]
Добавлено: 02 мар 2023, 10:58
Liv
Один из вариантов своей схемы для двигателя привода каретки головок я здесь выкладывал страницы 3 назад. Но пока она в стадии макета.
Re: Твик управления деки VILMA 204-STEREO [2022]
Добавлено: 02 мар 2023, 11:42
DrLithium
Простудился. Голова отказала. IQ - медузы. Вывалился на трое суток. Пока хватило только на это, т.е. осмыслить что:
Ну и проблем пока не замечено, кроме буквы 'я' (0xEF) постоянно вылезающей при установки связи.
Код приходит 0xFF, а не 0xEF. Это я не в ту таблицу расширения ASCII влез. Надо было ASCII+CP1251, а вляпался в ASCII+CP866. А картинки в сети часто подписаны железобетонно: ASCII тут, чего не понятного-то?
Т.е. по сути, какой-то сброшенный регистр в 0xFF (при каких-то начальных опциях или при других в 0x00) умудряется вылезти наружу, а прихлопнуть его не могу.
В высоком уровне успел пройтись правкой по ветке 'Stop'. И поправил функцию ожидания снижения оборотов до минимальных мотора подмотки/перемотки.
Вертикальная прокрутка. Индикация в стиле механического счетчика.
Очень медленное обновление экрана. На перемотке не напрягает?
Мне пришлось скорость шины до 800кГц поднять, потому что экран не успевал обновляться, а рывки на перемотке были очень неприятны для глаз.
Вообще, если буфер дисплея не перегружен "перерисовками", то обновляется шустренько. При отношении реального счета и цыфирям на экране 4/1, в проекте к Союз 110(есть на канале), на перемотке младший разряд практически сливается в одну цифру "8".
Скорость прокрутки младшего разряда, если дойдет до применения этого в проекте, будет привязана к скорости обновления счета.
Очень маленькие, SMD, сразу два канала для получения квадратурных сигналов.
Re: Твик управления деки VILMA 204-STEREO [2022]
Добавлено: 01 апр 2023, 05:12
fifan
Liv, тут обсуждали детектор пауз. Одна из схем (на К157ДА1) Ваша. Расcкажите как она работала в tk-140 и можно ли её использовать или нужно выход подводить под уровень ТТЛ?
Схема работает на удивление хорошо. Другое дело, что ДА1 сегодня купить трудно, все остатки выгребли. Надо делать на чем-то другом. К уровням TTL выходной сигнал приводился с помощью компаратора U17, порог подстраивался резистором "APLD level".
Re: Твик управления деки VILMA 204-STEREO [2022]
Добавлено: 01 апр 2023, 11:46
411i6470r
"да-шка" в первую очередь для индикации : ) на самом деле - микросхемка чудо как хороша.
ДА1 сегодня купить трудно, все остатки выгребли. Надо делать на чем-то другом.
Была готовая схема устройства автоматического поиска фонограмм, описанная в помощь радиолюбителю №105. Можно взять детектор паузы оттуда.
Re: Твик управления деки VILMA 204-STEREO [2022]
Добавлено: 01 апр 2023, 16:41
Pyku_He_oTTyda
Размышлял о сервоприводе (червяк + зубчатое колесо), по аналогии, как было сделано в видео магнитофонах.
Беглый поиск на ali обнадежил. В достаточном количестве можно найти компоненты червячной передачи.
Исполнительную шестерню вполне возможно изготовить в домашних условиях с нужным руслом ручья.
Re: Твик управления деки VILMA 204-STEREO [2022]
Добавлено: 01 апр 2023, 19:13
Leonid_sakh
Слишком большой диаметр, там мало места
Re: Твик управления деки VILMA 204-STEREO [2022]
Добавлено: 01 апр 2023, 20:25
Pyku_He_oTTyda
Шестерня для понимания, о чем речь. Выбор на ali достаточен.
В кассетнике, от неё много не требуется, в отличии о ВМ.
1. Стоп
2. Подвод головок для поиска по паузам
3. Рабочий ход
4. Управление тормозом подкатушечников, но это под вопросом.
Долго тупил (голова не работала), болел + побочка от таблеток. После восстановился до IQ рыбы, но зачем-то полез на дерево... Только в последние полторы недели удалось что-то сделать.
Тут пора ввести определение, что б меньше путаться:
"режимы" - это относится к БК (Stop, Play, Pause и тп.) и к самому аппарату, т.е. высокий уровень,
"состояния" - это относится к КР (Stop, Play, Pause, On, Off и тп.) и к другим подчинённым узлам аппарата, т.е. низкий уровень.
Т.е. БК желая изменить режим, заказывает КР перейти из состояния в состояние. КР в свою очередь должен ответить, подтверждением или отказом. БК или переходит в режим, при исполнении КР и подтверждении, или может проинформировать пользователя об отказе или может промолчать. Логику поведения и функционал БК строим исходя из возможностей карты состояний КР. Если мало, то возможности КР можно расширить, т.е. точку не ставим.
На текущий момент по КР(А):
По прошивке:
был дописан и проверен - набор низкоуровневых команд,
дописал и проверил - набор команд настраиваемых констант,
дописал - набор высокоуровневых команд,
Надо делать по тексту:
пишется - карта переходов состояний,
пишется - описание высокоуровневого команд,
пишется - описание настраиваемых констант,
пишется - описание системы реакции на питание,
Надо провести тесты и правку:
высокоуровневых команд.
Предстоит поиск ошибок, логи, орфографи, синтакси, маразмоти... ческих. Это займёт какое-то время перед выкладкой очередной порции. Движемся...
Re: Твик управления деки VILMA 204-STEREO [2022]
Добавлено: 05 апр 2023, 05:22
devel
DrLithium, по "режимам" и "состояниям" понятно. Как насчет ID (номера) ЛПМ? Мне тут приключилось 20ЛПМ завести в хозяйстве, на этих же моторах, но с одним ЭМ. Дык вот. Сейчас же теоретиццки, команды подаются не с БК, а из терминала? Тогда можно напомнить, какова битность команды, и есть ли возможность в туда втулить ID ЛПМ? Не хочется 20ть ардуин =) Тем более, основной режим (или сценарий перехода) будет один, максимум два. Но оставить возможность индивидуального управления любым ЛПМ в любой момент времени - хотелось бы. А для этого нужен ID (ну или адрес, выражаясь языком программистов). Для одинокого ЛПМ отот ID будет всегда 00000,например. А мне может понадобится 10100, например. Есть возможность вставить в битовое слово еще 5 бит?
В той же Веге ПМП-132 команда - это битовое слово, в котором часть бит - именно код операции (команды), а часть - условно можно назвать сигнальными. Поскольку, порт двунаправленный там, то в один такт слово отправляется в порт, а в следующий такт порт начинает работать на прием, и если в этот момент нажата какая-то кнопка (или возникло событие, изменившее "состояние"), то вторая часть битового слова (которая не является КОП) изменится относительно предыдущего состояния. МК вычислит, какой бит изменился, поймет, что именно произошло, и выполнит команду, изменив состояние на основе сценариев. Допустим сигнальная часть битового слова была 00010, что означало, что был активен режим ВОСПР. Юзер нажал СТОП, в этот момент сигнальная часть битового слова стала 00000, МК понял, что нажали стоп, и по сценарию выплюнул в порт код операции, отключающий моторы, и опускающий каретку, например. Ну и так оно в цикле крутится.
Как устройства на TWI шине, будет иметь свой адрес (127 -1 = 126, т.к. есть один широковещательный адрес '00'). Ну и как "источник команды", может иметь свой номер ID, что б понять в рамках БК кто старше и как их дружить между собой. Пока не сильно заморачивался, но реализовать надо, главное не забыть. По сути, байт - команда со своим ID, сопровождается дополнительным байтом, ID источника. Пока не всё продумал, но саму лазейку сделал.
Сейчас же теоретиццки, команды подаются не с БК, а из терминала? Тогда можно напомнить, какова битность команды, и есть ли возможность в туда втулить ID ЛПМ? Не хочется 20ть ардуин =)
Боюсь, что каждый ЛПМ должен иметь свой КР с ардуиной, а вот управлять всем этим хозяйством... можно по шине TWI с одного БК. Если надо запустить дубликатор (хоть на 20 штук), то не думаю что это станет проблемой. В самом БК можно определить адреса параллельных ЛПМ и работать с диапазоном устройств.
Битность в терминале минимальная. USART у нас для тестов, настройки и демонстрации исправности ЛПМ. Т.е. тут задано жёстко в рамках протокола, что б ничего лишнего. А вот когда пойдём по шине TWI, то тут и надо определять протокол высокого уровня, т.с. надстройка над самой шиной и назначить в нём что и куда танцует. По прикидкам так: даём команду по адресу, он исполняет и даёт ответ, соответственно реагируем, далее следующий адрес. Всегда в БК, знаем что это за адресат и как с ним дружить.
Примерно можно описать как именно было сделано общение по TWI или как будет:
БК получил сигнал на исполнение от кнопок, ИК ДУ, таймера, по USART, по TWI и т.п., т.е. команду 'Play'.
Проверяет в каком он режиме и если не противоречит, то обращается к КР конкретного ЛПМ.
БК зовёт КР конкретного ЛПМ по адресу.
КР слушая "эфир" словил свой позывной и придерживает в нужный момент шину, что б подтвердить что готов.
Далее БК велит: изволь ка мне голубчик, станцевать 'Play'.
КР проверяет, в состоянии ли после вчерашнего танцевать.
Тут КР снова держит шину (но уже дольше), что б в текущем сеансе не было перебивки извне (плохо для широковещания, можно переизменить).
КР исполнив очередной пируэт 'En dedans', с удивление обнаруживает - мастерство не пропьёшь! и бросается исполнять заказ. По факту исполнения, формирует ответ, 'натюрлих экселенс' - исполнено в превосходной форме и отпускает шину.
Сеанс развязывается, все умерли довольными.
Но вопрос во в чём. Что возвращать как подтверждение исполнения? По идеи команда 'Play' должна иметь номер ID =11. А если оправляем команду 'Revers' (тут ID '13')?
В случае с 'Play', КР возвращает БК тупо номер 11 и тот понимает, что исполнено именно то, куда его и посылали.
А в случае с 'Revers' нам состояние 13 не нужно совсем, это ж не состояние совсем! Т.е. должно произойти следующее: или исполнится команда или нет, а вот состояние ЛПМ должно остаться. Тогда что возвращать? БК должен знать об исключении для команды 'Revers' (и не только). БК может принимать такой ответ: умножение ID '13' *2 = 26, то это прямое направление, если ID '13' /2 = 6, то это обратное направление. Осталось или исполнилось не важно. Главное, что состояние ЛПМ внутри КР числится прежнее и БК у себя не меняет, скажем бывший 'Play'. Меняет только направление самого реверса, если это произошло.
Следующий момент о чём стоит подумать: автостоп. У БК есть привязка в КР и импульсы получает сам БК. Сам формирует счёт, направление и автостоп. В дубликаторах это надо учесть. КР дубликатора сам должен следить и считать, и в случае завершения ленты может сам перемотать на начало.
Вроде делали "конструктор" с "показательным выступлением" для конкретного решения. Перепилить под конкретный случай не д.б. сложно. Брать кусками и наваливать, лишнее само отвалится.
З.Ы. Сразу не подумал, но в случае с дубликатором и его кучей ЛПМ, можно так: использовать широковещательный адрес для управления всем карманами сразу и параллельно.
Re: Твик управления деки VILMA 204-STEREO [2022]
Добавлено: 05 апр 2023, 10:00
devel
DrLithium, Уфф... Благодарю за подробный ответ. Я в который раз забыл, что БК - это не просто кнопки, а свой МК, общающийся с основным МК в КР по TWI. В дубликаторе вообще нет КР как такового, и кнопочная станция представляет из себя набор ПКн61 с фиксацией, а плата КР содержит только ключи (драйверы) мотора и одного ЭМ. Сурово, просто, и главное работает =) Но да ладно, не буду влезать в тему со своим чумаданом, и путать всех. Мне еще нужно его (КР) схему воссоздать. Остановимся пока на той цели, которая была в начале - управление одним ЛПМ, штатным, типа В204. А дальше посмотрим, куда кривая вывезет.
Re: Твик управления деки VILMA 204-STEREO [2022]
Добавлено: 06 апр 2023, 13:17
DrLithium
Всё утро гоняю по платам тестером в попытках найти "Реверс". Перелопатил код, всё поправил (разрешил опцию "реверс присутствует"), окультурил вывод по USART-у, проверил в Протеусе - живёт. А в железе сигнал не наблюдается! Напомню, реверса в аппарате нет, но тестить надо. Оказалось... с 595-й DD2 вывод 6 (реверс) идёт на сам разъём через перемычку, а-ля резистор 0 Ом и он у меня не впаян! Ткнул тестером на ножку 595-й - есть реакция! Уже сам не помню где и как сделано.
Это еще цветочки =) Когда мы повторять начнем - вопросов будет кратно больше =)
Re: Твик управления деки VILMA 204-STEREO [2022]
Добавлено: 15 апр 2023, 18:24
DrLithium
https://disk.yandex.ru/d/pBln094EyY6tvA - "КР(А) 15.04.2023"
Выкладываю исходники КР(А) v.0.2 (добавлен высокий уровень команд - Stop, Play и т.п.) + Описание в формате Excel-а.
Исправлять можно бесконечно, уже просто устал от кучи текста. Думаю теперь пора вам поработать и поискать ляпсусы и криты. Далее будем править, перезаливать исправленное и добавлять отсутствующее. Ну и вопросы, задаём и если будет нужно, то добавлю пояснения в описании.
По процессу реализации задачи: дальше вживляем работу шины TWI, определяем протокол передачи команд между БК и КР. После на очереди сам БК и КР(Б).
Re: Твик управления деки VILMA 204-STEREO [2022]
Добавлено: 16 апр 2023, 03:56
devel
; l255 - перезапустить местную электростанцию для более чистого синуса...
Re: Твик управления деки VILMA 204-STEREO [2022]
Добавлено: 21 апр 2023, 18:20
DrLithium
...причем AVR Studio вообще паршиво себя ведет - TWI не эмулирует.
Сообщение выловлено в сети. AtmelStudio 6.2 то же ведёт себя паршиво. Всё! Проект закрывают, гипс снимают, клиент забухает!
А если подумать, то выход есть. Хорошо, что меня в своё время подсадили на Протеус, хотя я сопротивлялся. Но это было до одного случая. Получил довольно запутанный глюк и ни как не мог отловить в Студии. А в Протеусе да с виртуальным осциллографом удалось вычислить довольно редкое пересечение событий на какой-то линии (деталей не помню). Когда осознал степень бага, то проникся к Протеусу...
Т.ч. далее, два МК соединяются шиной и можно довольно продуктивно отлаживать протокол обмена. Обновил прошивку и тут же переключился в Протеус и иди по шагам в нужном месте. При этом на шину можно подключить сниффер и видеть события исключительно в рамках протокола.
Интересно, что аппаратных примеров в сети для мастера много. Для подчинённого мало или почти нету. И совсем ни кто не показывает отладку TWI в Студии (AVR или Atmel) - теперь ясно почему, но найти информацию по этому вопросу сложно. М.б. где-то в хелпе указано, но что-то лень его лопатить, да и времени жаль - живое в примерах актуальнее.
Приблизился к определению протокола обмена данными. Набросок: Нужен адрес + код команды + источник от кого исходит (таймер ПУ, ДУ, кнопки или старт синхронной перезаписи от соседнего кармана). Ответом д.б. код состояния ЛПМ и м.б. добавлен дополнительный байт(ы) (м.б. указано направление прямое или реверсивное, скорость и т.п.).
Распишу чуть подробнее:
Адрес подчинённого подготавливается заранее в переменной и м.б. использован для разных подчинённых устройств.
ПУ (Пульт Управления, он же Блок Кнопок) из подготовленных данных в массиве отсылает коды символов пока не дойдёт до признака окончания строки - нуля.
Далее ждёт ответ об исполнении и принимает данные, пока есть что принять. Пока команда исполняется, шина SCL будет придержана!
По окончании взводится флаг "сеанс завершён".
Обработчик по флагу разгребает полученный ответ в массиве и реагирует включив соответствующий режим в ПУ.
Зачем так сложно? Аппаратный TWI делает работу в фоне и по событиям вызывает прерывания, т.е. не отнимает всё время. И... делаю универсальное общение между устройствами на шине. Достаточно определить подготовку данных, запустить на исполнение и дождаться флага для обработки ответа. Т.е. общение по TWI упрощается до уровня пользователя и не требует от него лишнего знания.
То, что SCL будет придержана во время исполнения, не думаю что это страшно. Думаю, что супервайзер питания будет только информировать устройства о событии, при этом уже отключив (максимально быстро) неисправные линии +12В +15В -15В и т.п., оставив только +5В, если оно исправно. Далее должна произойти реакция на аварию и переход в дежурный режим (с питанием +5В от дежурки) или в полное отключение питания.
Условно возможна отработка следующего сценария:
Переводим аппарата в 'Play' ('Rec' или 'Pause' - не важно) и пока исполняется подтяжка реле, линия SCL удерживается. Одна из деталей вылетает устроив КЗ по линии +12В. Супервайзер питания ловит неисправность и снимает всё питание кроме +5В. Таймер на исполнение подтяжки реле истекает, линия SCL отпускается и уже не важно завершится сеанс или нет, но далее... Супервайзер берёт управление шиной TWI и вещает всем устройствам: авария! Устройства реагируют. Все умерли счастливыми.
З.Ы. Схватка идёт! Главный враг - я себе сам! Но победу отмечать будем оба! Кжись спалился, что у меня раздвоение личностей...
Нашёл ошибочку. Перезалил архив "KR(A)_002.rar" в последней ссылке - "КР(А) 15.04.2023".
В функции 'WaitPwmRMDecOff' файла 'Flags.inc', была маска '0b11111101', вместо '0b11111011'.
Пока идёт работа по швырянию байтов между МК-ов по шине. Вляпался в код '0xA0'. В нескольких местах утверждалось, что по этому коду получаем 'СТОП' или 'ПОВТОРНЫЙ СТАРТ' или 'СТОП/ПОВТОРНЫЙ СТАРТ'. Путаница в том, что 'СТОП' - это условие выставляемое мастером в конце сеанса. А код '0xA0' принадлежит подчинённому (т.е. прерывание случится для него), мастер может приостановить общение с текущим и продолжить с другим. А-ля "повиси на линии, у меня звонок по параллельной линии" и м.б. мастер вернётся договорить. Т.ч. 'СТОП' на линии не формируется, а прерывание происходит при условии 'ПОВТОРНЫЙ СТАРТ'! Просто общение с конкретно этим подчинённым м.б. окончено в текущем сеансе. Но! И по условию 'СТОП' так же происходит прерывание по этому коду. Лучше бы развели по разным кодам, удобнее было.
Думаю, курю бамбук, привораживаю музу...
Re: Твик управления деки VILMA 204-STEREO [2022]
Добавлено: 26 апр 2023, 06:37
DrLithium
Удалось таки в Протеусе пройти до стадии полного обмена между мастером и подчинённым именно с использованием аппаратной реализации шины 'TWI'. Но... Как всегда не обошлось без подводных камней.
Заставить работать симуляцию 'TWI' в студиях не возможно, а в Протеусе не всё. А именно: нет аппаратного удержание линии 'SCL' пока не сброшен флаг прерывания 'TWINT' регистра 'TWCR'.
Для чего это надо?
Сценарий такой. Отправляю каждый байт рассыпившимися половинками, по два байта в ASCII. Два для 11(0x0B Hex) и ещё два для 04. Соответственно это 'ID' высокоуровневой команды 'Play' и источник (4 - кнопки). В ASCII - 0x30+0x42 и 0x30+0x34. Подчинённый получив данные склеивает байты, выводит их из ASCII-анабиоза и загоняет на исполнение. Вот тут и приходится ставить на паузу шину 'TWI', что бы дождаться успешного исполнения или провала + сформированного ответа в ASCII.
Тут уместно будет сказать, что значимые данные будут "гулять" по шине в диапазонах: 0x30-0x39(0-9 Char) и 0x41-0x46(A-F Char). Из которых и клеятся HEX-ы, но уже вне шины - 0x00-0xFF. Тогда признаком последнего байта на шине выступает значение 0xFF - это заложено в протоколе!
Как выкручивался.
Если по среди сеанса снять флаг 'TWEN' регистра 'TWCR', что бы перехватить управление линией 'SCL', то назад уже не вернуться. Мастер спрашивает, "-А кто ты такой? Что то я не узнаю тебя в этом полосатом купальнике!". Без снятия этого бита, управлять линией 'SCL' нет возможности - не реагирует и не изменяется. Что делать-то? Думал, думал... минут пять. Решил закрыть проект. На шестой пришла свежая идея...
Не пора ли, друзья мои, нам замахнуться, на пина, понимаете, нашего соседнего? Ну есть же рядом соседняя нога! Это нога, как раз того кого надо нога! Если в Протеусе соединить проводником с линией 'SCL' и прибивать этот пин к земле когда вздумается, то это могло бы сработать...
Вопрос ещё в том, а как в железе будет вести себя 'SCL'? М.б. есть шанс, что это не только программный косяк, но и аппаратный. Пока не добрался до проверки, но плата в одну перемычку (при чём, можно напаять прямо на самой Arduino-е), кажется вполне себе разумной. В прошлой реализации делал именно программный вариант подчинённого - там всё было можно!
Дорисовал КЗ в Протеусе и cbi + sbi в Студии, и дело сдвинулось с мёртвой точки! "Аппаратные" обработчики 'TWI' в Протеусе ведут себя корректно, при удержании линии 'SCL'.
Далее пошла чехарда с определением флагов регистра 'TWCR'. Их не много для организации всей движухи. Такие флаги: 'TWINT' + 'TWEA' + 'TWSTA' + 'TWSTO' + остальные не меняются, но и тут не всё просто. Например, что б что-то что положить на отправку, делать это можно только строго пока бит прерывания 'TWINT' ещё не сброшен! Чуть раньше или позже - косяк!
Сбрасывать сами флаги раньше чем забрался в обработчик нельзя - можешь провалиться не туда, т.е. в обработку с другим кодом.
Удерживать линию 'SCL', то же надо было догадаться в какой момент можно, а в какой получишь проблемы.
Ну и на закуску.
Что бы отдавать байты мастеру надо... что бы на рассвете к тебе в комнату не прилетел чёрный ворон! А вернее, взводить бит подтверждения 'ASK'! Иначе обработчик подчинённого отработает не по коду "0xB8 Данные переданы, подтверждение от ведущего принято", а по коду "0xC8 Последний переданный байт данных, получение подтверждения". Тогда вместо актуальных полубайтов, мастеру полетят те самые 0xFF! Т.е. мастер подтверждает байт - 'ASK' (ещё хочу!) и подчинённый вторит - 'ASK' (их есть у меня!). А если "закончились" или "больше не хочу", то - 'NASK'. При не совпадении, вариантов два: на тебе много воздуха - 0xFF и я закончил, формирую 'СТОП' или 'РЕСТАРТ'.
Ну и осталось по 'TWI': дописать мастеру обработчик полученного ответа. А уж потом!!! Можно смело браться за арбитраж! Т.е. подцеплять на шину второго мастера - грозного супервайзера питания, с адресом проживания '0x00' и громким рупором!
Добавлю, что сначала тестил на частоте шины 1'000'000 Гц, но начал упираться в косяки - прерывания ШИМ не успевали отработать и случался пропуск данных. Ничего. Снизил до 400 КГц и всё пучком, частота внутреннего осциллятора МК - 8 MHz (в железе 16). Могу уверить, что и 10 КГц будет достаточно и даже стабильнее!
Полученный ответ надо трактовать так: 0x30+0x42 = 11 (состояние ЛПМ 'Play' исполнилось из бывшего 'Stop'), 0x30+0x30 = 00 (скорость 4.76), 0x30+0x30 = 00 (направление 'прямое', т.е. не реверсивное).
Как мало путёвого в сети, именно по работе подчинённого с аппаратной реализацией! Не удивительно, т.к. проблемы, проблемы...
Могу уверить, что и 10 КГц будет достаточно и даже стабильнее!
Вот 10кГц точно не надо. Давайте не будем влезать в звуковой диапазон, даже если там стабильно =) У нас и так они будут, так зачем усугублять? =)
Re: Твик управления деки VILMA 204-STEREO [2022]
Добавлено: 26 апр 2023, 14:29
rickw
Для обмена между микроконтроллерами лучше использовать UART или SPI в крайнем случае, если все UARTы заняты. С ними меньше возни и ошибок в итоге.
Re: Твик управления деки VILMA 204-STEREO [2022]
Добавлено: 26 апр 2023, 14:37
Liv
UART - это обычно связь точка-точка. Чтобы организовать сеть, надо что-то мудрить, например, добавлять физику RS-485. А I2C сразу поддерживает работу сети, куда могут входить не только микроконтроллеры, но и "железные" IC. Сам не люблю I2C, но в деке тоже планирую ее использовать. Хотя в катушечнике заложил UART + 485. Жаль, не предусмотрел отдельной линии INT, как часто делают в системах с I2C. Удобнее, когда слэйв сам сигналит об изменениях с помощью INT, чем поллить его все время по интерфейсу.
Re: Твик управления деки VILMA 204-STEREO [2022]
Добавлено: 26 апр 2023, 15:56
rickw
Глупый вопрос - вы здесь сколько микроконтроллеров соединить одной шиной хотите?
Re: Твик управления деки VILMA 204-STEREO [2022]
Добавлено: 26 апр 2023, 16:12
Liv
Пока не знаю. В катушечнике - 4. Здесь будет 2 или 3, плюс PCF8574, что заставляет выбрать I2C.
Вот 10кГц точно не надо. Давайте не будем влезать в звуковой диапазон, даже если там стабильно =) У нас и так они будут, так зачем усугублять? =)
1. SCL тактируется только во время передачи данных.
2. Время передачи пакета слишком мало
3. Сам сеанс передачи находится в таком временном окне, когда например мы всё ещё слышим расходящийся звон от только что сработавших соленоидов
4. Проект открытый и каждый сможет, поменяв одно значение в файле 'Constants.inc' значение константы 'TWI_FREQ', задать нужную частоту тактирования шины.
5. Нагрузкой шины выступают обычно резисторы 4к7 + входы микросхем, что не должно дать сколь заметного эффекта (динамическая индикация счётчика далеко не всегда слышна)
6. Активная работа шины м.б. только во время работы 'Fader control', а калибровка ленты - только запустил/дождался окончания
7. 100КГц для шины - приемлемый вариант, будет оставлен как значение по умолчанию, но нужно проверить стабильность в железе и если что, то снизить есть куда
Суть в том, что если не усугублять, то во время записи/воспроизведения работы шины быть не должно.
По числу МК на шине можно прикинуть:
1. Мастер управления ПУ/БК (Пульт Управления/Блок Кнопок)
2. Мастер супервайзер питания
3. Далее подчинённые - ЛПМ
4. Исполнение приглушения и блокировки выхода УВ/входа УЗ/ головки записи
5. Коррекция УВ, не только 35/50/70/120, можно более точно (тут ограничение - выбор числа конденсаторов)
6. Коррекция УЗ, -//-
7. Калибратор ленты
8. Можно написать OLED, но это лучше по второму аппаратному комплекту в той же 328PB, на более высокой частоте и совсем близко
9. Аппаратное управление уровнем записи в конце/начале ленты - 'Fader control' (тут есть пересечение по времени работы шины и записи)
10. Переключение систем ШП
11. и т.д.
Дать инструмент наша задача, а какая реализация уже другой вопрос. Сами решат по месту. )
;=========================================
Пришла в голову идея по калибратору для УГ.
Когда возился с тестом реверса, то получил проблему: подмотка обратная, а тонвал прямой = лента встала. Можно добить реверс до финала, тупо воткнуть реле на смену полярности мотора тонвала. Тогда записав пачки тестов в прямом направлении, без всяких перемоток, воспроизводим в обратном, выбирая подходящий результат. И... при этом тут же можно стирать сами тесты.
Тогда записав пачки тестов в прямом направлении, без всяких перемоток, воспроизводим в обратном, выбирая подходящий результат. И... при этом тут же можно стирать сами тесты.
На одновальном Планке обратное воспроизведение так не получится сделать. Там ролик в прямом направлении Воспр работает на расклинивание, и вытягивает ленту из под тонвала. В обратном направлении возможны проблемы.
На одновальном Планке обратное воспроизведение так не получится сделать. Там ролик в прямом направлении Воспр работает на расклинивание, и вытягивает ленту из под тонвала. В обратном направлении возможны проблемы.
Согласен, что не всегда все идеи можно реализовать везде. М.б. в закрытом тракте получится, но там обычно сквозной канал уже есть. А вот, если попадётся аппарат с закрытым трактом и УГ, то наверно ещё надо убедится в нормальном азимуте в реверсе. Тут скорее вопрос в том не что "возможно/не возможно", а "добавлять ли в карту ЛПМ" ? Я бы назвал это просто попыткой поиска того, чем бы ещё нашпиговать карту ЛПМ.
В КР(А) по сути, осталось только арбитраж добавить.
Ну вот в ПУ(А)/БК уже часть дышит. Но ещё надо:
набросать минимальную схему,
определить геометрию платы,
опрос кнопок,
индикацию режимов,
добавить универсальности на 595-х под разные дисплеи,
протокол ДУ хотя бы RC-5,
функции счётчика + распознавание направления,
автостоп,
расписать все возможности согласно карте ЛПМ - Cueing, поиск по паузам и т.п.
Re: Твик управления деки VILMA 204-STEREO [2022]
Добавлено: 28 апр 2023, 01:13
DrLithium
Продолжаю махать шашкой.
На этот раз удалось зарубить тройное пребывание на шине МК 328P. СВ питания будит КР(А) по шине 'TWI'. Для СВП написал минимальный код и реакцию на пару кнопок - потеря исправного питание и получение.
Наверное, стоит заметить, что СВП кричит всем по шине, вызывая их по адресу 0x00 - так будет вернее, а не то что у него такой адрес. Ни кто не поправил, успел исправиться сам! Теоретически, таких крикунов можно навесить на шину несколько и все будут звать подчинённых по адресу 0x00.
Сначала КР находится в спячке 'PowerBad', но получил от СВП то же 'PowerBad' - 0x30(0 Dec). Это ни к чему не привело.
Затем СВП обнаружил (условно по легенде), что исправное питание появилось и про это стоило бы рассказать подчинённым.
Из всех на шине самым подчинённым, оказался только КР, т.к. только он был обучен прослушивать сигнал сирены и тому как это надо понимать, стоит ли зарывать голову в песок или нет.
В сей раз оказалось, что пора выкапываться и начинать думать, т.к. было объявлено, что появилось исправное питание - 0x31(1 Dec).
КР уловил намёк, исполнил предписание войти в состояние 'Stop' о чём и отписался, указав источник сигнала - 0x00, т.е. 'СВП'.
Но счастье не долго длилось, электронный кислород перекрыли (опять же условно по легенде) и СВП вздохнув молвил... Алярм! Всё вкусное съедят! - 0x30.
Видимо у подчинённого, то ли не заладилось как-то с утра, то ли настроения не было, он в последний раз окинул взглядом сию грустную картину и в общем он решил впасть в анабиоз до весны. Принял 0x30 под язык и от состояния 'Stop' решил отказаться, проверив флаг питания понял, что вариантов не особо много и принял постриг в 'PowerBad'.
Осталось развести всю троицу на попадание в арбитраж. Тут м.б. интереснее, грабли и прочий садовый инвентарь должны быть в изобилии. Меня уже пугали по этому поводу. Обучить сигналам от Сирен тот же 'ПУ', то же надо будет, но это уже другая попутная песня...
Никто не поправил, потому что 99% не понимают =) Программирование это ж наука! Ей учиться надо! =)
Пока с трудом улавливаю очертания, а уж про внутреннюю кухню...
Но читаю, наблюдаю. Сложно-непонятно =)
Re: Твик управления деки VILMA 204-STEREO [2022]
Добавлено: 28 апр 2023, 02:54
DrLithium
Дак конкретные вопросы помогут. Просто надо с начала хоть что-то спросить. После будет можно уловить суть "механики", а далее детали - что да как, да почему... Общего алгоритма не даю, т.к. тут основа простая, остальное - окружающие рюшечки.