Введение Шаговые двигатели широко используются в принтерах, автоматических инструментах, приводах дисководов, автомобильных приборных панелях и других приложениях, требующих высокой точности позиционирования и микропроцессорного управления. Как известно, такое управление требует использования специальной логики и высокоточных драйверов, которые могут быть реализованы на дискретной элементной базе, что увеличивает сложность схемы и ее стоимость. Для упрощения процесса разработки и уменьшения стоимости конечного изделия мы предлагаем использовать контроллер шагового двигателя, интегрированный в недорогой процессор Fujitsu MB90F598. Стоит отметить, что подобным контроллером обладают многие процессоры семейства F2MC-16LX, например MB90F428, что дает возможность пользователю выбрать контроллер с желаемой периферией. Архитектура Небольшие шаговые двигатели часто используются, например, в автомобильных приборных панелях (инструментальных кластерах) и выполняют там функции вращения стрелок спидометра, тахометра, указателя температуры охлаждающей жидкости и уровня топлива. При этом по сравнению с традиционно используемыми гальванометрическими системами отсутствует вибрация стрелки, увеличивается точность показаний. Один процессор MB90F598 способен обслуживать четыре независимых шаговых двигателя, которые подключаются непосредственно к процессору без дополнительных интерфейсных схем. Рассмотрим коротко принцип действия шаговых двигателей и их отличие от двигателей постоянного тока. Шаговые двигатели: принцип действия и отличия от двигателей постоянного тока Двигатели постоянного тока (ДПТ) начинают работать сразу, как только к ним будет приложено постоянное напряжение. Переключение направления тока через обмотки ротора осуществляется механическим коммутатором - коллектором. Постоянные магниты при этом расположены на статоре. Шаговый двигатель может быть рассмотрен как ДПТ без коммутатора. Обмотки его являются частью статора. На роторе расположен постоянный магнит или, для случаев с переменным магнитным сопротивлением, зубчатый блок из магнитомягкого материала. Все коммутации производятся внешними схемами. Обычно система мотор - контроллер разрабатывается так, чтобы была возможность вывода ротора в любую, фиксированную позицию, то есть система управляется по положению. Цикличность позиционирования ротора зависит от его геометрии. Принято различать шаговые двигатели и серводвигатели. Принцип их действия во многом похож, и многие контроллеры могут работать с обоими типами. Основное отличие заключается в количестве шагов на цикл (один оборот ротора). Серводвигатели требуют наличия в системе управления аналоговой обратной связи, в качестве которой обычно используется потенциометр. Ток в этом случае обратно пропорционален разности желаемого и текущего положений. Шаговые двигатели преимущественно используются в системах без обратных связей, требующих небольших ускорений при движении. Шаговые двигатели (ШД) делятся на две разновидности: двигатели с постоянными магнитами и двигатели с переменным магнитным сопротивлением (гибридные двигатели). С точки зрения контроллера отличие между ними отсутствует. Двигатели с постоянными магнитами обычно имеют две независимые обмотки, у которых может присутствовать или отсутствовать срединный отвод (см. рис.1). Рис.1. Униполярный ШД с постоянными магнитами. Биполярные шаговые двигатели с постоянными магнитами и гибридные двигатели сконструированы более просто, чем униполярные двигатели, обмотки в них не имеют центрального отвода (см рис.2). Рис.2. Биполярный и гибридный ШД. За это упрощение приходится платить более сложным реверсированием полярности каждой пары полюсов мотора. Шаговые двигатели имеют широкий диапазон угловых разрешений. Более грубые моторы обычно вращаются на 90° за шаг, в то время как прецизионные двигатели могут иметь разрешение 1,8° или 0,72° на шаг. Если контроллер позволяет, то возможно использование полушагового режима или режима с более мелким дроблением шага (микрошаговый режим), при этом на обмотки подаются дробные значения напряжений, зачастую формируемые при помощи ШИМ - модуляции. Если в процессе управления используется возбуждение только одной обмотки в любой момент времени, то ротор будет поворачиваться на фиксированный угол, который будет удерживаться пока внешний момент не превысит момента удержания двигателя в точке равновесия. Для правильного управления биполярным шаговым двигателем необходима электрическая схема, которая должна выполнять функции старта, стопа, реверса и изменения скорости. Шаговый двигатель транслирует последовательность цифровых переключений в движение. "Вращающееся" магнитное поле обеспечивается соответствующими переключениями напряжений на обмотках. Вслед за этим полем будет вращаться ротор, соединенный посредством редуктора с выходным валом двигателя. Каждая серия содержит высокопроизводительные компоненты, отвечающие все возрастающим требованиям к характеристикам современных электронных применений. Схема управления для биполярного шагового двигателя требует наличия мостовой схемы для каждой обмотки. Эта схема позволит независимо менять полярность напряжения на каждой обмотке. На рис.3 показана последовательность управления для режима с единичным шагом. Рис.3. Управляющая последовательность для режима с единичным шагом. На рис.4 показана последовательность для полушагового управления. Рис.4. Управляющая последовательность для режима с половинным шагом. Блок управления шаговым двигателем в контроллере MB90F598 Блок управления шаговым двигателем в контроллере MB90F598 включает в себя драйверы, селектор и два ШИМ - генератора. Четыре драйвера имеют мостовые схемы, рассчитанные на высокий ток и подключаемые непосредственно к обмоткам двигателя. Комбинация ШИМ - генератора и селектора обеспечивает управление двигателем. Механизм синхронизации позволяет синхронизировать работу обоих ШИМ - генераторов. Назначение пинов процессора показано в таблице 1. Номер пина | Название пина | Функция | 54 - 57 | PWM1P0 PWM1M0 PWM2P0 PWM2M0 | Выходы для нулевого канала управления ШД. | 59 - 62 | PWM1P1 PWM1M1 PWM2P1 PWM2M1 | Выходы для первого канала управления ШД. | 64 -67 | PWM1P2 PWM1M2 PWM2P2 PWM2M2 | Выходы для второго канала управления ШД | 69 -72 | PWM1P3 PWM1M3 PWM2P3 PWM2M3 | Выходы для третьего канала управления ШД | 58, 68 | DVCC | "+" моста | 53, 63, 73 | DVSS | "-" моста | Схема выходного пина показана на рис.5. Рис.5. Схема выходного пина. На рис.6 показана структурная схема одного канала блока управления шаговым двигателем. Рис.6. Блок-схема канала управления ШД. Рассмотрим назначение и структуру регистров, ассоциируемых с модулем управления шаговым двигателем. Рис.7. Регистр управления. [бит 7] OE2: Разрешение выхода. Когда этот бит установлен в "1", внешние пины PWM2P0 и PWM2M0 подключаются к выходам ШИМ. В противном случае они являются портами общего назначения. [бит 6] OE1: То же самое для пинов PWM1P0 и PWM1M0. [биты 5 и 4] P1, P0: Выбор рабочей частоты ШИМ. Биты специфицируют (в соответствии с табл.2) входную частоту для ШИМ-генераторов. Таблица 2 P1 | P0 | Входная частота для ШИМ - генераторов | 0 | 0 | Основная частота процессора | 0 | 1 | Основная частота процессора / 2 | 1 | 0 | Основная частота процессора / 4 | 1 | 1 | Основная частота процессора / 8 | [бит 3] CE: Разрешение счета. Этот бит разрешает работу ШИМ - генератора Когда он устанавливается в "1", ШИМ -генератор запускается. Отметим, что второй генератор PWM2 запускается через один машинный цикл после первого. Это сделано чтобы снизить шумы переключений в выходных драйверах. [бит 0] TST: Тестовый бит. Этот бит предназначен для тестирования процессора. В приложениях пользователя он всегда должен быть установлен в 0. Рис.8. Регистры сравнения. Содержимое этих двух 8-разрядных регистров определяет ширину импульсов (коэффициент ШИМ - модуляции), как показано на рис.9. Значение 00h соответствует заполнению 0%, а значение FFh - значению заполнения 99%. Рис.9. ШИМ - модуляция. Для изменения значения коэффициента ШИМ - модуляции необходимо записать в регистры сравнения новое значение, после чего записать "1" в бит BS (Update bit) селекторного регистра, показанного на рис.10. Рис.10. Селекторные регистры. Селекторные регистры предназначены для переключения режимов работы выходов контроллера управления ШД. Рассмотрим назначение отдельных битов этих регистров. [бит 14] BS: Бит модификации (Update bit). Этот бит устанавливается для синхронных модификаций установок выходов ШИМ - генератора. Любая модификация в обоих регистрах сравнения или в регистрах - селекторах не будет выполнена, пока это этот бит не будет установлен. При записи "1" в этот бит все изменения будут выполнены в конце текущего ШИМ - цикла. Бит автоматически обнуляется в начале следующего ШИМ - цикла. [биты 13 - 11] P2 - P0: Эти биты выбирают режим для вывода PWM2P0. [биты 10 - 8] M2 - M0: Эти биты выбирают режим для вывода PWM2M0. [биты 5 - 3] P2 - P0: Эти биты выбирают режим для вывода PWM1P0. [биты 2 - 0] M2 - M0: Эти биты выбирают режим для вывода PWM1M0. В таблице 3 представлено соотношение между значениями этих битов и уровнями выходных сигналов. Таблица 3 P2 | P1 | P0 | PWMnP0 | 0 | 0 | 0 | Низкий уровень | 0 | 0 | 1 | Высокий уровень | 0 | 1 | X | ШИМ - сигнал | 1 | X | X | Высокий импеданс | M2 | M1 | M0 | PWMnM0 | 0 | 0 | 0 | Низкий уровень | 0 | 0 | 1 | Высокий уровень | 0 | 1 | X | ШИМ - сигнал | 1 | X | X | Высокий импеданс | Таким образом, мы рассмотрели структуру блока управления шаговым двигателем и регистры, используемые для работы с этим блоком. Далее рассмотрим пример программы, реализующей движение ШД. Изменяя размер шага в выходном сигнале можно управлять скоростью вращения шагового двигателя. Различные размеры шага могут быть запрограммированы путем загрузки соответствующих значений в регистры сравнения. При управлении ШД необходимо позаботиться о том, чтобы уменьшать скорость вращения при подходе к желаемой позиции. Это демонстрируется представленным ниже исходным кодом. Программа пользователя должна установить процедуру обработки прерывания по переполнению перегружаемого таймера для изменения позиции шагового двигателя. В этом обработчике для управления внешними пинами должна осуществляться перезагрузка регистров сравнения и устанавливаться сигналы "OE" в регистре управления. Значение периода переполнения перегружаемого таймера выбирается так, чтобы обеспечить плавность движения выходного вала ШД. Следующий код иллюстрирует управление позицией ЩД, путем установки требуемого параметра в управляющей программе. // Управление ротором одного ШД void TestStepperMotor_0 (void) { unsigned long ctr; unsigned long ctr2; DDR4_D40 = 1; PDR4_P40 = 1; DDR4_D47 = 1; PDR4_P47 = 0; uiMaxSpeed = 1; // Управление скоростью for(ctr = 500000L; ctr; ctr--); uiRequiredPosition = MAX_STEPS; // MAX_STEPS - максимально // возможное количество шагов // двигателя в любом направлении. for(ctr = 700000L; ctr; ctr--); uiRequiredPosition = 0; while (uiCurrentPosition != uiRequiredPosition); | for(ctr = 700000L; ctr; ctr--); uiRequiredPosition = 1000; while (uiCurrentPosition != uiRequiredPosition); for(ctr = 700000L; ctr; ctr--); uiRequiredPosition = 2000; while(uiCurrentPosition != uiRequiredPosition); for(ctr = 700000L; ctr; ctr--); uiRequiredPosition = 1500; while(uiCurrentPosition != uiRequiredPosition); for(ctr = 700000L; ctr; ctr--); uiRequiredPosition = 500; while(uiCurrentPosition != uiRequiredPosition); for(ctr = 700000L; ctr; ctr--); while (0); } | В пределах одного шага требуемая позиция (которая может быть получена от входных сенсоров) устанавливается переменной "uiRequiredPosition". Эта переменная модифицируется в обработчике прерывания перегружаемого таймера пока требуемая позиция не станет равной текущей позиции ротора. Наличие рассогласования между требуемой и текущей позициями означает, что вал двигателя еще не достиг требуемой позиции. |