leoniv (leoniv) wrote,
leoniv
leoniv

Category:

Что дальше?



Когда-то давно, в самом конце 80-х, я проектировал маленькую переносную кассетную магнитолу с самодельным ЛПМ. Проект так и остался лишь на бумаге, а сегодня у меня есть аналог того, о чем тогда мечтал – это Sharp QT-70. Хоть он и несравненно проще того, что было задумано. В то время микроконтроллерная техника у нас только начинала свое распространение, поэтому выбор между управлением ЛПМ на микроконтроллере и жесткой логике был совершенно не очевиден. Тогда я параллельно проектировал два варианта. Позже микроконтроллеры получили развитие и широкое распространение, выбор отпал сам собой. Стало очевидным, что управление ЛПМ надо строить на микроконтроллере. В следующих своих проектах кассетных дек я так и поступил. Одна из этих дек работает по сей день. Управление там сделано на микроконтроллере, его разработка не вызвала особых трудностей, в правильности выбора не было никаких сомнений. Кто бы мог подумать, что спустя 30 лет снова придется задуматься о таком же выборе.



На форумах по катушечным магнитофонам давно обсуждалась тема блока управления (БУ). Было много предложений по доработке штатного БУ, который выполнен на логике. Но наиболее прогрессивные участники всегда высказывались в пользу полной переделки БУ на микроконтроллере. Заменить полтора десятка логических микросхем не виделось сколько-нибудь серьезной проблемой. Поэтому в таких обсуждениях я тоже всегда принимал сторону микроконтроллерной реализации.

САР натяжения ленты тоже предлагалось реализовать программно. Современные контроллеры имеют высокую производительность, имеют встроенные АЦП и ЦАП (или ШИМ). Полоса сигналов здесь узкая, менее 100 Гц, поэтому никаких трудностей сделать это не виделось. Но почему-то дальше многолетних разговоров на форумах дело не шло.

Катушечный магнитофон – моя давняя мечта. В конце 80-х хотел его сделать с нуля, до сих пор хранится целая папка эскизов, по сегодняшним меркам довольно смешных. Но осуществить проект не позволяла техническая база, в основном с точки зрения механики. Надо было или самому работать на каком-нибудь заводе с широким станочным парком, или иметь там знакомых и деньги. Ничего этого у меня не было. Поэтому вынужденно переключился на гораздо менее любимый кассетный формат, сделать кассетный ЛПМ можно было на коленке в обычной квартире.

Сейчас возможности гораздо шире, и то я не решился делать ЛПМ с нуля. К счастью, в отличие от 80-х годов, сейчас вполне подъемно купить аппарат с хорошим ЛПМ и взять его за основу. Лучший ЛПМ среди бытовых аппаратов, безусловно, был у магнитофонов «Электроника» и «Олимп». Я выбрал самый лучший с моей точки зрения аппарат – «Электроника-004» и занялся его доработкой.

Настало время форумные разговоры воплотить в реальное железо. Наученный многочисленными неудачами в своих электронных проектах, решил не начинать грандиозную работу по переделке всего сразу (хотя такой альтернативный план есть), а двигаться как можно более мелкими шагами, чтобы свести риск неудач к минимуму.

Первое, чем я решил заняться – это счетчик ленты. Штатно был установлен механический счетчик, приводимый пассиком, что не лезло ни в какие ворота. Изучив имеющиеся аналоги (например, счетчик авторства Макса Крюкова или Fagear), пришел к приемлемой конструкции – все размещается на одной плате. Как мне кажется, получилось достаточно хорошо. Программирование этой платы было долгим и очень сложным. Поскольку счетчик многоскоростной, с индикацией реального времени и метража, а также с калибровкой диаметра обводного ролика, там порядочно математики. Возник сложный вопрос с переполнением. Между всеми режимами должна быть однозначная связь – мы можем их переключать, счет не должен нарушаться. Но в разных режимах разная информационная емкость дисплея и разный темп счета. Поэтому переполнение в разных режимах будет наступать не одновременно, что разрушит всякое соответствие. Пытался найти какое-то логичное решение проблемы, долго находился в полном тупике. Но надо было что-то делать, реализовал нелогичное решение, когда счетчик переполняется в самом неожиданном месте, достигая каких-то магических цифр. Причем в разных режимах – разных. До сих пор не знаю, как эту проблему надо решать правильно, осталась некоторая неудовлетворенность. Одно успокаивает – переполнение счетчика наступает редко. Ну и традиционно получилось дико неудобное управление из-за только одной кнопки. В остальном проект нормальный, провальным я его не считаю.

