Урок 33. Биполярный шаговый двигатель в системе Ардуино.

Шаговый привод

С помощью драйвера L298N подключим к плате Ардуино биполярный шаговый двигатель. Для управления будем использовать программы из предыдущих уроков для униполярных двигателей.

Предыдущий урок     Список уроков     Следующий урок

Использование шаговых двигателей в биполярном режиме дает:

  • Повышение крутящего момента примерно на 40% по сравнению с униполярным двигателем.
  • Позволяет применять двигатели с любой конфигурацией фазных обмоток.

 

Недостаток биполярного режима – более сложный драйвер.

 

Драйвер биполярного шагового двигателя.

У биполярного шагового двигателя две обмотки, по одной для каждой фазы.

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

  • подключать к источнику питания в прямой полярности;
  • отключать;
  • подключать к источнику в противоположной полярности.

Такую коммутацию может обеспечить мостовая схема с четырьмя ключами.

Схема моста
При замыкании ключей 1 и 2 на обмотку подается напряжение питания в прямом направлении. Замыкание ключей 3 и 4 подключает источник питания в обратной полярности.

Драйвер биполярного шагового двигателя намного сложнее, чем драйвер униполярного привода.

  • Требуется 4 ключа на обмотку, т.е. 8 ключей на двигатель.
  • Необходимы сложные схемы управления верхними ключами (ключи 1, 4) от логических сигналов микроконтроллера, “привязанных” к земле.
  • Существуют проблема сквозных токов. Они возникают при одновременном включении транзисторов из одного плеча (ключей 1,3 или 2,4). Это может привести к замыканию источника питания и выгоранию ключей.
  • Сквозные токи могут появляться из-за неодинакового быстродействия верхних и нижних ключей. Например, верхний ключ уже открылся, а нижний не успел закрыться.

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

 

Драйвер биполярного шагового двигателя L298N.

Микросхема L298, наверное, самый распространенный биполярный драйвер.

микросхема L298N
Это полный мостовой драйвер, позволяющий управлять биполярными нагрузками с током до 2 А и максимальным напряжением 46 В. Подробное описание микросхемы L298N можно посмотреть по этой ссылке.

На базе микросхемы L298N разработан модуль L298N.

модуль L298N
Конструктивно он выполнен на одной плате размерами 43 x 43 мм. На плате установлены:

  •  микросхема L298N с радиатором охлаждения;
  •  клеммные колодки для подключения питания и нагрузки;
  •  разъем для подключения управляющих сигналов;
  •  стабилизатор напряжения 5 В;
  •  защитные диоды.

модуль L298N

Принципиальная схема модуля L298N.

Микросхема L298N включена по стандартной схеме.

Схема модуля L298N

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

Модуль содержит стабилизатор напряжения + 5 В для питания логической части микросхемы. Напряжение +5 В формируется из напряжения питания двигателя. На клеммной колодке оно обозначено +12 V, но может меняться в широких пределах 8 … 46 В.

Управления полумостами происходит от входных сигналов IN1, …, IN4. Уровни сигналов 0 / 5 В. При низком уровне выход подключается к земле, при высоком – к источнику питания двигателя (+12 V).

Предельно-допустимый ток фазы 2 А. Защиты по току в модуле нет. Но реализация токовой защиты значительно усложняет схему, а короткое замыкание обмоток двигателя событие маловероятное. Я с таким не встречался. К тому же механическое блокирование вала шагового привода не вызывает перегрузки по току.

Это все очень коротко. Подробно можно посмотреть в этой статье.

По моей партнерской ссылке цена модуля L298N составляет всего 200 руб. (на ноябрь 2016 г.). В то время как одна микросхема L298N в Ростове стоит 250 руб. Гораздо дешевле купить модуль, чем собирать драйвер на отдельных компонентах, не говоря о времени и разработке печатной платы.  Перейти в магазин >>

 

Подключение биполярного двигателя к плате Ардуино.

