leoniv (leoniv) wrote,
leoniv
leoniv

Category:

ДБ-95 – ключи



Прошлый раз было сражение с датчиками положения ротора. В конце долгого пути я вернулся к схеме с японской платы и собрал ее на макете. Схема прекрасно работает, при вращении двигателя формирует красивые прямоугольники. Дальше по этим сигналам надо коммутировать обмотки двигателя. Что может быть проще? Взять 4 транзисторных ключа – и всё. Но те тут-то было.



Напрямую сигналы датчиков положения ротора подавать на ключи нельзя, надо сначала их дешифрировать. Сигналы с датчиков положения перекрываются во времени, а надо получить следующие друг за другом три импульса, каждый из которых занимает 120° угла поворота ротора. Угол имеется в виду электрический, а механический в 4 раза меньше. Так как двигатель имеет 4 пары полюсов для каждой фазы, за один оборот на выходах датчиков положения формируются 4 полных периода сигнала.

В японской схеме применяется простой и понятный дешифратор на логике:



Элементы «исключающее ИЛИ» на входе служит для инвертирования всех сигналов датчиков положения для реверсирования двигателя.



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

В советской схеме опять видны следы экономии. На входе те же элементы «исключающее ИЛИ», а дальше идет схема, похожая на многофазный триггер.



На самом деле это обычная комбинаторика, только более запутанная.



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

В моем случае дешифрированием сигналов датчика положения занимается микроконтроллер. Весьма кстати пришлось прерывание по изменению состояния пинов, которого нет в ATmega8, но есть в ATmega88. Оно возникает по любому изменению сигналов датчиков положения.

//------------------ Прерывание датчика положения ротора: --------------------

#pragma vector = PCINT1_vect
__interrupt void ChangePhase(void)
{
  TMotor::SwitchPhases();
}


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

//----------- Включение фазы двигателя по датчику положения ротора: ----------

#pragma inline=forced
inline void TMotor::SwitchPhases(void)
{
  uint8_t p = 0;
  if(Pin_PosA) p |= PH_A;
  if(Pin_PosB) p |= PH_B;
  if(Pin_PosC) p |= PH_C;
  if(Dir == DIR_FWD)
  {
    if((p & PH_AB) == PH_A) PhaseA();
      else if((p & PH_BC) == PH_B) PhaseB();
        else if((p & PH_CA) == PH_C) PhaseC();
  }
  else if(Dir == DIR_REV)
  {
    if((p & PH_AB) == PH_B) PhaseA();
      else if((p & PH_BC) == PH_C) PhaseB();
        else if((p & PH_CA) == PH_A) PhaseC();
  }
  else PhaseNone();
}


//----------------------- Функции управления фазами: -------------------------

inline void TMotor::PhaseA(void)
{
  Pin_PhB = 0; Pin_PhC = 0; Pin_PhA = 1;
}

inline void TMotor::PhaseB(void)
{
  Pin_PhA = 0; Pin_PhC = 0; Pin_PhB = 1;
}

inline void TMotor::PhaseC(void)
{
  Pin_PhA = 0; Pin_PhB = 0; Pin_PhC = 1;
}

inline void TMotor::PhaseNone(void)
{
  Pin_PhA = 0; Pin_PhB = 0; Pin_PhC = 0;
}


По простоте душевной я хотел сделать ключи на MOSFET-транзисторах. Сопротивление обмоток двигателя составляет 12 Ом, что при напряжении питания 24 В даст ток одной фазы не более 2 А. Больше одной фазы одновременно включаться не будет, это и есть максимальный потребляемый ток всего двигателя. Такой ток он может потреблять во время старта, когда скорость вращения ротора близка к нулю и обратная ЭДС маленькая. С ростом скорости растет ЭДС, которая компенсирует приложенное к обмоткам напряжение, вызывая уменьшение потребляемого тока. На некоторой скорости ЭДС машины станет равной напряжению питания, ток потребления упадет до нуля, двигатель дальше разгоняться не будет. В реальной жизни разгон прекратится немного раньше, когда потребляемая мощность будет равна мощности потерь. Но в данном случае важно знать максимальный ток, чтобы правильно выбрать ключи. Надо сказать, что при реверсировании двигателя ток может быть еще больше, чем при старте, поэтому ключи надо выбирать с запасом. Или делать ограничение тока.