Второй блок, который я решил переделать – это блок управления. Значительная часть БУ отвечает за управление боковыми двигателями. С ними связан самый главный недостаток этого магнитофона – гудение. На исследование боковых двигателей было потрачено примерно полгода, проверялись различные способы питания, вплоть до частотного преобразователя. В результате пришел к тому, с чего начинал – штатной схеме управления. Единственное, что на практике помогает справиться с гудением – это механическая обработка статоров двигателей.

Кроме самой схемы питания двигателей БУ содержит САР натяжения ленты. Это главная функция БУ, которая работает постоянно. САР натяжения посвящены все последние посты в журнале, где описываются непреодолимые на сегодняшний день проблемы. Как один из вариантов, рассматриваю гибридный БУ с аналоговой САР натяжения. С одной стороны, эта полная глупость, все это в теории может делать микроконтроллер. Но от неумения его правильно запрограммировать можно смириться с лишней схемой. Вообще, в поздних магнитофонах Studer эта система была реализована именно так – микроконтроллер лишь управлял, а сам регулятор был аналоговый. Схемная реализация регулятора там была очень сложная. Но в то время производительность микроконтроллеров была значительно ниже, чем сегодня. Любительские проекты с программной стабилизацией натяжения встречал (например, БУ от того же Fagear), но ни один из них, вроде, не доведен до конца.

Но не только САР натяжения отталкивает меня от нового БУ. В аппаратном плане особых претензий к этому блоку нет, а вот программная часть получилась страшно сложной и запутанной. Никогда не мог подумать, что так сложно будет заменить микроконтроллером полтора десятка микросхем простой логики. Но логика – это параллельно работающая система, а тут это все надо запихнуть в одну исполняющуюся последовательно программу. С реализацией многозадачности я знаком, тут параллельно крутится несколько процессов, используя кооперативную многозадачность. Но прозрачности коду это не добавляет. Программа имеет такой вид, что туда страшно влезать. Она основана на каких-то бесконечных заплаточках, где тронув одно, рушится другое. Бывает, когда некоторая программа так и просит рефакторинга кода, когда очевидно, как должно быть, и вопрос только в силах и времени, чтобы привести ее к такому виду. Тут же ситуация иная. Если бы я сегодня сел за рефакторинг, то не знал бы, что делать. Не удается построить красивую структуру программы, с которой было бы приятно иметь дело.

Широкие возможности микроконтроллерной реализации позволяют сделать новые функции. Но с добавлением каждой функции приходится делать выбор, как именно ее реализовывать. Иногда выбор настолько сложный, что проще его отложить и сделать в программе опцию. Сейчас флаги опций уже занимают два байта, а вся программа заполнена бесконечными проверками условий, что делает ее крайне запутанной.

Новые функции требуют новых кнопок и новых светодиодов, которых нет. Приходится вешать по несколько функций на одну кнопку. Порой думаешь, что лучше бы этих новых функций не было вовсе. Вечное подвешенное состояние – что делать, а что нет.

В результате проект нового БУ превратился в нечто отталкивающее и неприятное. Кроме красивой платы больше ничего хорошего в нем нет. Спустя 30 лет я снова всерьез задумываюсь, какой БУ мне оставить в магнитофоне – микроконтроллерный или на жесткой логике. Как тогда, взвешиваю все «за» и «против».

1. САР натяжения. В штатном БУ устойчиво работает, в новом находится на грани устойчивости. Любое изменение (например, новые датчики) приводит к заметному ухудшению качества работы. Переходные процессы в новом БУ красивей, зато есть вечная боязнь поймать генерацию и есть дерганье боковых двигателей шумоподобным сигналом.

2. Резкое включение перемоток. Это главный минус штатного БУ. Порой приводит даже к деформации ленты. В новом БУ есть режим архивной (щадящей) перемотки, когда отношение к ленте бережное. Но получается довольно неудобно – есть два разных режима перемотки на каждой кнопке. Такой режим реализовать в старом БУ довольно сложно. А плавный старт настоящей перемотки возможен только в случае переделки блока питания магнитофона. Это потребует изменений в программе БУ. Для старого БУ такое тоже можно сделать, но только с добавлением новых схем.

