Реферат: Блок управления двигателем на МК

СОДЕРЖАНИЕ

Лист

1.    Введение.                                                                                                  3

2.    Анализ исходных данных, выбор параметра контроля.                  6

2.1. Отладочный комплекс.                                                                        6

2.2. Выбор параметра контроля.                                                            10

3.    Описание схемы электрической принципиальной.                        11

3.1. Плата микроконтроллера.                                                                11

3.2. Плата макета.                                                                                     13

4.    Описание алгоритма программы.                                                      15

5.    Описание программы.                                                                          17

6.    Методика выполнения лабораторной работы.                                21

6.1. Цель работы.                                                                                      21

6.2. Описание лабораторной установки.                                              21

6.3. Исходные данные.                                                                             23

6.4. Домашние задание.                                                                           24

6.5. Рекомендации по выполнению.                                                      24

6.6. Последовательность выполнения работы.                                  26

7.    Заключение.                                                                                            27

Литература.                                                                                                    29

Приложение. Текстпрограммы                                                               30

Графическая часть

Лист №1 Схема электрическая принципиальная

Лист №2 Блок схема алгоритма

/>1.   Введение.

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

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

Среди различных форм организации современных микропроцессорныхсредств можно условно выделить следующие группы:

-    встраиваемые МП и простейшие микроконтроллеры;

-    универсальные микроконтроллеры и специализированные микроЭВМ;

-    микроЭВМ общего назначения;

-    мультимикропроцессорные системы;

-    аппаратные средства поддержки микропроцессорных систем(расширители).

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

СпециализированныемикроЭВМ реализуются чаще всего на основесекционных микро программируемых МП, позволяющих адаптировать структуру,разрядность, систему команд микроЭВМ под определенный класс задач. Однако такойподход организации систем требует трудоемкой и дорогой разработки«Собственного» программного обеспечения.

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

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

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

/>2.   Анализ исходныхданных, выбор параметра контроля.

Исходными данными определена разработка платы и программногообеспечения с режимами установки частоты вращения якоря двигателя, стабилизациичастоты вращения и ее индикации.

Область применения макета – лабораторные и практические работы вККЭП.

/>2.1.   Отладочныйкомплекс.

Базой исходных данных является отладочный комплекс МК51. Комплекссостоит из платы микроконтроллера и программного обеспечения и предназначен дляотладки и тестирования аппаратуры и программного обеспечения управляющих систем,выполнен на базе микроконтроллера (МК) семейства Intel imcs51.

Плата МК51 состоит из следующих блоков:

-    МК SAB80C535 предназначенный длявыполнения программы МОНИТОР и для выполнения пользовательской программы(управления);

-    постоянное запоминающее устройство, предназначенное для храненияпрограммы МОНИТОР; емкость ПЗУ 32К байт;

-    оперативное запоминающее устройство, предназначено для храненияпрограммы пользователя (программа работы управляющей системы);

-    дисплей, предназначен для контроля значений вводимых параметров,вывода значений параметров системы управления, вывода символов;

-    клавиатура, предназначена для ввода значений параметра программыуправляющей системы, запуска программы управления, вызова процедур и сброса МК;

-    буфер интерфейса связи платы ПМК с компьютером;

-    блок коммутации адресов ОЗУ и ПЗУ.

Программное обеспечение состоит из программы FDSAB полноэкранныйотладчик программ на ассемблере микроконтроллеров семейства МК51,ориентированный на использование совместно с платой для отладки программ набазе микроконтроллера Siemens SAB80C535 предназначенадля отображения и полноэкранного редактирования ресурсов микроконтроллера,загрузки программного кода для микроконтроллера, исполнения его в ПМКполностью, блоками или по шагам.

В программе предусмотрен режим терминала с возможностью выбораномера коммуникационного канала (1 или 2) и скорости передачи и приема данных.

Меню программы содержит следующие пункты:

1.    Загрузить файл с программой...                                           <F3>

2.    Выполнить программу ПМК                                                   <F9>

