alex_avr (alex_avr2) wrote,
alex_avr
alex_avr2

Categories:

Про эволюцию модулестроения или как правильно управлять двигателями постоянного тока

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


Предыдущее(2014) и последнее(2017) поколения моих универсальных модулей управления двигателями постоянного тока.


Впервые задача разработать подобный драйвер, в более менее серьезном виде, встала передо мной в 2006 году, когда я был в бауманском роботоклубе. Нужно было сделать устройство для плавного управления мотором с напряжением 12В и током до 3-4А. Тогда я сделал свой первый Н-мост - простейшая схема из четырех транзисторов, которая позволяет по сути подключать каждый из выводов мотора к плюсу либо минусу питания. Но нормально он так и не заработал :)



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



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



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

1)Транзисторы.

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



Несколько параметров, которые важны при выборе транзистора:

а)Напряжение на затворе для полного открытия. Некоторые транзисторы можно открыть напряжением 1.5В, а некоторым нужно 5В и более. В целом, чем меньше напряжение - тем лучше. Этот параметр обычно прямо в даташитах не задан, однако обязательно есть график ВАХ транзистора, на котором указана характеристика при разном напряжении на затворе. Из этого графика легко понять, какое напряжение является оптимальным.



Например по этому графику мы видим, что при напряжении на затворе 2.3В - максимальный ток через транзистор может быть только 0.04А. Больший ток просто не потечет. При 2.4В ситуация получше - ток уже может достигнуть 0.4А. Но это все равно плохой режим, т.к. при таком токе на транзисторе будет падать большое напряжение. Как видим, начиная примерно с 4.5В на затворе транзистор может уже спокойно пропускать десятки ампер. при этом падение напряжения на нем будет очень маленьким. Это и есть то напряжение, которое нам нужно подавать на затвор (как минимум) для полного открытия транзистора. Нужно отметить, что этот график дан для температуры 25 градусов, а при нагреве характеристики ухудшаются их можно посмотреть на соседнем графике.

б)Емкость затвора. Как известно, полевые транзисторы управляются напряжением и ток через затвор не течет. Однако, в момент переключения затвор, имеющий паразитную емкость нужно зарядить или разрядить. Чем быстрее это будет сделано (об этом ниже) - тем лучше. Соответственно чем ниже емкость, тем лучше. Обычно в даташитах указывают заряд затвора Qg измеряемый в нанокулонах. Чем меньше - тем лучше.

в)Сопротивление канала в открытом состоянии. Rds(on) - собственно название говорит само за себя. В отличие от биполярных транзисторов, канал полевых транзисторов в открытом состоянии ведет себя как сопротивление. Падение напряжения на транзисторе зависит от тока и может быть вычислено по закону ома. Разумеется, выделяемое тепло на транзисторе зависит от этого сопротивления и тока через него протекающего. При этом вы можете найти два очень похожих на первый взгляд транзистора, с примерно одинаковым максимальным током, но с сопротивлением отличающимся на порядок и более. Разумеется, чем меньше сопротивление - тем лучше. Стоит также обратить внимание на максимальное напряжение Сток-Исток транзистора. Как правило, чем меньше напряжение - тем меньше и сопротивление канала. Не стоит брать напряжение с большим запасом - за это придется расплачиваться нагревом транзистора. Например у приведенного выше IRF530 максимальное напряжение - 100В, как следствие, сопротивление открытого канала 0.115 Ом, а это значит, что при токе 10А он будет греться как утюг, отдавая 11.5 Вт тепла, чтобы отвести столько тепла понадобится огромный радиатор.

В то же время - у моего самого любимого транзистора IRF8788 максимальное напряжение всего 30В. При этом эта крошка в корпусе SOIC-8 в открытом состоянии имеет сопротивление 0.003 Ома (да-да, три тысячных Ома). По сути это все-равно что короткий кусок толстой медной проволоки. Не трудно рассчитать, что при токе 10А, выделяемая мощность на транзисторе составит всего 0.3 Вт, что легко может быть рассеяно небольшим полигоном меди на плате. При токе 20А выделяемая мощность составит уже 1.2 Вт, что потребует более серьезного охлаждения и это примерно максимально допустимый постоянный ток для этого транзистора.


2)Драйвер и тип транзисторов.

Если вы наберете в поиске картинок "Н-мост", то одной из первых картинок будет вот эта:



Эта вредная и неправильная картинка. Если вы соберете мост по такой схеме, то он у вас 99% не заработает (при определенных условиях можно добиться работы этого моста, но эти условия весьма экзотичны). UPD: Как подсказали в комментариях тут еще и транзисторы нарисованы верх-ногами, так что не заработает 100%.

