когда коту делать нечего, - все знают, что он лижет.
а когда у программиста времени навалом, и кушать не просят - можно всяко разное нарисовать :)
когда коту делать нечего, - все знают, что он лижет.
Я бы такое не смог сделать, мозгов не хватило бы.eddddy писал(а): Ср авг 12, 2026 9:13 pmкогда у программиста времени навалом, и кушать не просят - можно всяко разное нарисовать :)
Эх, жаль фото не открывается почемутоLeoniv писал(а): Ср авг 12, 2026 9:06 pm сделали крутейший индикатор уровня для Revox A700, нам далеко до такого.
Есть видео с демонстрацией.
Леонид Иванович ну так можно дисплей или полностью смартфон вживить в тот же катушник, так там вообще возможности бесграничны
А кто напишет для всего этого ПО?
Шутить изволите. Я даже для управления двигателем ДБ-95 не могу ПО написать уже который год.
Если бы это было правдой, давно всяких разных апгрейдов было бы много. А так выложил в свободный доступ исходники недоделанного БУ лет 6 назад, и за это время ни один головастик не доделал :)
Я бы тоже стрелки поставил, но зрение не позволяет, не вижу их ничерта. Поэтому поставил светодиодные полоски, которые тоже вполне вписываются в дизайн 80-х, в отличие от графических дисплеев.С. Михалыч писал(а): Чт авг 13, 2026 1:18 amЯ вон наоборот в свою Э-004 стрелки вкорячил и доволен, с 80х это еще хотел сделать
тут просто полная погруженность нужна.
а народ верит в победу и ждет, на некоторых ресурсах :))Leoniv писал(а): Чт авг 13, 2026 12:22 am для управления двигателем ДБ-95 не могу ПО написать уже который год
Сильно в этом сомневаюсь. Для меня любое программирование делается на пределе возможностей. Усилия надо прилагать неймоверные, жить программой, с ней вставать и ложиться. И то результат так себе. А программирование FPGA - это вообще ад адский. Использовал их в нескольких проектах, чуть последним умом не тронулся. Был в шоке, когда увидел их на Ваших платах для магнитофона, это мазохизм какой-то.
Поэтому когда увидел, что у Вас собственный контроллер для ДБ-95 собран, стало очень интересно, начал спрашивать. Но когда оказалось, что там просто повторение штатного, разочарованию не было предела.
не сложнее, чем на С/С++.
в общем и целом - да, повторение штатного, ибо отлично работает, и не видел смысла на месяцы/годы уходить в изобретение велосипеда.
Если бы я не занимался и тем, и другим, могли бы рассказывать эти сказки. Но я на собственной шкуре прочувствовал, что сложность реализации проектов на FPGA - просто запредельная, мозги плавятся. Да и зарплаты соответствующих разработчиков об этом красноречиво говорят.
Работает хорошо, но не отлично. На низких скоростях лезут пульсации с частотой сравнения. Детонация по датчику скорости повышенная. Причем разная для прямого вращения и реверса. Нет активного торможения. Ну и по мелочам, в основном связанным с управлением.
Можно подробней, какие именно встретились грабли? Имеются в виду две задержки, получаемые в штатной схеме с помощью RC? Наверное, их можно реализовать небольшими цепочками LE, там же достаточно коротких импульсов.eddddy писал(а): Чт авг 13, 2026 11:19 amЧФД повторить в ПЛИС чревато граблями, с которыми прошлось побороться
мне, для первоначального запуска транспорта и отработки всей механики, этого вполне достаточно.
мне ни то ни то, в итоге, не требуется (хотя реверс заложен, и занимает, на вскидку, порядка двух-трех-четырех секунд, по ощущениям)
а что не так с управлением?
например, на 155 логике сделанное немного не так работает (скорее совсем не так), чем ожидаемо, должно было быть в функционале ПЛИС.
это то как раз проще простого - можно получить любую задержку, с дискретностью 1/Fтактовая
таким образом как раз нельзя (хотя иногда и применяют) - чревато метастабильностью последующих триггеров и зависимостью от всего, включая окружающую температуру и погоду на Марсе).
почему? все нужные нам функции исполняем
да можно, конечно, только зачем?Leoniv писал(а): Чт авг 13, 2026 12:10 pm На той же FPGA можно сделать детектор с выходом в виде числового кода ошибки фазы
тогда уж пойти дальше, и сделать на криссталле.
чего именно, не поделитесь? (для управления капстаном, в смысле)
Программирование МК тоже не сахар, но там хотя бы всё формализовано. Задачу распихиваем по классам, у каждого делаем простой и понятный интерфейс, внутри них свои данные и методы для их обработки. А к ПЛИС непонятно даже как подступиться. Что-то можно формализовать с помощью state-машин, но когда все выполняется параллельно, очень сложно связать процессы друг с другом. Часто приходится синтезировать логику буквально подбором, наблюдая за результатом симуляции. Сама симуляция тоже трудоемка, приходится имитировать внешние воздействия, а если они еще и в сильно разном временном масштабе, то совсем горе.
Если так, то вопросов нет. Но менять особо не на что. И там тоже нужен будет аналогичный контроллер, поэтому можно было и на ДБ-95 потренироваться делать хорошо.
Время реверсирования вопросов не вызывает. Вопросы есть по времени перехода на более низкую скорость. Но я это уже реализовал, происходит так же быстро, как и при реверсе.eddddy писал(а): Чт авг 13, 2026 1:03 pmреверс заложен, и занимает, на вскидку, порядка двух-трех-четырех секунд
В идеале нужна точная подстройка скорости. Потому что кварцованная частота вращения вала еще не означает точной скорости ленты. А если будет подстройка, то напрашивается и pitch-control. В последней версии прошивки его реализовал, к плате можно подключить переменный резистор. В середине шкалы организовал dead zone, где скорость номинальная (с учетом отдельной тонкой подстройки) и горит светодиод. А при повороте ручки резистора скорость начинает меняться. Чтобы шум АЦП не давал дрожания скорости, введен гистерезис.
Так эти D-триггеры имеют входы R и S, можно использовать только их, будет аналог триггеров на 2И-НЕ.eddddy писал(а): Чт авг 13, 2026 1:03 pmТТЛ триггер на 2И-НЕ просто так не организовать (элементарные ячейки все на Д-триггерах, и не классических)
В данном случае так делать нельзя, потому что схема ЧФД тут асинхронная, появится джиттер. Он, конечно, маленький, если тактовая высокая, но все же.
С какого перепуга тут будет риск метастабильности? Введение задержки не нарушит время установки или удержания, задержка очень мала по сравнению с периодом. А вот если задержку делать с использованимем тактовой, тогда сигнал с асинхронной схемы надо будет переводить в домен тактовой частоты, тут как раз и возможна метастабильность, без синхронизатора не обойтись.eddddy писал(а): Чт авг 13, 2026 1:03 pmтаким образом как раз нельзя (хотя иногда и применяют) - чревато метастабильностью последующих триггеров
Потому что исполняем их плохо - на выходе ЧФД прут пульсации с частотой сравнения. Которая сравнительно низкая и зависит от скорости двигателя. Чтобы фильтровать эту частоту, вынуждены снижать частоту среза петлевого фильтра, что ухудшает стабильность мгновенной скорости. А на низких скоростях двигатель тупо начинает гудеть. От всего этого легко уйти, если представить ошибку фазы кодом. Этот код можно вывести в идеале ЦАП-ом, или хотя бы ШИМ-ом на частоте более высокой, чем частота сравнения. Насколько я знаю, в последней версии БУВД от Kagrukeit как раз используется ЦАП, для этого выбран другой микроконтроллер.eddddy писал(а): Чт авг 13, 2026 1:03 pmпочему? все нужные нам функции исполняем
да можно, конечно, только зачем?
Вы абсолютно правы, петлевой фильтр лучше сделать тоже в цифре. Но тут "мои полномочия всё". Сколько ни бился, не получилось. Нужны более глубокие знания в ЦОС.eddddy писал(а): Чт авг 13, 2026 1:03 pmтогда уж пойти дальше, и сделать на криссталле.
"ресурсов то много"
Поделюсь, конечно. Хочется обеспечить максимально возможную равномерность вращения. Заметил, что на это сильно влияют параметры петлевого фильтра (и еще много чего). С фильтром какой-то тупик - не нашел аналитической зависимости от скорости. Хотелось бы сохранить возможность плавной перестройки, но пока получается лишь держать в памяти набор коэффициентов для нескольких дискретных скоростей.
да, FSM наше всё.
в этом и проблема (нет новых, а б/у в основном раздолбанные).
насколько долгое?
может быть.Leoniv писал(а): Чт авг 13, 2026 2:33 pm У ДБ-95 оптимальное положение датчиков можно выставить только для одного направления вращения
как вариант - отказаться от такой схемы, и сделать честное трехфазное питание.Leoniv писал(а): Чт авг 13, 2026 2:33 pm Да и сами датчики выполнены плохо, не совсем равномерные импульсы дают
насколько точная? чем измерять будем реальную скорость?Leoniv писал(а): Чт авг 13, 2026 2:33 pm В идеале нужна точная подстройка скорости. Потому что кварцованная частота вращения вала еще не означает точной скорости ленты.
реализовано (DDS на опорную частоту, с колесом энкодера)
если это про элементарные триггеры ячеек плис, то увы, аналога там нет, только нечто похожее.Leoniv писал(а): Чт авг 13, 2026 2:33 pm Так эти D-триггеры имеют входы R и S, можно использовать только их, будет аналог триггеров на 2И-НЕ.
так при вводе в ПЛИС все синхронизируется.Leoniv писал(а): Чт авг 13, 2026 2:33 pm В данном случае так делать нельзя, потому что схема ЧФД тут асинхронная, появится джиттер.
как раз t_hold и t_setup будут не определенными, так как их физическая задержка, в ЛЕ, не определена (плюс-минус лапоть), и сильно зависит от внешних факторов.Leoniv писал(а): Чт авг 13, 2026 2:33 pm Введение задержки не нарушит время установки или удержания, задержка очень мала по сравнению с периодом
да, см. выше
запрещено Талмудом и Идеологией плисоводов :)Leoniv писал(а): Чт авг 13, 2026 2:33 pm Вообще, городить в ПЛИС асинхронные схемы - то еще занятие.
так они в любом случае реализуемы, засинхронен вход или нет (синхронизатор, в самом простом виде, и есть по сути схема задержки на два такта)
так много чего можно наворотить и поулучшать. и написать на основе этого диссертацию.Leoniv писал(а): Чт авг 13, 2026 2:33 pm От всего этого легко уйти, если представить ошибку фазы кодом. Этот код можно вывести в идеале ЦАП-ом
в Матлабе есть? проработанное и промоделированное.
здесь, к.м.к, нужны длительные опыты и измеренияLeoniv писал(а): Чт авг 13, 2026 2:33 pm С фильтром какой-то тупик - не нашел аналитической зависимости от скорости.
так а что мешает ДДС внедрить?Leoniv писал(а): Чт авг 13, 2026 2:33 pm Хотелось бы сохранить возможность плавной перестройки, но пока получается лишь держать в памяти набор коэффициентов для нескольких дискретных скоростей.
Если какое-то производство сможет изготовить ведущий вал с заданными некруглостью, биениями, шероховатостью, с термообработкой, еще подшипник для него, а также маховик с требуемой балансировкой, то не составит особого труда добавить на маховик многополюсный магнит (или набор отдельных магнитов) и сделать статор с бескаркасными катушками. Основной затык - прецизионная обработка вала.
Вот график перехода от скорости 38 к скорости 19. При активном торможении он занимает менее секунды, без него - почти 11 секунд.
Что значит "честное"? Чтобы не ухудшить параметры привода, скалярное управление не пойдет, нужно векторное. Для этого надо знать положение ротора. Как его определять, если отказаться от датчиков? По бездатчиковому принципу по BEMF? Это сложно, и не уверен, что не скажется негативно на равномерности вращения, когда речь идет о сотых процента.eddddy писал(а): Чт авг 13, 2026 3:14 pmотказаться от такой схемы, и сделать честное трехфазное питание
Как обычно, частотомером при воспроизведении тестовой ленты.
Я думал, Вы делали в ПЛИС копию асинхронной схемы штатного фазового детектора.
В общем да, дело в количественном значении. У двигателя ДБ-95 плохой датчик скорости, его джиттер достигает 20 мкс. Поэтому дополнительный джиттер логики особо ситуацию не испортит. Хотя как-то рука не поднимается делать заведомо плохие по джиттеру схемы. Я даже DDS не применял из-за его джиттера, а формирую опорную частоту простым ДПКД. Его по разрешению хватает, тактовая высокая.eddddy писал(а): Чт авг 13, 2026 3:14 pmджиттер на выходе ЧФД все равно будет, вопрос в количественном значении
Ну это Вы загнули :) В данном случае, чтобы нарваться на метастабильность, задержка должна достигнуть периода частоты сравнения, т.е. стать огромной. Понятно, что фиттер может по-разному уложить схему в кристалл, по пути могут добавиться интерконнекты между блоками с их задержкой, но всё это наносекунды.eddddy писал(а): Чт авг 13, 2026 3:14 pmкак раз t_hold и t_setup будут не определенными, так как их физическая задержка, в ЛЕ, не определена (плюс-минус лапоть)
Зависит от проекта. В синхронном проекте можно, например, на входе применить асинхронный прескалер, чтобы выжать рекордное быстродействие. А бывают вообще асинхронные проекты. Например, в былые времена я часто делал "склеивающую" логику для микроконтроллеров на мелкой CPLD, там чистая асинхронщина, даже клок на кристалл не приходил.
Попробуйте это заставить работать на реальном железе...
Верно. Но длительность этих опытов растянулась на неприличное время. Некоторые вещи непонятны, и в литературе ответов на вопросы не нашел.
Речь не про это. Опорную частоут я менять могу. Но чтобы при этом получить минимальную неравномерность вращения, надо менять и коэффициенты фильтра. Причем по какому закону - непонятно. Могу только подобрать методом тыка для определенной скорости. Поэтому плавно менять скорость не могу.
думаю, что какое-то может.Leoniv писал(а): Чт авг 13, 2026 5:32 pm Если какое-то производство сможет изготовить ведущий вал с заданными некруглостью
хммм..Leoniv писал(а): Чт авг 13, 2026 5:32 pm Вот график перехода от скорости 38 к скорости 19. При активном торможении он занимает менее секунды, без него - почти 11 секунд.
да, и не сложнее многого другого.Leoniv писал(а): Чт авг 13, 2026 5:32 pm По бездатчиковому принципу по BEMF? Это сложно, и не уверен, что не скажется негативно на равномерности вращения, когда речь идет о сотых процента.
осталось ее где то взять, да с теми требованиями к ней, как к шероховатости вала, напримерLeoniv писал(а): Чт авг 13, 2026 5:32 pm Как обычно, частотомером при воспроизведении тестовой ленты.
асинхронное там только условное ядро - триггеры на "настоящих" 2И-НЕ триггерах, сам ЧФД:Leoniv писал(а): Чт авг 13, 2026 5:32 pm Я думал, Вы делали в ПЛИС копию асинхронной схемы штатного фазового детектора.
высокий это сколько?
достаточно быть недалеко от тактового фронта, в рандомный момент времени, и приехали.
да, простой асинхронный делитель вполне можно
если она вполне достаточна, для практических целей, зачем так мучатьсяLeoniv писал(а): Чт авг 13, 2026 5:32 pm Но чтобы при этом получить минимальную неравномерность вращения
подобрать, а потом коммутировать. не?Leoniv писал(а): Чт авг 13, 2026 5:32 pm Могу только подобрать методом тыка для определенной скорости
Схема аналогична оригинальной, только там на входах стояли формирователи коротких импульсов с использованием RC.
Здесь такой ситуации не возникает, задержка нужна нужна для формирователя короткого импульса по фронту сигнала. Оказаться недалеко от следующего фронта невозможно - это слишком далеко.
Да, он очень маленький, ни на что не влияет. На фоне огромного джиттера таходатчика.eddddy писал(а): Чт авг 13, 2026 6:13 pmвизуально его не видно, даже при высоком разрешении по горизонтали
Разгоном как-то баловался на Cyclone II, тоже работал на 200 МГц, причем схема большая, всё 32-разрядное, кристалл забит под 90%. Но это рулетка.eddddy писал(а): Чт авг 13, 2026 6:13 pmпростая ЕРМ570, например, даже поддельная китайская, вполне себе на 200МГц молотит
Вопрос резонный, ответ лежит в плоскости психологии. Если увидел, что может работать лучше, возвращаться к тому, что хуже, неприятно.eddddy писал(а): Чт авг 13, 2026 6:13 pmесли она вполне достаточна, для практических целей, зачем так мучаться
Так сейчас и делаю, поддерживаю только 4 скорости: 4.76, 9.525, 19.05, 38.1. Для них сохраняю в EEPROM 4 набора коэффициентов.
ага, собираем де близко к образцу
это вне модуля ЧФД.Leoniv писал(а): Чт авг 13, 2026 7:46 pm только там на входах стояли формирователи коротких импульсов с использованием RC
что то я запутался.Leoniv писал(а): Чт авг 13, 2026 7:46 pm задержка нужна нужна для формирователя короткого импульса по фронту сигнала. Оказаться недалеко от следующего фронта невозможно - это слишком далеко.
на 80% обычно считается беспроблемно,
часто отдельный экземпляр можно вылизать до этого самого perfectum,
тогда не понял мучений.
Я думал, Вы повторяете оригинальную логику. Тогда надо сформировать короткие импульсы (можно короче 50 нс) по фронту ref и tacho, сделать это можно на 2И-НЕ с задержкой по одному из входов из нескольких LE.eddddy писал(а): Чт авг 13, 2026 8:02 pmчто то я запутался.
вы хотите задержать на 50 нс, при тактовом, условно, те же 50нс, или вообще без триггеров после цепочки?
Это еще более сложный вопрос, чем вылизать один экземпляр. Нужна статистика, надо иметь несколько двигателей.
В общем, мучения и не нужны. Можно проект объявить законченным, только его причесать. В фирменных аппаратах тоже встречается куча подстроечников в контроллере ведущего двигателя, каждый на свою скорость.
Сначала не так понял. Вариспид обычно нужен недалеко от номинальной скорости, там ничего сильно не ухудшается. Хотя в идеале, конечно, коэффициенты должны подстраиваться под скорость сами. И как ни странно, в этом же контроллере это получилось для кассетного варианта (на ЛПМ "Вильма"). Там для скоростей от 2 до 9 оптимальные коэффициенты меняются пропорционально. Но ДБ-95 оказался каким-то сильно капризным, шаг влево, шаг вправо - стабильность скорости заметно ухудшается.
исключительно в ЧФД
писал же, это вне модуля ЧФД организовано :)Leoniv писал(а): Чт авг 13, 2026 8:29 pm Тогда надо сформировать короткие импульсы (можно короче 50 нс) по фронту ref и tacho
нельзя так в ПЛИС, писал уже.
с мой точки зрения, это и считается законченной конструкцией, когда можно повторить сколь угодно серийно, и будет работать, как первый образец.
именно!
от +/-10 до +/-50% от номинала (если правильно помню, столько в А820)Leoniv писал(а): Чт авг 13, 2026 8:29 pm Вариспид обычно нужен недалеко от номинальной скорости, там ничего сильно не ухудшается.
мне, видимо, повезло - осталось два рабочих образца - не заметил разницы в поведении.