3.    Перечитать ОЗУ и регистры ИЗ ПМК                                  <F5>

4.    Загрузить ОЗУ и регистры В ПМК                                 <Alt+F5>

5.    Прочитать ПЗУ или ОЗУ команд ПМК…                             <F6>

6.    Загрузить ПЗУ или ОЗУ команд ПМК…                        <Alt+F6>

7.    Перегрузить программу В ПМК                                        <Alt+S>

8.    Дизассемблировать команды в диапазоне…               <Alt+D>

9.    Сохранить текст программы в файл…                              <F10>

10.   Включить/выключить символьные метки                      <Alt+V>

11.   Параметрысвязи…                                                             <Alt+L>

12.   Режимтерминала>                                                            <Alt+T>

13.   Краткаяинформация о системе                                        <Alt+I>

14.   Выход                                                                                    <Alt+X>

Назначение пунктов меню:

1.    Выборна дисках компьютера двоичного файла (.BIN) спрограммой, загрузка в отладчик и память команд макета и дизассемблированиезагруженного кода на экран в область отображения дизассемблированныхинструкций.

2.    Передачауправления от монитора ПМК программе пользователя в памяти команд макета.

3.    Считываниесодержимого внутренней ОЗУ макета и специальных функциональных регистров изПМК.

4.    Загрузкав ПМК содержимого внутренней ОЗУ из отладчика и специальных регистров.

5.    Считываниесодержимого памяти команд ПМК в отладчик (диапазон  запрашивается).

6.    Загрузкасодержимого памяти команд ПМК из отладчика в ПМК (диапазон  запрашивается).

7.    Перезагрузкакода программы в память команд ПМК из памяти отладчика.

8.    Дизассемблированиепрограммного кода из памяти команд отладчика в запрашиваемом диапазоне адресов.По выбору пользователя инструкции дописываются за уже имеющимися либо заменяютих.

9.    Сохраняетв файл, имя которого запрашивается, дизассемблированный фрагмент программыпользователя с мнемоническими обозначениями регистров процессора Siemens SAB80C535 и символьными метками (если включен режимотображения символьных меток).

10.  Переключает режимпредставления дизассемблированного кода на экране: с выделенными символьнымиметками или только с адресами переходов.

11.  Изменение номерапоследовательного порта компьютера, к которому подключена ПМК и скоростипередачи через порт посредством изменения делителя частоты.

12.  Перевод программы в режимтерминала. В этом режиме пользователь может принимать и передавать данные попоследовательному порту в ПМК.

13.  Отображение краткойинформации о системе (объем свободной ОП, место на текущем диске, параметрысоединения, загруженный файл).

14.  Выход из программы.

/>2.2.   Выбор параметраконтроля.

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

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

Высшую стабильность удержания частоты вращения обеспечивает способизмерения периода импульсов от датчика. МК имеет в своей архитектуресоответствующую аппаратную и программную поддержку.

/>3.   Описание схемыэлектрической принципиальной.

Схема электрическая принципиальная представлена в графической частилист1.

/>3.1.   Платамикроконтроллера.

Порты Р0 и Р2 МК используются в режиме внешней памяти. Младшиеразряды адреса ячейки памяти запоминаются в регистре адреса (DD9)импульсом ALE.

Блок переадресовки выполнен на элементах DD6 иDD7 и выполняет функцию переключения адресов всоответствии с таблицей 3.1.

Таблица 3.1

Исходный адрес Рабочий адрес ПЗУ ОЗУ ПЗУ ОЗУ 0000Н 8000Н 8000Н 0000Н

По сигналу 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Ни выполняется команда SJMP 8000H.

При чтении из ячейки 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 определяют значения амплитудыимпульса тока, протекающего через сегменты.

Разряды Р4.7 – Р4.4 являются входами сигналов опроса клавиатуры.

С помощью элементов DD11.1 – DD11.2формируется сигнал запроса прерывания от клавиатуры, поступающий на вход INT0 МК.

ИМС DD5 является преобразователем уровнейдля последовательного канала.