Почему? Для открытия полевого транзистора N типа (а именно такие транзисторы нарисованы на схеме) нужно подать на его затвор определенное напряжение относительно его Истока (Source). Но к чему у нас подключен исток верхних транзисторов? К мотору (другой вывод которого подключен к земле через нижний транзистор в момент работы). А на моторе у нас какое напряжение? Номинальное, ну скажем стандартные 12В. Т.е. чтобы открыть верхний транзистор, нам на его затвор надо подать 12В+[напряжение открытия], т.е. как правило не менее 17В, а лучше и все 22В(ведь чем больше напряжение - тем меньше сопротивление транзистора), относительно земли. При этом по этой схеме затворы верхних и нижних транзисторов соединены вместе. Но если на затвор нижнего транзистора подать 22В, то он скорее всего просто сгорит, т.к. у большинства полевых транзисторов максимально допустимое напряжение на затворе (относительно истока) - 20В. Кроме того, данная схема может создать иллюзию того, что транзисторами можно управлять с помощью логических уровней, что не верно.

Как же быть? Есть два основных варианта.

а)Чтобы не морочиться с получением напряжения выше напряжения питания - заменить верхние транзисторы на полевики P типа. При такой замене - управление несколько упростится. Для открытия P транзистора его затвор нужно будет подключить к земле, а для закрытия - к питанию. Т.е. получать напряжение выше чем напряжение питания схемы нам уже не нужно. Однако, мы все равно не можем управлять транзисторами с помощью логических уровней (исключая случаи, когда напряжение мотора соответствует напряжению логических уровней). Т.е. нам все равно нужен некий драйвер для управления транзисторами.
Есть и еще одна проблема - P транзисторы обладают более плохими характеристиками чем аналогичные (комплементарные) N транзисторы, кроме того их банально меньше в природе, так что подобрать подходящий транзистор будет сложнее, а греться он будет сильнее.

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

Альтернативой служат драйверы со встроенным источником питания с повышенным напряжением. Обычно это либо импульсный boost преобразователь, либо схема на переключаемых конденсаторах (в отличие от bootstrap - никак не связанная с процессом управления затворами и работающая от собственного генератора).

Но кроме этого есть еще одна очень веская причина использовать специализированный драйвер для управления транзисторами. Дело в том, что как уже было сказано выше - у затвора транзистора есть определенная емкость. Из-за этого нельзя мгновенно перевести транзистор из открытого в закрытое состояние и наоборот - этот процесс неизбежно занимает некоторое время, связанное с зарядкой/разрядкой емкости затвора. В течение этого времени транзистор находится в промежуточном состоянии - не до конца открытом/закрытом. При этом сопротивление транзистора резко возрастает, а значит резко возрастает и нагрев транзистора. Если бы мы не использовали ШИМ, то эта проблема бы вряд ли нас волновала бы, но при использовании ШИМ наш транзистор открывается и закрывается 20000 раз в секунду, соответственно 40000 раз в секунду он находится в промежуточном состоянии и греется.

И вот величина времени переключения очень критична. Представим, что допустим транзистор переключается за 5мкс - вроде не много, но помножим на 40000 и получим 200мс, а это значит, что транзистор 20% времени (0.2с от 1с) находится в промежуточном состоянии и жутко греется. При таком раскладе он очень быстро перегреется и сгорит. Поэтому время переключения нужно делать как можно меньшим и счет идет на десятки и сотни наносекунд!

Для того, чтобы быстро перезарядить затвор и тем самым сократить время, в котором транзистор находится в промежуточном состоянии нам нужен драйвер затвора, который может выдавать большой ток, потому что выходные линии микроконтроллеров, которые, как правило используются для генерации ШИМ и управления моторами большой ток выдать не могут. Типично хорошие драйверы затворов могут выдавать ток 1...5А. Это может звучать несколько парадоксально, что для управления транзистором, который вроде как управляется напряжением и у которого затвор вообще ни к чему не подключен (по сути полностью изолированный микроскопический кусочек металла) нужен драйвер, выдающий несколько ампер (разумеется импульсно). Несколько раз не очень продвинутые электронщики, мне даже не верили, когда я это все рассказывал. Ведь они когда-то приняли за догму "полевой транзистор управляется напряжением", что в общем-то правильно, да вот только с оговорками.

В продаже имеется множество разных драйверов транзисторов для разных задач, с разными характеристиками. Драйвер, на котором в итоге остановился я для управления мостом - MC33883. Простой, в то же время делает все что нужно. В этом драйвере встроена схема повышения напряжения на конденсаторах. У него четыре выхода - два для нижних ключей моста, два для верхних ключей моста и они могут выдавать ток до 1А на затвор. Есть также возможность выключить все ключи с помощью линии ENABLE, что оказалось очень удобно в моем случае.



Еще из интересных драйверов, которые я применяю (только для нижних ключей) - MC33152 и LM5110. Первый на напряжения побольше, второй на напряжения поменьше.

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

3)Алгоритм управления.


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

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

