Chevroletavtoliga - Автомобильный портал

Ардуино: управление двигателем постоянного тока, L293D. Драйверы L293D, L298, TB6612 – H-мост управления двигателем H мост управления двигателем

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

H-мост на механических переключателях

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

Этот тип соединения известен как «H Bridge» (H мост) — по форме схемы, которая похожа на букву «H». Эта схема подключения двигателя имеет очень интересные свойства, которые мы опишем в этой статье.

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

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

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

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

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

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

H-мост на транзисторах

Для создания электронного H-моста на транзисторах можно использовать транзисторы как NPN, так и PNP типа. Могут быть использованы также и полевые транзисторы. Мы рассмотрим версию с NPN-транзисторами, потому что это решение использовано в микросхеме L298, которую мы увидим позже.

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

Транзистор мы можем представить просто как электронный переключатель, который закрыт, когда на базе (b) 0 В и открыт, когда на базе положительное напряжение.

Хорошо, мы заменили механические переключатели транзисторными ключами. Теперь нам необходим блок управления, который будет управлять нашими четырьмя транзисторами. Для этого мы будем использовать логические элементы типа «И».

Логика управления H-мостом

Логический элемент «И» состоит из интегрированных электронных компонентов и, не зная, что у него внутри, мы можем рассматривать его как своего рода «черный ящик», который имеет два входа и один выход. Таблица истинности показывает нам 4 возможные комбинации сигналов на входах и соответствующий им сигнал на выходе.

Мы видим, что только тогда, когда на обоих входах положительный сигнал (логическая единица), на выходе появляется логическая единица. Во всех остальных случаях на выходе будет логический ноль (0В).

В дополнение к данному логическому «И» элементу для нашего H-моста понадобиться другой тип логического элемента «И», у которого мы можем видеть небольшой круг на одном из его входов. Это все тот же логический элемент «И», но с одним инвертирующим (перевернутым) входом. В этом случае таблица истинности будет немного иная.

Если мы объединим эти два типа «И» элемента, с двумя электронными переключателями, как показано на следующем рисунке, то состояние выхода «Х» может быть в трех вариантах: разомкнутое, положительное или отрицательное. Это будет зависеть от логического состояния двух входов. Этот тип выхода известен как «выход с тремя состояниями» (Three-State Output) который широко используется в цифровой электронике.

Теперь посмотрим, как будет работать наш пример. Когда вход «ENA» (разрешение) равен 0В, независимо от состояния входа «А», выход «Х» будет разомкнут, поскольку выходы обоих «И» элементов будут равны 0В, и, следовательно, два переключателя также будут разомкнуты.

Когда мы подаем напряжение на вход ENA, один из двух переключателей будет замкнут в зависимости от сигнала на входе «A»: высокий уровень на входе «A» подключит выход «X» к плюсу, низкий уровень на входе «A» подключит выход «X» к минусу питания.

Таки образом, мы построили одну из двух ветвей «H» моста. Теперь перейдем к рассмотрению работы полного моста.

Эксплуатация полного H-моста

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

Обратите внимание, что вход разрешения (ENA) подключен к обеим ветвям моста, в то время как другие два входа (In1 и In2) независимы. Для наглядности схемы мы не указали защитные сопротивления на базах транзисторов.

Когда на ENA 0В, то на всех выходах логических элементов также 0В, и поэтому транзисторы закрыты, и двигатель не вращается. Если на вход ENA подать положительный сигнал, а на входах IN1 и IN2 будет 0В, то элементы «B» и «D» будут активированы. В этом состоянии оба входа двигателя будут заземлены, и двигатель также не будет вращаться.

Если мы подадим на IN1 положительный сигнал, при этом на IN2 будет 0В, то логический элемент «А» активируется вместе с элементом «D», а «B» и «C» будут отключены. В результате этого двигатель получит плюс питания от транзистора, подключенного к элементу «А» и минус от транзистора, подключенного к элементу «D». Двигатель начнет вращается в одном направлении.

Если же мы сигналы на входах IN1 и IN2 инвертируем (перевернем), то в этом случае логические элементы «C» и «B» активируются, а «A» и «D» будут отключены. Результат этого — двигатель получит плюс питания от транзистора, подключенного к «C» и минус от транзистора, подключенного к «B». Двигатель начнет вращаться в противоположном направлении.

Если на входах IN1 и IN2 будет положительный сигнал, то активными элементами с соответствующими транзисторами будут «A» и «C», при этом оба вывода мотора будут подключены к плюсу питания.

H-мост на драйвере L298

Теперь давайте посмотрим на работу микросхемы L298. На рисунке приведена структурная схема драйвера L298, который имеет два одинаковых H-моста и позволяет управлять двумя двигателями постоянного тока (DC).

Как мы можем видеть, отрицательная часть мостов напрямую не связана с землей, но доступна на выводе 1 для моста слева и на выводе 15 для моста справа. Добавив очень малое сопротивление (шунт) между этими контактами и землей (RSA и RSB), мы можем измерить ток потребления каждого моста с помощью электронной схемы, которая может измеряет падение напряжения в точках «SENS A» и «SENS B».

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

Защитный диод для индуктивной нагрузки

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

Чтобы решить эту проблему, вы можете использовать быстрые диоды типа Shottky или, если наши двигатели не являются особо мощными, просто обычные выпрямительные диоды, например 1N4007. Нужно иметь в виду, что выходы моста в процессе управления двигателем меняют свою полярность, поэтому необходимо использовать четыре диода вместо одного.

Сегодня мы рассмотрим схему, позволяющую изменять полярность прикладываемого к нагрузке постоянного напряжения.

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

Итак, ниже вы можете видеть схему, которую за внешнюю схожесть с буквой H принято называть H-мостом.

К1, К2, К3, К4 — управляемые ключи

A, B, C, D — сигналы управления ключами

Идея этой схемы очень проста:

Если ключи K1 и К4 замкнуты, а ключи К2 и К3 разомкнуты, то к точке h1 оказывается приложено напряжение питания, а точка h2 замыкается на общий провод. Ток через нагрузку в этом случае течёт от точки h1 к точке h2.