Элементы источника питания:

VD3 – диод выпрямителя;

С5 – С8 – сглаживающий фильтр;

DD3 – стабилизатор напряжения.

Трансформатор блока питания вынесен в отдельный блок, совмещенныйвилкой питания.

Соединение с «внешним миром» производится с помощью разъемов.

Разъем Х7 предназначен для соединения с СОМ– портами компьютера.

На контакты разъемов Х1 выведены входы портаР6 и входы эталонных питания и земли.

На контакты разъема Х5 выведены линии отпорта Р3.

На контакты разъема Х4 выведены линии отпорта Р1.

Разъем Х8 используется для подключения блокатрансформатора.

/>3.2.   Платамакета.

Оптопара VD1 VD2 является датчиком частотывращения якоря двигателя. Фотодиод VD1 формируеттоковые импульсы при прохождении шторки освещением от светодиода VD2. Импульс с VD1 открываеттранзистор VT1 тем самым формируя импульс на егоколлекторе.

Управление двигателем происходит при помощи DD1(ИМС управления реверсивными коллекторными двигателями). Режимы работыпредставлены в таблице 3.2.

Таблица 3.2

Режим работы IN1 IN2 OUT1 OUT2 Тормоз 1 1 L L Движ/Рев 1 L H Рев/Движ 1 H L Стоп ¥ ¥

На входы DD1 поступают логические уровни «0»«1», что выбирает режим работы двигателя, подключенного к выходам DD1. С1 – С4 – сглаживающие фильтры.

Переменным резистором R8, соединеннымпоследовательно с генератором, подается нагрузка на двигатель. Резисторы R5 R9 (R5=R9) соединены общим проводом, а с других концовснимается аналоговое значение напряжения для определения нагрузки. Взависимости от направления вращения генератора ток в цепи будет протекать вдвух направлениях, следовательно, значение потенциалов напряжения на R5 R9 будут противоположны, но равны по значению. Этообеспечивает измерение напряжения в реверсном режиме работы двигателя.

/>4.   Описаниеалгоритма программы.

Блок схема алгоритма представлена в графической части лист 2.

Главная программа зациклена и представляет собой блок процедурыиндикации. Программы измерения частоты вращения двигателя и обработки нажатияклавиш выполняются прерывая основную программу индикации прерываниями отизмерителя частоты и клавиатуры соответственно. После выполнения программобработки прерываний программа индикации продолжает работу с места еепрерывания.

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

В ПП обработки прерывания от клавиатуры (KLAV)определяется нажатие функциональной клавиши. Если клавиша не функциональная товыполняется сдвиг индикационных ячеек влево и запись кода нажатой клавиши впоследнею индикационную ячейку, далее выход. Если же клавиша функциональнаяпроизводится определение какая именно нажата для этого служат четыре блокарешения, если функциональность клавиши не определится то значит нажата клавиша«реверса» при нажатии которой осуществляется реверс направления вращения якорядвигателя и выход. Далее перечислены действия по нажатию функциональных клавиш,после выполнения которых ПП завершается:

-    клавиша «удалить» — сдвиг индикационных ячеек в право и запись встаршую ячейку нуля;

-    клавиша «старт» — преобразования введенного числа оборотов всекунду в длительность периода импульсов с датчика;

-    клавиша «стоп» — остановка двигателя;

-    клавиша «режим» — переключение режима индикации частоты вращения/ подаваемой нагрузки.

/>5.   Описаниепрограммы.

В программе используются символические имена присвоенные ячейкамОЗУ:

st1 data 52h

номер сдвига индикационной ячейки                          n_sd data53h

введенная частота вращения якоря двигателя         obor data 54h

делимое 1-й байт                                                            chi_3data 55h

делимое 2-й байт                                                            chi_2data 56h

делимое 3-й байт                                                            chi_1data 57h

делитель 1-й байт                                                            zn_hdata 59h

делитель 2-й байт                                                             zn_ldata 5ah

частное 1-й байт                                                             rez_hdata 5bh

