Рябов В.Т. - Устройство и программирование однокристальных микроконтроллеров (1041592), страница 19
Текст из файла (страница 19)
По типу магнитной системы ШД делятся надвигатели с активным и пассивным ротором. Статор и ротор имеют зубцы, через которыезамыкается магнитное поле, причем шаг зубцов на статоре и роторе одинаков.Ротор активного ШД представляет собой конструкцию из постоянных магнитов,ротор пассивного изготовлен из магнитомягкого материала.Наибольшее распространение получили ШД с пассивным ротором, конструктивнаясхема четырехфазного ШД с пассивным ротором представлена на рис. 5. 2.
На зубчатыхполюсах 1 статора расположены обмотки четырех фаз А,В, С и D. Обмотки одной фазы размещены на противоположных полюсах и соединены последовательно. Привключенной фазе А ротор 2 занимает позицию, соответствующую максимуму магнитной проводимости междуполюсами фазы А и ротором, как показано на рисунке.При включении фазы В ротор поворачивается против часовой стрелки на четверть шага и т.д. В полном циклекоммутации фаз (А-В-С-D) ротор повернется на угол, занимаемый одним зубцом и одним пазом ротора.
В данном примере с 22 зубцами это составит 1/22 оборота. Вкаждом из четырех тактов цикла коммутации ротор поРис. 5.2. Конструктивнаяворачивается на 1/88 оборота. Типовая серия шаговыхсхема четырехфазного шадвигателей с пассивным ротором ДШИ-200 имеет 200гового двигателя с пассившагов на оборот.ным ротором.Реверс ШД осуществляется изменением последовательности включения фазных обмоток на противоположную (А-D-С-В).Это простейший вариант четырехфазного подключения и униполярной однофазнойкоммутации. Существуют и другие варианты подключения и коммутации: двухфазноеподключение при мостовой коммутации, в которой меняется направление протекающегопо фазам двигателя тока, режимы дробления шага двигателя.
Их рассмотрение выходит зарамки настоящего учебного пособия и должно рассматриваться отдельно в курсе привода,поскольку ШД является широко применяемым в настоящее время универсальным электроприводом.60Локальный контроллер для управления шаговым двигателем (ШД) представлен нарис. 5.3. В качестве микроконтроллера MC используется ИС серии MCS-51 (DD1).
Фазовые обмотки двигателя A, B, C и D подключены к порту Р1 микроконтроллера через буферDD2 и ключевые ячейки Z1.1...Z1.4. Каждая ячейка содержит ключ на биполярном транзисторе VT, гальванически развязанный по цепям питания и управления от микроконтроллера с помощью оптопары DA. Микроконтроллер и ближайшая периферия (DD2, светодиод DA, управляющие кнопки K1...K4) питаются напряжением контроллера Uк, силовыеключи и двигатель – напряжением нагрузки Uн. Дополнительные элементы, обеспечивающие функционирование микроконтроллера (резонатор, схема начального сброса), нарисунке не показаны. Схема их подключения может быть позаимствована из рис.
3.5.Диоды VD1 и VD2 шунтируют ЭДС самоиндукции фазных катушек двигателя при ихкоммутации. Светодиод HL индицирует протекание тока через катушки.Рис. 5.3. Аппаратное построение контроллера для управления шаговым двигателем.Управляющие кнопки K1...K4 подключены к выводам P1.4...P1.7 микроконтроллера.При нажатии кнопки на соответствующий вывод МК подается сигнал низкого уровня. Одна кнопка запускает, а при повторном нажатии останавливает ШД. Вторая реверсирует еговращение. При нажатии и удерживании третьей кнопки двигатель ускоряет свое вращение.Четвертая аналогичным способом задает замедление.
Обеспечить необходимый алгоритмработы должно программное обеспечение контроллера. Фазные катушки двигателя A B C иD подключены к четырем ключам, выполненным на биполярных транзисторах VT1.Рассматриваемая схема контроллера носит учебный характер и далеко не оптимальна. Существуют специализированные микроконтроллеры для управления ШД, драйверы иключи для присоединения их к микроконтроллерам.
Мостовая коммутация, применяемаяэтими драйверами, обеспечивает большие скорости вращения и выгоднее с энергетической точки зрения. Использование здесь одного из первых образцов универсального микроконтроллера семейства MCS-51 оправдано лишь тем, что он был детально изучен и взятдля сквозного примера в гл.3 и 4.61Разработка текста программного обеспечения, выполняемого подуправлением диспетчера процессовРассмотрим программирование с использованием диспетчера процессов.
При программировании на ассемблере будем использовать заготовку с текстом программы диспетчера, в которую допишем тексты подпрограмм (квантов), реализующих необходимыйалгоритм управления. Последующая трансляция будет осуществляться свободно распространяемым ассемблером A8051.EXE и линковщиком XLINK.EXE под MS DOS. При наборе текста на персональном компьютере лучше пользоваться программой Notepad++. Этапрограмма распространяется свободно.
Скачать ее можно с сайта http://notepad-plusplus.org. Можно пользоваться и программой Microsoft Word, но файл следует сохранятькак текстовый, с расширением *.asm, указав при этом кодировку MS DOS. Тогда не будетпроблем с отображением на экране комментариев на кириллице.Диспетчер процессоввкодировкеMSDOSможнонайтинасерверекафедрыМТ11(//192.168.0.1/student/5kurs/SAU/lab_rab). Автор готов выслать его всем желающим с адреса V_Ryabov@mail.ru.Диспетчер будет управлять двумя квантами: квантом задания шага ШД «STEP» иквантом опроса клавиатуры «KLAV».
Их следует описать в зоне диспетчера, начало которой помечено комментарием:;--------------------Подпрограммы пользователя---------------------Первый квант будем запускать через переменную задержку времени, так как двигатель должен вращаться с переменной скоростью. Второй квант – опрос клавиатуры будемзапускать через 100 мс. Вряд ли кто сможет нажать на кнопку более одного раза за этовремя.Задача подпрограммы управления шаговым двигателем (кванта «STEP») – переключать биты в соответствии с заданной последовательностью двухфазного управления: 1100– 0110 – 0011 – 1001 и т.д.
Тогда будут последовательно включаться фазы AB-BC-CD-DAи т.д. Поочередное двухфазное управление обеспечивает больший вращающий момент посравнению с рассмотренной в начале раздела однофазным (А-В-С- D или 1000-0100-00100001). Моменты переключения фаз должны быть жестко привязаны ко времени. Каждоепереключение – это 1/200 оборота для двигателя ДШИ-200.Определите, какова будет скорость вращения, если задержка между переключениями составляет 1 мс?Для вращения в обратную сторону последовательность нужно изменить последовательность подачи тетрад: 1001 - 0011 – 0110 – 1100.
При всем этом, не нужно искажатьсодержимое старшей тетрады порта Р1. Она у нас (см. рис. 5.3) будет использоваться длясвязи с четырьмя управляющими кнопками. Одна из них будет включать или выключать,если включен, шаговый двигатель, вторая реверсировать направление вращения. Все время, пока нажата третья кнопка, двигатель будет увеличивать скорость своего вращения.Четвертая кнопка, наоборот, будет замедлять двигатель.Для управления отдельными битами применяют прием маскирования.
Управлениеосуществляется при помощи команды «исключающее ИЛИ» XOR . Для этого заводят переменную FASA - значение младшей тетрады порта Р1 и переменную MASKA, которойприсваивается значение 1010.В этом случае подпрограмма выполнения шага будет выглядеть так:XOR FAZA, MASKA; исключающее ИЛИ маски и фазы, результат - в фазуINV MASKA; побитовая инверсия маски, значения каждого бита;меняется на противоположноеВ цифровом виде это будет выглядеть так: исходно MASKA=1010, FAZA=1100.Первый вход в подпрограмму:1100 «исходное значение переменной FAZA»1010 «исключающее ИЛИ c MASKA»Второй вход в подпрограмму:0110 «Результат в FAZA»0101 «исключающее ИЛИ c инверсией MASKA»62Третий вход в подпрограмму:0011 «Результат в FAZA»1010 «исключающее ИЛИ c инверсией MASKA»1001 «Результат в FAZA»Жирным шрифтом здесь выделены последовательные значения в переменнойFAZA.
Видно, что две единицы поехали вправо, т.е. двигатель начал вращаться.Чтобы вращать двигатель в другую сторону перед входом в программу шага нужнопредварительно однократно инвертировать маску.На ассемблере MCS-51 программа, из-за ряда ограничений, будет выглядеть болеесложно. Шаговый двигатель подключен к младшим четырем битам (младшей тетраде)порта P1. Программа управления двигателем при своей работе не должна портить старшей тетрады порта, к этим битам могут быть подключены другие элементы объектауправления (у нас, набор кнопок). Манипулируя байтовыми переменными FAZA иMASKA, мы изменяем, все восемь бит. Управляют отдельными битами, используя приеммаскирования.
Далее приведен текст подпрограммы (кванта) «STEP» с комментариями.Прежде всего, квант «STEP» нужно прописать в зоне векторов запуска синхроквантов:;------------------------векторы квантов пользователя-------------------------------ORG 149hLJMP STEP ; имя кванта0.Присвоим ему наивысший приоритет при запуске.
Чтобы квант стал нормально работать, нужно заранее подготовить его переменные MASKA, FAZA, «задержка» и установить статус кванта. Это сделаем в подпрограмме начальной настройки пользователяSTART и активизируем ее вектор162h.ORG 162hLJMP START; имя стартовой программы пользователя.Далее приведен текст подпрограммы START. Набирается она в зоне программ пользователя диспетчера процессов.
В стартовой подпрограмме нужно определить и задатьначальные значения всем переменным, которые понадобятся в квантах STEP и KLAV.При написании программы на ассемблере есть возможность использовать символические переменные и макоопределения, что улучшает читабельность программы. С другойстороны, использование символических переменных не дает возможности применить неявную адресацию через регистры контроллера, что приводит к увеличению длины программного кода и снижению быстродействия. Читабельность программы можно улучшитьподробным комментированием. В комментариях к кванту объявим все используемые переменные.Используемые переменные, требующие инициализации, приведены в таблице 5.6.Таблица 5.6.АдресПеременные пользователяАдресСистемные переменные диспетчераЗадержка кванта STEPСтатус кванта STEPR120h.0hMASKA – маска для фазСтатус кванта KLAVR220h.1hFAZA – переменная фаз двигателяРазмерности тиков задержкиR322h.0..22h.7квантовПрошлыесостоянияклавиш28hСтартовая программа для нашего ЛМК приведена ниже.;----------------------стартовая программа пользователя------------------------START: MOV R3,#0Ch; 00001100 в ФАЗУMOV R2,#0Ah; 00001010 в МАСКУMOV P1,R3; фазу в портCLR 20h.0h; снять статус кванта STEPMOV R1,#20h; задержка кванта STEP 32 - тикаMOV 08h,R1; переписать ее в регистр задержек кванта STEPSETB 20h.1h; установить статус кванта KLAV63MOV 09h,#80h; записать 128 в регистр задержек кванта KLAVMOV 28h,#0FFh; клавиши не нажималисьMOV 22h,#00; все задержки в коротких тикахRET; возврат из подпрограммыТекст кванта STEP реализует описанную выше идею с исключающим ИЛИ, но выглядит посложнее.STEP: CLR AORL A,P1XRL A,R2MOV P1,AXRL 02h,#0FhMOV 08h,R1MOV R3,ARET; очистить аккумулятор; фазу в аккумулятор; исключающее ИЛИ фазы и маски; результат в порт Р1; исключающее ИЛИ маски и 0Fh; установить задержку кванту из R1; новую фазу в R3; возврат из подпрограммы.Докажите, что этот квант не искажает содержимое старшей тетрады порта Р1.Рассмотрим программу обслуживания пульта управления контроллером.
Кнопки через однонаправленный буфер BF подключены к старшей тетраде порта Р1 (рис. 5.3). Есликнопка не нажата, на бит буфера через резисторы R1…R4 поступает напряжение +5В и единица на соответствующий бит порта. При нажатии на кнопку, на соответствующей линиибудет фиксироваться нуль.Распределим функции кнопок.Кнопка К4 «Вкл-Выкл», подключенная к порту Р1.7, будет у нас включать и выключать двигатель. Если двигатель выключен, нажатие на нее должно приводить к включению,если включен и вращается – к выключению.Кнопка К3 «Реверс» должна реверсировать вращение шагового двигателя. При нажатии на нее шаговый двигатель должен остановиться и начать крутиться в другую сторону стой же скоростью, что и до реверса.Кнопка К2 «Быстрее» должна при нажатии на нее приводить к уменьшению задержкимежду шагами шагового двигателя и ускорению его вращения.Кнопка К1 «Медленее» должна при нажатии на нее приводить к увеличению задержкимежду шагами шагового двигателя и замедлению его вращения.Не заметили принципиальной разницы между кнопками? Первые две должны реагировать на каждое нажатие и обнаруживать спад сигнала на соответствующей линии: прошлыйопрос была единица, а теперь ноль, вот событие, которое должна фиксировать такая кнопка.Это кнопка фиксации однократного нажатия.Кнопки К1 и К2 – кнопки с автоповтором.