Если сделать наоборот, — ключи К1 и К4 разомкнуть, а ключи К2 и К3 замкнуть, то полярность напряжения на нагрузке изменится на противоположную, — точка h1 окажется замкнута на общий провод, а точка h2 — на шину питания. Ток через нагрузку теперь будет течь от точки h2 к точке h1.

Кроме смены полярности, h-мост, в случае управления электродвигателем, добавляет нам и ещё один бонус — возможность закоротить концы обмоток, что ведёт к резкому торможению нашего движка. Такой эффект можно получить замкнув одновременно либо ключи К1 и К3, либо ключи К2 и К4. Назовём такой случай «режимом торможения». Справедливости ради стоит отметить, что этот бонус H-моста используется значительно реже, чем просто смена полярности (позже будет понятно почему).

В качестве ключей может выступать всё, что угодно: реле, полевые транзисторы, биполярные транзисторы. Промышленность делает H-мосты встроенными в микросхемы (например, микросхема LB1838, драйвер шагового двигателя, содержит два встроенных H-моста) и выпускает специальные драйверы для управления H-мостами (например драйвер IR2110 для управления полевиками). В этом случае, разработчики микросхем конечно стараются выжать максимум бонусов и устранить максимум нежелательных эффектов. Понятно, что такие промышленные решения справляются с задачей лучше всего, но радиохламеры народ бедный, а хорошие микросхемы стоят денег, поэтому мы, ясен пень, будем рассматривать чисто самопальные варианты мостов и схем управления ими.

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

Довольно часто сигналы управления ключами попарно объединяют. Объединяют их таким образом, чтобы от одного внешнего сигнала управления формировалось сразу два сигнала управления в нашей схеме (то есть сразу на два ключа). Это позволяет сократить количество внешних сигналов управления с четырёх до двух штук (и сэкономить 2 ноги контроллера, если у нас контроллерное управление).

Объединяют сигналы чаще всего двумя способами: либо A объединяют с B, а C объединяют с D, либо A объединяют с D, а B объединяют с C. Чтобы обозначить и зафиксировать различия, — назовём способ, когда образуют пары AB и CD «общим управлением противофазными ключами» (эти ключи для изменении полярности прикладываемого к нагрузке напряжения должны работать в противофазе, т.е. если один открывается — другой должен закрываться), а способ, когда образуются пары AD и BC назовём «общим управлением синфазными ключами» (эти ключи для изменении полярности работают синфазно, т.е. либо оба должны открываться, либо оба закрываться).

Чтобы было понятнее о чём идёт речь, — смотрим на рисунок справа. Договоримся далее высокий уровень напряжения считать единицей, а низкий — нулём. В левой части рисунка транзисторы управляются независимо друг от друга. Чтобы открыть верхний транзистор — нужно подать сигнал управления А=0, а чтобы его закрыть — нужно подать А=1. Для открытия и закрытия нижнего транзистора нужно подавать B=1 или В=0. Если с помощью дополнительного транзистора объединить сигналы A и В (смотрим правую часть рисунка), то управлять верхним и нижним транзистором можно одним общим сигналом АВ. Когда АВ=1 оба транзистора открываются, а когда АВ=0 — оба закрываются.


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

Теперь давайте подумаем что нам даёт каждый из этих двух способов управления.

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

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

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

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

Вот в общем-то и вся теория, если вспомню ещё что-нибудь важное — обязательно напишу.

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

Итак, пример:

Сам H-мост выполнен на транзисторах T1, T2, T3, T4, а с помощью дополнительных транзисторов T5, T6 выполнено объединение управления синфазными ключами (сигнал A управляет транзисторами T1 и T4, сигнал B — транзисторами T2 и T3).

Работает эта схема следующим образом:

Когда уровень сигнала A становится высоким — начинает течь ток через резистор R2 и p-n переходы БЭ транзисторов T5 и T4, эти транзисторы открываются, в результате чего появляется ток через переход БЭ транзистора T1, резистор R1 и открытый транзистор T5, в результате чего открывается транзистор T1.

Когда уровень сигнала A становится низким — запираются p-n переходы БЭ транзисторов T5 и T4, эти транзисторы закрываются, прекращает течь ток через переход БЭ транзистора T1 и он тоже закрывается.

Как такую схему рассчитать? Очень просто. Пусть у нас напряжение питания 12В, максимальный ток двигателя 1А и сигнал управления также 12-ти вольтовый (состоянию «1» соответствует уровень напряжения около 12В, состоянию «0» — уровень около нуля вольт).

Сначала выбираем транзисторы T1, T2, T3, T4. Подойдут любые транзисторы, способные выдержать напряжение 12В и ток 1А, например, КТ815 (npn) и его комплиментарная пара — КТ814 (pnp). Эти транзисторы рассчитаны на ток до 1,5 Ампер, напряжение до 25 Вольт и имеют коэффициент усиления 40.

Рассчитываем минимальный ток управления транзисторов T1, T4: 1А/40=25 мА.

Рассчитываем резистор R1, полагая, что на p-n переходах БЭ транзисторов T1, T4 и на открытом транзисторе T5 падает по 0,5В: (12-3*0,5)/25=420 Ом. Это максимальное сопротивление, при котором мы получим нужный ток управления, поэтому мы выберем ближайшее меньшее значение из стандартного ряда: 390 Ом. При этом наш ток управления будет (12-3*0,5)/390=27 мА, а рассеиваемая на резисторе мощность: U 2 /R=283 мВт. То есть резистор надо ставить на 0,5 Вт (ну или поставить несколько 0,125 ваттных параллельно, но чтоб их общее сопротивление получилось 390 Ом)

Транзистор T5 должен выдерживать всё те же 12В и ток 27 мА. Подойдёт, например, КТ315А (25 Вольт, 100 мА, минимальный коэффициент усиления 30).

Рассчитываем его ток управления: 27 мА / 30 = 0,9 мА.

Рассчитываем резистор R2, полагая, что на переходах БЭ транзисторов T5 и T4 падает по 0,5 В: (12-2*0,5)/0,9 = 12 кОм. Опять выбираем ближайшее меньшее значение из стандартного ряда: 10 кОм. При этом ток управления T5 будет 1,1 мА и на нём будет рассеиваться 12,1 мВт тепла (то есть подойдёт обычный резистор на 0,125 Вт).

