Силовая часть униполярного драйвера

king2

Добрый день!

Вступление:
Прочитал много разных тем на этом форуме, но так и не понял, что же является “народным драйвером”, “фидорулезом” и так далее, в плане решения силовой части. Встречал много критики со стороны ATLab на уже существующие схемы, поэтому, если он решит помочь мне в этой проблеме, буду особенно благодарен. Я постраюсь привести здесь ход моих мыслей на эту тему, в аналоговой электронике я чайник, поэтому прошу строго не судить, а если будут мнения “это фигня, работать не будет” - то аргументировать, почему, а в идеале, предложить то, что работать будет. Сразу оговорюсь, что я не ищу решений в стиле “вон там кто-то че-то сделал, вроде работает, надо только PIC купить”, я хочу сделать свое перефекционистское решение, и в процессе обсуждения понять, почему оно именно такое. Также мне совершенно не интересно покупать уже готовое решение, хотя ссылки на удачные реализации, которые “работают” будут встречены с благодарностью. 😃
Еще раз - все это касается только силовой части, мы сейчас говорим о “черном ящике”, на входе которого уровни TTL, а на выходе - обмотка двигателя.

Итак, передо мной стоит задача реализации силовой части управления униполярными шаговыми двигателями (для начала - ШД5). Сейчас будет поток мыслей, если я где-то не прав, пожалуйста, поправьте меня.

Как я понял, для того, чтобы компенсировать индуктивность обмотки и обеспечить быстрое нарастание тока в ней (а стало быть, и момент на валу), применяются следующие подходы:

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

  2. Форсирование импульса - короткий высоковольтный импульс на начале шага, позволяющий быстро насытить индуктивность, и обычный, удерживающий ток далее, который “дошагивает” двигатель до нового устойчивого состояния. Хорош тем, что не надо обратной связи, плох тем же самым 😃, нужен дополнительный ключ на каждую фазу, на больших нагрузках на валу импульса может не хватить, и мы пропустим шаг. За счет увеличения в два раза количества силовых транзисторов, тоже применять не хочется.

  3. ШИМ-регулирование тока в обмотке. Самый, вроде, “продвинутый” вариант, однако, существующие реализации требуют применения аналоговых компараторов, которые прерывают подачу тока при увеличении напряжения на низкоомном сопротивлении более нужного значения. Хороши вроде бы всем, но:

    • компаратор “живет” около нуля, стало быть, помехи
    • хочется избегать (по возможности) решений “на рассыпухе”
    • хочется избегать (по возможности) аналоговых решений, обвязку которых необходимо рассчитывать по каким-то сложным алгоритмам

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

Итого, нам необходимо, чтобы на фазу можно было подавать сигналы:

  • ON (TTL) - если сигнал активен подаем ток на обмотку, если неактивен - ток в обмотке равен нулю
  • LEVEL (TTL 1-4 bit, либо аналоговый, “хоть это и оскорбительно для коллектива” (с) Жванецкий) - от него зависит ток в обмотке.

С абстрактной точки зрения, можно “скрестить” эти сигналы (если LEVEL=0, то и тока в обмотке нет), но думаю, что не получится из-за особенностей схемной реализации. Однако, вполне приемлемо (и даже желательно) управление по SPI, I2C, RS-485, либо другим подобным интерфейсам, защищенным от помех и с экономией количества подключаемых проводов.

Также хочется выживаемость схемы (минимум) или выживаемость и диагностику (максимум) от следующих состояний (в порядке уменьшения желаемости):

  • обрыв обмотки
  • превышение обратной ЭДС
  • замыкание обмотки
  • пропадание связи с управляющим модулем
  • какие-то другие события, приводящие к разрушению схемы (какие?)

Цена компонентов не настолько важна, как их надежность и удобство применения, общий настрой в сторону уменьшения количества корпусов и деталей.

Решения, где управление током и ШИМ происходит при помощи микроконтроллера, в принципе, приемлемы, но надо ОЧЕНЬ аккуратно считать, успевает ли он вовремя реагировать.

Вот примерно так.

Приходит решение “в лоб” - микроконтроллер, например, ATMEGA8-20, через буфер (либо через 2И-НЕ) подключенный к затвору IRLZ44 либо IRL640/840, резистор в цепи обмотки со стороны массы, отвод оттуда либо на компаратор атмеги, либо на какое-то другое устройство.