3. Преднатяжение ленты. Оно появилось в новом БУ и используется для выбора петли и проверки наличия ленты. В эксплуатации это удобно, но выгладит некрасиво – при переключениях режимов есть подергивания ленты. Даже не знаю, плюс это, или минус. Порой хочется, чтобы было как в старом БУ.

4. Автостоп. Логика автостопа в новом БУ более интеллектуальная, датчик окончания ленты позволяет производить старт на ракорде, срабатывает по перепаду, есть защита от коротких повреждений рабочего слоя ленты. Задействованы датчики натяжения, что ускоряет срабатывание автостопа. Все это удобно на практике. Такое можно реализовать и в БУ на логике, но ценой дополнительных схем. Но и со штатным автостопом вполне можно жить.

5. Торможение двигателями. Оно реализовано в новом БУ. Особых преимуществ не дает и может быть легко реализовано на старом БУ простой доработкой.

6. Управление электромагнитами. В новом БУ каждый электромагнит имеет стартовый импульс и пониженный ток удержания. Который к тому же стабилизируется, в результате уменьшается поле рассеяния и уровень помех. В старом БУ ступенчатое управление есть только для электромагнита ролика. В принципе, особого улучшения это не дает.

7. Дистанционное управление. В новом БУ есть поддержка ИК ДУ. В штатном БУ оно проводное. Но с помощью дополнительной платки я добавил ИК ДУ. Конечно, количество кнопок ограничено на уровне штатных кнопок управления. Хотя в принципе можно сформировать какие-то дополнительные сигналы и управлять логикой где-то внутри. А может они и не нужны.

8. Программные режимы – Auto Reverse, Auto Play, Auto Rewind. Ничего этого в старом БУ нет, в новом – есть. Но насколько это надо? Из-за отсутствия органов управления доступ к этим режимам затруднен, а логика БУ стала более сложной и менее дружественной.
9. Поиск по счетчику. В новом БУ планировалась интеграция с электронным счетчиком – поиск нуля, поиск точки в памяти, поиск по времени. Пока это не реализовано. Для старого БУ такое невозможно. Максимум, можно сделать поиск нуля счетчика, и то без предварительного торможения, т.е. неточно.

10. Потребление. С переводом штатного БУ на КМОП-серию 74НС потребление стало ниже, чем у нового, так как тут нет переключающихся схем. Хотя и у нового оно невелико.

11. Уровень помех. У штатной платы на логике нет никаких работающих генераторов, поэтому она не генерирует помех. Микроконтроллер шумит, хотя практически в звуковом тракте магнитофона помех от него не слышно.

12. Помехоустойчивость. Есть нарекания по поводу плохой помехоустойчивости штатного БУ. Там могут самопроизвольно включаться или выключаться режимы. Этому способствует статическое электричество, которое может накапливаться на катушках с лентой. Такие сбои я несколько раз наблюдал. Но с переводом БУ на серию 74HC они, вроде, прекратились. С новым БУ случайных сбоев не наблюдал.

Как видно, радикальных преимуществ БУ на микроконтроллере не дает. Со старым БУ вполне можно жить, единственный серьезный минус – это резкое включение перемотки. Но какой-то доработкой его можно победить. Какие возможны варианты дальнейших действий?

1. Поставить предсказуемый и приятный в общении штатный БУ. Некоторые доработки в нем я уже сделал, можно будет сделать что-то еще. Но в этом случае пойдет в корзину вся работа над новым БУ, которая отняла полтора года жизни. Жалко, однако...

2. Допилить прошивку нового БУ. На данный момент этот пункт является невыполнимым. В первую очередь, в связи с тупиком в САР натяжения. Ну и со структурой программы надо что-то делать.

3. Сделать новый БУ на STM32. Чисто в теории, с САР натяжения тогда должно полегчать, ведь можно поднять частоту дискретизации до невиданных высот. Но на разработку уйдет еще как минимум год, причем результат под вопросом.

4. Сделать гибрид цифрового и аналогового БУ: процессором заменить только логику управления, а САР натяжения оставить аналоговой. Вроде, особых подводных камней не видно, жалко только готовую плату, которая пойдет в корзину.

