Двигатель постоянного тока
Для начала рассмотрим повнимательней обычный двигатель постоянного тока. Любой двигатель имеет две основные части - ротор и статор. В коллекторном двигателе статор — неподвижная часть, состоит из постоянных магнитов (или в более мощных двигателях электромагнитов). Ротор (якорь) — вращается, совмещён с валом двигателя и состоит из многих катушек (как минимум трех). Коллектор (щёточно-коллекторный узел) отвечает за переключение выводов катушек ротора. Ток в таком двигателе подводится к катушкам ротора через скользящие контакты (или щётки). В один момент времени подключена только одна катушка, она и создаёт момент вращения двигателя за счет проходящего тока.
С точки зрения базовых элементов схемотехники любой двигатель можно представить в виде следующей эквивалентной схемы:
Когда мотор подключён источнику постоянного тока и еще не начал вращаться, то он представляет из себя обычное сопротивление. То есть через него течет ток согласно закону Ома и сопротивлению его обмотки. Преобладает компонента R. Индуктивность начинает влиять когда напряжение не постоянное, например, если мотор питается от ШИМ (PWM) сигнала.
Сопротивление ротора и индуктивность, как правило, очень малы. Его можно померить обычным мультиметром. Небольшие модельные моторы имеют сопротивление 1-10 Ом. Поэтому, при старте мотора (когда он ещё не начал вращаться), ток сильно превышает рабочий ток мотора и если мотор долго будет неподвижен (его заклинило), то такой высокий ток может привести к перегреву мотора и выходу из строя.
Индуктивность катушек ротора пытается поддерживать ток протекающий через обмотки постоянным. Ее влияние заметно только когда напряжение меняется. Когда мотор начинает вращаться, то коллектор начинает переключать катушки ротора, что вызывает изменение напряжения. Индуктивность пытается в эти моменты поддерживать ток протекающий через мотор на постоянном уровне за счет напряжения.
Во время вращения катушки ротора начинают вырабатывать ток (как генератор) - возникает обратная ЭДС. Чем быстрее вращается ротор, тем выше обратная ЭДС возникающая в катушках, а так как она направлена против напряжения питания, то ток потребляемый мотором снижается.
В дальнейшем нам понадобятся следующие выводы:
пока мотор не начал вращаться он является сопротивлением
если приложить к мотору изменяющееся напряжение (например PWM), то индуктивность будет иметь большое влияние, она будет сопротивляться изменению тока через мотор
когда мотор вращается, то он является генератором, и за счет этого потребляемый ток снижается (итоговое напряжение равно V — Vbemf).
Как подключить мотор к МК
В данной статье мы будем разбираться как управлять с помощью МК скоростью и направлением вращения обычным двигателем постоянного тока.
Для того чтобы коллекторный мотор постоянного тока начал вращаться, достаточно подать на него определённое напряжение. Полярность данного напряжения будет определять направление его вращения, а величина напряжения — скорость вращения. Напряжение нельзя менять безгранично. Каждый мотор рассчитан на определённый диапазон напряжений. При повышении напряжения ток через мотор будет расти, и он начнётся перегреваться и может сгореть. На следующем графике некоего мотора хорошо видна взаимосвязь его основных показателей.
Максимальной
мощности (Torque — крутящий момент) мотор
достигает при максимальном токе. И
зависимость тока и момента — линейная.
Максимальной скорости двигатель
достигает при отсутствии нагрузки (на
холостых оборотах), при увеличении
нагрузки скорость вращения падает.
Номинальное рабочее напряжение указано
в паспорте на двигатель и именно для
него и приведён и этот график. Если же
снижать напряжение, то скорость вращения,
и все остальные показатели будут тоже
падать. Как правило, ниже 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-мостом на 2-х 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% скорости вправо. Но при этом не будут задействованы диоды. Такой метод управления называется комплиментарным. Такая схема требует большого конденсатора на линии питания, а также источника питания, который может потреблять ток (например аккумулятора).
Вместо вращения мотора в разные стороны, можно помогать диодам — а именно тормозить мотор, открывать два верхних транзистора в момент низкого уровня ШИМ сигнала. На практике, все эти методы не дают существенного изменения скорости вращения двигателя, но позволяют эффективно управлять нагревом полевых транзисторов. Более подробно про особенности различных схем управления можно в этой статье.
На этом мы закончим нашу статью про моторы. Теперь можно перейти к практике — будем делать плату управления4-мя моторами для робота.