частное 2-й байт                                                              rez_ldata 5ch

результат деления 16/8                                                  rezuldata 5dh

измеренная длительность импульса мл. байт         dli_i_l data 5eh

измеренная длительность импульса ст. байт          dli_i_h data 5fh

заданная длительность импульса мл. байт                 dli_l data60h

заданная длительность импульса ст. байт                dli_h data61h

временная ячейка                                                           tempdata 62h

счетчик паузы выдачи измеренного значения           indik data 63h

Используемые биты флагов перечислены ниже:

повторный вход в п.п. измерения периода импульса    flag bit 00h

индикация нажатия функциональной клавиши             f_ind bit 01h

функциональная клавиша «реверс»                               f_revbit 02h

направление вращения                                                    f_napbit 03h

вкл./выкл. двигатель                                                           f_rabbit 04h

индикация обороты/нагрузка                                            f_rezbit 05h

функциональная клавиша «режим»                           f_rezindbit 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.

Для настройки таймера и прерывания INT1 используютсяследующие управляющие слова:

-    TMOD=01H – режим работы таймера;

-    TCON=04H

-    Tr – разряд запуска таймера;

-    IEN0 – разрешения прерываний

-    8 разряд – запрет всех прерываний;

-    3 разряд – INT1;

-    1 разряд – INT0(клавиатура);

/>6.   Методикавыполнения лабораторной работы./>6.1.   Цель работы.

Приобретение практических навыков в технологии разработки и отладкиэлементов управляющих систем.

/>6.2.   Описание лабораторнойустановки.

Лабораторная установка состоит из следующих частей: платы управленияПМК, платы двигателя и блока питания.

Плата двигателя рис.6.1 состоит из трех блоков: блок датчикаскорости вращения, блок управления, блок датчика нагрузки. Плата двигателяподключается к разъемам портов ПМК при помощи разъемов. X2подключается к порту Р3 и служит для соединения: оптопары («Датчик») со входомпрерывания INT1, портов Р3.4 Р3.5 с входами блокауправления (Упр1 и Упр2). X6 подключается к порту Р6используя две линии AI6 и AI7для измерения нагрузки прелагаемой к двигателю с помощью генератора (измерениенагрузки прелагаемой из вне при помощи этой схемы невозможно). Использованиедвух каналов предусматривается для измерения напряжения двигателя с возможнымреверсом когда при вращении в одну сторону измерение происходит с первогоканала, а при вращении в другую со второго. Такое распределение получаетсяпутем использования делителя напряжения общий конец которого соединен с нулевымпроводом и при протекании тока в разных направлениях меняет знак напряжения наконцах делителя относительно общего провода на противоположный. Опорноенапряжение Uref подается соединением  +5В, а нижняяграница (Ugnd) задается соединением с общим.

/>

Рис.6.1.Схема платы двигателя.

Разъем X3 соединяет схему с блоком питания.

Датчик числа оборотов представляет собой диск, с 24-ю прорезями,жестко закрепленный навалу вращения двигателя. Во время прохождения прорезимежду оптопарой светодиод VD2 освещает инфракраснымизлучением фотоприемник представляющий собой фотодиод VD1.Полупроводниковый фотоприемник уменьшив за счет этого свое сопротивление начинаетпропускать ток открывая тем самым транзистор VT1 сколлектора которого снимаются прямоугольные импульсы.

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

/>6.3.   Исходные данные.

1.  Комплекс отладочный:плата, ПО FDSAB;

2.  Установка управлениядвигателем;

3.  Возможность установкичастоты вращения с клавиатуры;

4.  Стабилизация частоты;

5.  Импульсы с датчикапоступают на вход прерывания INT1;

6.  Управление двигателемосуществляется выдачей кода на порты Р3.4 и Р3.5 в соответствии с таблицей 6.1;

7.  Максимальная скоростьвращения двигателя 110 обр1/сек.;

8.  Число прорезей дискавращения датчика составляет 24 шт.

