RoboZone.SU
STEP/DIR контроллер униполярного шагового двигателя на базе PIC16F628
Представляем краткое описание, схему и печатную плату контроллера униполярного шагового двигателя на основе микроконтроллера PIC16F628. Контроллер поддерживает управляющие сигналы STEP, DIR и ENABLE. Схема и прошивка данного контроллера была любезно предоставлена Регнер Сергеем, представителем фирмы «Бинар» (г. Камышин). Печатная плата контроллера была разработана нами.
Особенности контроллера униполярного двигателя PIC BINAR CNC 1.5:
Ограничение тока фаз осуществляется с помощью подстроечного резистора R12.
Регулировка ограничения тока в режиме удержания осуществляется подстроечным резистором R13 и настраивается относительно рабочего тока. Программа контроллера переходит в режим «удержание» автоматически при отсутствии сигнала STEP – это снижает потребление энергии и уменьшает нагрев двигателя.
Сигнал ENABLE управляется низким логическим уровнем –по умолчанию контроллер включен постоянно и использование данного сигнала не обязательно.
Режимы работы «шаг» и «полушаг» переключаются перемычкой, при изменении режимов работы необходим перезапуск контроллера.
Силовые MOSFET транзисторы могут быть выбраны под конкретные требования с подходящей цоколевкой (если устанавливаются более мощные транзисторы и планируется использование двигателей с большим током фаз, необходима установка более мощных резисторов R24, R25) В текущем варианте использованы распространенные транзисторы IRF540. Рекомендуются к использованию IRLZ44N.
Резисторы R24 и R25 имеют максимальную мощность 3W.
Данная информация поставляется «как есть» — претензии не принимаются 😉
Схема контроллера в формате sPlan 6.0, разводка печатной платы под ЛУТ в формате Sprint-Layout 4.0 и файл прошивки в формате *.hex вы можете скачать ниже.
Вы не можете скачивать файлы с нашего сервера
Тема закрыта для комментариев
По всем вопросам обращаться через службу личных сообщений
ОБОРУДОВАНИЕ
ТЕХНОЛОГИИ
РАЗРАБОТКИ
Блог технической поддержки моих разработок
Урок 34. STEP/DIR драйверы шаговых двигателей. Основные понятия. Протокол STEP/DIR.
В статье рассказываю о STEP/DIR драйверах шаговых двигателей, о преимуществах применения их, об интерфейсе управления STEP/DIR.
В предыдущих уроках для подключения шаговых двигателей к плате Ардуино мы использовали простые драйверы-ключи, которые по сигналам от микроконтроллера коммутировали обмотки двигателей. Вся логика работы была реализована в программе микроконтроллера.
Достоинство такого решения очевидно – простота и минимум аппаратных средств. Всего четыре транзисторных ключа для униполярных приводов или микросхема L298N для биполярных шаговых двигателей достаточно для управления ими. Да и программа коммутации фаз несложная, занимает совсем не много ресурсов микроконтроллера. Альтернативным вариантом управления шаговыми двигателями является использование STEP/DIR драйверов.
STEP/DIR драйвер это аппаратный модуль управления шаговым двигателем, использующий для связи с микроконтроллером протокол STEP/DIR.
Кроме того STEP/DIR драйверы обеспечивают широкий набор дополнительных функциональных возможностей:
- стабилизацию фазных токов;
- микро шаговый режим;
- защиту выходных ключей от замыкания нагрузки;
- сложную коммутацию для ускорения спада токов в обмотках;
- защиту от перегрева;
- оптоизоляцию сигналов управления.
Стабилизация тока фазных обмоток.
Главный недостаток простых драйверов шаговых двигателей – отсутствие стабилизации тока обмоток.
В предыдущих уроках я уже затронул эту тему. Итак, как мы подключали обмотки к источнику питания. По самой простой схеме – через транзисторные ключи.
Какие недостатки этой схемы?
Постоянный ток через обмотку при замкнутом ключе определяется по закону Ома:
Iфазы = ( Uпитания — Uключей )/ Rобмотки
Ток фазы определяется как отношение напряжения питания к активному сопротивлению обмотки. Т.е. какой попало двигатель подключать нельзя. Надо подбирать привод по сопротивлению обмоток или менять напряжение питания.
В предыдущем уроке я использовал двигатель с сопротивлением обмотки 1,65 Ом. Если бы я его подключил к источнику питания 12 В, то ток был бы свыше 7 А. Двигатель просто сгорит. Для обеспечения требуемого тока фазы 1 А, напряжения источника питания должно быть 1,65 Ом * 1 А = 1,65 В. Где взять такой источник питания я не знаю. К тому же на открытых ключах падает напряжение сравнимое с напряжение на обмотке, которое тоже надо учесть в расчетах. А оно не стабильно и строго не определено. Никаких приемлемых вариантов не видно.
Для подключения такого двигателя я использовал ограничительные резисторы, включенные последовательно с обмотками.
Формула вычисления тока фазы выглядит так:
Iфазы = ( Uпитания — Uключей )/ ( Rобмотки + Rограничительный )
Но при такой схеме на ограничительных резисторах может выделяться значительная мощность, часто превышающая мощность, потребляемую двигателем. На маломощных двигателях такой вариант более или менее приемлем. При увеличении мощности двигателя становится сомнительным. В схеме из предыдущего урока только на одном ограничительном резисторе выделялось до 7,4 Вт.
Iфазы =( 12 В – 2 В ) / (1,65 + 10 ) = 0,86 А
Pограничительная = I 2 * R = 0,86 * 0,86 * 10 = 7,4 Вт.
И это для тока фазы 0,86 А и только на одном резисторе. Даже на этом двигателе практически не допустимые потери.
Простые драйверы можно использовать с ограниченным числом типов двигателей, или с двигателями небольших мощностей.
Второй недостаток простых драйверов-ключей связан со скоростью нарастания тока в обмотках двигателя. В уроках 28 и 29 я подключал униполярный двигатель FL57STH76-1006 через транзисторные ключи к источнику питания 12 В. Сопротивление обмоток двигателя 8,6 Ом, индуктивность 14 мГн.
Давайте посмотрим, какую форму будет иметь ток фазы для скорости вращения 1 оборот в секунду. Такая скорость соответствует периоду переключения фаз 1 сек / 400 шагов на оборот = 2,5 мс.
Я промоделировал схему в пакете SwCAD.
На диаграмме видно, как задерживается рост тока через обмотку (синий цвет) по отношению к напряжению на обмотке (зеленый цвет). В предыдущем уроке я рассчитал, что для этого двигателя даже при нулевом сопротивлении обмоток ток фазы достигнет значения 1 А за время
T = I * L / U = 1 А * 14 мГн / 12 В = 1,2 мс.
И все эти расчеты для скорости вращения 1 оборот в сек. У меня на практике и получилась максимальная скорость 1 оборот в сек. Дальше двигатель выходит из синхронизма. Не хватает крутящего момента.
Выход – стабилизировать ток фазы. Стабилизатор тока это схема, меняющая напряжение на нагрузке, стремясь обеспечить заданный ток. Т.е. напряжение на нагрузке зависит от сопротивления. Если сопротивление увеличивается, то для того чтобы обеспечить заданный ток стабилизатор тока увеличивает напряжение. При уменьшении сопротивления нагрузки напряжение снижается. Естественно стабилизатор тока работает в ограниченном диапазоне напряжений. При невозможности обеспечить требуемый ток он формирует на нагрузке максимально возможное напряжение.
Например, если стабилизатор тока питается от источника 12 В, необходимо стабилизировать ток 1 А, а подключили нагрузку сопротивление 1000 Ом, то на нагрузке будет 12 В. Хотя теоретически стабилизатор тока должен обеспечить напряжение 1000 В.
Для шаговых двигателей это идеальный закон управления токами обмоток.
- Можно подключать двигатель с любым сопротивлением обмоток. Ток будет ограничен автоматически.
- Обеспечивается максимально возможная скорость нарастания тока в обмотках. В начале импульса фазы стабилизатор тока выдаст максимальное напряжение на обмотке, а при увеличении тока оно будет снижаться до требуемого значения.
Естественно речь идет об импульсных стабилизаторах, имеющих высокий КПД. Силовая часть стабилизаторов тока в обмотках двигателей практически состоит только из ключей. Роль сглаживающего фильтра выполняет индуктивность обмотки.
Реализовать стабилизацию тока на управляющем микроконтроллере довольно проблематично. К примеру, при скорости 10 оборотов в сек, и числе шагов двигателя на полный оборот равном 400, длительность импульса коммутации фаз равна 250 мкс. За такое время ШИМ регулятор, реализованный в программе микроконтроллера, не успеет выполнить функции стабилизации тока. Примерно каждые 10 мкс необходимо измерить ток фазы и вычислить новое значение ЩИМ. А надо реализовать два отдельных регулятора для разных обмоток. Да и скорости вращения бывают выше.
Поэтому функция стабилизации тока обычно реализуется на отдельном аппаратном драйвере. Даже в этом случае, как правило, используется не ШИМ регулятор, а синхронный релейный регулятор. Релейный регулятор открывает ключи и с помощью аналогового компаратора следит за током. При достижении заданного значения тока ключи закрываются. При снижении тока ниже порога опять открываются. Таким образом, в обмотке создается ток с заданным значением. Пульсации сглаживаются индуктивностью обмотки. Релейный регулятор прост в реализации и, в отличие от ШИМ регулятора, обладает высоким быстродействием.
Кроме того стабилизация тока фаз необходима при реализации микро шагового режима управления двигателем. Для установки ротора в определенное положение между фазными полюсами двигателя необходимо обеспечить заданную пропорцию токов обмоток. В статье о драйвере TB6560 можете посмотреть диаграммы соотношения токов фаз для микро шагового режима с 16 градациями. Точность стабилизации тока должна быть достаточно высокая.
Интерфейс STEP/DIR.
Де факто это основной интерфейс управления аппаратными драйверами шаговых двигателей. Для связи с микроконтроллером используются три сигнала.
STEP – шаг. Каждый импульс инициирует поворот двигателя на один шаг. Если драйвер работает в полу шаговом или микро шаговом режимах, то поворот происходит не на физический шаг двигателя, а на часть шага, определяемого режимом. Для полу шагового режима это половина физического шага, для микро шагового – микро шаг. Драйверы реагируют на фронт импульса, как правило, отрицательный.
Частота следования импульсов сигнала STEP определяет скорость вращения двигателя. Естественно существуют ограничения на максимальную частоту импульсов сигнала STEP и на минимальную длительность импульса. Драйвер должен успеть принять, выделить и обработать каждый импульс. Реальный двигатель добавит свои ограничения на скорость вращения, связанные с механическими параметрами, токами обмоток, числом полюсов, механическими нагрузками и т.п.
DIR – сигнал задающий направления вращения двигателя. Как правило, при высоком уровне сигнала двигатель вращается по часовой стрелке. Сигнал DIR должен быть сформирован до импульса STEP.
ENABLE – сигнал разрешения работы драйвера. Запрещающий уровень сигнала снимает напряжение на выходе драйвера. Логика работы устройства не меняется. Сигнал используется для остановки двигателя в режиме без тока удержания. Положение ротора не фиксируется. Разрешающий уровень сигнала ENABLE – низкий, т.е. отсутствие напряжения. Если сигнал не используется, то его можно просто не подключать, бросить входы драйвера ”в воздухе”.
Как правило, все сигналы STEP/DIR драйверов имеют гальваническую развязку, выполненную на оптоэлектронных компонентах. Коммутация обмоток двигателей вызывает значительные импульсные помехи в цепях питания и приводит к смещению уровней общих (земляных) проводов всех электронных модулей системы. В таких условиях гальваническая развязка сигналов управления абсолютно необходима.
Преимущества применения STEP/DIR драйверов.
Я обобщу положительные качества STEP/DIR драйверов.
- Стабилизация тока фаз и как следствие:
- Можно подключать двигатели с любым сопротивлением обмоток.
- Высокая скорость нарастания тока в обмотках, что позволяет увеличить скорость вращения.
- Микро шаговый режим управления. Позволяет реализовать системы с высокой точностью позиционирования, используя двигатели с ограниченным числом физических шагов. В следующем уроке я свой двигатель, имеющий 400 шагов на оборот, превращу в двигатель с 6400 шагами на полный оборот.
- Защита выходных ключей от замыкания нагрузки;
- Оптимальная коммутация выходных ключей для ускорения спада токов в обмотках. Позволяет увеличить скорость вращения и снизить вибрации.
- Защита от перегрева.
- Опоизоляция управляющих сигналов. Обеспечивает высокую помехозащищенность сиситемы.
В качестве примера STEP/DIR драйвера могу привести модуль TB6560-V2.
Это один из самых недорогих STEP/DIR драйверов. На момент написания статьи (октябрь 2016) цена модуля составляла 500-700 руб. Тем не менее, он обеспечивает все перечисленные в статье функции и режимы.
В следующем уроке будем подключать этот драйвер к плате Ардуино. Я представлю библиотеку управления STEP/DIR драйверами.
Немного об управляющих сигналах в системах с ЧПУ. Протокол STEP/DIR.
Наиболее распространенным протоколом на текущий момент является «шаг-направление» (варианты названия: STEP/DIR, PULSE/DIR, PUL/DIR, CP/DIR). Некоторые hi-end станки используют собственные проприетарные цифровые или аналоговые протоколы, но зачастую это все равно вариации на тему формата STEP/DIR. Данные сигналы генерируются контроллером(в роли которого часто выступает компьютер) при выполнении управляющей программы на высокоуровневом языке (обычно G-код).
Название протокола STEP/DIR говорит само за себя — привод с ЧПУ получает команду из двух частей.
Одна часть предписывает приводу сделать шаг, вторая часть говорит, в каком направлении шаг должен быть сделан. На физическом уровне сигналы представляют собой прямоугольные импульсы амплитудой 5 В, которые, например, могут генерироваться компьютером на контактах LPT-порта(часто такие сигналы называюют ТТЛ-совместимыми сигналами). Т.е. управляющие сигналы для привода выглядят как последовательность чередующихся уровней напряжения 0 В и +5В, представляющих логические 0 и 1 соответственно. Сигнал такого рода явлется разновидностью ШИМ-сигнала, в котором ширина импульса интерпретируется драйвером как 0 или 1. Поскольку все драйверы и контроллеры разные, очень важно понимать как работает протокол STEP/DIR.
Рассмотрим на примере популярного драйвера шагового двигателя Geckodrive G201.
В руководстве сказано, что минимальная длительность логической 1 канала STEP — 4мкс, а логического 0 — 0.5 мкс. Посмотрим на картинку снизу: там изображен сигнал, соответствующий минимальным требованиям. Аналогичные требования указаны и для сигнала направления, только минимальная длительность уже будет 1 мкс. Если входящие сигналы будут удовлетворять указанным требованиям, то при поступлении каждой логической единицы по каналу STEP драйвер распознает её и сделает шаг, тогда как состояние канала DIR в этот момент задаст направление шага (1 — по, 0 — против часовой стрелки, или наоборот).
Сигналы «шаг» и «направление» посылаются одновременно. Если движения в настоящий момент нет, на канал STEP будет подаваться 0, а DIR обычно меняет уровень сигнала только при смене направления. Почему знать это важно?
Дело в том, что у множества дешевых моделей безымянных производителей заявлены такие же характеристики, что и у hi-end моделей, кроме максимальной входной частоты. Драйвер Geckodrive G201 способен обработать входящие сигналы STEP с частотой 200 кГц, что является весьма неплохим показателем. Во многих случаях, если используется большое деление шага, частоты STEP могут быть очень высокими, и надо понимать, какой драйвер сможет их отработать, а какой спасует гораздо раньше.
Конечно, скорее всего, Вам не понадобятся глубокие знания о протоколах управления приводами с ЧПУ, если только вы не планируете собрать драйверы собственноручно, но понимание принципов пригодится при решении разнообразных проблем со станком.