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

 

Рис. 22. Различные схемы ключевой стабилизации тока.

Управляя величиной Uref можно регулировать ток фазы, например, увеличивать его при разгоне и торможении и снижать при работе на постоянной скорости. Можно также задавать его с помощью ЦАП в форме синусоиды, реализуя таким образом микрошаговый режим. Такой способ управления ключевым транзистором  обеспечивает постоянную величину пульсаций тока в обмотке, которая определяется гистерезисом компаратора. Однако частота переключений будет зависеть от скорости изменения тока в обмотке, в частности, от ее индуктивности и от напряжения питания. Кроме того, две такие схемы, питающие разные фазы двигателя, не могут быть засинхронизированы что может явится причиной дополнительных помех.

От указанных недостатков свободна схема с постоянной частотой переключения (рис. 22б). Ключевым транзистором управляет триггер, который устанавливается специальным генератором. Когда триггер устанавливается, ключевой транзистор открывается и ток фазы начинает расти. Вместе с ним растет и падение напряжения на датчике тока. Когда оно достигает опорного напряжения, компаратор переключается, сбрасывая триггер. Ключевой транзистор при этом выключается и ток фазы начинает спадать до тех пор, пока триггер не будет вновь установлен генератором. Такая схема обеспечивает постоянную частоту коммутации, однако величина пульсаций тока не будет постоянной. Частота генератора обычно выбирается не менее 20кГц, чтобы двигатель не создавал слышимого звука. В то же время слишком высокая частота переключений может вызвать повышенные потери в сердечнике двигателя и потери на переключениях транзисторов. Хотя потери в сердечнике с повышением частоты растут не так быстро ввиду уменьшения амплитуды пульсаций тока с ростом частоты. Пульсации порядка 10% от среднего значения тока обычно не вызывают проблем с потерями.

Подобная схема реализована внутри микросхемы L297 фирмы SGS-Thomson, применение которой сводит к минимуму количество внешних компонентов. Ключевое регулирование реализуют и другие специализированные микросхемы.

 

Рис. 23. Форма тока в обмотках двигателя для различных способов питания.

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

Быстрый и медленный спад тока

На рис. 19 были показаны конфигурации ключей в H-мосту для включения разных направлений тока в обмотке. Для выключения тока можно выключить все ключи H-моста или же оставить один ключ включенным (рис. 24). Эти две ситуации различаются по скорости спада тока в обмотке. После отключения индуктивности от источника питания ток не может мгновено прекратится. Возникает ЭДС самоиндукции, имеющая противоположное источнику питания направление. При использовании транзисторов в качестве ключей необходимо использовать шунтирующие диоды, чтобы обеспечить проводимость в обе стороны. Скорость изменения тока в индуктивности пропорциональна приложенному напряжению. Это справедливо как для нарастания тока, так и для его спада. Только в первом случае источником энергии является источник питания, а во втором сама индуктивность отдает запасенную энергию. Этот процесс может происходить при разных условиях.

 

Рис. 24. Медленный и быстрый спад тока.

На рис. 24а показано состояние ключей H-моста, когда обмотка включена. Включены ключи A и D, направление тока показано стрелкой. На рис. 24б обмотка выключена, но ключ A включен. ЭДС самоиндукции закорачивается через этот ключ и диод VD3. В это время на выводах обмотки будет небольшое напряжение, равное прямому падению на диоде плюс падение на ключе (напряжение насыщения транзистора). Так как напряжение на выводах обмотки мало, малой будет и скорость изменения тока. Соответственно малой будет и скорость спадания магнитного поля. А это значит, еще некоторое время статор двигателя будет создавать магнитное поле, которого в это время быть не должно. На вращающийся ротор это поле будет оказывать тормозящее воздействие. При высоких скоростях работы двигателя этот эффект может серъезно помешать нормальной работе двигателя. Быстрое спадание тока при выключении является очень важным для высокоскоростных контроллеров, работающих в полушаговом режиме.