И вот тут засада. Предположим, у нас максимум 10 ампер на фазу, 48 вольт питания, и мы хотим успеть ограничить ток. Моих знаний и опыта не хватает, чтобы рассчитать, с какой скоростью возрастает тока, и как быстро мы должны реагировать на изменение напряжения на резисторе.
Кто-нибудь может с этим помочь?

В зависимости от ответа на этот вопрос возможны варианты, начиная от типовых предрайверов от allegro, и заканчивая мелкосхемами типа NVS7513 или полностью своей реализацией на atmega8.

Где я ошибся?
Что написал неправильно?
Какие решения могут упростить жизнь, может я полез не в те дебри?

Жду любой конструктив.
Заранее спасибо!

Dj_smart
king2:

ШИМ-регулирование тока в обмотке. Самый, вроде, “продвинутый” вариант

Да. И с ним нет ни малейших проблем. Имею ввиду сам ШИМ. А вот борьба с выбросами в момент закрытия ключа, из-за дурной индуктивности ШД5, доставляет кукчу проблем. Тепловых, в основном.
Чем обусловлено применение ШД5? Их наличием?

king2
Dj_smart:

А вот борьба с выбросами в момент закрытия ключа, из-за дурной индуктивности ШД5, доставляет кукчу проблем. Тепловых, в основном.
Чем обусловлено применение ШД5? Их наличием?

А чем это решается?
Я так понимаю, типовое решение - диод параллельно обмотке в обратном направлении.
Можно (и применяемо ли) вместо диода поставить TVS диод и будет ли лучше (сорри, я чайник)?
Или как-то еще?

У заказчика (с которого начинаю и который финансирует эксперименты) имеется токарно-фрезерный станок с ШД5, который надо подключить (и он хочет оставить именно ШД5 из соображений “оно же работало”).

Себе буду ставить что-то из серии биполярников 56Н76, но позже, а сейчас хочу попробовать набить максимальное количество шишек об грабли. ИМХО, ШД5 идеальный полигон 😃

Dj_smart
king2:

типовое решение - диод параллельно обмотке

Как раз типовое, но… мягко говоря неоптимальное. Там токи такие, что диоды(или стабилитроны) отпаиваются.

king2
Dj_smart:

Как раз типовое, но… мягко говоря неоптимальное. Там токи такие, что диоды(или стабилитроны) отпаиваются.

Ну, как я понимаю, правильно будет рассчитывать так:
Допустим, ключи у нас на Vk вольт, питание Vcc. Чтобы ключ не погорел, хотим, чтобы там было не более чем 0% от его максималки.
Тогда параллельно обмотке ставим супрессор на (Vk-Vcc)*0.9 вольт.

Если ключ на 100 вольт, а питание 24 - то (100-24)*0.9 = 68. Ставим туда 1.5KE68(1N6291) TVS диод на 68 вольт.

При размыкании ключа напряжение на ключе растет от напряжения питания, растет… растет… дорастает до 24 (питание) + 71 (максимальное срабатывание супрессора) = 95 вольт, и так и остается, потому что дальше “стравливается” в супрессор. При этом, пока оно до 71 вольта не доросло, мы обмотку ничем не закорачиваем, и крутиться движку не мешаем.

Вроде все правильно?

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

king2

Окей, пойдем другим путем (от противного). ШИМ (пока что) посылаем в баню (в сад, в пень итд).

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

Предполагается, что мы включаем один (или несколько) каналов, даем команду на транзистор Q100, который шунтирует один из резисторов, добавляя жару на старте. Дальше просто ток удержания. Предположим, что движок ШД5, обмотка 1.5 Ома, резисторы подобраны так, что при питании 12 вольтами будет 5 и 1.5 ампера на шаге/удержании соответственно.

Вопросы по существу:

  1. Будет ли работать такая защита супрессорами?
  2. Будут ли нормально работать полевики IRL от регистра 74hc595? Емкость затвора не помешает? Обязательно ли туда впихивать драйвер или можно и так?
  3. Что поставить вместо знаков вопроса, чтобы управлять драйвером верхнего плеча (минимум корпусов, можно ли сделать на оптопаре)?
  4. Понятно, что для ШД5 в данном случае будет то две фазы, то три, и у нас рабочие параметры будут скакать. Но и удержание будет то тремя обмотками, то двумя, так что момнт на валу должен приблизительно быть одинаковым.
  5. Что не учтено? Почему эта схема плохая?