Update: часто звучит совет взять мощный процессор, большой графический дисплей и т.д. Это имеет смысл, но только при полной переделке аппарата. Такой вариант у меня тоже продумывается, но это для другого аппарата. На этом я тренируюсь реализовывать отдельные функции. Если научусь - тогда можно браться за большую переделку.

Пока рассматривается только БУ, совместимый со штатным. Никаких других функций он нести не должен. Вопрос в том, по какому пути дальше двигаться при создании такого БУ.

Конечно, самым желательным является вариант 2, тогда не пропадет зря проделанная работа, да и ответственность есть перед людьми, которые повторили печальную плату этого варианта БУ.

Tags: electronics, reel-to-reel, Электроника-004, катушечник, магнитофон, микроконтроллер, облом
Subscribe

  • Измеритель уровня V0.1

    Сделал первую версию прошивки нового измерителя уровня для магнитофона "Электроника-004". Все еще очень-очень сырое, но уже полоски как-то…

  • Sharp GF-777

    Попал тут ко мне Sharp GF-777. Без преувеличения можно сказать, что это легенда. Обладать таким аппаратом могли лишь избранные. Стоил он когда-то…

  • JVC TD-V662

    Когда просят посмотреть кассетную деку, говорят удивительные вещи. Что не могут найти мастера, который за это бы взялся. Но ведь аналоговая…

  • Post a new comment

    Error

    default userpic
    When you submit the form an invisible reCAPTCHA check will be performed.
    You must follow the Privacy Policy and Google Terms of use.
  • 267 comments
Previous
← Ctrl ← Alt
Next
Ctrl → Alt →
Hello!
LiveJournal categorization system detected that your entry belongs to the category: Техника.
If you think that this choice was wrong please reply this comment. Your feedback will help us improve system.
Frank,
LJ Team

Anonymous

June 2 2020, 14:47:39 UTC 7 months ago

п.4 позволяет не плодить сущности сверх необходимого.
С интересом наблюдал воплощение цифрового ПИД. Как и писал тут, будет непросто.
Как раз в п. 4 есть лишняя сущность - аппаратная схема ПИД.

Anonymous

7 months ago

leoniv

7 months ago

Блок управления разумеется надо делать на 32-разрядном МК. Там возможности программирования будут существенно больше, а дискретные микросхемы уже канули в лету. ПИД-регуляторы в той же STM32 существенно интереснее да и матобработка серьезно скоростнее. Сразу и упаковывать туда все что можно - и счетчик и индикатор и коммутацию звукового тракта. Контроллеры сейчас бывают и на 200 с лишним ног. То есть все вопросы решаются сразу, а индикатор можно сделать многофункциональный на LCD. Кстати и звуковой тракт можно упаковать на ADAU1701. Короче все и сразу менять. А в результате получится хороший коммерческий продукт. И попутно школа для себя всей этой науки.
Если я пойду по предложенному Вами пути, то не закончу проект никогда. Программрование всего этого в человекогодах перекрывает оставшуюся часть моей жизни.

У меня были мысли плату БУ оставить примерно в таком же виде, но перевести на STM32. Хотя ставить такой мощный процессор для обработки сигналов в полосе 20 Гц - ну не маразм ли?

sergerz

7 months ago

leoniv

7 months ago

sergerz

7 months ago

leoniv

7 months ago

sergerz

7 months ago

leoniv

7 months ago

sergerz

7 months ago

leoniv

7 months ago

simsun

7 months ago

Anonymous

7 months ago

leoniv

7 months ago

Anonymous

7 months ago

leoniv

7 months ago

Anonymous

7 months ago

leoniv

7 months ago

Anonymous

7 months ago

leoniv

7 months ago

Anonymous

7 months ago

leoniv

7 months ago

Anonymous

7 months ago

Anonymous

7 months ago

leoniv

7 months ago

Anonymous

7 months ago

leoniv

7 months ago

Anonymous

7 months ago

leoniv

7 months ago

leoniv

7 months ago

sergerz

7 months ago

leoniv

7 months ago

sergerz

7 months ago

leoniv

7 months ago

sergerz

7 months ago

leoniv

7 months ago

Anonymous

7 months ago

leoniv

7 months ago

Anonymous

7 months ago

dimorlus

7 months ago

leoniv

7 months ago

