Как управлять мотором постоянного тока

Как подключить мотор к МК

В данной статье мы будем разбираться как управлять с помощью МК скоростью и направлением вращения обычным двигателем постоянного тока.

Для того чтобы коллекторный мотор постоянного тока заработал, достаточно подать на него определённое напряжение. Полярность данного напряжения будет определять направление его вращения, а величина напряжения — скорость вращения. Напряжение нельзя менять безгранично. Каждый мотор рассчитан на определённый диапазон напряжений. Максимальной мощности он достигает на указанном в документации напряжении. Как правило, ниже 30-50% от этого напряжения он перестаёт вращаться. Чем больше нагрузка на мотор, тем больший ток он потребляет. Если же мотор не сможет прокрутить вал (его заклинило), то мотор по сути станет сопротивлением и потребляемый ток достигает максимальной величины, зависящей от внутреннего сопротивления его обмоток. Мотор не рассчитан на работу в таком режиме и может сгореть.

Для того чтобы вы поняли как меняется ток от нагрузки, посмотрим на реальный мотор R380-2580.


Мы видим, что рабочее напряжение данного мотора — 12В, потребляемый ток под нагрузкой — 1.5А. Ток останова мотора вырастает до 8А, а в холостом же вращении, потребляемый ток равен всего 0.8А.

Как мы знаем, порт микроконтроллера не может выдать ток больше 50мА, и напряжение питания 12В для него слишком большое. Для управления моторами нам понадобится электронный ключ — транзистор, возьмём обычный биполярный транзистор NPN и подключим его по следующей схеме.




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

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




Биполярные транзисторы имеют один недостаток — в открытом состоянии они ведут себя как диоды (на них падает около 0.7 В). А это, в свою очередь, вызывает их большой нагрев на больших токах и снижаем КПД схемы управления мотором. Поэтому лучше управлять моторами с помощью полевых (MOSFET) транзисторов. В настоящее время они достаточно распространены и имеют невысокую цену. Их низкое сопротивление в открытом состоянии позволяет коммутировать очень высокие токи. Однако и у них есть свои недостатки. Так как MOSFET транзисторы управляются напряжением, а не током (и обычно оно составляет 10В), то нужно выбирать специальные логические MOSFET, которые могут управляться низким напряжением — 1.8 .. 2.5В или использовать специальные схемы драйверов полевых транзисторов. Как выбирать MOSFET под вашу схему мы рассмотрим в других статьях, на конкретных приборах.

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

H-Мост — меняем направление вращения мотора

Для управления направлением вращения мотора существует специальная схема, которая называется H-мост (схема выглядит как буква H).


Работает схема очень просто. Если открыть верхний правый и левый нижний транзистор, то на клемах мотора справа будет плюс, а слева будет минус. Мотор будет крутиться в одну сторону. Если открыть левый верхний и правый нижний, то справа будет минус, а слева плюс — полярность тока сменится, и мотор будет крутиться в другую сторону. Паразитные диоды внутри MOSFET транзисторов будут защищать всю схему (параметры этих диодов не очень хорошие и в реальных схемах могут понадобиться более быстродействующие диоды Шотке параллельно паразитным диодам, для снижения нагрева полевого транзистора), так что лишние компоненты не понадобятся, кроме искрогасящего конденсатора.




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

Если в вашей схеме будет использоваться высоковольтный мотор постоянного тока (больше 24В) или мощный мотор с токами более 10А, то лучше использовать специальные микросхемы — драйверы MOSFET транзисторов. Драйверы управляются, как правило, сигналами микроконтроллера от 2 до 5В, а на выходе создают напряжение необходимое для полного открытия MOSFET транзисторов — обычно это 10-15В. С помощью драйверов легко организовать управление верхним N-канальным транзистором. Очень хорошим драйвером является микросхема L6387D от компании ST. Данная микросхема хороша тем, что не требует диода для схемы накачки напряжения. Вот так она подключается для управления H-мостом на всех N-канальных транзисторах.


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




Рассмотрим теперь, как управлять скоростью вращения мотора.

ШИМ сигнал — управляем скоростью вращения мотора

Моторы постоянного тока имеют линейную зависимость скорости вращения от приложенного напряжения. Таким образом, чтобы снизить скорость вращения, надо подать меньше напряжения. Но надо помнить, что с падением напряжения, у мотора падает мощность. Поэтому, на практике, можно управлять скоростью мотора только в пределах 30%-50% от полной скорости вращения мотора. Для управления скоростью мотора без потери мощности, необходима обратная связь от мотора по оборотам вращения, например как в электрическом шуруповерте. Такой режим управления, требует более сложной схемы. Рассмотрим простой вариант — управление скоростью мотора без обратной связи.

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

Микроконтроллер, как раз, отлично умеет генерировать ШИМ (PWM) сигнал. А мотор умеет интегрировать данный сигнал (усреднять) за счёт индуктивности обмоток. От коэффициента заполнения (скважности) ШИМ сигнала как раз и будет зависеть полученное мотором среднее напряжение, а значит и скорость.

Какая же частота ШИМ нужна для лучшего управления мотором? Ответ очень простой, чем больше, тем лучше. Минимальная частота зависит от индуктивности мотора, а также массы ротора и нагрузки на вал мотора. Если смоделировать в электрическом симуляторе (например, PROTEUS) ШИМ управление мотором, то будет видно, что чем больше частота ШИМ, тем более ровный ток протекает через мотор (ripple current — снижается при увеличении частоты). Низкая частота:


высокая частота:




Если же частота упадёт ниже определённого уровня, то мотор не сможет крутится, ток станет разрывным (будет падать до нуля).




Отлично, все просто! Делаем частоту ШИМ побольше, например 1 МГц, и любому мотору хватит. В жизни же, все не так просто. Для понимания всех возможных проблем можно упрощенно принять затвор MOSFET транзистора за идеальный конденсатор. Для того чтобы транзистор полностью открылся, конденсатор необходимо зарядить до 10В (на самом деле меньше). Чем больше ток, который мы можем вкачать в конденсатор, тем быстрее он зарядится, а значит быстрее откроется транзистор. В процессе открытия транзистора, ток и напряжение на нем будут максимальными, и чем больше это время, тем сильнее нагреется транзистор. В datasheet обычно есть такой параметр как Qgate — полный заряд, который надо передать транзистору, чтобы он открылся полностью.




Чем меньше эта величина, тем меньшей ток нужен для управления данным транзистором. Естественно, такой ток нужен только на очень короткое время — какое, опять же написано в datasheet — tr, обычно оно измеряется в наносекундах. Чтобы выдать такой ток, нужны специальные драйверы, если же мы управляем логическим MOSFET напрямую от микроконтроллера, то мы не сможем обеспечить такой ток. Поэтому для защиты микроконтроллера необходимо перед базой MOSFET ставить резистор, а это сильно замедляет время открытия. В итоге, микроконтроллер в прямом управлении не может обеспечить более 1-2 мкc на открытие и закрытие транзистора. Время открытия и закрытия должно занимать не более 10% длительности ШИМ сигнала. Таким образом, мы сразу получаем ограничение в частоте — 50 000 Гц. Дополнительно, сам микроконтроллер должен иметь возможность генерировать ШИМ сигнал с возможностью хотя бы 8 битного управления шириной ШИМ (для этого требуется большая рабочая частота МК). В итоге, обеспечить большую частоту ШИМ не так просто. Так же, на высоких частотах, начитает мешать паразитные ёмкости и индуктивности. На плате, которую можно сделать дома, получить частоту ШИМ больше 300 кГц, очень сложно. Трассировка платы должна быть сделана идеально. Для снижения требований к плате, в настоящее время выпускаются специальные MOSFET, объединённые с драйверами управления, они позволяют на заводских, многослойных платах получить частоту управления MOSFET в 2МГц.

Индуктивность моторов не маленькая, и такие большие частоты не нужны. Для управления моторами постоянного тока вполне достаточно 8КГц, лучше около 20КГц (за звуковым диапазоном).

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

  • Земли управления моторами и микроконтроллера обязательно должны быть разделены, соединение в одной точке тонким проводником, например 0.3мм, как можно ближе к проводам питания всей схемы

  • Драйвера управления MOSFET должны быть как можно ближе к самим MOSFET транзисторам

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

  • Обязательно наличие конденсатора как можно ближе к зоне прохождения больших импульсных токов. Если такого конденсатора не будет, то напряжение на линии питания будет сильно проседать и микроконтроллер будет постоянно сбрасываться. Также без такого конденсатора, за счёт индуктивности проводов питания, напряжения на линии питания может увеличиться в несколько раз и компоненты выйдут из строя!

Более подробно мы рассмотрим как работают эти правила на конкретных приборах.

ШИМ сигнал в H-мосте

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

Рассмотрим нашу схему с точки зрения нагрева транзисторов. Это один из основных критериев, по которому наш прибор может выйти из строя. Полевой транзистор состоит из двух элементов — собственно транзистор и паразитный диод. В схеме управления мотором оба элемента работают. Нагрев полевого транзистора происходит в следующие моменты времени:

  • когда транзистор открыт, нагрев идёт из-за сопротивления в открытом состоянии Rdson, пропорционально времени открытия транзистора выделяется мощность P = I * I * Rdson

  • когда транзистор закрыт, то ток ЭДС мотора идет через диод, то есть нагрев идет из-за диода P = I * U diode forward (как правило 1В)

  • когда транзистор переключается из открытого состояния в закрытое, то нагрев пропорционален времени открытия и закрытия транзистора

Посмотрим, как влияет схема управления на нагрев нашим электронных ключей. Допустим, что мы управляем мотором ШИМ сигналом со скважностью 50% и мотор крутится в одну сторону.

Самый простой вариант — применить ШИМ сигнал к одному из двух транзисторов, а второй оставить все время открытым. Обычно, ШИМ в этом случае подаётся на нижний транзистор (N типа), который обычно быстрее. В этом случае нагрев нижнего будет больше верхнего на величину тепла выделяемого при переключениях транзистора. Чтобы сравнять счет, можно попеременно подавать ШИМ сигнал то на верхний (если они одинаковые), то на нижний транзистор. Также можно подавать ШИМ на оба транзистора одновременно, но из-за разницы в транзисторах это будет не эффективно, а также будет увеличивать нагрев за счет переключения транзисторов. При такой схеме управления, два других транзистора работают как диоды. К счастью, наибольший ток через диод будет при наибольшей скважности ШИМ, при этом диод будет задействован очень малое время.

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

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

Read 309 times