ATLab
king2:

… Встречал много критики со стороны ATLab на уже существующие схемы, поэтому, если он решит помочь мне в этой проблеме, буду особенно благодарен. …

Можно начну с критики? 😁

  1. Чтобы просто покрутить двигатель регистры неудобны: нужна схема или компьютер (микроконтроллер) с программой, которая в них будет писать данные.
    Проще взять любую готовую схему с реверсивным счетчиком и дешифратором.
  2. Управлять мощными полевиками (даже с логическими уровнями управления) напрямую логикой малоэффективно - выходной ток мал, а входная емкость полевиков большая, фронты затянутся, полевик будет греться. Нужны драйверы.
  3. Шаговик выбран, мягко говоря, совсем не лучший: если пошерстите форумы, найдете, что никому так и не удалось сделать для него эффективный драйвер.
    Видимо тем, кто мог бы это сделать, нафиг не нужно убиваться с такой рухлядью. А тем кто, кто хотел бы, чего то все время не хватает.
    Хотя может я не прав? Я не слежу за ветками с ШД5…

А теперь предложение: поговорите со спонсором и убедите его, что нужен другой, современный двигатель. И уже с ним экспериментируйте в драйверостроении.

king2:


5. Что не учтено? Почему эта схема плохая?

Потому, что работать не будет. А подробнее - это все равно, что заново для Вас придумывать схему.

king2
ATLab:

Можно начну с критики? 😁

  1. Чтобы просто покрутить двигатель регистры неудобны: нужна схема или компьютер (микроконтроллер) с программой, которая в них будет писать данные.
    Проще взять любую готовую схему с реверсивным счетчиком и дешифратором.
  2. Управлять мощными полевиками (даже с логическими уровнями управления) напрямую логикой малоэффективно - выходной ток мал, а входная емкость полевиков большая, фронты затянутся, полевик будет греться. Нужны драйверы.
  3. Шаговик выбран, мягко говоря, совсем не лучший: если пошерстите форумы, найдете, что никому так и не удалось сделать для него эффективный драйвер.
    Видимо тем, кто мог бы это сделать, нафиг не нужно убиваться с такой рухлядью. А тем кто, кто хотел бы, чего то все время не хватает.
    Хотя может я не прав? Я не слежу за ветками с ШД5…
  1. Микроконтроллер будет, для меня гораздо проще сделать на нем, чем на рассыпухе-логике, и в плане количества корпусов, и в плане расширяемости/гибкости.
  2. OK, понял. Сейчас схемку модифицирую и выложу.
  3. Мне сейчас не хватает знаний и опыта. Прошу вот помочь с этим, но…
ATLab:

А теперь предложение: поговорите со спонсором и убедите его, что нужен другой, современный двигатель. И уже с ним экспериментируйте в драйверостроении.

Ну, как бы у других двигателей тоже есть индуктивность и все сопутствующее. Как нулевое решение спонсору будет поставлен либо штатный блок от этого же станка, либо любое поделие “которое работает”. У него резка ОЧЕНЬ медленная, и там не нужна скорость-приемистость.

Я разобраться хочу. Поэтому и прошу помощи, НО:

ATLab:

А подробнее - это все равно, что заново для Вас придумывать схему.

Еще раз - мне не нжно решение для тупого повторения, я хочу разобраться, почему надо сделать так, а не иначе. Понять, какие засады имеются у управления индуктивной нагрузкой, двигателем, полевиками, и так далее. Я понимаю, что с высоты Вашего опыта это кажется детской возней, но я правда хочу разобраться. И сделать по-правильному. Я понимаю, что можно занять позицию “учить тебя никто не будет”, но можно ведь и просто по-человечески помочь. Рассказать что-то, если я не догоняю, объяснить может быть, ткнуть носом, на что обратить внимание, в конце концов.

Однако, из цитаты правильно ли я понимаю, что от Вас мне помощи ждать не приходится?..