Самые обсуждаемые темы (topbloger) wrote,
Самые обсуждаемые темы
topbloger

Categories:

Ожидание нехорошего Делом всей жизни для меня в данный момент является



Делом всей жизни для меня в данный момент является катушечный магнитофон. Но это дело трещит по швам. Недавно я получил по почте красивую плату для блока управления (БУ) и собрал ее. Сейчас БУ имеет очень красивое тело, а вот душа (прошивка) остается темной и злобной. И никакие усилия пока не привели к улучшению ситуации. Речь идет о плохой работе системы автоматического регулирования (САР) натяжения ленты, которая реализована на основе PID-регуляторов.



Проблемы две. Первая проблема не сильно сказывается на результате и на нее можно закрыть глаза. Связана она с шумом дифференцирования. Для получения хоть какой-то устойчивости, значение коэффициента Kd должно быть довольно большим. Это значит, что регулятор будет усиливать разного рода шум, в том числе, шум квантования АЦП. Разрядность встроенного АЦП у AVR низкая, всего 10 бит. В результате один квант АЦП дает на выходе регулятора заметный выброс. Эти выбросы хорошо видны на графиках выходного кода PID:



Этот код поступает на ШИМ, затем фильтруется аналоговым фильтром. На выходе фильтра наблюдает выбросы в немного «размазанном» виде:


Этот сигнал идет на двигатели. Они, конечно, имеют значительную инерцию и сглаживают колебания, но все же, это нехорошо.

Пробовал добавлять IIR-фильтр в канал D регулятора. Любая фильтрация ведет к ухудшению устойчивости.

Второй вариант – увеличить коэффициент оверсемплинга для АЦП. Период дискретизации регулятора у меня 4 мс, а АЦП запускался по тикам системного таймера 1 мс. Теперь сделал период выборок АЦП 100 мкс и задействовал прерывание от АЦП. Процессор при этом загружен гораздо сильнее, но еще справляется. Эффективная разрядность АЦП увеличилась, выбросы размылись:



На выходе аналогового фильтра ШИМ тоже стало чище:


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



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

Но как-то ставлю очередную катушку размером поменьше, и вижу мелкую, еле заметную дрожь натяжителя на частоте примерно 10 Гц. Естественно, это сразу отразилось на детонации, повысив ее в несколько раз. Придержал натяжитель рукой – дрожь пропала и больше не появлялась. Потом она снова появилась при каких-то условиях. Когда вношу возмущение – дергаю рукой натяжитель, реакция PID очень красивая, без каких-либо колебаний, все гладко возвращается в норму. Но иногда на пустом месте возникает эта дрожь, которая всегда имеет маленькую амплитуду, на грани заметности, в чем ее особенное коварство. Это генерация какого-то другого рода по сравнению с потерей устойчивости PID в классическом понимании.

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

В итоге наблюдаю горький катаклизм – новенький БУ, сверкающий синей маской печатной платы и переливающийся на солнце веселыми искорками своих паек, выполняет функции гораздо хуже, чем старая пыльная плата, собранная на К155 и КТ315 из прошлого века. Верить в это так просто не хотелось, поэтому решил еще раз подключить плату с аналоговым регулятором и внимательно ее изучить. Для начала внес в схему изменения, чтобы получить полноценный аналоговый PID-регулятор, как в магнитофоне «Олимп-700».



Для этого пришлось добавить всего 2 конденсатора и поменять номинал одного резистора.



С PID-регулятором аналоговая плата работает еще лучше, демонстрируя нулевую статическую погрешность натяжения. Рычаги натяжителей больше не поднимаются к концу катушки, как было в штатной схеме «Электроника-004» с P-регулятором, или с PD-регулятором, как в схеме «Олимп-004». Аналоговая схема работает хорошо, полностью выполняя свои функции. Я пытался найти в ней изъяны, ведь было немного обидно за потраченные уже почти полтора года на разработку новой платы БУ. Под микроскопом некоторые изъяны найти удалось – при переходе из режима в режим в некоторых ситуациях у аналогового регулятора выбросы были больше, чем у цифрового. В то же время не было даже и намека на паразитную генерацию. И только когда в аналоговом регуляторе я полностью отключил D-звено, получил незатухающие колебания большой амплитуды частотой 1..2 Гц. Мелкую дрожь получить не удалось ни при каких обстоятельствах.