Я подключил к плате привод FL42STH47-1684. Это биполярный шаговый двигатель с 4 выводами, током фазы 1,68 А и сопротивлением обмоток 1, 65 Ом.

Шаговый привод FL42STH47-1684

Источник питания у меня напряжением 12 В. Если двигатель подключить непосредственно через ключи, то ток в обмотках будет 12 В / 1,65 А = 7 А. Двигатель просто сгорит. Поэтому я последовательно с каждой обмоткой включил ограничительные резисторы. Схема выглядит так.

Схема подключения шагового привода к Ардуино

Я использовал резисторы сопротивлением 10 Ом. Ток фазы можно рассчитать по формуле:

Iфазы = ( Uпитания – Uключей ) / ( Rограничительный + Rобмотки)

  • Iфазы – ток фазы.
  • Uпитания – напряжение источника питания, у меня 12 В.
  • Uключей – падение напряжения на открытых ключах драйвера. Для L298 это сумма падений на верхнем (Source Saturation Voltage) и нижнем ключах (Sink Saturation Voltage). Из справочных данных определяем, что на ключах драйвера L298N падает 2-2,5 В.
  • Rограничительный – сопротивление ограничительных резисторов. В моей схеме 10 Ом.
  • Rобмотки – сопротивление обмоток двигателя. У двигателя FL42STH47-1684 сопротивление 1,65 Ом.

В результате для моей схемы ток фазы будет:

Iфазы = (12 – 2) / (10 + 1,65) = 0,86 А.

На ограничительных резисторах может выделяться значительная мощность. В моей схеме 0,86 * 0,86 * 10 = 7,4 Вт. Я использовал резисторы мощностью 10 Вт.

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

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

Двигатель с 4 выводами.

Схема 4 вывода
Самая распространенная схема.

Двигатель с 6 выводами.

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

Двигатель с 8 выводами, последовательное соединение обмоток.

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

Двигатель с 8 выводами, параллельное соединение обмоток.

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

 

Проверка работы схемы.

Мой вариант схемы в собранном виде выглядит так.

Вид системы

В этом уроке программы писать не будем. Все программы из уроков 28, 29, 31, 32 должны работать без изменений. Только обратите внимание на последовательность подключения управляющих сигналов модуля L298N к выводам платы Ардуино. Выводы фаз A,B,C,D для униполярного двигателя соответствуют управляющим выводам IN1, IN3, IN2, IN4 модуля L298N.

Сначала я загрузил в плату Ардуино программу драйвера с управлением от компьютера по протоколу AT команд и проверил работу с программой верхнего уровня StepMotor. Резидентную программу (для платы Ардуино) и программу верхнего уровня (для компьютера) можно взять из урока 31.

Окно программы StepMotor

Все работает. Скорость вращения моего привода, включенного по такой схеме,  достигает 150 оборотов в минуту. Униполярный двигатель FL57STH76-1006 в предыдущих уроках вращался со скоростью не более 60 оборотов в минуту. Увеличение скорости вращения двигателя в 2,5 раза связано, прежде всего, с большей скоростью нарастания токов в обмотках. Происходит это  из-за меньшей индуктивности обмоток и применения схемы с ограничительными резисторами. Для убедительности я рассчитаю скорость нарастания тока для обоих приводов.

Для двигателя из предыдущих уроков (FL57STH76-1006):

  • индуктивность обмотки 14 мГн;
  • при питании 12В ток в обмотке достигает значения 1 А за время
    T = I * L / U = 1 А  * 14 мГн / 12 В = 1,2 мс.

Для двигателя, который я использовал в этом уроке (FL42STH47-1684):

  • индуктивность обмотки 3,2 мГн;
  • при питании 12В ток в обмотке достигает значения 1 А за время
    T = I * L / U = 1 А  * 3,2 мГн / 12 В = 0,3 мс.

Отсюда и увеличение скорости вращения. Конечно, повлияло еще:

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

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

Дальше я проверил работу следящего электропривода с новым двигателем. Резидентная программа платы Ардуино осталась прежней. А для управления от компьютера я использовал программу Tracker из урока 32.