В качестве ключей выбрал IRLML0060. Эти транзисторы имеют низкое сопротивление канала (примерно 0.1 Ома), что обеспечит низкий нагрев. При суммарном токе потребления двигателя 2 А каждый транзистор будет рассеивать меньше 50 мВт, что позволяет использовать корпуса SOT-23 без радиатора. Потери при переключении тут можно не учитывать – это не высокочастотный ШИМ, а очень редкие переключения обмоток.



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

Вместе с треском на осциллограмме напряжения на обмотках видны большие короткие выбросы.



Пришлось обратиться к мудрости древних разработчиков. В японской плате в качестве ключей используются p-n-p транзисторы типа 2SB596. Через эти ключи обмотки двигателя подключаются к питанию +24 В, а для регулировки скорости используется отдельный транзистор.



Транзисторы ключей установлены на радиаторе вместе с регулирующим транзистором.



В первую очередь обращает на себя внимание конденсатор 10 мкФ, подключенный параллельно переходу база-эмиттер транзисторов ключей. Реализовано что-то типа «мягкой» коммутации ключей. Конечно, это аукнется снижением КПД, но тут он нас мало интересует. Хотя необходимость установки ключей на радиатор несколько расстраивает, это ведь конструктивное неудобство.

В советской плате ключи выполнены похожим образом, видим все тот же конденсатор 10 мкФ. В схеме умудрились сделать ошибку – транзисторы ключей на самом деле p-n-p, их тип КТ816В.



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



Основная идея понятна – переключение транзистора надо «затормозить», чтобы избавиться от выбросов. Для MOSFET это можно сделать с помощью последовательной RC-цепочки со стока на затвор. Попробовал несколько номиналов, чтобы выяснить зависимость. Выбросы размазываются, появляется видимая задержка открывания ключа, но полностью выбросы не пропадают. Стрекотание двигателя стало чуть тише, но все равно это далеко не та тишина, как у штатной платы.



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



Подключил штатную плату – двигатель вращается бесшумно. Что можно сделать в такой ситуации? Кроме медитации на старую схему больше ничего не придумал.

Двигатель, обмотки которого коммутируются по сигналам датчика положения ротора, умеет самостоятельно вращаться, если подать на него постоянное напряжение питания. При этом он очень похож на коллекторный двигатель. А для коллекторных как? Подаем некоторое напряжение питания – двигатель начинает крутиться. Хотим, чтобы крутился быстрее – увеличиваем напряжение питания. И так далее. По аналогии я тоже скорость двигателя регулирую напряжением питания.

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

Чтобы проверить идею, запитал двигатель от простейшего генератора тока на составном транзисторе, на базу которого подал постоянное напряжение с переменного резистора. Картина стала совершенно другой. С ключами на биполярных транзисторах с японской платы двигатель заработал совершенно бесшумно, как и со штатной платой. Форма напряжения на обмотке стала близкой к синусоидальной, за исключением небольшого промежутка, где открыт ключ. Там кусочек синусоиды сдвигался вниз на величину, зависящую от тока питания. Т.е. на величину падения напряжения на активном сопротивлении обмотки.



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



Добавил «тормозящиую» RC-цепочку. Выбросы размазались, но все равно они оставались гораздо больше, чем с биполярными ключами. Двигатель по-прежнему шумел громче, чем с биполярами.



Совсем сдаваться и полностью копировать старую схему не хотелось. Но и в изысканиях четко вырисовывался тупик. Единственный шанс сдвинуть дело с мертвой точки – это сделать в PSpice модель всего того, что здесь творится. Не совсем понятно, как в общем случае подступиться к двигателю. Но в частном случае его смоделировать очень просто. Качество работы ключей слабо зависит от скорости двигателя. К тому же, при эксплуатации он будет всегда работать на одной скорости. Поэтому вполне допустимо промоделировать его только для одной скорости. Измерил сопротивление и индуктивность обмоток, обратную ЭДС (BEMF) при заданной частоте вращения, а также потребляемый при номинальной нагрузке ток. Каждую обмотку двигателя заменил последовательно включенной индуктивностью, резистором и источником синусоидальной ЭДС. Фазы источников сдвинул на 120° друг относительно друга. Ну и привязал по фазе управляющую последовательность к BEMF.