dimorlus

7 months ago

leoniv

7 months ago

dimorlus

7 months ago

leoniv

7 months ago

dimorlus

7 months ago

leoniv

7 months ago

dimorlus

7 months ago

leoniv

7 months ago

dimorlus

7 months ago

leoniv

7 months ago

dimorlus

7 months ago

leoniv

7 months ago

dimorlus

7 months ago

leoniv

7 months ago

dimorlus

7 months ago

leoniv

7 months ago

dimorlus

7 months ago

dimorlus

7 months ago

leoniv

7 months ago

dimorlus

7 months ago

leoniv

7 months ago

dimorlus

7 months ago

Anonymous

7 months ago

leoniv

7 months ago

Anonymous

7 months ago

leoniv

7 months ago

Anonymous

7 months ago

leoniv

7 months ago

Anonymous

7 months ago

leoniv

7 months ago

dimorlus

7 months ago

leoniv

7 months ago

dimorlus

7 months ago

leoniv

7 months ago

dimorlus

7 months ago

leoniv

7 months ago

dimorlus

7 months ago

dimorlus

7 months ago

Anonymous

7 months ago

dimorlus

7 months ago

leoniv

7 months ago

Anonymous

7 months ago

leoniv

7 months ago

Anonymous

7 months ago

leoniv

7 months ago

Anonymous

7 months ago

leoniv

7 months ago

Anonymous

7 months ago

leoniv

7 months ago

Anonymous

7 months ago

dimorlus

7 months ago

leoniv

7 months ago

dimorlus

7 months ago

leoniv

7 months ago

Anonymous

7 months ago

leoniv

7 months ago

dimorlus

7 months ago

leoniv

7 months ago

dimorlus

7 months ago

leoniv

7 months ago

dimorlus

7 months ago

leoniv

7 months ago

dimorlus

7 months ago

leoniv

7 months ago

dimorlus

7 months ago

leoniv

7 months ago

dimorlus

7 months ago

leoniv

7 months ago

dimorlus

7 months ago

simsun

7 months ago

dimorlus

7 months ago

leoniv

7 months ago

dimorlus

7 months ago

leoniv

7 months ago

dimorlus

7 months ago

leoniv

7 months ago

sergerz

7 months ago

dimorlus

7 months ago

sergerz

7 months ago

dimorlus

7 months ago

sergerz

7 months ago

leoniv

7 months ago

dimorlus

7 months ago

leoniv

7 months ago

dimorlus

7 months ago

leoniv

7 months ago

dimorlus

7 months ago

leoniv

7 months ago

leoniv

7 months ago

sergerz

7 months ago

leoniv

7 months ago

sergerz

7 months ago

simsun

7 months ago

leoniv

7 months ago

simsun

7 months ago

leoniv

7 months ago

simsun

7 months ago

leoniv

7 months ago

simsun

7 months ago

leoniv

7 months ago

sergerz

7 months ago

leoniv

7 months ago

simsun

7 months ago

leoniv

7 months ago

simsun

7 months ago

leoniv

7 months ago

Мне нравится вариант 4. и ещё наверное на ПЛИС хорошо было бы :-)
На ПЛИС - это если повторять примерно штатный БУ. Но смысла особого не вижу, разве что плату можно уменьшить, но это, как оказалось - зло. Если делать вариант 4, то нужен процессор, тогда будут возможными все дополнительные плюшки, только снимется головная боль с САР натяжения. Но и тут не все так просто, аналоговым PID надо управлять в полном объеме, потребуется немаленькая схема.

masterspammer

7 months ago

leoniv

7 months ago

Hello! Your entry got to top-25 of the most popular entries of Belarus in LiveJournal! Learn more about LiveJournal Ratings in FAQ.

Anonymous

June 2 2020, 16:35:43 UTC 7 months ago