9.  Мощность двигателя 10Вт;

10.   Входы дляизмерения нагрузки поступают на АЦП каналы AI6 и AI7. VAREF=5B.

Таблица6.1

Режим работы IN1 IN2 OUT1 OUT2 Тормоз 1 1 L L Движ/Рев 1 L H Рев/Движ 1 H L Стоп ¥ ¥ />6.4.   Домашние задание.

Составить алгоритм и программу стабилизации частоты вращенияэлектродвигателя постоянного тока с параллельным возбуждением в соответствии сисходными данными.

/>6.5.   Рекомендации повыполнению.

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

1)  Введенную частотувращения (обр/сек) умножить на число прорезей в диске (24);

2)  1000000 разделить наполученное число, в результате чего получится длительность одного периода вмкс.

Для обратного преобразования:

1)  1000000 разделить надлительность периода;

2)  разделить на 24.

При делении 1000000 (3 байта) на 2 байта возможно использованиестандартной процедуры деления 4-х байтного числа на 2-й байтное. Но для болеебыстрого деления (а значит и увеличения скорости измерения) рекомендуетсяуменьшить длительность деления, производя деление 6-ти тетрад (1000000) на 3-итетрады (максимально возможное число 4095), для этого необходимо:

1)  перед процедуройделения сдвинуть делитель на четыре разряда влево;

2)  продолжать деление сучетом сдвинутого делителя, т. е. деление должно длится на четыре цикла меньше;

3)  после процедурыделения сдвинуть частное на четыре разряда влево.

Для измерения длительности периода импульсов необходимо в качествесчетчика использовать один из таймеров в режиме таймера. Подача на входпрерывания INT1 импульсов вызывает ПП обработкипрерывания в которой необходимо следить за первым и вторым входом в ПП. Припервом вхождении включить таймер, а при втором вхождении считать состояниетаймера, что и будет являться длительностью периода импульса.

/>6.6.   Последовательностьвыполнения работы.

1.  Набрать текстпрограммы;

2.  Откомпилироватьпрограмму;

3.  Запустить отладчик FDSAB;

4.  Загрузить в память bin файл, запустить программу на выполнение;

5.  Снять зависимостьизменения частоты вращения от подаваемой нагрузки;

6.  Сделать вывод опроделанной работе;

7.  Составить отчет.

Внимание! При приложениибольших усилий торможения двигателя он может остановится что приведет к резкомуувеличению тока в выходной цепи ИМС управления и возможно выход ее из строя.

/>7.   Заключение.

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

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

/>Литература.

1.  Григорьев В. Л.Программное обеспечение микропроцессорных систем. – М.: Энергоатомиздат, 1983.

2.  Щелкунов Н. Н., ДиановА. П. Микропроцессорные средства и системы. – М.: Радио и связь, 1989.

3.  Сташин В. В.Проектирование цифровых устройств на однокристальных микроконтроллерах. – М.:Энергоатомиздат, 1990.

4.  Иванов В. И.Полупроводниковые оптоэлектронные приборы: Справочник – 2-е изд., перераб. Идоп. – М.: Энергоатомиздат, 1989

5.  Хвощ С. Т.Микропроцессоры и микроЭВМ в системах автоматического управления. Справочник.Л.: Машиностроение. Ленингр. отд-ние, 1987.

/>Приложение.

Текст программы.

; присваивание имен

               p4data 0e8h

               p5data 0f8h

               ip0data 0a9h

               ip1data 0b9h

               ien0data 0a8h

               ien1data 0b8h

               adcondata 0d8h

               addatdata 0d9h

               darpdata 0dah

               st1data 52h

               n_sddata 53h

               obordata 54h

               chi_3data 55h

               chi_2data 56h

               chi_1data 57h

               chi_tdata 58h

               zn_hdata 59h

               zn_ldata 5ah

               rez_hdata 5bh

               rez_ldata 5ch

               rezuldata 5dh

               dli_i_ldata 5eh

               dli_i_hdata 5fh

               dli_ldata 60h

               dli_hdata 61h

               tempdata 62h

               indikdata 63h

               flagbit 00h

               f_indbit 01h

               f_revbit 02h

               f_napbit 03h

               f_stabit 04h

               f_rabbit 05h

               f_rezbit 06h

               f_rezindbit 07h

