Реферат по предмету "Информатика, программирование"


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

СОДЕРЖАНИЕ



Лист



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
Движ/Рев 0 1 L H
Рев/Движ 1 0 H L
Стоп 0 0 ¥ ¥


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



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



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

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



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



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



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



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



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



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



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



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

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



st1 data 52h



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



Для настройки таймера и прерывания 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
Движ/Рев 0 1 L H
Рев/Движ 1 0 H L
Стоп 0 0 ¥ ¥




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.



Приложение.

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



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



               p4
data 0e8h



               p5
data 0f8h



               ip0
data 0a9h



               ip1
data 0b9h



               ien0
data 0a8h



               ien1
data 0b8h



               adcon
data 0d8h



               addat
data 0d9h



               darp
data 0dah



               st1
data 52h



               n_sd
data 53h



               obor
data 54h



               chi_3
data 55h



               chi_2
data 56h



               chi_1
data 57h



               chi_t
data 58h



               zn_h
data 59h



               zn_l
data 5ah



               rez_h
data 5bh



               rez_l
data 5ch



               rezul
data 5dh



               dli_i_l
data 5eh



               dli_i_h
data 5fh



               dli_l
data 60h



               dli_h
data 61h



               temp
data 62h



               indik
data 63h



               flag
bit 00h



               f_ind
bit 01h



               f_rev
bit 02h



               f_nap
bit 03h



               f_sta
bit 04h



               f_rab
bit 05h



               f_rez
bit 06h



               f_rezind
bit 07h



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



               org
0000h



               sjmp
start



               org
0003h



               ljmp
klav



               org
013h



               ljmp
int_1



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



start:       mov
darp,#00h



               mov
adcon,#0fh



               clr
f_rezind



               clr
f_rab



               clr
f_rev



               clr
f_sta



               setb
f_nap



               setb
f_rez



               mov
n_sd,#0bh



               mov
st1,#3fh



               mov
ip0,#04h



               mov
ip1,#04h



               mov
sp,#65h



               mov
ien0,#81h



               inizial:mov
r0,#47h



               mov
r1,#03h



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



numb:    mov
@r0,#00h



               inc
r0



               djnz
r1,numb



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



               jnb
f_sta,re1



               jb
f_rez,re1



               mov
4ah,#19h



               sjmp
re2



re1:         mov
4ah,#10h



re2:         clr
f_ind



beg:        jb
f_ind,beg2



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



               jnb
f_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:  db
0c0h,0f9h,0a4h,0b0h,99h,92h,82h,0f8h,80h,90h



               db
0feh,0fdh,0fbh,0f7h,0efh,0dfh,0ffh



               db
0c6h,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



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

Поделись с друзьями, за репост + 100 мильонов к студенческой карме :

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

Читайте также:
Виды рефератов Какими бывают рефераты по своему назначению и структуре.