Окно программы Tracker для следящего привода

Следящая система стала работать на много быстрее. Я снял короткий ролик работы следящего электропривода в шаговом и полу шаговом режимах.

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

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

 

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

 

Предыдущий урок     Список уроков     Следующий урок

1

Автор публикации

не в сети 21 час

Эдуард

280
Комментарии: 1936Публикации: 197Регистрация: 13-12-2015

10 комментариев на «Урок 33. Биполярный шаговый двигатель в системе Ардуино.»

  1. Здравствуйте, Эдуард!
    Всегда с большим интересом читаю Ваши уроки. Все ясно и понятно. У меня есть к Вам вопрос по поводу блока питания для шаговика 17HS4401.
    1. По паспорту ток 1,7А и сопротивление обмотки 1,5 Ом. Тогда мощность в обмотке 1,7^2*1,5=4,335 Вт. Следовательно мощность двигателя 2*4,335=8,67 Вт. У меня 4 двигателя, следовательно блока питания на 24 В и 10А (240 Вт) хватит с большим запасом.
    С другой стороны.
    2. Ток одной обмотки 1,7А (или всего двигателя?), тогда ток двигателя 3,4А, а четырех двигателей 13,6 А. Т.е. блока питания в 10 А явно недостаточно. И нужно минимум на 15 А.
    Подскажите какое рассуждение верное.
    Заранее большое спасибо.

    0
    • Здравствуйте! Все зависит от того, какой драйвер вы используете.

      Если используется STEP/DIR драйвер в котором ограничение тока происходит за счет ШИМ, то верно первое рассуждение. Надо только запас на КПД сделать.

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

      0
  2. Очень хорошие уроки
    Спасибо
    есть вопрос
    Имеется драйвер биполярного шагового двигателя НА13421
    http://www.alldatasheetru.com/datasheet-pdf/pdf/87211/HITACHI/HA13421A.html
    почемуто у него всего два вывода для управления обмотками
    по одному на каждую обмотку
    вывод power save сидит на земле.
    как можно управлять им из ардуино?

    0
    • Здравствуйте!
      Я этот драйвер не применял. Судя по документации, это мостовой драйвер для биполярных двигателей. Логика управления плечами моста другая сведена к двум сигналам. Посмотрите в документации, там есть диаграмма.

      0
  3. Эдуард, Доброго времени суток.
    Прочитал Ваши уроки, очень понравилось изложение. Спасибо.
    Есть над чем подумать, есть что почитать когда возникают вопросы.
    Есть небольшой вопрос на счёт использования драйверов ​DRV8825 и A4988 для управления биполярными (4х выводными ) ШД. Принцип управления у них несколько другой. Можно перемычками выбрать тип шага(режим) , а для вращения используется 2а пина — один тактовый другой переключает направление.(пока не разобрался с режимом удержания и как его отключать) . Вопрос — можно ли управление этим драйвером связать с Вашей библиотекой управления ШД?

    0
      • Спасибо за быстрый ответ.
        Но я похоже чего то не понимаю, дело в том, что для
        ​DRV8825 нужно всего два управляющих сигнала -тактовый и сигнал направления. В Вашей библиотеке реверс включается изменением знака в количестве шагов, что приводит к изменению порядка переключения фаз. В DRV8825 для реверса необходимо менять уровень сигнала на отдельном входе. Т.е. если прописать один пин для формирования тактовой частоты и подключить его ко входу DRV8825 то двигатель закрутится(причём в пошаговом режиме будет деление на 4), а как в этом случае менять направление вращения? нужен ещё один пин , независимый от фазных выходов. я правильно понимаю или в чём то ошибаюсь ?

        0
          • О, я пропустил, перечитал, спасибо буду разбираться.
            Спасибо ещё раз за цикл статей — очень полезный материал, в деле автоматизации.

            0

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Нажимая кнопку "Отправить" Вы даёте свое согласие на обработку введенной персональной информации в соответствии с Федеральным Законом №152-ФЗ от 27.07.2006 "О персональных данных".