Столько куча возможностей БУ, которые никогда не понадобятся. Мне это напоминает 90 годы с телефонами с АОН.
Если нет уверенности все сделать как надо и в разумные сроки необходимо поделить Б/У на несколько самостоятельных частей. Тот же САР натяжения - можно сделать аналоговую на одном операционные! Или поставить маленький мк типа атмега8 вместе с датчиком натяжения, который только и делает что регулирует натяжение. Не надо вешать кучу функций на один большой МК. Да, иногда бывает жутко горько, что дело всей жизни пошло насмарку. Но иногда бывает легче все выбросить, чтобы не напоминало и сделать все по-другому.
С необходимым набором функций вопрос сложный. На контроллере можно реализовать что угодно, но что реально надо, будет видно только в процессе использования. Заранее сказать трудно. Я старался не сильно перегружать функциями, проблема немного в другом - не могу определиться в алгоритмах индикации и управления. У меня это больной вопрос, все конструкции получаются жутко неудобными в использовании. Когда не получалось выбрать вариант, делал опцию. Загромоздил ими всю программу.

Ожидал, что кто-то поможет в выборе необходимых функций. Например, на форуме есть много заинтересованных и желающих повторить БУ. Так если бы я всех послушал, функций было бы в несколько раз больше. Народу хочется всего и побольше. Короче, от советов стало только хуже.

САР натяжения можно сделать на одном ОУ. Но потребуется еще и управление им. Выливается в приличную схему, с аналоговым мультиплексором, схемой задания опорного уровня, ключами сброса и предустановки интегратора и т.д.

Ставить отдельный процесор - это сложнее, чем все сделать на одном. Затрудняется отладка системы и придется писать еще и межпроцессорную связь. Тут наоборот хотелось бы все иметь в одном процессоре, включая счетчик ленты. Так было бы проще всего.

Выбросить можно, если знать, как сделать лучше. А пока я в сомнениях. Не исключено, что текущий вариант БУ как раз и есть лучший, если вдруг случится прорыв в программировании ПИД.

zepete

6 months ago

Anonymous

6 months ago

zepete

6 months ago

Anonymous

5 months ago

zepete

5 months ago

Anonymous

5 months ago

zepete

5 months ago

Anonymous

5 months ago

zepete

5 months ago

Anonymous

5 months ago

Anonymous

June 2 2020, 17:22:48 UTC 7 months ago

Было в одно время модное увлечение всю периферию МК делать программно на очень быстром процессоре. Не помню уже фирму, но она выпустила было типа аналогов МК pic16 с бешеной частотой, но была совсем почти голая. Прилагалась библиотека для эмуляции периферии. Нет той фирмы, а микрочип с МК с очень богатой периферией процветает. Не надо все перекладывать на программу, если можно разумно использовать уже отглаженную работающую периферию. Если вы не фанат программирования, не стоит делать так чтобы одна большая программа управляла и зажиганием двигателя и миганием поворотников, каждый узел должен быть немного самостоятельным. Метод разделяй и властвуй. Даёшь каждому датчику свой МК! А для маленькой сети для датчиков можно использовать типа K-Line, так вроде называется медленная шина в авто.
Scenix? Не понимаю смысла разделять на несколько процессоров, если хватает производительности одного. Наоборот, склонен все объединять в один большой процессор, тогда будет работать проще всего, не надо никаких шин передачи данных, протоколов, синхронизации и прочего. А в данном случае проблема не в процессорах, а в программе. Не умею нормально написать код регулятора, будь то в общем, или в отдельном МК.

Re:

Anonymous

7 months ago

Re:

leoniv

7 months ago

dimorlus

7 months ago

Re:

Anonymous

7 months ago

Re:

leoniv

7 months ago

Re:

dimorlus

7 months ago

Aleksey Savostyanov

June 2 2020, 17:41:38 UTC 7 months ago Edited:  June 2 2020, 17:43:56 UTC

5-й вариант. Бросить всё нах, и заняться чем-то другим! Это я на самом деле так думаю!
С большим трудом нашел что-то полезное, а Вы - бросить.

Anonymous

June 2 2020, 18:46:28 UTC 7 months ago

Лично я - за п.2
И, мне кажется, проблема не столько в прошивке, сколько в новом датчике. Это ведь именно он выдаёт при инжекции больший уровень сигнала на частоте генерации, чем оригинальный? Почему - вопрос другой, но, мне кажется, дело в этом. Хотя несколько лучшую устойчивость оригинального БУ всё же приходится пока признать.
У оригинального БУ даже не "несколько лучшая" устойчивость, а "кардинально лучшая". Можно менять номиналы компонентов в несколько раз, и все работает. Новый датчик тоже нормально работает с оригинальным БУ, он не видит никакой разницы в датчиках. А для нового БУ датчик проявил его проблемы. Это хорошо, иначе проявились бы все равно рано или поздно. Причины плохой устойчивости я понять не могу. По измерениям цифровой PID не дает какого-то там страшного сдвига фаз. Надо копать дальше, но из-за длительных неудач наблюдается потеря духа. Пожалуй, временно переключусь на что-то другое.