Вот и весь расчёт.

Далее хотелось бы поговорить вот о чём. В приведённых в статье теоретических схемах H-мостов у нас нарисованы только ключи, однако в рассматриваемом примере, кроме ключей присутствуют ещё одни элементы — диоды. Каждый наш ключ шунтирован диодом. Зачем это сделано и можно ли сделать как-то иначе?

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

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

Так вот. Посмотрим ещё раз наш самый первый рисунок (вот он, справа). Допустим у нас были замкнуты ключи К1 и К4. Когда мы эти ключи размыкаем, у нас через обмотку продолжает течь ток, то есть заряды продолжают перемещаться от точки h1 к точке h2 (за счёт энергии, накопленной обмоткой в магнитном поле). В результате этого перемещения зарядов, потенциал точки h1 падает, а потенциал точки h2 вырастает. Возникновение разности потенциалов между точками h1 и h2 при отключении катушки от внешнего источника питания известно также как ЭДС самоиндукции. За то время, пока мы открываем ключи K3 и К2, потенциал точки h1 может упасть значительно ниже нуля, также как и потенциал точки h2 может вырасти значительно выше потенциала шины питания. То есть наши ключи могут оказаться под угрозой пробоя высоким напряжением.

Как с этим бороться? Есть два пути.

Первый путь. Можно зашунтировать ключи диодами, как в нашем примере. Тогда при падении потенциала точки h1 ниже уровня общего провода откроется диод D3, через который с общего провода в точку h1 потечёт ток, и дальнейшее падение потенциала этой точки прекратиться. Аналогично, при росте потенциала точки h2 выше потенциала шины питания откроется диод D2, через который потечёт ток из точки h2 на шину питания, что опять же предотвратит дальнейший рост потенциала точки h2.

Второй путь основан на том факте, что при перекачивании зарядов из одной точки схемы в другую, изменение потенциалов между этими двумя точками будет зависеть от ёмкости схемы между этими точками. Чем больше ёмкость — тем больший заряд нужно переместить из одной точки в другую для получения одной и той же разности потенциалов (подробнее читайте в статье «Как работают конденсаторы»). Исходя из этого можно ограничить рост разности потенциалов между концами обмотки двигателя (а, соответственно, и рост разности потенциалов между точками h1, h2 и шинами питания и земли), зашунтировав эту обмотку конденсатором. Это, собственно, и есть второй путь.

На этом на сегодня всё, удачи!

Зачем нужны драйвера двигателей и H-мосты в частности?

Научившись «дрыгать» пинами и зажигать светодиоды фанаты и любители «Ардуино» хотят чего-то большего, чего-то помощнее, например научиться управлять моторами. Напрямую подключить мотор к микроконтроллеру нельзя, так как типовые токи пинов контроллера составляют несколько миллиампер, а у моторов, даже у игрушечных, счет идет на десятки и сотни миллиампер, вплоть до нескольких ампер. Тоже самое с напряжением: микроконтроллер оперирует напряжением до 5 В, а моторы бывают разного вольтажа.

В этом обзоре речь идет только о питании коллекторных двигателей постоянного тока, для шаговых двигателей лучше применять специализированные драйвера шаговых двигателей, а для бесколлекторных двигателей имеются свои драйверы, они несовместимы с коллекторными двигателями. Заметим, что в русскоязычной литературе существует некоторая терминологическая путаница – драйверами двигателей называют как «железные» модули, так и фрагменты кода, функции, отвечающие за работу с этими «железными» драйверами. Мы будем иметь в виду под «драйвером» именно модуль, подключаемый с одной стороны к микроконтроллеру (например, к плате Arduino), с другой стороны - к двигателю. Вот таким «преобразователем» логических сигналов контроллера в выходное напряжение для питания двигателя и является «драйвер» двигателя, и, в частности, наш драйвер на L9110S.

Принцип действия двойного H -моста на основе L 9110 S

H – мост (читается «аш-мост») – электронный модуль, аналог переключателя, обычно применяется для питания двигателей постоянного тока и шаговых двигателей, хотя для шаговых двигателей обычно применяются более специализированные модули. Обозначается “H”, потому что принципиальная схема H-моста напоминает букву H.

В «палочке» H включен мотор постоянного тока. Если замкнуть контакты S1 и S4, то мотор будет вращаться в одну сторону, слева будет ноль (S1), справа + напряжения (S4). Если замкнуть контакты S2 и S3, то на правом контакте мотора будет ноль (S3), а на левом + питания (S1), мотор будет вращаться в другую сторону. Мост представляет собой чип L9110 с защитой от сквозных токов: при переключении контакты сначала размыкаются, и только через некоторое время замыкаются другие контакты. На плате стоит два чипа L9110, поэтому одна плата может управлять двумя потребителями постоянного тока: моторами, соленоидами, светодиодами, да чем угодно, или одним двух-обмоточным шаговым двигателем (такие шаговые моторы называются двух-фазными биполярными).

Элементы платы

Плата небольшая, элементов немного:

  1. Разъем подключения мотора A
  2. Разъем подключения мотора B
  3. Чип H-моста мотора A
  4. Чип H-моста мотора B
  5. Пины подключения питания и управления

Подключение

Мотор А и Мотор В - два выхода для подключения нагрузки, ток не более 0,8 А; В-1А - сигнал «Мотор В вперед»; В-1 B - сигнал «Мотор В реверс»; Земля (GND) - должен быть соединён с землёй микроконтроллера и источника питания двигателя.; Питание (VCC) - питание двигателя (не более 12 В); А-1А - сигнал «Мотор А вперед»; A-1 B - сигнал «Мотор А реверс». Сигналы на пинах управляют напряжением на выходах для подключения моторов:

Для плавного управления выходным напряжением подаем не просто HIGH, а широтно-импульсно модулированный (PWM) сигнал. Все пины ардуино, отмеченные знаком ~, могут давать ШИМ выход командой analogWrite(n,P), где n-номер пина (в Arduino Nano и Uno это 3,5-6 и 9-11, соответственно). При использовании этих пинов для ШИМ сигнала, необходимо задействовать таймеры 0 (пины 5 и 6), таймер 1 (пины 9 и 10) и таймер 2 (пины 3 и 11). Дело в том, что некоторые библиотечные функции могут использовать те же таймеры – тогда будет конфликт. По большому счету достаточно знать, что пин 3 подключается ко входу A-1B, а пин 5 ко входу A1-A, команда digitalWrite(3,127) подаст 50% напряжения на мотор в прямом направлении.

Пример использования

Управление роботом: тележка с фарой (белый светодиод) и фонарем заднего хода (красный светодиод). Программа указана ниже и описывает циклическое движение тележки: вперед-остановка-назад-остановка. Все важные шаги в программе прокомментированы.

Мотор подключен к клеммам MOTOR A, светодиоды подключены к выходу MOTOR B. Робот едет время TIME вперед, включив белый светодиод. Далее стоит время TIME с горящими наполовину белыми светодиодами. После чего едет назад, включив красные светодиоды. Далее снова стоит время TIME, включив красные, а потом белые светодиоды на половину яркости. // Драйвер двигателя L9110S // by Dr.S // сайт // определяем, какие порты будем использовать для управления мотором и светодиодами #define FORWARD 3 #define BACK 5 #define WHITE_LIGHT 6 #define RED_LIGHT 9 #define LEDOUT 13 #define TIME 5000 unsigned char Forward_Speed = 200; unsigned char Back_Speed = 160; unsigned char White_Light = 210; unsigned char Red_Light = 220; void setup() { // объявляем пины управления мостом как выходы: pinMode(FORWARD, OUTPUT); pinMode(BACK, OUTPUT); pinMode(WHITE_LIGHT, OUTPUT); pinMode(RED_LIGHT, OUTPUT); pinMode(LEDOUT, OUTPUT); } // the loop routine runs over and over again forever: void loop() { // Робот едет вперед в течении времени TIME analogWrite(WHITE_LIGHT, White_Light); // Включить белый светодиод- "фары" analogWrite(RED_LIGHT, 0); analogWrite(FORWARD, Forward_Speed); // Робот пошел вперед analogWrite(BACK, 0); delay(TIME); // и немного подождать // Робот включает "фары" на половину обычной яркости и стоит analogWrite(WHITE_LIGHT, White_Light / 2); // Включить белый светодиод- "фары" как стояночные огни analogWrite(RED_LIGHT, 0); analogWrite(FORWARD, 0); // Робот стоит analogWrite(BACK, 0); delay(TIME); // и немного подождать // Робот включает красные светодиоды "заднего хода" и идет назад analogWrite(WHITE_LIGHT, 0); // Включить белый светодиод- "фары" как стояночные огни analogWrite(RED_LIGHT, Red_Light); analogWrite(FORWARD, 0); analogWrite(BACK, Back_Speed); // Робот идет назад delay(TIME); // и немного подождать // Робот включает попеременно красные и белые светодиоды и стоит analogWrite(WHITE_LIGHT, 0); analogWrite(RED_LIGHT, Red_Light / 2); // Включить красный светодиод как стояночные огни analogWrite(FORWARD, 0); analogWrite(BACK, 0); // Робот стоит delay(TIME / 2); // и немного подождать analogWrite(WHITE_LIGHT, White_Light / 2); // Включить белый светодиод- "фары" как стояночные огни analogWrite(RED_LIGHT, 0); delay(TIME / 2); // и немного подождать }

Принципиальная схема

Технические характеристики модуля

  • Два независимых выхода, до 800 мА каждый
  • Максимальная перегрузочная способность 1.2 А
  • Напряжение питания от 2,5 до 12 В
  • Логические уровни совместимы с 3,3 и 5 В логикой
  • Рабочий диапазон 0 °С до 80°С
Содержание:

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

Резисторы

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

Каждый постоянный резистор обладает двумя основными параметрами - мощностью и сопротивлением. Значение мощности указывается на схеме не буквенными или цифровыми символами, а с помощью специальных линий. Сама мощность определяется по формуле: P = U x I, то есть равна произведению напряжения и силы тока. Данный параметр имеет важное значение, поскольку тот или иной резистор может выдержать лишь определенное значение мощности. Если это значение будет превышено, элемент просто сгорит, так как во время прохождения тока по сопротивлению происходит выделение тепла. Поэтому на рисунке каждые линии, нанесенные на резистор, соответствуют определенной мощности.

Существуют и другие способы обозначения резисторов на схемах:

  1. На принципиальных схемах обозначается порядковый номер в соответствии с расположением (R1) и значение сопротивления, равное 12К. Буква «К» является кратной приставкой и обозначает 1000. То есть, 12К соответствует 12000 Ом или 12 килоом. Если в маркировке присутствует буква «М», это указывает на 12000000 Ом или 12 мегаом.
  2. В маркировке с помощью букв и цифр, буквенные символы Е, К и М соответствуют определенным кратным приставкам. Так буква Е = 1, К = 1000, М = 1000000. Расшифровка обозначений будет выглядеть следующим образом: 15Е - 15 Ом; К15 - 0,15 Ом - 150 Ом; 1К5 - 1,5 кОм; 15К - 15 кОм; М15 - 0,15М - 150 кОм; 1М2 - 1,5 мОм; 15М - 15мОм.
  3. В данном случае используются только цифровые обозначения. Каждое включает в себя три цифры. Первые две из них соответствуют значению, а третья - множителю. Таким образом, к множителям относятся: 0, 1, 2, 3 и 4. Они означают количество нулей, добавляемых к основному значению. Например, 150 - 15 Ом; 151 - 150 Ом; 152 - 1500 Ом; 153 - 15000 Ом; 154 - 120000 Ом.

Постоянные резисторы

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

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

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

Переменные резисторы

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

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

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

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

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

Соединение резисторов

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

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

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

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

На представленной схеме параллельно соединяются резисторы R2 и R3. Последовательное соединение включает в себя резистор R1, комбинацию R2 и R3 и резистор R4. Для того чтобы рассчитать сопротивление такого соединения, вся цепь разбивается на несколько простейших участков. После этого значения сопротивлений суммируются и получается общий результат.