Возможен и другой способ отключения тока обмотки, когда размыкаются все ключи H-моста (рис 24в). При этом ЭДС самоиндукции закорачивается чрез диоды VD2, VD3 на источник питания. Это значит, что во время спада тока на обмотке будет напряжение, равное сумме напряжения источника питания и прямого падения на двух диодах. По сравнению с первым случаем, это значительно большее напряжение. Соответственно, более быстрым будет спад тока и магнитного поля. Такое решение, использующее напряжение источника питания для ускорения спада тока является наиболее простым, но не единственным. Нужно сказать, что в ряде случаев на источнике питания могут появится выбросы, для подавления которых понадобятся специальные демферные цепочки. Безразлично, каким способом обеспечивается на обмотке повышенное напряжение во время спада тока. Для этого можно применить стабилитроны или варисторы. Однако на этих элементах будет рассеиваться дополнительная мощность, которая в первом случае отдавалась обратно в источник питания.

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

 

Рис. 25. Пример реализации быстрого спада тока для униполярного двигателя.

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

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

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

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

Практическая реализация драйверов

Драйвер шагового двигателя должен решать две основные задачи: это формирование необходимых временных последовательностей сигналов и обеспечение необходимого тока в обмотках. В интегральных реализациях иногда эти задачи выполняются разными микросхемами. Примером может служить комплект микросхем L297 и L298 фирмы SGS-Thomson. Микросхема L297 содержит логику формирования временных последовательностей, а L298 представляет собой мощный сдвоенный H-мост. К сожалению, существует некоторая путаница в терминологии относительно подобных микросхем. Понятие «драйвер» часто применяют ко многим микросхемам, даже если их функции сильно различаются. Иногода микросхемы логики называют «трансляторами». В этой статье далее будет использоваться следующая терминология: «контроллер» - микросхема, ответственная за формирование временных последовательностей; «драйвер» - мощная схема питания обмоток двигателя. Однако термины «драйвер» и «контроллер» могут также обозначать законченное устройство управления шаговым двигателем. Необходимо отметить, что в последнее время все чаще контроллер и драйвер объединяются в одной микросхеме.

На практике можно обойтись и без специализированных микросхем. Например, все функции контроллера можно реализовать программно, а в качестве драйвера применить набор дискретных транзисторов. Однако при этом микроконтроллер будет сильно загружен, а схема драйвера может получится громоздкой. Несмотря на это, в некоторых случаях такое решение будет экономически выгодным.
Самый простой драйвер требуется для управления обмотками униполярного двигателя. Для этого подходят простейшие ключи, в качестве которых могут быть использованы биполярные или полевые транзисторы. Достаточно эффективны мощные МОП-транзисторы, управляемые логическим уровнем, такие как IRLZ34, IRLZ44, IRL540. У них сопротивление в открытом состоянии менее 0.1ом и допустимый ток порядка 30А. Эти транзисторы имеют отечественные аналоги КП723Г, КП727В и КП746Г соответственно. Существуют также специальные микросхемы, которые содержат внутри несколько мощных транзисторных ключей. Примером может служить микросхема ULN2003 фирмы Allegro (наш аналог К1109КТ23), которая содержит 7 ключей с максимальным током 0.5 А. Принципиальная схема одной ячейки этой микросхемы приведена на рис. 26.

 

Рис. 26. Принципиальная схема одной ячейки микросхемы ULN2003.

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

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

 

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

Такой H-мост управляется с помощью двух сигналов, поэтому он не позволяет обеспечить всех возможных комбинаций. Обмотка запитана, когда уровни на входах разные и закорочена, когда уровни одинаковые. Это позволяет получить только медленный спад тока (динамическое торможение). Мостовые драйверы в интегральном исполнении выпускаются многими фирмами. Примером могут служить L293 (КР1128КТ3А) и L298 фирмы SGS-Thomson.

До недавнего времени большое количество микросхем для управления шаговыми двигателя выпускала фирма Ericsson. Однако 11 июня 1999 года она передала производство своих микросхем индустриального назначения фирме New Japan Radio Company (New JRC). При этом обозначения микросхем помянялись с PBLxxxx на NJMxxxx.