Дальше нужно сделать творческую паузу. Отдохнуть и запостить что-нибудь из категории ЕДА.
Качество еды сейчас заметно ухудшилось, стыдно фотографировать.

salangnew

7 months ago

leoniv

7 months ago

ex0_planet

June 2 2020, 19:28:03 UTC 7 months ago Edited:  June 2 2020, 19:28:25 UTC

Я считаю, что ничего страшного не происходит. Всегда есть прототип, который потом более или менее выкидывается и делается нормальное железо/софт с учётом ошибок предыдущего. В корзину при этом идёт только железо, которое восполнимо. А опыт остаётся навсегда.

Касательно "структуры программы" и прочих абстрактных вещей — в программировании все проблемы обычно решаются введением дополнительного уровня абстракции (кроме слишком большого числа этих уровней, но до этого чаще всего далеко). Более мощные процессор нужен в том числе и для этого, чтобы все дополнительные уровни абстракции туда влезли. В данном случае по-моему будет вполне уместно взять какую-нибудь RTOS.

Если есть большое желание сохранить плату, то в качестве прямого апгрейда atmega64 можно взять atmega128 или 640/1280/1281/2561 — соответственно больше flash и вдвое больше ram. Влезет любая RTOS, гарантированно.

Советую сейчас поставить какую-нибудь минимально рабочую САР. Что у нас там хорошо работает? Апгрейженная до CMOS штатная плата? Вот её и поставить; может, несколько дней подумать насчёт сглаживания переходных режимов, но не более. Просто затем, чтобы получить хоть какое-то положительное подкрепление, а то когда сплошные неудачи это воспринимается достаточно тяжко. Все продвинутые фичи оставить на вторую итерацию — никто ж не гонит, дедлайнов никаких нет. И есть же второй экземпляр магнитофона, если не ошибаюсь? Вот сделать из него стенд, и ставить над ним опыты.

Заодно в ходе опытной эксплуатации можно будет еще что выяснить.

PS. На тех кто сделал себе плату из, фактически, незавершённого прототипа, понадеявшись на скорый финал, в общем-то плевать. Это ИХ риск, а не ваш, пусть они теперь думают что с ненужной доской делать. Я так тоже попадал, ну, приколотил плату на стенку вместо картины :-)
Вы правильно сказали, требуется именно "положительное подкрепление", а то постоянные неудачи вгоняют в тоску. Перед подходом к БУ была попытка сделать контроллер ведущего двигателя, и тоже наполовину неудачная. Отложил. Вроде, не берусь за сложные проекты. Но все равно сплошные неудачи.

Плата БУ, над которой работаю - это самодельный ЛУТ прототип. Его выбросить не жалко. Но лежит еще полностью собранная заводская плата. В самом начале года показалось, что все нормально работает. Тогда я выложил этот проект, некоторые повторили. Позже обнаружилась неустойчивость САР, которую устранил плясками с бубном вокруг коэффициентов ПИД и номиналов фильтров ШИМ. Опять показалось, что все хорошо. От пользователей поступили положительные отзывы. Но было как-то неспокойно. Новый датчик натяжения проявил шаткость САР. С горем пополам с этим жить можно, платы можно использовать. Но если придется поменять схему, дальнейшей поддержки старых плат не будет.

Процессор ATmega64 выбран с большим запасом. На сегодня занято 17.7 кб ROM и 2.5 кб RAM. Потребности в RTOS не ощущаю, самодельные процессы выполняются в рамках кооперативной многозадачности с минимальными накладными расходами. Тут проблема в другом - в реализации самой логики. Все погрязло в if. Пытаюсь обернуть фрагменты кода в более умные функции - теряется возможность специализировать код, что тоже плохо. Основную логику переключения режимов переписывал раз 5, остановился на вложенных процессах, сделанных по мотивам protothreads. Но не сказал бы, что нравится. Достаточно красиво, но совершенно не гибко. Чем бардачней код, тем он гибче, и наоборот.

ex0_planet

7 months ago

leoniv