Полупроводники

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

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

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

Конденсаторы

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

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

Переменные конденсаторы

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

Обозначение подстроечного конденсатора включает в себя наклонную линию со штрихом на конце вместо стрелки. Ротор отображается в виде короткой дуги. Другие элементы - термоконденсаторы обозначаются буквами СК. В его графическом изображении возле знака нелинейной регулировки проставляется температурный символ.

Постоянные конденсаторы

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

При использовании в схеме конденсатора с , вместо его порядкового номера наносится звездочка. Значение номинального напряжения указывается лишь для цепей с высоким напряжением. Это касается всех конденсаторов, кроме электролитических. Цифровой символ напряжения проставляется после обозначения емкости.

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

Диоды и стабилитроны

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

Для используется буквенное обозначение VD. Оно отображает не только отдельные элементы, но и целые группы, например, . Тип того или иного диода указывается возле его позиционного обозначения.

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

Транзисторы

У большинства радиоэлектронных компонентов имеется лишь два вывода. Однако такие элементы как транзисторы оборудованы тремя выводами. Их конструкции отличаются разнообразными типами, формами и размерами. Общие принципы работы у них одинаковые, а небольшие отличия связаны с техническими характеристиками конкретного элемента.

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

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

На схемах они обозначаются буквенным кодом VT. Графическое изображение представляет собой короткую черточку, от середины которой отходит линия. Данный символ обозначает базу. К ее краям проводятся две наклонные линии под углом 60 0 , отображающие эмиттер и коллектор.

Электропроводность базы зависит от направления стрелки эмиттера. Если она направлена в сторону базы, то электропроводность эмиттера - р, а у базы - n. При направлении стрелки в противоположную сторону, эмиттер и база меняют электропроводность на противоположное значение. Знание электропроводности необходимо для правильного подключения транзистора к источнику питания.

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

Буквенные обозначение на схемах радиодеталей

Основное обозначение

Наименование элемента

Дополнительное обозначение

Вид устройства

Устройство

Регулятор тока

Блок реле

Устройство

Преобразователи

Громкоговоритель

Датчик тепловой

Фотоэлемент

Микрофон

Звукосниматель

Конденсаторы

Батарея конденсаторов силовая

Блок конденсаторов зарядный

Интегральные схемы, микросборки

ИС аналоговая

ИС цифровая, логический элемент

Элементы разные

Теплоэлектронагреватель

Лампа осветительная

Разрядники, предохранители, устройства защитные

Дискретный элемент защиты по току мгновенного действия

То же, по току инерционного действия

Предохранитель плавкий

Разрядник

Генераторы, источники питания

Батарея аккумуляторов

Синхронный компенсатор

Возбудитель генератора

Устройства индикационные и сигнальные

Прибор звуковой сигнализации

Индикатор

Прибор световой сигнализации

Табло сигнальное

Лампа сигнальная с зеленой линзой

Лампа сигнальная с красной линзой

Лампа сигнальная с белой линзой

Индикаторы ионные и полупроводниковые

Реле, контакторы, пускатели

Реле токовое

Реле указательное

Реле электротепловое

Контактор, магнитный пускатель

Реле времени

Реле напряжения

Реле команды включения

Реле команды отключения

Реле промежуточное

Катушки индуктивности, дроссели

Дроссель люминесцентного освещения

Измеритель времени действия, часы

Вольтметр

Ваттметр

Выключатели и разъединители силовые

Выключатель автоматический

Резисторы

Терморезистор

Потенциометр

Шунт измерительный

Варистор

Устройство коммутации в цепях управления, сигнализации и измерительных цепях

Выключатель или переключатель

Выключатель кнопочный

Выключатель автоматический

Автотрансформаторы

Трансформатор тока

Трансформаторы напряжения

Преобразователи

Модулятор

Демодулятор

Блок питания

Преобразователь частоты

Приборы электровакуумные и полупроводниковые

Диод, стабилитрон

Прибор электровакуумный

Транзистор

Тиристор

Соединители контактные

Токосъемник

Соединитель высокочастотный

Устройства механические с электромагнитным приводом

Электромагнит

Замок электромагнитный

Рассмотрим драйвер электродвигателей на транзисторах и микросхеме L298, разберемся с принципом работы H-моста. Узнаем особенности подключения драйверов на L298 к разным двигателям и источникам питания, проведем простые эксперименты с шаговыми движками и двигателями постоянного напряжения. Подключение к Raspberry Pi и простейшие программы для теста управления драйвером.

Что такое H-мост

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

Почему такое название? - потому что схема включения двигателя и переключателей для коммутации напоминает латинскую букву H. Принципы работы H-моста показан нарисунке ниже.

Рис. 1. Как работает H-мост, принцип коммутации двигателя для вращения в разные стороны.

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

Важно заметить что НЕЛЬЗЯ допускать замыкания двух ключей на одной стороне H-моста, поскольку получится короткое замыкание, при проектировании схемы моста нужно заложить это правило в логику и таким образом реализовать защиту.

Схема простого H-моста на кремниевых транзисторах

Собрать простой драйвер двигателя постоянного тока (или для обмотки шагового двигателя) можно на распространенных кремниевых транзисторах.

Рис. 2. Принципиальная схема простого драйвера электродвигателя на кремниевых транзисторах.

Такой драйвер позволяет управлять электродвигателем постоянного тока с питающим напряжением до 25В (для КТ817А, КТ816А) и до 45В (для КТ817Б-Г, КТ816Б-Г) с током не более 3А. При большом рабочем и нагрузочном токе двигателя выходные транзисторы КТ817 и КТ816 должны быть установлены на радиаторы достаточного размера.

Установка диодов VD1-VD2 обязательна, они нужны для защиты выходных транзисторов от обратного тока. На их место можно поставить отечественные КД105А или другие на больший ток.

Собрав две такие схемки (2х6 транзисторов) можно также управлять шаговым двигателем или же двумя двигателями постоянного тока.

Для того чтобы не городить огород из 12 транзисторов можно применить специализированные микросхемы, ниже мы рассмотрим пример с микросхемой L298 и готовым блоком на ее основе.