; определениевекторов прерываний

               org0000h

               sjmpstart

               org0003h

               ljmpklav

               org013h

               ljmpint_1

; начальная инициализация

start:       movdarp,#00h

               movadcon,#0fh

               clrf_rezind

               clrf_rab

               clrf_rev

               clrf_sta

               setbf_nap

               setbf_rez

               movn_sd,#0bh

               movst1,#3fh

               movip0,#04h

               movip1,#04h

               movsp,#65h

               movien0,#81h

               inizial:movr0,#47h

               movr1,#03h

; начальное обнуление индикатора

numb:    mov@r0,#00h

               incr0

               djnzr1,numb

; определение режимаработы и его индикация

               jnbf_sta,re1

               jbf_rez,re1

               mov4ah,#19h

               sjmpre2

re1:         mov4ah,#10h

re2:         clrf_ind

beg:        jbf_ind,beg2

; определение режима работы

               jnbf_rezind,na2

               clr f_rezind

               jb f_nap,na1

               mov 4ah,#0fh

               sjmp na2

na1:        mov 4ah,#0ah

; запуск двигателя с проверкой направлениявращения

na2:        jnb f_rev,beg2

               jb f_nap,napr1

               clr p3.5

               mov 4ah,#0fh

               jb f_rez,napr

               mov 4ah,#19h

               sjmp napr

napr1:    clr p3.4

               mov 4ah,#0ah

               jb f_rez,napr

               mov 4ah,#19h

napr:      clr f_rev

               clr flag

               setb f_rab

               mov ien0,#85h

; остановка двигателя

beg2:     jnb f_ind,beg1

               djnz st1,beg1

               mov st1,#05fh

; сдвиг индикационных ячеек вправо

               mov r0,#0ahov r1,#49h

               mov 40h,#10h

sdvig:     mov a,@r1

               inc r1

               mov @r1,a

               mov a,r1

               subb a,#02h

               mov r1,a

               djnz r0,sdvig

               djnz n_sd,beg1

               mov n_sd,#0bh

               ljmp inizial

; процедура индикации

beg1:     mov r4,#0feh

               mov dptr,#tabcod

               mov r0,#47h

cycl:       mov p4,#0ffh

               mov a,@r0

               movc a,@a+dptr

               mov p5,a

               mov a,r4

               mov p4,a

               rl a

               mov r4,a

               inc r0

               lcall del

               cjne r0,#4bh,cycl

               ljmp beg

del:         mov r1,#10

st_2:       mov r2,#10

st_1:       nop

               nop

               nop

               djnz r2,st_1

               djnz r1,st_2

               ret

tabcod:  db0c0h,0f9h,0a4h,0b0h,99h,92h,82h,0f8h,80h,90h

               db0feh,0fdh,0fbh,0f7h,0efh,0dfh,0ffh

               db0c6h,0f8h,0c0h,0c8h,88h,8ch,86h,80h,89h,0ceh,91h,0b0h,82h

; клавиатура

klav:       push acc

               push p4

               push psw

               setb  psw.3

               mov r4,#00h

               mov r7,#04h

               mov r6,#0feh

loop:       mov a,r6

               mov p4,a

               rl a

               mov r6,a

               mov a,p4

               mov r5,#04h

               swap a

rotate:    rrc a

               jnc dbnc

               inc r4

               djnz r5,rotate

               djnz r7,loop

               ljmp quit

dbnc:      mov r2,#0ah

m1:         mov r3,#55h

m2:         djnz r3,m2

               djnz r2,m1

               mov a,#0f0h

wait:       mov p4,#0f0h

               cjne a,p4,wait

               mov r2,#0ah

m3:         mov r3,#55h