Как простые ключи, так и H-мосты могут составлять часть ключевого стабилизатора тока. Схема управления ключами может быть выполнена на дискретных компонентах или в виде специализированной микросхемы. Довольно популярной микросхемой, реализующей ШИМ-стабилизацию тока, является L297 фирмы SGS-Thomson. Совместно с микросхемой мостового драйвера L293 или L298 они образуют законченную систему управления для шагового двигателя (рис. 28).

width=710><br><b><font color=red>Рисунок не помещается на странице и поэтому сжат!</font><br>Для того, чтобы просмотреть его полностью, щелкните <a href=/files/img/articles/rebooting/28.gif target=_blank>здесь</a>.</b><br>

Рис. 28. Типовая схема включения микросхем L297 и L298N.

Микросхема L297 сильно разгружает управляющий микроконтроллер, так как от него требуется только тактовая частота CLOCK (частота повторения шагов) и несколько статических сигналов: DIRECTION – направление (сигнал внутренне синхронизирован, переключать можно в любой момент), HALF/FULL – полушаговый/полношаговый режим, RESET – устанавливает фазы в исходное состояние (ABCD = 0101), ENABLE – разрешение работы микросхемы, V ref – опорное напряжение, которое задает пиковую величину тока при ШИМ-регулировании. Кроме того, имеется несколько дополнительных сигналов. Сигнал CONTROL задает режим работы ШИМ-регулятора. При его низком уровне ШИМ-регулирование происходит по выходам INH1, INH2, а при высоком – по выходам ABCD. SYNC – выход внутреннего тактового генератора ШИМ. Он служит для синхронизации работы нескольких микросхем. Также может быть использован как вход при тактировании от внешнего генератора. HOME – сигнал начального положения (ABCD = 0101). Он используется для синхронизации переключения режимов HALF/FULL. В зависимости от момента перехода в полношаговый режим микросхема может работать в режиме с одной включенной фазой или с двумя включенными фазами.

Ключевое регулирование реализуют и многие другие микросхемы.  Некоторые микросхемы обладают теми или иными особенностями, например драйвер LMD18T245 фирмы National Semiconductor не требует применения внешнего датчика тока, так как он реализован внутри на основе одной ячейки ключевого МОП-транзистора.

Некоторые микросхемы предназначены специально для работы в микрошаговом режиме. Примером может служить микросхема A3955 фирмы Allegro. Она имеет встроенный 3-битный нелинейный ЦАП для задания изменяющегося по синусоидальному закону тока фазы.

 

Рис. 29. Ток и вектор смещения ротора.

Смещение ротора в зависимомти от токов фаз, которые сформированы этим 3-битным ЦАПом, показано на рис. 29. Микросхема A3972 имеет встроенный 6-битный линейный ЦАП.

Выбор типа драйвера

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

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

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

Практический пример контроллера шагового двигателя на основе микроконтроллера семейства AVR

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

Предлагаемый контроллер предназначен для управления униполярным шаговым двигателем со средним током каждой обмотки до 2.5А. Контроллер может использоваться с распространенными шаговыми двигателями типа ДШИ-200-1, -2, -3. Его также можно использовать и для управления менее мощными двигателями, например теми, что применялись для позиционирования головок в 5-дюймовых дисководах. При этом схему можно упростить, отказавшись от параллельного включения ключевых транзисторов и от ключевой стабилизации тока, так как для маломощных двигателей достаточно простого L/R-питания.

width=710><br><b><font color=red>Рисунок не помещается на странице и поэтому сжат!</font><br>Для того, чтобы просмотреть его полностью, щелкните <a href="/files/img/articles/rebooting/30.gif" target=_blank>здесь</a>.</b><br>

Рис. 30. Принципиальная схема контроллера шагового двигателя.