7 months ago

Лично я за STM32. Раньше не писал, так как боялся холивара Atmega vs STM32.

Я программировал и на том и на другом. Моё мнение однозначно - у Atmega ADC считай что и нету.
Причем на STM32 (начиная с STM32F3 и выше) можно использовать float без опасений за производительность.

STM32H750VBT6 стоит 250 рублей, а это честные 400 МГц частоты и довольно быстрый (хотя и кривоватый) 16-ти битный ADC.
Программировать STM32 намного сложней и неприятней. В этом магнитофоне STM32 заложен в измерителе уровня (из-за АЦП), потихоньку им тоже занимаюсь. Очень трудно себя заставить ворошить эти тонны документации, к проекту не хочется подходить из-за процессора. Ничего общего у такого программирования с получением фана нет. Поэтому стараюсь такого избегать и где только возможно ставлю AVR.

Второй момент - нет гарантии, что проблемы в САР натяжения из-за скорости процессора или из-за плохого АЦП. Чисто в теории все должно работать и на AVR. Хотя уже почти уговорили попробовать сделать макет САР натяжения на STM32F100.

balmerdx

7 months ago

leoniv

7 months ago

dimorlus

7 months ago

Anonymous

7 months ago

balmerdx

7 months ago

Anonymous

7 months ago

balmerdx

7 months ago

Anonymous

7 months ago

balmerdx

7 months ago

не надо ничего много добавлять. оставить старый функционал и не морочиться с блоком управления.
ну чуть подправить некоторые части.

а то "усовершенствованный" магнитофон превратится в современную балалайку.
До современной балалайки очень далеко. Дополнительный функционал не выходит за рамки того, что было в фирменных магнитофонах 80-х.

Anonymous

June 2 2020, 21:29:39 UTC 7 months ago

Почему Вы закрываете для меня в который раз мою ветку комментариев? Если я тут мешаю, так скажите прямо и я больше не буду никогда тут писать.

А теперь по делу, "но качество регулирования натяжения ленты не требуется какое-то рекордное"...

Речь не о рекордах, а о том, что в данном случае ПИД-ом поддерживается мгновенная величина, если бы нужно было поддерживать среднюю величину, было бы все прощще. Мешают артефакты цифрового ПИД, использование которого в данном месте я считаю инженерной ошибкой.

А что такое "закрываете ветку комментариев"? Это как? Я ничего не делаю.

Любая САР имеет ограниченное быстродействие и подавляет возмущения только в какой-то полосе частот. Тут сама механика является фильтром, выше 20 Гц практически ничего нет. Цифровой регулятор работает с частотой дискретизации 250 Гц, есть основания полагать, что в полосе до 20 Гц он справится. Не вижу инженерной ошибки в выборе типа регулятора, ошибка скорее в его конкретной реализации.

Anonymous

7 months ago

leoniv

7 months ago

Anonymous

7 months ago

Anonymous

7 months ago

leoniv

7 months ago

Anonymous

7 months ago

leoniv

7 months ago

Anonymous

7 months ago

Anonymous

7 months ago

Anonymous

7 months ago

leoniv

7 months ago

Когда в блоке есть несколько слабозависимых рилтаймовых функций, удобнее всего сделать так, как делали в студийной и промышленной технике: каждая функция - свой блок. Сделать блок управления в виде кросс-платы с контроллером, который занимается исключительно логикой управления, а на ней несколько мезонинов со своими микроконтроллерами, реализующими какую-то функцию, никак не пересекающуюся с кодом других блоков. Не понравился вариант управления - поменял мезонин и всё, не надо заново проектировать весь БУ. :)
Есть такой вариант, но тут это слишком.
Previous
← Ctrl ← Alt
Next
Ctrl → Alt →

  • Измеритель уровня V0.1

    Сделал первую версию прошивки нового измерителя уровня для магнитофона "Электроника-004". Все еще очень-очень сырое, но уже полоски как-то…

  • Sharp GF-777

    Попал тут ко мне Sharp GF-777. Без преувеличения можно сказать, что это легенда. Обладать таким аппаратом могли лишь избранные. Стоил он когда-то…

  • JVC TD-V662

    Когда просят посмотреть кассетную деку, говорят удивительные вещи. Что не могут найти мастера, который за это бы взялся. Но ведь аналоговая…