m4:         djnz r3,m4

               djnz r2,m3

               mov a,#09h

               subb a,r4

               jc func

rel:          mov r0,#03h

               mov r1,#48h

new:       mov a,@r1

               inc r1

               mov @r1,a

               mov a,r1

               subb a,#02h

               mov r1,a

               djnz r0,new

               mov r1,#47h

               mov 47h,r4

               ljmp quit

; определение режима по функциональнойклавише

func:       jb f_ind,quit

               cjne r4,#0ah,g2

               ljmp bakesp

g2:          cjne r4,#0bh,g3

               ljmp sta

g3:          cjne r4,#0ch,g4

               ljmp stop

g4:          cjne r4,#0dh,g5

               ljmp rezim

g5:          cjne r4,#0eh,g6

               ljmp rezim

g6:          ljmp revers

quit:        clr psw.3

               pop psw

               pop p4

               pop acc

               reti

; удаление символа

bakesp:  jb f_rab,quit

               mov 47h,48h

               mov 48h,49h

               mov 49h,#00h

               ljmp quit

; старт. DEC->BIN

sta:         jb f_rab,quit

               mov 4ah,#0ah

               mov b,#0ah

               mov a,49h

               mul ab

               add a,48h

               mov b,#0ah

               mul ab

               add a,47h

               mov obor,a

; BIN*24

               mov b,#18h

               mov a,obor

               mul ab

               mov zn_l,a

               mov zn_h,b

; деление1000000 наполученное значение

               lcall div24

               mov dli_l,rez_l

               mov dli_h,rez_h

; старт измерение

               mov tl0,#00h

               mov th0,#00h

               clr flag

               mov indik,#00h

               mov tmod,#10h

               mov tcon,#04h

               mov 4ah,#10h

               mov 49h,#10h

               mov 48h,#10h

               mov 47h,#10h

               mov 46h,#11h

               mov 45h,#12h

               mov 44h,#15h

               mov 43h,#16h

               mov 42h,#12h

               mov 41h,#10h

               setb f_ind

               setb f_rev

               setb f_sta

               ljmp quit

; стоп

stop:       jnb f_rab,quit

               mov ien0,#81h

               setb p3.4

               setb p3.5

               clr f_rab

               mov 4ah,#10h

               mov 49h,#10h

               mov 48h,#10h

               mov 47h,#10h

               mov 46h,#10h

               mov 45h,#11h

               mov 44h,#12h

               mov 43h,#13h

               mov 42h,#14h

               mov 41h,#10h

               setb f_ind

               clr f_sta

               ljmp quit

; реверс

revers:   jnb f_rab,out2

               mov ien0,#81h

               setb p3.4

               setb p3.5

               mov 4ah,#10h

               mov 49h,#10h

               mov 48h,#10h

               mov 47h,#10h

               mov 46h,#16h

               mov 45h,#17h

               mov 44h,#18h

               mov 43h,#17h

               mov 42h,#16h

               mov 41h,#11h

               jb f_nap,n1

               mov adcon,#0eh

               sjmp n2

n1:          mov adcon,#0fh

n2:          setb f_rev

               cpl f_nap

               setb f_ind

out2:       ljmp quit

; режим оборотыдвигателя/нагрузка

rezim:     jnb f_rab,out

               cpl f_rez

               jb f_rez,rez1

               mov 4ah,#10h

               mov 49h,#10h

               mov 48h,#10h

               mov 47h,#10h

               mov 46h,#19h

               mov 45h,#15h

               mov 44h,#1ah

               mov 43h,#16h

               mov 42h,#1bh

               mov 41h,#1ch

               setb f_ind

out:         ljmp quit

rez1:       mov 4ah,#10h

               mov 49h,#10h

               mov 48h,#10h

               mov 47h,#10h

               mov 46h,#13h

               mov 45h,#1dh

               mov 44h,#13h

               mov 43h,#16h

               mov 42h,#13h

               mov 41h,#12h

               setb f_rezind

               setb f_ind

               ljmp quit

; процедура деления3-х байт на 2-ва