Мое удивление было весьма значительным – полученные графики хорошо совпадали с картинками на осциллографе.

Напряжение на обмотке двигателя:





Напряжение на ключе:





А это с MOSFET-ключом:



Напряжение на обмотке двигателя:





Напряжение на ключе:





Теперь вполне можно что-то делать. Махать мышкой – это не махать паяльником. Хотелось бы использовать MOSFET-ключи, чтобы минимизировать потери и обойтись без радиатора для них. Перепробовал кучу вариантов торможения этих ключей. Разные RC-цепочки сток-затвор, снабберные цепочки, асимметричное время открывания и закрывания с диодом в затворе. Все это помогало слабо. Нашел номиналы RC-цепочки, когда выбросы на обмотках были минимальны. Даже собрал этот вариант в железе и проверил.



Напряжение на обмотке двигателя:





Напряжение на ключе:





Двигатель все равно работал хуже, чем с биполярными ключами. Выбросы почти исчезли, но сама форма напряжения заметно исказилась.

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

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



Появилось подозрение, что старания с MOSFET вообще были напрасны. Основная причина, для чего все делалось, это снижение мощности рассеяния. Но получается следующая картина: если «мягким» включением транзистора удается устранить выбросы, то при этом средняя рассеиваемая мощность получается намного выше, чем для открытого состояния. Rds_on перестает играть роль. На графике ниже показана мгновенная и средняя рассеиваемая мощность для ключа. Видно, что мощность максимальна после окончания управляющего импульса, когда ток ключа спадает, но напряжение на нем увеличивается. На графике ниже синяя линия – управляющие импульсы, розовая – ток, зеленая – мгновенная мощность, красная – средняя мощность.



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

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



Составной транзистор позволил значительно уменьшить «тормозящую» емкость. Вместо 10 мкФ в этой схеме достаточно 100 нФ. Все номиналы здесь очень критичны, они сильно влияют на величину выбросов и искажения формы на обмотках двигателя. Впрочем, емкости 10 мкФ из старой схемы тоже были критичны. Шаг вправо, шаг влево – и форма сильно портится. Не удивительно что эти номиналы емкостей перекочевали с японской платы. В новой схеме (зеленый график) форма получилась более красивая, чем в японской схеме (красный график).



Напряжение на ключе тоже получается красивей.



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



Для последней схемы решающее значение имеет мощность рассеяния в открытом состоянии ключа. Тут бы имел большое преимущество MOSFET. Но для него никакими способами так и не удалось добиться "мягкого" переключения. Все попытки давали более шумную работу двигателя по сравнению с биполярными ключами.

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



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



Удивляет хорошее совпадение с моделью, учитывая то, что модель двигателя очень примитивная, а сама схема очень чувствительна к номиналам.

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

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

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

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



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



Но когда включил реверс, увидел что-то страшное.



Коммутация сильно запаздывала. Странно, штатная плата ведь нормально работает и на прямом ходе, и на реверсе. Снова ее подключил, вернул прежнюю регулировку двигателя и внимательно посмотрел на моменты переключения. Оказывается, они кривоваты, причем одинаково для прямого хода и реверса. Наверное, одинаковая кривизна и была критерием настройки. И эта настройка достигалась почти в крайнем положении датчиков. Причем такое я видел на нескольких двигателях ДБ-95. Возможно, дает о себе знать прототип двигателя Shinano Tokki, который реверсным не был.

Сделал так же и для своей схемы – получил одинаково кривые прямой ход и реверс.



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

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

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.
  • 175 comments

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

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

  • Sharp GF-777

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

  • JVC TD-V662

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