Основой устройства (рис. 30) является микроконтроллер U1 типа AT90S2313 фирмы Atmel. Сигналы управления обмотками двигателя формируются на портах PB4 – PB7 программно. Для коммутации обмоток используются по два включенных параллельно полевых транзистора типа КП505А, всего 8 транзисторов (VT1 – VT8). Эти транзисторы имеют корпус TO-92 и могут коммутировать ток до 1.4А, сопротивление канала составляет около 0.3 ома. Для того, чтобы транзисторы оставались закрытыми во время действия сигнала «сброс» микроконтроллера (порты в это время находятся в высокоимпедансном состоянии), между затворами и истоками включены резисторы R11 – R14. Для ограничения тока перезарядки емкости затворов установлены резисторы R6 – R9. Данный контроллер не претендует на высокие скоростные характеристики, поэтому вполне устраивает медленный спад тока фаз, который обеспечивается шунтированием обмоток двигателя диодами VD2 – VD5. Для подключения шагового двигателя имеется 8-контактный разъем XP3, который позволяет подключить двигатель, имеющий два отдельных вывода от каждой обмотки (как, например, ДШИ-200). Для двигателей с внутренним соединением обмоток один или два общих контакта разъема останутся свободными.

Необходимо отметить, что контроллер может быть использован для управления двигателем с большим средним током фаз. Для этого только необходимо заменить транзисторы VT1 – VT8 и диоды VD2 – VD5 более мощными. Причем в этом случае параллельное включение транзисторов можно не использовать. Наиболее подходящими являются МОП-транзисторы, управляемые логическим уровнем. Например, это КП723Г, КП727В и другие.

Стабилизация тока осуществляется с помощью ШИМ, которая тоже реализована программно. Для этого используются два датчика тока R15 и R16. Сигналы, снятые с датчиков тока, через ФНЧ R17C8 и R18C9 поступают на входы компараторов U3A и U3B. ФНЧ предотвращают ложные срабатывания компараторов вследствие действия помех. На второй вход каждого компаратора должно быть подано опорное напряжение, которое и определяет пиковый ток в обмотках двигателя. Это напряжение формируется микроконтроллером с помощью встроенного таймера, работающего в режиме 8-битной ШИМ. Для фильтрации сигнала ШИМ используется двухзвенный ФНЧ R19C10R22C11. Одновременно резисторы R19, R22 и R23 образуют делитель, который задает масштаб регулировки токов фаз. В данном случае максимальный пиковый ток, соответствующий коду 255, выбран 5.11А, что соответствует напряжению 0.511В на датчиках тока. Учитывая тот факт, что постоянная составляющая на выходе ШИМ меняется от 0 до 5В, необходимый коэффициент деления равен примерно 9.7. Выходы компараторов подключены к входам прерываний микроконтроллера INT0 и INT1.

Для управления работой двигателя имеются два логических входа: FWD (вперед) и REW (назад), подключенных к разъему XP1. При подаче НИЗКОГО логического уровня на один из этих входов, двигатель начинает вращаться на заданной минимальной скорости, постепенно разгоняется с заданным постоянным ускорением. Разгон завершается, когда двигатель достигает заданной рабочей скорости. Если подается команда изменения направления вращения, двигатель с тем же ускорением тормозится, затем реверсируется и снова разгоняется.

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

Командные входы и входы концевых выключателей защищены от перенапряжений цепочками R1VD6, R2VD7, R3VD8 и R4VD9, состоящими из резистора и стабилитрона.

Питание микроконтроллера формируется с помощью микросхемы стабилизатора 78LR05, которая одновременно выполняет функции монитора питания. При понижении напряжения питания ниже установленного порога эта микросхема формирует для микроконтроллера сигнал «сброс». Питание на стабилизатор подается через диод VD1, который вместе с конденсатором C6 уменьшает пульсации, вызванные коммутациями относительно мощной нагрузки, которой является шаговый двигатель. Питание на плату подается через 4-контактный разъем XP4, контакты которого задублированы.

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