Микросхема L298, характеристики и возможности

Интегральная микросхема L298 - это мощный универсальный мостовой драйвер для управления двигателями постоянного тока, шаговыми движками, электромагнитными реле и электромагнитами (соленоидами). В микросхеме содержится два H-моста, выполненных на мощных транзисторах, а также логика совместимая с TTL.

Рис. 3. Микросхема L298 в корпусах Multiwatt15 PowerSO20.

Основные технические характеристики:

  • Рабочее напряжение - до 46В;
  • Максимальный постоянный ток - 4А (с радиатором);
  • Низкое напряжение насыщения;
  • Защита от перегрева;
  • Логический "0" = напряжение до 1,5В.

Где можно применить драйвер на микросхеме L298? - несколько идей:

  • Управление шаговым двигателем;
  • Управление двумя двигателями постоянного тока (DC motors);
  • Коммутация катушек мощных реле;
  • Управление соленоидами (электромагнитами).

Если посмотреть на структурную схему микросхему L298 то мы можем увидеть что-то на подобии схемы на рисунке 2, только с дополнительными логическими элементами.

Рис. 4. Внутренняя схема микросхемы L298N - мощный двойной H-мост.

Для каждого H-моста мы имеем по 3 входа: In1 - для подачи напряжения в одном направлении, In2 - в противоположном, и еще один вход En для подачи питания на выходные транзисторы моста.

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

Схема драйвера на микросхеме L298

Ниже представлена простая схема для драйвера двигателей на микросхеме L298N. Управление осуществляется по четырем проводам (вместо шести у L298) благодаря использованию дополнительных инверторов в микросхеме CD4011.

Рис. 5. Принципиальная схема драйвера электродвигателей на микросхеме L298N.

Для питания логики обеих микросхем нужно стабилизированное напряжение +5В (P2), можно использовать интегральный стабилизатор, например L7805 или же питать логику от имеющейся линии питания +5В. Для подачи питающего напряжения на двигатели используется отдельная линия питания P1.

Выводы P4, P5 используются для установки полярности каждого из каналов, а выводы P6, P7 - разрешают подачу питания на каскады (ключи) внутреннего H-моста для каждого канала.

Микросхему CD4011 можно заменить на отечественную К176ЛА7. Диоды Шоттки можно поставить другого номинала, на 35В/4А и более. Если не планируется ограничивать ток обмоток двигателя(двигателей) то низкоомные ограничивающие резисторы R9-R10 можно исключить из схемы, заменив их на перемычки.

В интернете можно заказать готовый модуль на L298, правда в нем будет 6 входов для управления.

Рис. 6. Готовые модули на L298.

Я для своих нужд приобрел готовый модуль по типу как на рисунке слева. В нем присутствует микросхема L298 и небольшой стабилизатор для подачи +5В на логику микросхемы.

Для подключения данной платки важно четко уяснить одну особенность:

  • Если для питания двигателей используется напряжение более чем 12В то перемычку нужно убрать и подавать отдельно 5В на выделенный для этого коннектор
  • Если питание двигателей будет осуществляться от напряжения 5-12В то перемычку нужно утсановить и дополнительное питание 5В не понадобится.

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

Для того чтобы сэкономить два входа при подключении такого блока к Arduino или Raspberry Pi можно добавить часть схемы на CD4001, как на рисунке 5.

L298 + DC двигатели + Raspberry Pi

Для данного эксперимента к модулю на L298 были подключены два двигателя постоянного тока. Питание всего модуля осуществляется от одного аккумулятора на 6В. Поскольку это напряжение меньше 12В (смотрим выше описание) то перемычку внутреннего стабилизатора оставляем установленной и дополнительное питание +5В для логики не потребуется.

Перемычки "ENA" и "ENB", которые разрешают подачу питания на выходные мосты, оставлены установленными. Таким образом, для управления каждым из двигателей используем оставшиеся четыре входа: IN1, IN2, IN3, IN4.

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

Где взять +5В? - в данном случае это напряжение присутствует на разъеме питания, справа возле GND. Для теста можно воспользоваться кусочком проволоки - перемычкой.

Теперь подключим наш модуль к Raspberry Pi и напишем простую тестовую программу на Python. Для подключения модуля я использовал выводы GPIO вот в таком соответствии:

Рис. 7. L298 + Raspberry Pi + электродвигатели постоянного тока.

Мини-компьютер у меня питается через понижающий импульсный стабилизатор от второго аккумулятора на 6В. Перейдем к написанию программы для нашего эксперимента, наша цель - управлять вращением вала каждого из двигателей при помощи клавиатуры, которая подключена к Raspberry Pi или же удаленно по SSH, VNC.

Теперь испробуем простую программу, написанную на Python, которая поможет понять принцип управления электродвигателем постоянного тока.

Загружаем малинку, открываем Терминал или же подключаемся к ней удаленно при помощи SSH. Создаем новый файл и открываем его для редактирования при помощи команды:

Nano /home/pi/l298_dc_motors_test.py

Вставляем в редактор код скрипта на Python, который приведен ниже:

#!/usr/bin/env python # -*- coding: utf-8 -*- import time import RPi.GPIO as GPIO # Подготавливаем пины GPIO. GPIO.cleanup() GPIO.setmode(GPIO.BCM) GPIO.setup(4, GPIO.OUT) GPIO.output(4, GPIO.LOW) GPIO.setup(17, GPIO.OUT) GPIO.output(17, GPIO.LOW) # Включаем вращение двигателя 1 в одну сторону. GPIO.output(4, GPIO.HIGH) # ждем 5 секунд. time.sleep(5) # Выключаем двигатель 1. GPIO.output(4, GPIO.LOW) # ждем 10 секунд. time.sleep(10) # Включаем вращение двигателя 1 в другую сторону. GPIO.output(17, GPIO.HIGH) # ждем 5 секунд. time.sleep(5) # Выключаем двигатель 1. GPIO.output(17, GPIO.LOW)

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

Chmod +x /home/pi/l298_dc_motors_test.py /home/pi/l298_dc_motors_test.py

