Двигатель с коммутацией фаз по датчикам положения ротора называют двигателем с автокоммутацией. Он ведет себя подобно коллекторному двигателю. Если подать на него постоянное напряжение питания, он начинает крутиться, постепенно разгоняясь. По мере увеличения частоты вращения растет обратная ЭДС (BEMF), в результате потребляемый ток и развиваемый крутящий момент падает. Как только этот момент сравняется с моментом потерь (трение плюс нагрузка), дальнейший разгон двигателя прекращается. Двигатель будет вращаться с некой постоянной скоростью, величина которой в общем случае неизвестна и зависит от напряжения питания и нагрузки. Нам же надо обеспечить заданную скорость вращения, для чего двигателем надо управлять. Рычагов управления тут немного, а вернее, всего один - это напряжение питания.
Применение двигателя в качестве привода тонвала магнитофона определяет некоторые особенности. Чаще всего важнейшим параметром электропривода является его КПД. Здесь же КПД стоит на одном из последних мест. Главное требование - обеспечить высокую стабильность скорости, как долговременную, так и кратковременную. Это требование вытекает из необходимости обеспечить постоянную скорость транспортирования ленты и низкий коэффициент детонации. Величина коэффициента детонации для ЛПМ магнитофона «Электроника-004» не превышает 0.04% RMS. Ниже приведен результат измерения детонации на своем экземпляре магнитофона.
Основной вклад в детонацию вносит ведущий двигатель. Спектры детонации магнитофона в целом (сигнал воспроизводился с ленты) и детонации ведущего двигателя ДБ-95 (сигнал снимался с датчика скорости) приведены в книге Ю. Б. Соколов, В. И. Котов «
Магнитофоны-приставки высшего класса Электроника ТА1-003, 004». Сняты они при скорости ленты 19.05 см/с. Для этой скорости частота вращения ведущего вала примерно равна 7.75 Гц (вторая гармоника - 15.5 Гц), частота коммутации каждой фазы 31 Гц, всех трех фаз - 93 Гц.
Видно, что основной вклад в детонацию вносит ведущий двигатель, основные пики лежат на частоте вращения ведущего вала и второй гармонике этой частоты. На частоте коммутации фаз двигателя тоже видны небольшие пики, это для «мягкой» коммутации фаз штатной платой. Если сделать коммутацию «жесткой», эти составляющие могут заметно увеличиться. Поэтому в ущерб КПД ключи здесь работают с заходом в линейный режим. Косвенно о качестве коммутации можно судить по шуму и вибрации двигателя. Именно по этим критериям я оптимизировал схему ключей.
В процессе экспериментов с коммутацией фаз было выяснено, что наилучшие результаты получаются при питании двигателя источником тока. Хотя первоначально я планировал сделать регулируемый источник напряжения. Эта схема была забракована, но она может представлять интерес для других применений, поэтому приведу ее здесь.
За основу регулируемого источника напряжения я взял интегральный регулируемый стабилизатор LM317. Он хорош тем, что имеет встроенную защиту по току и перегреву. Это здесь будет весьма кстати. Чтобы управлять выходным напряжением, надо менять потенциал вывода ADJ. Выходное напряжение всегда будет на 1.25 В больше. Это один из недостатков схемы, так как ниже 1.25 В установить на выходе нельзя. Но в данном случае это не имеет значения - такое маленькое напряжение недостаточно для работы двигателя, а полное его выключение может быть сделано закрыванием сразу всех ключей.
В блоке управления двигателем планируется применить один сдвоенный ОУ типа LM358. Одна половинка будет задействована для формирования сигнала датчика скорости. Питание ОУ от источника 5 В позволяет напрямую подключать его выход к входу микроконтроллера. Другую половинку ОУ можно использовать для управляемого источника напряжения. Минимальное падение напряжения на стабилизаторе LM317 в зависимости от тока составляет от 1.5 до 2.25 В, поэтому при питании 24 В на выходе можно получить примерно до 22 В. Это значит, что на выводе ADJ надо иметь возможность устанавливать напряжение от 0 до примерно 21 В. Выход ОУ не может обеспечить такой размах, придется добавить усилитель на транзисторе.
На вход ОУ будет поступать напряжение с выхода ШИМ микроконтроллера. Фильтрацию этого напряжения пока оставим. Диапазон напряжения на выходе микроконтроллера - от 0 до 5 В. Но принять такой диапазон ОУ не в состоянии, так как LM358 не является rail-to-rail ОУ. Поэтому напряжение надо поделить. Для простоты можно поделить в 2 раза, диапазон от 0 до 2.5 В этот ОУ обеспечивает как по входу, так и по выходу (по выходу не точно от 0 В, но тут этого и не надо). Чтобы из 2.5 В сделать 21 В, понадобится усиление 8.4. Лучше сделать больше, чтобы из-за разброса резисторов не получить потерю диапазона выходного напряжения. Поэтому усиление можно выбрать примерно 9.
Я не знаю, как правильно проектировать электронные схемы. Этому меня нигде не учили. Поэтому действую всегда интуитивно. В симуляторе потыкал так и эдак разные транзисторы и через несколько минут пришел к вполне работоспособному решению.
Лучше всего подошел полевой транзистор 2N7000, который здесь охвачен цепочкой местной ООС, а все вместе с ОУ охвачено общей ООС, задающей усиление примерно 9. Проверка переходной, частотной и фазовой характеристики показала достаточный запас устойчивости. Обратную связь намеренно брал с вывода ADJ, а не с выхода. Сама LM317 не будет находиться внутри петли обратной связи и не будет влиять на устойчивость. В общем случае точность для такого варианта будет хуже, так как добавляется влияние погрешностей LM317. Но с выбранным ОУ (LM358) трудно что-то ухудшить.
Напряжения для разных точек схемы в процессе регулировки показаны ниже:
Следующий вопрос, который надо решить, это фильтрация сигнала ШИМ. Распределяя ресурсы микроконтроллера ATmega88, я забрал единственный 16-разрядный таймер для формирования опорной частоты. Опорную частоту можно формировать двумя способами: или счетчиком-делителем, или с помощью NCO (Numerically Controlled Oscillator). В первом случае имеем постоянный шаг по периоду, вот втором - по частоте. Но в составе периферии микроконтроллера нет оборудования, на котором можно было бы аппаратно реализовать NCO. А программная реализация сильно тратит ресурсы. Если ничего больше контроллер не делает, это вполне возможно, так я делал для генератора опорной частоты для штатной платы управления двигателем ДБ-95. Добавление маленькой
платки реализует кварцевую стабилизацию частоты вращения ведущего вала. Программа там написана на ассемблере, процессор почти на 100% загружен. Это позволило реализовать NCO с тактовой частотой 0.5 МГц, что дает джиттер не более 2 мкс. Но когда процессор должен еще выполнять и другие задачи, такая высокая тактовая частота не получится, джиттер станет недопустимо большим. Опорная частота здесь нужна довольно высокая (для скорости 19.05 см/с это 1348 Гц), поэтому я выбрал ее генерацию с помощью таймера. В других случаях мог бы быть предпочтителен NCO, например, для винилового проигрывателя, где опорная частота требуется гораздо ниже. 16-разрядный таймер при тактовой частоте 16 МГц позволяет установить 1348 Гц с точностью лучше 0.01%, что вполне достаточно.
Раз единственный 16-разрядный таймер занят, с управлением напряжением питания двигателя надо как-то выкручиваться. Есть несколько 8-разрядных таймеров с ШИМ, но их дискретность слишком велика для качественного управления двигателем. Поэтому было принято решение сделать комбинированный выход: 8-разрядный аппаратный ШИМ дополнить 8-разрядным программным дельта-сигма модулятором (DSM). У такого сигнала основная энергия будет лежать на частоте ШИМ (62.5 кГц) и ее гармониках. Наиболее низкочастотные составляющие суммарного сигнала будут определяться тем, сколько разрядов DSM будет использоваться. Полагаю, можно ограничиться общей разрядностью 14 бит, при этом минимальная частота составит примерно 1 кГц. На этой частоте будет сосредоточена очень незначительная энергия в спектре выходного сигнала, порядка -46 дБ.
Реализован DSM в прерывании таймера, которое возникает с частотой 62.5 кГц. Код в меру сил оптимизирован, но все равно DSM отъедает примерно 15% ресурсов процессора. В общем, это не очень страшно.
//--------------------------- Прерывание таймера: ----------------------------
uint8_t TPwm::Pwm_Lo;
uint8_t TPwm::Pwm_iHi;
uint8_t TPwm::Pwm_iHi_plus_1;
#pragma vector = TIMER2_OVF_vect
__interrupt void SigmaDelta(void)
{
static uint8_t Sigma = 0;
Sigma = Sigma + TPwm::Pwm_Lo;
OCR2A = (SREG & 1)? TPwm::Pwm_iHi_plus_1 : TPwm::Pwm_iHi;
}
//------------------------------ Задание PWM: --------------------------------
void TPwm::Set(uint16_t v)
{
if(v > PWM_MAX) v = PWM_MAX;
Pwm_Lo = LO(v);
Pwm_iHi = ~HI(v);
Pwm_iHi_plus_1 = ~(HI(v) + 1);
}
Исходя из параметров ШИМ-сигнала можно сформулировать требования к фильтру. Здесь они не очень жесткие, на частоте 62.5 кГц желательно получить ослабление 50 - 60 дБ, на частоте 1 кГц достаточно 10 - 15 дБ.
Но не только параметрами ШИМ могут определяться параметры фильтра. Все это будет работать внутри петли цифровой PLL (DPLL), где будет свой цифровой петлевой фильтр. Прежде, чем его проектировать, полезно взглянуть на аналоги. Здесь по-прежнему есть два примера - японская и советская плата управления двигателем.
На японской плате применен простейший регулятор скорости: сформированные импульсы таходатчика дифференцируются, затем формируется сигнал с близкой к пилообразной формой. С помощью компаратора он сравнивается с постоянным напряжением, с помощью которого задается желаемая скорость. На выходе компаратора получается ЧИМ-сигнал (частотно-импульсная модуляция). Этот сигнал поступает на петлевой фильтр, который выделяет постоянную составляющую. Она используется для управления регулирующим транзистором. Приведенная выше схема взята из книжки Соколова и Котова, ссылка на которую была выше. Схема содержит ошибки, мешающие сделать ее симуляцию.
Эта же схема приведена в инструкции по ремонту магнитофона «Электроника-004». Но тут внесены другие ошибки.
По поводу инструкции по ремонту хочется сказать отдельно. Это страшного вида «синька», изначально отпечатанная на печатающей машинке и содержащая множество рукописных исправлений. Все схемы небрежно нарисованы от руки, а фотографии вклеены. После мысленного сравнения этого «шедевра» с аккуратными сервис-мануалами на аппараты западных производителей становится грустно - какой же здесь размах бескультурья!
Пришлось искать первоисточник - схему фирмы Shinano Tokki. Это оказалось не очень простой задачей, в схемах магнитофонов Otari, где применялись похожие двигатели, плата управления помечена как некий черный ящик. Схему все-таки удалось найти, только в виде не очень хорошего скана. Но на ней ошибок не было.
На всякий случай я сверился с фотографией японской печатной платы, все совпадает. Ну а дальше дело техники. Нарисовал и промоделировал схему.
Надо сказать, что на сей раз меня ввела в ступор и японская схемотехника. На входе видим пассивное звено ФНЧ 1-го порядка. За ним что-то похожее на активное звено 2-го порядка на эмиттерном повторителе. Если бы не зашунтированный выход эмиттерного повторителя емкостью 33 мкФ. Следующий каскад совсем мутный, сигнал снимается с коллектора предыдущего транзистора, но есть какая-то обратная связь и на эмиттер. Глядя на схему, не берусь предсказать ее АЧХ. Поручим лучше это симулятору.
На графике видим весьма странную картину - заметный подъем на частоте примерно 93 Гц. Это как раз суммарная частота коммутации трех фаз при скорости ленты 19.05 см/с. Для чего это сделано? Чтобы увеличить усиление в петле на этой частоте и подавить пульсации? По крайней мере, можно придумать какое-то логичное объяснение.
Но мне пока интересно не это. Надо знать, насколько широкую полосу я должен иметь в канале управления двигателем. Вот тот же график в логарифмическом масштабе, на нем лучше видны затухания на разных частотах:
После пика АЧХ быстро спадает, примерно 70 дБ на декаду. На частоте 1 кГц ослабление составляет более 50 дБ, т.е. мой фильтр ШИМ полосу не ограничит.
Схему петлевого фильтра с советской платы я тоже промоделировал. Схема опять довольно мутная, с какими-то T-цепями вокруг ОУ.
Моделирование дало вот такой результат:
Виден гигантский пик на частоте примерно 64 Гц. Чем примечательна именно эта частота - я не знаю. Никаких сигналов такой частоты в схеме управления двигателем нет, в спектре детонации двигателя на этой частоте тоже никаких пиков нет. Поиск смысла этого решения, как мне кажется, это просто поиск черной кошки в темной комнате. В реальной плате, которая у меня есть, емкость конденсатора C2 (см. схему выше) запаяна 3.9 нФ. С ней я и моделировал. На схеме, которая содержится в альбоме схем магнитофона «Электроника-004», эта емкость указана как 47 нФ. Это кардинально меняет ситуацию, пик размазывается и сдвигается на частоту около 17 Гц. На более раннем варианте схемы из альбома эта емкость была 10 нФ, что даст пик на 40 Гц. Такое ощущение, что эту емкость подбирали уже в процессе эксплуатации. По отзывам ранние платы имели неустойчивость. Смешнее всего, что этот конденсатор, который при подборе меняют на порядок, окружен точными резисторами типа 178 Ком, 332 Ком и так далее. Такое впечатление, что при создании схемы правая рука не знала, что делает левая.
Если посмотреть на график АЧХ в логарифмическом масштабе, то видно ослабление 26 дБ на частоте 1 кГц. АЧХ тут спадает не так быстро, но все равно полоса не такая широкая.
Теперь можно вернуться в начало, к регулируемому источнику напряжения. Он должен управляться ШИМ-сигналом, который надо предварительно отфильтровать. Проще всего сделать отдельный фильтр, но для этого понадобится еще один ОУ. А можно в фильтре использовать тот же ОУ, который работает в источнике. Обычно фильтр со структурой Salen-Key использует в своем составе повторитель. Но теоретически такой фильтр может иметь усиление, вот только не все программные пакеты позволяют его рассчитать. Одной из программ расчета, которая это может, является FilterPro фирмы Texas Instruments. Там можно ввести нужное усиление.
В моем случае усиление выбрано из соображений нужного размаха выходного сигнала, с реальными номиналами резисторов оно составляет 9.2. Такое значение ввел в программе. Выбрал фильтр Чебышева 3-го порядка. При фильтрации ШИМ важно иметь первое пассивное звено. К сожалению, эта программа не умеет рассчитывать фильтры 3-го порядка без буфера после первого звена. Поэтому я сначала посчитал с буфером, затем перенес схему в симулятор, выбросил буфер и скорректировал номиналы для восстановления прежней АЧХ. Чтобы отсутствие буфера влияло меньше, импеданс компонентов в первом звене надо выбирать возможно ниже. В результате появилась схема, которой не суждено пойти дальше - источник напряжения был забракован на этапе экспериментов с ключами. Возможно, такая схема может пригодиться где-то еще.
На каком-то этапе лучшие результаты показали «верхние» ключи с питанием двигателя от генератора тока. Под это дело я начал проектировать регулируемый источник тока, привязанный к земле. В качестве регулирующего элемента взял транзистор Дарлингтона, в эмиттер которого включил датчик тока 0.47 Ом.
Поигравшись с компонентами, добился устойчивости схемы. Глянул АЧХ - она оказалась не очень, был виден заметный подъем. Но мне это что-то напомнило. Так обычно выглядит АЧХ одного из звеньев многозвенного ФНЧ с большой крутизной среза.
Без всякого расчета добавил на вход пассивное звено, пристрелился частотой среза, в результате получилось что-то типа Чебышева 2-го порядка с частотой среза 330 Гц и пульсациями около 0.3 дБ.
Работая в симуляторе постоянно замечаю за собой, что номиналы компонентов беру исключительно из стандартного ряда. Рука не поднимается написать 25 кОм, пишу 22 или 27. Кроме редких случаев. Чаще даже не из ряда Е24 беру, а из Е12 или Е6. Поглядываю на другие узлы схемы, чтобы внутри платы было как можно меньше разных номиналов. А лучше и в аппарате в целом. Еще лучше иметь поменьше номиналов во всех своих проектах. Выработать личный ограничительный список компонентов и использовать только их. Лишь в случае крайней необходимости выходя за рамки.
В логарифмическом масштабе видно, что на частоте 1 кГц ослабление примерно 30 дБ, а на 62.5 кГц - более 100 дБ. Спад примерно 42 дБ на декаду. В принципе, можно даже фильтр перестроить немного вверх, такие ослабления здесь не нужны.
Но и этот источник был забракован, так как самая последняя схема ключей содержит «нижние» ключи. Т.е. регулируемый источник тока должен быть привязан к питанию +24 В. Над его реализацией пока думаю. Вообще, его можно сделать лишь бы как, он все равно будет внутри петли регулирования. Точность и стабильность не играют особой роли, лишь бы линейность не была уж совсем чудовищной.