Главной задачей программы является формирование импульсных последовательностей для 4-х обмоток двигателя. Поскольку для этих последовательностей временные соотношения являются критичными, формирование выполняется в обработчике прерывания таймера 0. Можно сказать, основную работу программа делает именно в этом обработчике. Блок-схема обработчика приведена на рис. 31.

 

Рис. 31. Блок-схема обработчика прерывания таймера 0.

Несомненно, было бы удобнее использовать таймер 1, так как он 16-разрядный и способен вызывать периодические прерывания по совпадению с автоматическим обнулением. Однако он занят формированием с помощью ШИМ опорного напряжения для компараторов. Поэтому приходится перезагружать таймер 0 в прерывании, что требует некоторой корректировки загружаемой величины и вызывает некоторый джиттер, который, однако, на практике не мешает. В качестве основной временной базы выбран интервал 25мкс, который и формируется таймером. С такой дискретностью могут формироваться временные последовательности фаз, такой же период имеет и ШИМ стабилизации тока в фазах двигателя.

Для формирования периода повторения шагов используется программный 16-разрядный таймер STCNT. В отличие от таймера 0, его загрузочная величина не является константой, так как именно она определяет скорость вращения двигателя. Таким образом, переключение фаз происходит только при переполнении программного таймера.

Последовательность чередования фаз задана таблично. В памяти программ микроконтроллера имеются три разных таблицы: для полношагового режима без перекрытия фаз, полношагового с перекрытием и для полушагового режима. Все таблицы имеют одинаковую длину 8 байт. Нужная таблица в начале работы загружается в ОЗУ, что позволяет наиболее просто переходить между разными режимами работы двигателя. Выборка значений из таблицы происходит с помощью указателя PHASE, поэтому переключение направления вращения двигателя тоже осуществляется очень просто: для вращения вперед требуется инкрементировать указатель, а для вращения назад – декрементировать.

Самая «главная» переменная в программе – это 24-битная знаковая переменная VC, которая содержит значение текущей скорости. Знак этой переменной определяет направление вращения, а значение – частоту следования шагов. Нулевое значение этой переменной говорит о том, что двигатель остановлен. Программа в этом случае выключает ток всех фаз, хотя во многих приложениях в этой ситуации требуется оставить включенными текущие фазы и лишь несколько уменьшить их ток, обеспечив этим удержание положения двигателя. При необходимости такое изменение логики работы программы  сделать очень просто.

Таким образом, в случае переполнения программного таймера STCNT происходит анализ значения переменной VC, в случае положительного значения указатель PHASE инкрементируется, а в случае отрицательного – декрементируется. Затем из таблицы выбирается очередная комбинация фаз, которая выводится в порт. В случае нулевого значения VC указатель PHASE не изменяется, и в порт выводятся все нулевые значения.

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

Для осуществления ШИМ-стабилизации тока фазы должны периодически включаться, а затем, при достижении током заданного уровня, выключаться. Периодическое включение производится в прерывании таймера 0, для чего даже в случае отсутствия переполнения программного таймера STCNT в порт выводится текущая комбинация фаз. Происходит это с периодом 25мкс (что соответствует частоте ШИМ 40кГц). Выключением фаз управляют компараторы, выходы которых подключены к входам прерывания INT0 и INT1. Прерывания разрешаются после того, как ток фаз включается, и запрещаются сразу после переключения компараторов. Это исключает их повторную обработку. В обработчиках прерываний происходит только отключение соответствующих фаз (рис. 32).

 

Рис. 32. Блок-схема обработчика прерываний INT0 и INT1.

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

 

Рис. 33. Процесс ШИМ-стабилизации тока.

Нужно сказать, что аналоговая часть системы ШИМ-стабилизации тока фаз двигателя является довольно «капризной». Дело в том, что сигнал, снимаемый с датчика тока, содержит большое количество помех. Помехи возникают в основном в моменты коммутации обмоток двигателя, причем как «своей», так и «чужой» фазы. Для правильной работы схемы требуется корректная разводка печатной платы, особенно это касается земляных проводников. Возможно, придется подобрать номиналы ФНЧ на входе компаратора или даже ввести в компаратор небольшой гистерезис. Как уже отмечалось выше, при управлении маломощными двигателями от ШИМ-стабилизации тока можно вовсе отказаться, применив обычную L/R-схему питания обмоток. Для исключения ШИМ-стабилизации достаточно просто не подключать входы INT0 и INT1 микроконтроллера, естественно, при этом можно вообще не устанавливать компаратор и датчики тока.