Наличие D-звена сильно увеличивает усиление на высоких частотах, поэтому на выходе аналогового регулятора тоже хватает всякого мусора, что явилось некоторым утешением. Но в нем нет источника шума дискретизации, поэтому в целом помех меньше.

Смоделировал реакцию звеньев аналогового регулятора на входной скачок амплитудой 10 мВ:



Из этих графиков можно извлечь коэффициенты. Их можно перевести в коэффициенты для цифрового регулятора, для чего надо учесть масштаб и период дискретизации. Получил значения 40, 100, 160. Если я задаю такие значения для цифрового регулятора, то получаю незатухающие колебания большой амплитуды.

Основное различие между аналоговым и цифровым регуляторами кроется в полосе пропускания – у аналогового регулятора она значительно шире. Полоса определяется D-звеном и сверху ничем не ограничена.



Желание повторить успешную работу аналогового регулятора первым делом подталкивает к точному повторению регулятора в цифровой форме. Но повторение полосы, которая простирается до десятков килогерц, будет глупостью, так как объект управления – это механическая система, которая обладает высокой инерционностью. В цифровой реализации ограничение полосы происходит в основном за счет фильтра ШИМ. Микроконтроллер не имеет встроенных ЦАП, поэтому приходится использовать ШИМ, разрядность которого урезал до 14 бит, чтобы увеличить частоту до примерно 1 кГц. Выбор частоты среза фильтра делал из соображений инерционности механики, частота собственных колебаний которой лежат в диапазоне единиц герц. Остановился на частоте среза 30 Гц. Пульсации ШИМ при этом подавляются очень хорошо, этим даже можно пожертвовать.

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

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

Раз увеличение частоты среза хоть немного помогло, логично двигаться в этом направлении дальше. Нельзя, потому что утратится эффективность фильтрации ШИМ? Ерунда! Отбросив все нормы приличия, резко и на глазок поменял номиналы в фильтре, увеличив полосу пропускания раз в 10. Проверяю. Конечно, на двигатели полезли остатки недодавленного ШИМ, но двигателям это особо не вредит, с их инерцией они этого не чувствуют. Единственное, может появится «писк» или повышенное излучение помех. Но и этого я не заметил. В то же время с устойчивостью стало заметно лучше. Коэффициенты PID теперь можно менять в два раза в более широких пределах без получения генерации. Можно регулятор сделать более «тугим», качество его работы становится еще лучше. Проверил те ситуации, в которых ранее появлялась мелкая дрожь – теперь ее нет. Раз так, решение надо закрепить.

Оставлять фильтр, сделанный наобум, конечно, не следует. Раньше я считал, что частота среза может быть маленькой, от которой частота ШИМ далеко, поэтому резкого спада АЧХ фильтра не требовалось. В PSpice подбором компонентов я получил очень низкий выброс, но ценой широкой переходной зоны. Хотя дальше крутизна спада составляла 60 дБ/дек, что нормально для фильтра 3-го порядка. Когда делать нечего, можно посражаться за внутреннюю красоту схемы, наделяя ее отдельные части полезными качествами, которые никогда не будут использованы.

Обычно фильтры 3-го порядка содержат звено 1-го порядка, затем буферный ОУ, затем звено 2-го порядка. Иметь на входе пассивное RC-звено для такого фильтра принципиально важно, так как на вход поступает очень широкополосный сигнал ШИМ, ВЧ-компоненты которого могут перегрузить входной каскад ОУ, выведя его из линейного режима работы и сделав фильтр полностью неработоспособным. А вот буферный ОУ после первого звена можно исключить. При этом усложняется расчет фильтра, такой расчет я видел только для фильтров Бесселя и Баттерворта.

Раз пришлось серьезно взяться за фильтр, надо выжать из него все. Естественно, без изменения печатной платы, только за счет номиналов. А так есть даже звенья 4-го порядка на одном ОУ, но их схема отличается от разведенной. Самым вероятным кандидатом тут является фильтр Чебышева. Вроде, с такой схемотехникой ничего лучше нет. Неравномерность АЧХ в зоне пропускания особой роли не играет, за счет этой неравномерности можно выиграть в подавлении на частоте ШИМ при максимально широкой полосе пропускания. Необходимое подавление выбрал из соображений красивого внешнего вида сигнала после фильтра. Любой ткнувший туда осциллографом не должен морщить лоб и цедить сквозь зубы: «Ну и гадость!» Иначе можно нанести репутации проекта урон, соизмеримый с заметным ухудшением его объективных характеристик. Для красивой картинки достаточно подавления 50 дБ. Фильтр Чебышева с неравномерностью 1 дБ дает такое подавление на частоте 1 кГц при частоте среза 200 Гц. Параметры фильтра были выбраны.