div24:     push psw

               push acc

               mov chi_3,#0fh

               mov chi_2,#42h

               mov chi_1,#40h

               mov rez_h,#00

               mov rez_l,#10h

               mov a,zn_h

               mov b,#10h

               mul ab

               mov zn_h,a

               mov a,zn_l

               mov b,#10h

               mul ab

               mov zn_l,a

               mov a,b

               add a,zn_h

               mov zn_h,a

lp24:       mov a,rez_l

               rlc a

               mov rez_l,a

               mov a,rez_h

               rlc a

               mov rez_h,a

               push psw

               clr c

               mov a,chi_1

               rlc a

               mov chi_1,a

               mov a,chi_2

               rlc a

               mov chi_2,a

               mov a,chi_3

               rlc a

               mov chi_3,a

               push psw

               clr c

               mov a,chi_2

               subb a,zn_l

               mov chi_t,a

               mov a,chi_3

               subb a,zn_h

               jc nosav

               pop psw

sav:        mov chi_3,a

               mov chi_2,chi_t

               inc rez_l

               sjmp qsav

nosav:    pop psw

               jc sav

qsav:      pop psw

               jnc lp24

               pop acc

               pop psw

               ret

; прерывание отдатчика

int_1:      jb flag,iz2

               setb flag

               setb tr1;первое вхождение. запустить таймер

               reti

iz2:         push psw;второе вхождение

               push acc

               clr tr1

               mov ien0,#80h

               mov dli_i_l,tl1; сохранить измеренное значение

               mov dli_i_h,th1;

; регулировка

               clr c

               mov a,dli_i_l

               subb a,dli_l

               mov a,dli_i_h

               subb a,dli_h

               jc mot_1

               jb f_nap,nap11

               setb p3.4

               sjmp mot_0

nap11:   setb p3.5

               sjmp mot_0

mot_1:   jb f_nap,nap01

               clr p3.4

               sjmp mot_0

nap01:   clr p3.5

mot_0:

; индикация

               jb f_ind,inizdp

               djnz indik,inizdp

               mov indik,#2fh

               jb f_rez,chas

; индикация нагрузки

azp0:      jnb adcon.4,azp0

               mov a,addat

               mov b,#0ah

               div ab

               mov 47h,b

               mov b,#0ah

               div ab

               mov 48h,b

               mov 49h,a

inizdp:    ljmp iniz

; индикация частоты вращения

chas:      jb f_nap,i_nap1

               mov a,4ah

               cjne a,#0ah,in_ob2

               mov 4ah,#10h

in_ob2:  dec 4ah

               sjmp i_nap2

i_nap1:  mov a,4ah

               cjne a,#0fh,in_ob1

               mov 4ah,#09h

in_ob1:inc 4ah

i_nap2:  mov zn_l,dli_i_l

               mov zn_h,dli_i_h

               lcall div24;деление 3 байт на 2 байт

               mov rezul,#01h; деление 2 байт на 24

lp16:       clr c

               mov a,rezul

               rlc a

               mov rezul,a

               push psw

               clr c

               mov a,rez_l

               rlc a

               mov rez_l,a

               mov a,rez_h

               rlc a

               mov rez_h,a

               push psw

               clr c

               mov a,rez_h

               subb a,#18h

               jc nosav16

               pop psw

sav16:    mov rez_h,a

               inc rezul

               sjmp qsav16

nosav16:   pop psw

               jc sav16

qsav16: pop psw

               jnc lp16

; BIN->DEC

               mov a,rezul

               mov b,#0ah

               div ab

               mov 47h,b

               mov b,#0ah

               div ab

               mov 48h,b

               mov 49h,a

; инициализация нового запуска программыизмерения

iniz:         mov tl1,#00h

               mov th1,#00h

               clr flag

port_0:   jb p3.3,port_0

port_1:   jnb p3.3,port_1

               mov ien0,#85h;84

               pop acc

               pop psw

               reti

               end

еще рефераты
Еще работы по информатике, программированию