В данной программе периодичность вычисления новых значений скорости и периода выбрана равной 15.625мс. Такое значение выбрано не случайно. Этот интервал составляет 1/64с, а главное, он содержит целое число периодов переполнения таймера 0 (25мкс). Удобно, если значения скорости и ускорения задаются в естественных единицах, т.е. в шагах в секунду и в шагах, деленных на секунду в квадрате. Для того чтобы иметь возможность в целочисленной арифметике вычислять мгновенную скорость 64 раза в секунду, нужно перейти к внутреннему представлению скорости, увеличенному в 64 раза. Умножение и деление на 64 сводится к обычным сдвигам и поэтому требует очень мало времени. Заданную периодичность вычислений обеспечивает еще один программный таймер URCNT, который декрементируется в прерывании таймера 0 (раз в 25мкс). Этот таймер всегда загружается постоянной величиной, что обеспечивает неизменный период его переполнений, равный 15.625мс. При переполнении этого таймера устанавливается битовый флаг UPD, который сигнализирует основной программе, что «пора-бы обновить значения скорости и периода».

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

 

Рис. 34. Блок-схема основного цикла программы.

Обновление значений скорости и периода следования шагов основная программа делает периодически, периодичность задается флагом UPD. Обновление программа делает на основе сравнения значений двух переменных: мгновенной скорости VC и требуемой скорости VR.

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

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

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

Затем происходит вычисление периода T (рис. 35).

 

Рис. 35. Блок-схема подпрограммы вычисления периода.

Вначале вычисляется модуль текущей скорости. Затем происходит ограничение минимальной скорости. Это ограничение необходимо по двум причинам. Во-первых, бесконечно малой скорости соответствует бесконечно большой период, что вызовет ошибку в вычислениях. Во-вторых, шаговые двигатели имеют довольно протяженную по скорости зону старта, поэтому нет необходимости стартовать на очень маленькой скорости, тем более что вращение на малых скоростях вызывает повышенный шум и вибрацию. Значение минимальной скорости VMIN должно выбираться исходя из конкретной задачи и типа двигателя. После ограничения минимальной скорости производится вычисление периода по формуле T = 2560000/|VC|. На первый взгляд формула не очевидна, но если учесть, что период необходимо получить в 25мкс-интервалах, а внутреннее представление VC – это умноженное на 64 ее истинное значение, то все становится на свои места. При вычислении T требуется операция беззнакового деления формата 24/24, которое AVR на тактовой частоте 10МГц делает примерно за 70мкс. Учитывая, что вычисления периода происходят не чаще, чем один раз в 15.625мс, загрузка процессора получается очень низкой. Основную загрузку производит прерывание таймера 0, да и оно в основном выполняется по короткой ветке (без переполнения STCNT) длительностью примерно 3мкс, что соответствует 12%-й загрузке процессора. Это означает, что имеются значительные резервы вычислительных ресурсов.

Печатная плата контроллера шагового двигателя приведена на рис. 36.

 

Рис. 36. Печатная плата контроллера шагового двигателя.

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

  • максимальная частота коммутации фаз 3 Кгц
  • разгон с постоянным ускорением
  • программируемое направление вращения
  • программируемое ускорение
  • программируемый средний ток обмоток
  • программируемый ток удержания
  • режим перемещения на N шагов
  • полушаговый режим
  • формирователь импульса привязки с программируемой задержкой
  • хранение основных параметров в энергонезависимой памяти
  • один внешний источник питания
  • управление по интерфейсу RS-232C или местное
  • адресация до 7 устройств на одном RS-232C