Почему так получается и что с этим делать? Двигатель постоянного тока - индуктивная нагрузка. И это сразу же создает много нюансов при управлении. Как известно, ток на индуктивности не может меняться мгновенно. А значит, что ток, который течет через двигатель в момент закрытия нижнего ключа обязательно куда-то потечет. А потечет он по единственно возможному пути (не считая пробоя и прочего экстрeмизмa) - через встроенный в верхний закрытый ключ диод. На картинке: красным - ток через мост при открытом нижнем транзисторе, синим - ток через мост при закрытом нижнем транзисторе.



При прохождении тока через диод, напряжение на нем, как известно падает, на ~0.8В (зависит от тока и транзистора). При этом, раз напряжение падает, а ток течет - значит на диоде выделяется тепло. При токе 10А выделяемая мощность составит 8 Вт. При ШИМе 50% это будет 4 Вт средней мощности, от чего впрочем не легче - для транзистора в SOIC-8, это однозначно смертельная мощность. Как быть? Очень просто - на время закрытия нижнего ключа надо открывать верхний. Бытует распространенное заблуждение, что ток через полевой транзистор может течь только в одну сторону. Это не так, ток может течь в любую сторону. И если мы откроем верхний транзистор, то ток через него совершенно спокойно потечет.



При этом, как правило, падение напряжение будет в разы меньше, чем на диоде. Ну например в случае с IRF8788, который я упоминал выше, при токе 10А оно составит примерно 0.03В, что в ~26 раз меньше, чем на диоде. А выделяемая мощность составит всего 0.3 Вт, что уже является более чем приемлемым и эквивалентно небольшому нагреву даже для такого маленького транзистора в SOIC-8 без радиатора. Таким образом, верхний ключ с одной стороны моста мы открываем постоянно, а с другой стороны верхний и нижний ключи мы открываем и закрываем в противофазе.

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

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

Чтобы избежать этой проблемы нужно открывать и закрывать транзисторы с небольшой задержкой, так, чтобы один сначала полностью закрылся и только после этого второй начал открываться. Такие задержки удобно генерировать средствами управляющей микросхемы. В моем случае это замечательный микроконтроллер серии STM32F030. В нем есть таймер TIM1, который позволяет аппаратно генерировать во-первых ШИМ сигналы в противофазе, во-вторых так называемые deadtime-ы - задержки между переключениями сигналов.



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

В результате учета всех этих нюансов, спустя много-много лет разработок и опыта я в итоге пришел к такому миниатюрному решению, которое, тем не менее обладает весьма недурными характеристиками:



При весьма небольших размерах плата может спокойно крутить весьма мощные двигатели. Чаще всего ей приходится крутить двигатели от автомобильных стеклоподъемников с током заклинивания около 16-18А (средний рабочий ток с нагрузкой 4-10А). При этом плата не требует даже радиатора, нагреваясь при интенсивной работе градусов до 50. При этом большая часть тепла на плате исходит вовсе не от транзисторов, а от дорожек и от клемм, которые кстати не рассчитаны на ток больше 8А и являются по сути главным ограничителем максимального тока на плате.

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


Обещанная ссылка на потрясающий цикл статей про Н-мосты: http://www.modularcircuits.com/blog/articles/h-bridge-secrets/

P.S. Не смотря на приличный объем текста - в посте покрыты лишь самые базовые данные об управлении двигателями постоянного тока, опущенно множество подробностей и тонкостей и вероятно допущены какие-то неточности - не ругайте сильно :)

Как-то так :)
Tags: Микроконтроллеры, Печатные платы, Работа, Разработанные устройства, Электроника
Subscribe

  • 26

    Дожил таки.

  • Санкции

    Ну вот, Санкции и до нас, простых граждан дошли. Иностранные магазины отказываются высылать детальки. Я уж не говорю про то, что их стоимость выросла…

  • Я не люблю

    Подолью маслица в огонь. В тему вот этого поста: http://scinquisitor.livejournal.com/53912.html Ну во-первых, я всецело поддерживаю и разделяю…

promo alex_avr2 july 2, 2018 13:00 41
Buy for 200 tokens
Думаю многие слышали рассказы про огромные бункеры под Москвой, подземные города, секретное метро на случай ядерной войны. Многое в этих рассказах очевидно преувеличено, что-то придумано, но безусловно, основаны они не на пустом месте. Совсем недавно небольшой кусочек этих подземных тайн был…
  • 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 

  • 102 comments
Previous
← Ctrl ← Alt
Next
Ctrl → Alt →
Previous
← Ctrl ← Alt
Next
Ctrl → Alt →

  • 26

    Дожил таки.

  • Санкции

    Ну вот, Санкции и до нас, простых граждан дошли. Иностранные магазины отказываются высылать детальки. Я уж не говорю про то, что их стоимость выросла…

  • Я не люблю

    Подолью маслица в огонь. В тему вот этого поста: http://scinquisitor.livejournal.com/53912.html Ну во-первых, я всецело поддерживаю и разделяю…