Но беда в том, что известные мне программы расчета активных фильтров умеют их считать только для конфигурации с буфером после первого звена. Есть, конечно, метод «в лоб»: выбираем импеданс для первого звена намного ниже, чем входной импеданс последующего, отсутствие буфера тогда скажется в минимальной степени. Но все же хотелось полноценного расчета, для чего попросил помощи у коллективного разума. Как обычно, за коллективным разумом прячется отдельный человек, мне он дал полезную ссылку, за что большое спасибо.



Онлайн калькулятор позволяет рассчитывать фильтры Чебышева 3-го порядка без буферного ОУ и задавать для них неравномерность в полосе пропускания. В итоге схема фильтра стала такой:



Его АЧХ:



Проверка БУ с таким фильтром показала хорошую устойчивость, при этом сигнал ШИМ достаточно хорошо фильтруется и не мозолит глаз на осциллографе. И уж точно столь малые остатки ШИМ не помешают двигателям. Еще раз «шлифанул» коэффициенты PID, работа регуляторов стала еще лучше, уменьшились выбросы. На скриншотах ниже записан процесс старт-стопа для разного размера катушек и разного количества ленты. Верхний – для катушек №18, нижний – для катушек №27. Верхний график – подающая сторона, нижний график – принимающая. Верхний график поднят на 25 единиц, чтобы графики не сливались.





Самый большой выброс натяжения получается при старте в конце катушки. Тогда резко начавшая движение лента должна разогнать подающую катушку вместе с двигателем, момент инерции ротора которого весьма велик. Тут нельзя ничего сделать системой управления – чем меньше диаметр сердечника у катушки, тем сильнее рывок. Но величина этого выброса натяжения совсем не опасная, при номинальном натяжении ленты 70 гс в пике ее натяжение составляет 85 гс. Это намного меньше, чем бывает в режиме перемотки и меньше, чем дает аналоговый БУ.

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



Картина, выполненная в мрачных тонах, под названием «Ожидание нехорошего».

Давно заметил, что у систем бывают два ярко выраженных состояния: когда система работает, и когда система не работает. Оба эти состояния чрезвычайно устойчивы. Можно делать что угодно (в разумных пределах, конечно), но если система работает, то она будет продолжать работать. Точно так же и с нерабочей системой. Все попытки вдохнуть в нее жизнь обычно ни к чему не приводят. Все должно сразу рождаться правильным. В будущем усилия обычно ни к чему хорошему не приводят.

Что еще можно сделать? Начинаю склоняться к мысли, что мог бы помочь переход на STM32. У него быстрый и точный АЦП, что поможет решить проблему выбросов при дифференцировании. У него также есть аппаратные ЦАП, что дало бы возможность вообще отказаться от фильтров ШИМ и сильно расширить полосу регулятора. Но поможет ли это на самом деле – еще вопрос. Перевести проект на STM32 требует немалых усилий. С моими скудными знаниями STM32 это потребует еще где-то полгода работы. И плату придется разводить заново, снова ее заказывать. Второй вариант – реализовать на плате аналоговый регулятор, которым процессор будет лишь управлять, задавая ему через ЦАП опорные величины. К слову, именно так сделано в старших моделях магнитофонов фирмы Studer. Но эта аналоговая добавка получается весьма сложной, кроме собственно регулятора понадобится коммутатор входных сигналов и схема предустановки/сброса регулятора, которая нужна для красивой реализации переходных режимов. В таком варианте теряется гибкость, присущая программной реализации. И как-то это не молодежно, хоть и заведомо работоспособно.



источник - leoniv 
[1 ссылок 63 комментариев 2000 посещений]
читать полный текст со всеми комментариями
Tags: leoniv
Subscribe
promo topbloger november 1, 2020 19:44 233
Buy for 50 tokens
Привет! В моем блоге автоматически топботом собираются все самые интересные темы блогосферы. Более полно посмотреть все интересные посты блогосферы вы можете на сайте t30p.ru. Узнать какие из ваших постов попадали в ТОП 30 можно на сайте topbloger.ru. Подписаться на чтение самых…
  • Post a new comment

    Error

    Anonymous comments are disabled in this journal

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

  • 0 comments