Блок управления реверсивным двигателем

В настоящее
время практически невозможно указать какую-то отрасль науки и производства, в
которой бы не использовались микропроцессоры (МП) и микроЭВМ. Универсальность
и гибкость МП как устройств с программным управлением наряду с высокой
надежностью и дешевизной позволяют широко применять их в самых различных
системах управления для замены аппаратной реализации функций управления,
контроля, измерения и обработки данных. Применение МП и микроЭВМ в системах
управления промышленным оборудованием предполагает, в частности, использование
их для управления станками, транспортировочными механизмами, сварочными
автоматами, прокатными станами, атомными реакторами, производственными линиями,
электростанциями, а также создание на их основе робототехнических комплексов,
гибких автоматизированных производств, систем контроля и диагностики.
Микропроцессорные средства позволяют создавать разнообразные по сложности
выполняемых функций устройства управления — от простейших микроконтроллеров
несложных приборов и механизмов до сложнейших специализированных и универсальных
систем распределенного управления в реальном времени. универсальные микроконтроллеры и специализированные
микроЭВМ; аппаратные
средства поддержки микропроцессорных систем
(расширители). Встраиваемые в приборы и аппаратуру МП и простейшие
микроконтроллеры жестко запрограммированы на реализацию узкоспециализированных
задач, их программное обеспечение проходит отладку на специальных стендах или
универсальных ЭВМ, затем записывается в ПЗУ и редко изменяется в процессе
эксплуатации. Встраиваемые средства используют и простейшие внешние устройства
(тумблеры/клавишные переключатели, индикаторы). микроЭВМ реализуются чаще всего на основе секционных микро программируемых
МП, позволяющих адаптировать структуру, разрядность, систему команд микроЭВМ под
определенный класс задач. Однако такой подход организации систем требует
трудоемкой и дорогой разработки "Собственного" программного обеспечения. В
последнее время широкое распространение получают также программируемые
микроконтроллеры, представляющие собой специализированные микроЭВМ,
ориентированные на решение многочисленных задач в системах управления,
регулирования и контроля. Особую группу составляют программируемые контроллеры
для систем автоматического регулирования. Важнейшим устройством любой системы
автоматического регулирования является регулятор, задающий основной закон
управления исполнительным механизмом. Замена классических аналоговых регуляторов
универсальными программируемыми микроконтроллерами, способными программно
перестраиваться на реализацию любых законов регулирования, записанных в память
микроконтроллеров, обеспечивает повышение точности, надежности, гибкости,
производительности и снижение стоимости систем управления. Большим достоинством
универсальных микроконтроллеров является их способность выполнять ряд
дополнительных системных функций: автоматическое обнаружение ошибок, контроль
предельных значений параметров, оперативное отображение состояния систем и т.
п. В системах автоматического регулирования особое место выделяется для систем
управления двигателями, в таких системах основной регулируемой величиной
является частота вращения якоря двигателя, которая изменяется при изменении
нагрузки. Использование взамен аналогового регулятора микроконтроллера позволит
существенно улучшить процесс регулирования. Применение цифрового индикатора и
клавиатуры упростит работу по установке параметров автоматического регулирования
и контроля регулируемого значения. В дипломном проекте рассматривается
автоматизированная система управления двигателем. В качестве регулятора
используется микроконтроллер, который должен поддерживать, определенную
пользователем, частоту вращения и выдавать текущие обороты якоря
двигателя. Исходными
данными определена разработка платы и программного обеспечения с режимами
установки частоты вращения якоря двигателя, стабилизации частоты вращения и ее
индикации. Базой исходных данных является отладочный
комплекс МК51. Комплекс состоит из платы микроконтроллера и программного
обеспечения и предназначен для отладки и тестирования аппаратуры и программного
обеспечения управляющих систем, выполнен на базе микроконтроллера (МК) семейства
Intel imcs51. МК SAB80C535
предназначенный для выполнения программы МОНИТОР и для выполнения
пользовательской программы (управления); оперативное запоминающее устройство, предназначено для хранения
программы пользователя (программа работы управляющей системы); дисплей,
предназначен для контроля значений вводимых параметров, вывода значений
параметров системы управления, вывода символов; клавиатура, предназначена для
ввода значений параметра программы управляющей системы, запуска программы
управления, вызова процедур и сброса МК; Программное обеспечение
состоит из программы FDSAB полноэкранный отладчик программ на ассемблере
микроконтроллеров семейства МК51, ориентированный на использование совместно с
платой для отладки программ на базе микроконтроллера Siemens SAB80C535
предназначена для отображения и полноэкранного редактирования ресурсов
микроконтроллера, загрузки программного кода для микроконтроллера, исполнения
его в ПМК полностью, блоками или по шагам. В программе предусмотрен режим
терминала с возможностью выбора номера коммуникационного канала (1 или 2) и
скорости передачи и приема данных. Выполнить программу ПМК <F9> Включить / выключить символьные метки
<Alt+V> Краткая информация о системе
<Alt+I> Выбор на дисках компьютера двоичного файла (.BIN) с программой, загрузка
в отладчик и память команд макета и дизассемблирование загруженного кода на
экран в область отображения дизассемблированных инструкций. Считывание содержимого внутренней ОЗУ макета и специальных
функциональных регистров из ПМК. Считывание содержимого памяти команд ПМК в
отладчик (диапазон запрашивается). Перезагрузка кода программы в
память команд ПМК из памяти отладчика. Дизассемблирование программного кода из
памяти команд отладчика в запрашиваемом диапазоне адресов. По выбору
пользователя инструкции дописываются за уже имеющимися либо заменяют
их. Сохраняетв файл, имя которого запрашивается, дизассемблированный фрагмент
программы пользователя с мнемоническими обозначениями регистров процессора
Siemens SAB80C535 и символьными метками (если включен режим отображения
символьных меток). Переключает режим представления дизассемблированного кода
на экране: с выделенными символьными метками или только с адресами
переходов. Изменение номера последовательного порта компьютера, к которому
подключена ПМК и скорости передачи через порт посредством изменения делителя
частоты. Перевод программы в режим терминала. В этом режиме пользователь может
принимать и передавать данные по последовательному порту в ПМК. Отображение
краткой информации о системе (объем свободной ОП, место на текущем диске,
параметры соединения, загруженный файл). Очевидным параметром контроля является частота вращения ротора
электродвигателя. Датчиком для установления числа оборотов может служить
оптопара. Однако в этом случае из-за малой частоты импульсов, поступающих от
датчика, будет невысокой стабильность частоты вращения, из-за большой
длительности измерения и быстрого характера изменения нагрузки. Для увеличения
стабильности предусматривается диск на котором расположено максимальное число
прорезей. В этом случае одному обороту вала двигателя будет соответствовать
большое количество импульсов от датчика. Но и в этом случае для точного
измерения частоты вращения требуется значительное время. Проведенные опыты
действительно показали значительное отклонение частоты вращения от
установленной. Высшую стабильность удержания частоты вращения обеспечивает
способ измерения периода импульсов от датчика. МК имеет в своей архитектуре
соответствующую аппаратную и программную поддержку. Схема электрическая принципиальная представлена
в графической части лист1. Порты Р0 и Р2 МК
используются в режиме внешнейпамяти. Младшие разряды адреса ячейки памяти
запоминаются в регистре адреса (DD9) импульсом ALE. Блок переадресовки
выполнен на элементах DD6 и DD7 и выполняет функцию переключения адресов в
соответствии с таблицей 3.1. По сигналу RESET=0 RS –
триггер на элементах DD7.3 – DD7.4 установлен в единичное состояние (на выводе
13 DD7.4 уровень логического нуля) и производится выбор ПЗУ (DD12). После
отпускания кнопки сброса (SA1) триггер сохраняет свое состояние и импульсом PSEN
считывается 1-й байт команды перехода из ПЗУ. Триггер удерживается в единичном
состоянии сигналом с выхода DD6.1 (А15=0 => А15=1), несмотря на наличие
импульса PSEN на входе 1 элемента DD7.2. При
чтении из ячейки 8000Н первого байта команды МК выдает адрес, в котором А15=0,
следовательно на выходе DD6.1 формируется низкий уровень. Импульсом PSEN
формируется положительный импульс на выходе DD7.2 и триггер переключается. Так
как А15=1, то на выходе DD6.1 присутствует низкий уровень, следовательно на
выходе DD6.2 – высокий и несмотря на то, что триггер переключился выбор ОЗУ не
производится. Выбор ОЗУ будет производится если А15=0 и считывание команд
производится импульсом PSEN. Порты Р4 и Р5 используются для подключения
клавиатуры и дисплея. В плате используется клавиатура формата 4х4 и четырех
разрядный дисплей динамического типа. Разряды Р4.3 – Р4.0 являются разрядами
сканирования клавиатуры и одновременно разрядами выбора индикатора. Сигналы
выбора индикатора ("бегущий ноль") подаются на входы усилителей (DD10). Низкий
уровень с выхода DD10 производит выключение транзистора, через который подается
на общий анод выбранного индикатора напряжение +5В. Сигналы сегментов с
выходов порта Р5 через токовые усилители DD4 поступают на шину сегментов С0 – С7
индикаторов. Резисторы R17 – R24 определяют значения амплитуды импульса тока,
протекающего через сегменты. С помощью элементов DD11.1 – DD11.2 формируется сигнал
запроса прерывания от клавиатуры, поступающий на вход INT0 МК. VD3 – диод выпрямителя; Трансформатор блока питания вынесен в
отдельный блок, совмещенный вилкой питания. Разъем Х7 предназначен для соединения с СОМ –
портами компьютера. На контакты разъема Х5 выведены линии от порта
Р3. Плата макета. Оптопара
VD1 VD2 является датчиком частоты вращения якоря двигателя. Фотодиод VD1
формирует токовые импульсы при прохождении шторки освещением от светодиода VD2.
Импульс с VD1 открывает транзистор VT1 тем самым формируя импульс на его
коллекторе. Управление двигателем происходит при помощи DD1 (ИМС управления
реверсивными коллекторными двигателями). Режимы работы представлены в таблице
3.2. 1 Рев/Движ На входы DD1 поступают
логические уровни "0" "1", что выбирает режим работы двигателя, подключенного к
выходам DD1. С1 – С4 – сглаживающие фильтры. Переменным резистором R8,
соединенным последовательно с генератором, подается нагрузка на двигатель.
Резисторы R5 R9 (R5=R9) соединены общим проводом, а с других концов снимается
аналоговое значение напряжения для определения нагрузки. В зависимости от
направления вращения генератора ток в цепи будет протекать в двух направлениях,
следовательно, значение потенциалов напряжения на R5 R9 будут противоположны, но
равны по значению. Это обеспечивает измерение напряжения в реверсном режиме
работы двигателя. Блок схема алгоритма представлена в графической части
лист 2. Главная программа зациклена и представляет собой блок процедуры
индикации. Программы измерения частоты вращения двигателя и обработки нажатия
клавиш выполняются прерывая основную программу индикации прерываниями от
измерителя частоты и клавиатуры соответственно. После выполнения программ
обработки прерываний программа индикации продолжает работу с места ее
прерывания. Подпрограмма (ПП) обработки прерывания от измерителя (INT1)
вначале выполнения проверяет повторное вхождение в ПП. При первом вхождении
осуществляется запуск измерителя и выход. При повторном вхождении измеренное
значение длительности периода импульса от датчика запоминается, сравнивается с
заданным значением. Если измеренное значение меньше заданного тогда значит
частота вращения снизилась и происходит включение двигателя, иначе двигатель
отключается. После чего анализируется режим индикации: обороты двигателя или
индикация нагрузки приложенной к двигателю с помощью генератора. В зависимости
от сделанного выбора измеренное значение частоты вращения или нагрузки
преобразовывается в позиционно-десятичное значение и выдается в индикатор. Затем
происходит выход из ПП. В ПП обработки прерывания от клавиатуры (KLAV)
определяется нажатие функциональной клавиши. Если клавиша не функциональная то
выполняется сдвиг индикационных ячеек влево и запись кода нажатой клавиши в
последнею индикационную ячейку, далее выход. Если же клавиша функциональная
производится определение какая именно нажата для этого служат четыре блока
решения, если функциональность клавиши не определится то значит нажата клавиша
"реверса" при нажатии которой осуществляется реверс направления вращения якоря
двигателя и выход. Далее перечислены действия по нажатию функциональных клавиш,
после выполнения которых ПП завершается: клавиша "старт" -
преобразования введенного числа оборотов в секунду в длительность периода
импульсов с датчика; клавиша "режим" -
переключение режима индикации частоты вращения / подаваемой нагрузки. В программе
используются символические имена присвоенные ячейкам ОЗУ: введенная частота вращения якоря
двигателя obor data 54h делитель 1-й байт zn_h data
59h результат деления 16/8 rezul data
5dh измеренная
длительность импульса ст. байт dli_i_h data 5fh временная ячейка temp data 62h повторный вход в
п.п. измерения периода импульса flag bit 00h направление вращения f_nap bit 03h функциональная клавиша "режим"
f_rezind bit 06h Деление 24-х битного числа на 16-и битное результат 16 бит,
реализовано в подпрограмме div24. Деление многобайтного числа на многобайтное
реализуется по принципу вычитания делителя из делимого со сдвигом последнего
влево, с возможностью восстановления делимого. Перед процедурой деления в ячейки
делителя записывается число в диапазоне 0-0fffh. В начале деления происходит:
сдвиг делителя на четыре разряда влево это необходимо для деления 24/16, запись
в частное 10h для определения окончания деления, запись в ячейки делимого число
1000000. В начале цикла деления производится сдвиг делимого влево на один
разряд, а так же сдвиг влево частного и запись в стек значений флагов переносов.
Далее из старшей части делимого вычитаем делитель, в зависимости от знака
переноса в частное записывается "0" или "1" и сохранение делимого. Проверка
переноса при сдвиге делимого и запись в частное "1" если перенос был. Проверка
окончания деления путем проверки восстановленного значения флага переноса при
сдвиге частного. После окончания деления результат деления находится в ячейках
результата. После нажатия клавиши "Старт" происходит преобразования значения
индикационных ячеек в двоичный код (1 байт), после чего это значение умножается
на 24, что соответствует 24 прорезям диска оптопары (результат 2 байта) и делим
1000000 на это число в результате получается длительность периода импульсов от
оптопары для введенного числа оборотов в секунду. После преобразования
выполняется функция запуска двигателя которая дает толчок и разрешается
прерывание INT1 с оптопары. В подпрограмме обработки прерывания INT1
проверяется повторное вхождение для этого используется флаг flag. При первом
вхождении запускается таймер и происходит выход из подпрограммы обработки
прерывания. Во втором вхождении таймер останавливается, запрещается прерывание
INT1 и значение таймера (что соответствует периоду импульса) записывается в
ячейки dli_i_l и dli_i_h. После чего производится регулирование частоты вращения
двигателя, для этого из ячеек dli_l dli_h (введенное значение) вычитается
измеренное dli_i_l dli_i_h, если возник перенос значит частота вращения меньше
необходимой и двигатель включается (отключается, если переноса нет) установкой
кода на портах Р3.4 Р3.5. Комбинация выбирается в зависимости от направления
вращения которая определяется битом f_nap. Индикация измеренной частоты вращения
происходит через 47 (2f) раз измерения импульсов, это нужно для того чтобы
убрать мелькание цифр на индикаторе. Преобразование измеренного значения в
частоту вращения двигателя в обр/сек происходит следующим образом: деление
1000000 на измеренное значение, деление на 24, преобразование bin->dec-
>индикатор. Перед завершением подпрограммы обработки прерывания INT1
производится инициализация регистров и ячеек перед следующим запуском процедуры
и разрешается прерывание INT1. TMOD=01H – режим работы
таймера; 3 разряд – INT1; Приобретение практических навыков в технологии разработки и отладки
элементов управляющих систем. Лабораторная установка состоит из следующих частей: платы
управления ПМК, платы двигателя и блока питания. Плата двигателя рис.6.1
состоит из трех блоков: блок датчика скорости вращения, блок управления, блок
датчика нагрузки. Плата двигателя подключается к разъемам портов ПМК при помощи
разъемов. X2 подключается к порту Р3 и служит для соединения: оптопары
("Датчик") со входом прерывания INT1, портов Р3.4 Р3.5 с входами блока
управления (Упр1 и Упр2). X6 подключается к порту Р6 используя две линии AI6 и
AI7 для измерения нагрузки прелагаемой к двигателю с помощью генератора
(измерение нагрузки прелагаемой из вне при помощи этой схемы невозможно).
Использование двух каналов предусматривается для измерения напряжения двигателя
с возможным реверсом когда при вращении в одну сторону измерение происходит с
первого канала, а при вращении в другую со второго. Такое распределение
получается путем использования делителя напряжения общий конец которого соединен
с нулевым проводом и при протекании тока в разных направлениях меняет знак
напряжения на концах делителя относительно общего провода на противоположный.
Опорное напряжение Uref подается соединением +5В, а нижняя граница (Ugnd)
задается соединением с общим. Разъем X3 соединяет схему с блоком
питания. Датчик числа оборотов представляет собой диск, с 24-ю прорезями,
жестко закрепленный навалу вращения двигателя. Во время прохождения прорези
между оптопарой светодиод VD2 освещает инфракрасным излучением фотоприемник
представляющий собой фотодиод VD1. Полупроводниковый фотоприемник уменьшив за
счет этого свое сопротивление начинает пропускать ток открывая тем самым
транзистор VT1 с коллектора которого снимаются прямоугольные импульсы. Обороты
двигателя прямо пропорциональны приложенному к нему напряжению. В связи с этим
предлагается удерживать частоту вращения в определенных границах с помощью
изменения напряжения подаваемого на двигатель. Использование цифровых систем
управления которые позволяют быстро обрабатывать данные делает возможным
применения в качестве меняющегося напряжения шим-генератор. Длительность
импульсов и пауз формируется динамически в зависимости от характера приложенной
нагрузки. Подержание оборотов при увеличении нагрузки будет длится до тех пор
пока длительность паузы не будет равной нулю и дальнейшее увеличение нагрузки
будет снижать обороты двигателя. Для улучшения поддержания частоты вращения
предлагается максимально возможно увеличить напряжение источника питания. Установка управления двигателем; Импульсы с
датчика поступают на вход прерывания INT1; Максимальная скорость вращения двигателя 110 обр1/сек.; Входы
для измерения нагрузки поступают на АЦП каналы AI6 и AI7. VAREF=5B. Тормоз 0 Составить
алгоритм и программу стабилизации частоты вращения электродвигателя постоянного
тока с параллельным возбуждением в соответствии с исходными
данными. В качестве параметра регулирования
взять длительность периодов импульсов от оптопары. Выбор этого параметра взамен
измерению частоты вращения диска, перекрепленного на двигатель, позволяет
производить быстрый контроль стабильности системы управления за счет
значительного уменьшения длительности измерения. Для такого регулирования
необходимо преобразовывать введенную частоту вращения в длительность периода
импульсов, формируемых прорезями на диске датчика, и обратно – длительность
периода в частоту вращения. Рекомендуется осуществлять преобразование следующим
образом: 1000000 разделить на полученное число, в результате чего получится
длительность одного периода в мкс. При делении 1000000 (3
байта) на 2 байта возможно использование стандартной процедуры деления 4-х
байтного числа на 2-й байтное. Но для более быстрого деления (а значит и
увеличения скорости измерения) рекомендуется уменьшить длительность деления,
производя деление 6-ти тетрад (1000000) на 3-и тетрады (максимально возможное
число 4095), для этого необходимо: продолжать деление с учетом сдвинутого делителя, т.
е. деление должно длится на четыре цикла меньше; Для измерения длительности периода
импульсов необходимо в качестве счетчика использовать один из таймеров в режиме
таймера. Подача на вход прерывания INT1 импульсов вызывает ПП обработки
прерывания в которой необходимо следить за первым и вторым входом в ПП. При
первом вхождении включить таймер, а при втором вхождении считать состояние
таймера, что и будет являться длительностью периода импульса. Набрать текст программы; Загрузить в память
bin файл, запустить программу на выполнение; Сделать вывод о
проделанной работе; Внимание! При
приложении больших усилий торможения двигателя он может остановится что приведет
к резкому увеличению тока в выходной цепи ИМС управления и возможно выход ее из
строя. В результате проделанной дипломной работы была
разработана плата макета и программное обеспечение блока управления реверсивным
двигателем. С режимами работы: установки частоты вращения якоря двигателя,
стабилизации и индикации частоты. В качестве нагрузки используется генератор,
соединенный с двигателем, на выходы которого подсоединен переменный резистор,
которым задается нагрузка. В цепь генератора включен делитель напряжения для
измерения напряжения и его индикации. При разработке дипломного проекта было
опробовано два способа автоматического регулирования частоты вращения двигателя:
измерение частоты (за определенное время подсчитывалось количество импульсов от
датчика), измерение периода (измерялась длительность периода импульсов
поступающих от датчика). Первый способ измерения частоты показал плохую
стабильность частоты вращения регулирующей системы, т. к. из-за большой
длительности измерения (при уменьшении длительности измерения увеличивалась
погрешность) и быстрого изменения характера нагрузки система не успевала
отслеживать это изменение, а следовательно и регулировать входную величину.
Второй способ регулирования с измерением длительности периода показал хорошую
стабильность автоматической системы управления. Это достигается увеличение числа
прорезей на вращающемся диске оптопары, измерение длится короткое время, за
которое система автоматического регулирования не успевает отклониться от
установленного значения. Небольшое отклонение частоты вращения за короткий
промежуток времени (времени измерения одного периода) сразу контролируется и
происходит модификация выходного параметра.
ip1 data 0b9h n_sd data 53h zn_l data 5ah dli_h data
61h f_sta bit 04h sjmp
start mov adcon,#0fh
mov st1,#3fh ; начальное обнуление
индикатора jb f_rez,re1 ; определение
режима работы ; запуск двигателя с проверкой
направления вращения napr1: clr p3.4 ; остановка двигателя mov r0,#0ahov
r1,#49h djnz n_sd,beg1 cycl: mov p4,#0ffh cjne
r0,#4bh,cycl tabcod: db
0c0h,0f9h,0a4h,0b0h,99h,92h,82h,0f8h,80h,90h ; клавиатура loop: mov a,r6 djnz r5,rotate wait: mov p4,#0f0h jc func djnz r0,new cjne r4,#0ah,g2 ljmp rezim ; удаление
символа sta: jb f_rab,quit mov obor,a ; деление1000000 на полученное значение clr flag mov 46h,#11h setb f_sta mov
49h,#10h mov 41h,#10h setb p3.5 mov 43h,#17h cpl f_nap jb
f_rez,rez1 mov 43h,#16h mov 48h,#10h setb f_rezind mov chi_2,#42h mov a,zn_l mov rez_l,a mov a,chi_2 mov
chi_t,a nosav: pop psw setb flag mov ien0,#80h subb a,dli_l sjmp mot_0 djnz
indik,inizdp div ab chas: jb f_nap,i_nap1 cjne a,#0fh,in_ob1 lcall div24 ; деление 3 байт на 2 байт mov a,rez_l jc nosav16 jnc lp16 mov 49h,a port_0: jb
p3.3,port_0