После запуска скрипта один из двигателей начнет вращаться в одну сторону на протяжении пяти секунд, потом он выключится и через 10 секунд начнет вращаться в другую сторону на протяжении 5-ти секунд.

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

Важно чтобы в данном примере кода соблюдались отступы, об этом я уже писал раньше .

#!/usr/bin/env python # -*- coding: utf-8 -*- import os import sys import curses import time import RPi.GPIO as GPIO # Установим номера пинов GPIO, с которыми будем работать M1_RIGHT = 4 M1_LEFT = 17 M2_RIGHT = 27 M2_LEFT = 22 # Функция для подготовки пинов GPIO def setup(*ports): GPIO.cleanup() # Режим именования пинов по названию, а не по номеру на плате GPIO.setmode(GPIO.BCM) for port in ports: # Установка пина на вывод + низкий уровень "0" GPIO.setup(port, GPIO.OUT) GPIO.output(port, GPIO.LOW) # Функция для установки низкого уровня на всех пинах (выключение) def stop_all(): GPIO.output(M1_LEFT, GPIO.LOW) GPIO.output(M1_RIGHT, GPIO.LOW) GPIO.output(M2_LEFT, GPIO.LOW) GPIO.output(M2_RIGHT, GPIO.LOW) # Функция для управления вращением движков def rotate(motor=1, mode="s"): # Выключаем все пины stop_all() # Для мотора 1 if motor == 1: if mode == "r": # Устанавливаем высокий уровень на пине M1_RIGHT (4) GPIO.output(M1_RIGHT, GPIO.HIGH) elif mode == "l": # Устанавливаем высокий уровень на пине M1_LEFT (17) GPIO.output(M1_LEFT, GPIO.HIGH) # Для мотора 2 elif motor == 2: if mode == "r": GPIO.output(M2_RIGHT, GPIO.HIGH) elif mode == "l": GPIO.output(M2_LEFT, GPIO.HIGH) # Выполним инициализацию пинов GPIO setup(M1_RIGHT, M1_LEFT, M2_RIGHT, M2_LEFT) # Инициализация экрана (модуль curses) stdscr = curses.initscr() # Реагировать на нажатие клавиш без подтверждения при помощи ENTER curses.cbreak() # Разрешить использование стрелочек на клавиатуре stdscr.keypad(1) # Не блокировать программу по времени при опросе событий stdscr.nodelay(1) # Отобразим на экране данные по умолчанию stdscr.addstr(0, 10, "Hit "q" to quit") stdscr.addstr(2, 10, "A - M1 Left, D - M1 Right") stdscr.addstr(3, 10, "< - M2 Left, > - M2 Right") stdscr.addstr(4, 10, "S - stop") stdscr.refresh() # Главный цикл while True: # Получаем код нажатия клавиши и проверяем его key = stdscr.getch() if key != -1: # Если клавиша "стрелка влево" то вращаем движок 2 влево if key == curses.KEY_LEFT: # Выводим на экран строку "M2 <---" в позиции 6, 10 stdscr.addstr(6, 10, "M2 <---") rotate(2, "l") # Если клавиша "стрелка вправо" то вращаем движок 2 вправо elif key == curses.KEY_RIGHT: stdscr.addstr(6, 10, "M2 --->") rotate(2, "r") # Если клавиша "а" то вращаем движок 1 влево elif key == ord("a"): stdscr.addstr(6, 10, "M1 <---") rotate(1, "l") # Если клавиша "d" то вращаем движок 1 вправо elif key == ord("d"): stdscr.addstr(6, 10, "M1 --->") rotate(1, "r") # Если клавиша "s" то останов всех движков elif key == ord("s"): stdscr.addstr(6, 10, "STOP 12") stop_all() # Если клавиша "s" то выходим из программы elif key == ord("q"): # Восстановление прежних настроек терминала stdscr.keypad(0) curses.echo() curses.endwin() # Очистка и выход os.system("clear") sys.exit() # Обновляем текст на экране и делаем небольшую задержку stdscr.refresh() time.sleep(0.01)

Запустив скрипт можно понажимать стрелочки клавиатуры "влево" и "вправо", а также клавиши с буквами "A" и "D" - двигатели должны вращаться поочередно и в разные стороны, а программа будет отображать их текущий режим работы.

Рис. 8. Программа на Python для управления двигателями при помощи драйвера L298 (терминал Konsole, KDE).

Краткая видео-демонстрация работы данного эксперимента приведена ниже:

Что такое шаговый двигатель, типы шаговиков

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

Шаговые двигатели надежны, стойки к износу и позволяют контролировать вращение на определенный угол, применяются в автоматизации процессов, на производстве, в электронно-вычислительной аппаратуре(CD-DVD приводы, принтеры, копиры) и т.п.

Такие двигатели бывают следующих видов:

  • Биполярный - 2 обмотки, по одной на каждую фазу, для управления можно использовать схему на 2 H-моста или один полу-мост с двуполярным питанием;
  • Униполярный - 2 обмотки, каждая с отводом от середины, удобно переключать фазы сменой половинок каждой из обмоток, упрощает схему драйвера (4 ключа), а также использовать как быполярный без использования отводов от обмоток;
  • С четирьмя обмотками - универсальный, подключив обмотки соответствующим образом можно использовать как быполярный или униполярный движок.

Рис. 9. Типы шаговых двигателей: биполярный, униполярный, с четырьмя обмотками.

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

L298 + шаговый двигатель + Raspberry Pi

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

Для подключения одного биполярного двигателя потребуется два выхода драйвера на L298 (два H-моста). Для данного эксперимента модуль L298 нужно подключить к Raspberry Pi так же, как и в варианте с .

Прежде можете поэкспериментировать без малинки - подавать поочередно на входы модуля L298 напряжение 5В и посмотреть как вал двигателя будет выполнять шаги.

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

Рис. 10. Подключение биполярного шагового двигателя к модулю L298 для управления через Raspberry Pi.

Если все уже подключено, то переходим к экспериментам с простой тестовой программой на Python, которая поможет понять как работать с шаговыми двигателем используя L298 + Raspberry Pi.

Создадим файл для скрипта и откроем его для редактирования:

Nano /home/pi/l298_stepper_motor_test.py

Вставляем в редактор следующий код скрипта на Python:

#!/usr/bin/env python # -*- coding: utf-8 -*- import time import RPi.GPIO as GPIO # Подготавливаем пины GPIO. GPIO.cleanup() GPIO.setmode(GPIO.BCM) GPIO.setup(4, GPIO.OUT) GPIO.output(4, GPIO.LOW) GPIO.setup(17, GPIO.OUT) GPIO.output(17, GPIO.LOW) GPIO.setup(27, GPIO.OUT) GPIO.output(27, GPIO.LOW) GPIO.setup(22, GPIO.OUT) GPIO.output(22, GPIO.LOW) # Временная задержка между шагами, сек. step_timeout = 0.0105 # Длительность импульса, сек. impulse_timeout = 0.008 # Шаг 1. GPIO.output(4, GPIO.HIGH) time.sleep(impulse_timeout) GPIO.output(4, GPIO.LOW) time.sleep(step_timeout) # Шаг 2. GPIO.output(17, GPIO.HIGH) time.sleep(impulse_timeout) GPIO.output(17, GPIO.LOW) time.sleep(step_timeout) # Шаг 3. GPIO.output(27, GPIO.HIGH) time.sleep(impulse_timeout) GPIO.output(27, GPIO.LOW) time.sleep(step_timeout) # Шаг 4. GPIO.output(22, GPIO.HIGH) time.sleep(impulse_timeout) GPIO.output(22, GPIO.LOW) time.sleep(step_timeout) # Ждем 10 секунд. time.sleep(10) # 20 раз по 4 шага в цикле. for i in range(0,20): GPIO.output(4, GPIO.HIGH) time.sleep(impulse_timeout) GPIO.output(4, GPIO.LOW) time.sleep(step_timeout) GPIO.output(17, GPIO.HIGH) time.sleep(impulse_timeout) GPIO.output(17, GPIO.LOW) time.sleep(step_timeout) GPIO.output(27, GPIO.HIGH) time.sleep(impulse_timeout) GPIO.output(27, GPIO.LOW) time.sleep(step_timeout) GPIO.output(22, GPIO.HIGH) time.sleep(impulse_timeout) GPIO.output(22, GPIO.LOW) time.sleep(step_timeout)

Делаем файл со скриптом исполняемым и запускаем его на исполнение:

Chmod +x /home/pi/l298_stepper_motor_test.py /home/pi/l298_stepper_motor_test.py

осле запуска скрипта, шаговый двигатель должен совершить 4 шага (вращение в одну сторону), потом подождав 10 секунд он снова начнет свое вращение и сделает уже 20*4 шагов.

А теперь рассмотрим пример интерактивной программы, которая позволяет управлять направлением и скоростью вращения (последовательные шаги) шагового двигателя с использованием клавиатуры.

#!/usr/bin/env python # -*- coding: utf-8 -*- import os import sys import curses import time import RPi.GPIO as GPIO # Функция для подготовки пинов GPIO def setup(*ports): GPIO.cleanup() # Режим именования пинов по названию, а не по номеру на плате GPIO.setmode(GPIO.BCM) for port in ports: # Установка пина на вывод + низкий уровень "0" GPIO.setup(port, GPIO.OUT) GPIO.output(port, GPIO.LOW) # Функция для подачи импульса на пин с некоторой задержкой (1 шаг) def impulse(port=0): GPIO.output(port, GPIO.HIGH) # Set the timeout value to be anough for one step time.sleep(0.008) GPIO.output(port, GPIO.LOW) time.sleep(timeout) # Выполняем установку нужных нам пинов GPIO setup(4, 17, 27, 22) # Задержка между шагами (по умолчанию) timeout = 0.0105 # Направление вращения (по умолчанию) direction = "r" # Инициализация экрана (модуль curses) stdscr = curses.initscr() # Реагировать на нажатие клавиш без подтверждения при помощи ENTER curses.cbreak() # Разрешить использование стрелочек на клавиатуре stdscr.keypad(1) # Не блокировать программу по времени при опросе событий stdscr.nodelay(1) # Отобразим на экране данные по умолчанию stdscr.addstr(0, 10, "Hit "q" to quit") stdscr.addstr(2, 10, "--->") stdscr.addstr(3, 10, "Timeout: " + str(timeout)) stdscr.refresh() # Главный цикл while True: # Набор импульсов для вращения вала мотора вправо if direction == "r": impulse(4) impulse(17) impulse(27) impulse(22) # Набор импульсов для вращения вала мотора влево elif direction == "l": impulse(22) impulse(27) impulse(17) impulse(4) # Считываем код нажатия клавиши и проверяем его key = stdscr.getch() if key != -1: # Клавиша "влево" меняет направление вращения: ВЛЕВО if key == curses.KEY_LEFT: # отображаем текст "<---" в позиции экрана 2, 10 stdscr.addstr(2, 10, "<---") # Изменим значение переменной с направлением вращения direction = "l" # Клавиша "вправо" меняет направление вращения: ВПРАВО elif key == curses.KEY_RIGHT: stdscr.addstr(2, 10, "--->") direction = "r" # Клавиша "вверх" ускоряет вращение elif key == curses.KEY_UP: # Уменьшаем задержку между шагами timeout = timeout - 0.0005 # Клавиша "вниз" замедляет вращение elif key == curses.KEY_DOWN: # Увеличиваем задержку между шагами timeout = timeout + 0.0005 # Клавиша "q" выполняет выход из программы elif key == ord("q"): stdscr.keypad(0) curses.echo() curses.endwin() os.system("clear") sys.exit() # Смотрим чтобы время задержки не перешло границу 0 if timeout <= 0: timeout = 0.0005 # Обновляем текст на экране stdscr.addstr(3, 10, "Timeout: " + str(timeout)) stdscr.refresh() time.sleep(0.01)

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

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

Рис. 11. Программа управления биполярным шаговым двигателем, L298, Raspberry Pi.

Видео-демонстрация работы шагового двигателя:

Заключение

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

Важно заметить что в интернете можно найти готовые библиотеки и скрипты на Python для удобного управления двигателями при помощи H-моста на L298 с использованием Raspberry Pi.

Похожие публикации