Разработка устройства управления мощностью двигателя

  • Вид работы:
    Курсовая работа (т)
  • Предмет:
    Информатика, ВТ, телекоммуникации
  • Язык:
    Русский
    ,
    Формат файла:
    MS Word
    86,11 Кб
  • Опубликовано:
    2013-12-12
Вы можете узнать стоимость помощи в написании студенческой работы.
Помощь в написании работы, которую точно примут!

Разработка устройства управления мощностью двигателя

Содержание

 

Введение

1. Анализ задачи

1.1 Функциональная спецификация системы

1.2 Описание интерфейса между системой и пользователем

2. Предварительное проектирование системы

2.1 Разбиение системы на модули

2.2 Соотношение между аппаратными и программными средствами

2.3 Построение структурной схемы аппаратной части системы

3. Проектирование аппаратных средств системы

4. Проектирование программного обеспечения

Заключение

Список использованных источников

Приложения

Введение


Всё возрастающее применение 8-разрядных микроконтроллеров (МК) семейства HC11 фирмы MOTOROLA во встраиваемых системах управления делает актуальной разработку относительно недорогих систем отладки, доступных широкому классу разработчиков.

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

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

)        выбор типа МК (на основании количества необходимых линий управления, вычислительной мощности, объема памяти, требований к наличию периферийных устройств, габаритов, энергетических характеристик и прочего);

2)      ознакомление со структурой, системой команд и особенностями функционирования выбранного МК;

)        написание и отладка программного обеспечения для МК.

В данном курсовом проекте необходимо разработать ШИМ-регулятор мощности двигателя постоянного тока типа ДПМ для микродрели на базе микроконтроллера MC68HC11. Требования, предъявляемые к проектируемой системе, определяются требованиями потребителей или пользователей, на которых рассчитывается проектируемое устройство.

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

На первом этапе необходимо получить информацию, касающуюся того, что система должна делать. Для этого необходимо ответить на следующие вопросы:

.        Каковы общие требования к системе?

2.      Каким образом задавать значение требуемой мощности?

.        Каким образом ускорить переход к требуемой мощности?

.        Каковы требования к сложности и удобству управления?

.        Что необходимо предусмотреть для аварийной ситуации?

.        Каким образом пользователь узнаёт текущее значение мощности?

.        Что нужно предусмотреть для нормальной работы микродрели при возобновлении состояния после аварийного останова?

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

Исходя из заданных данных на курсовой проект, можно выделить следующие функциональные действия, которые должно выполнять наше устройство:

.        Обеспечивать задание мощности двигателя путём выбора из фиксированного набора значений;

2.      Обеспечивать задание мощности двигателя с помощью двух кнопок и семисегментного индикатора;

.        Обеспечивать режим автоповтора;

.        Быть несложным в управлении, обеспечивать максимальное удобство пользователю;

.        Аварийный останов;

.        Индикация состояния микродрели;

.        Плавный разгон двигателя.

1. Анализ задачи


1.1 Функциональная спецификация системы


Функциональная спецификация включает два основных компонента:

) список функций выполняемых системой;

) описание интерфейса между системой и пользователем.

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

.        Какие средства необходимо предусмотреть для управления системой?

2.      Какие средства необходимо предусмотреть для определения пользователем текущей мощности?

.        Какие средства необходимо предусмотреть для автоповтора?

.        Какие средства необходимо предусмотреть для плавного разгона?

.        Какие средства необходимо предусмотреть для обеспечения аварийного останова?

.        Какие средства необходимо предусмотреть для управления двигателем постоянного тока?

Ответив на эти вопросы, можно приступить к составлению функциональной спецификации.

Требования пользователя:

.        Дрель предназначена для сверления отверстий в печатных платах.

2.      Ряд значений мощности: 0, 1, 2, 3, 4, 5, 6, 7, 8.

Функциональная спецификация:

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

2.      Номер выбранной мощности индицируется на семисегментном индикаторе. При включении на индикаторе показывается "0". Для удобства вывода значений на индикатор используем семисегментный дешифратор.

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

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

.        Нажатием кнопки останова мгновенно отключается питание двигателя. Чтобы вновь включить двигатель, нужно снова нажать кнопку останова.

.        Посредством ШИМ, который реализуется с помощью таймера и прерываний.

Если распределить эту информацию по категориям ВХОДЫ, ВЫХОДЫ и ФУНКЦИИ, функциональную спецификацию микродрели можно представить в следующем виде:

.        ВХОДЫ.

.1.     Кнопка уменьшения мощности.

1.2.   Кнопка увеличения мощности.

.3.     Кнопка останова

2.      ВЫХОДЫ.

.1.     Семисегментный индикатор.

2.2.   Управление мощностью дрели.

3.      ФУНКЦИИ.

3.2.   Индикатор индицирует выбранную мощность.

1.2 Описание интерфейса между системой и пользователем


Важным вопросом при разработке функциональной спецификации является взаимодействие между пользователем и системой. В системе регулировки мощности взаимодействие между системой и пользователем осуществляется с помощью кнопок и семисегментного индикатора (Рисунок 1.1).

Рисунок 1 - Интерфейс между системой и пользователем

Учет человеческих факторов при проектировании должен приводить к простоте системы и легкости ее использования. Эти цели достигаются посредством проектирования надлежащего системного интерфейса. На основании списка функций выполняемых системой определим интерфейс между системой и пользователем.

устройство управление мощность двигатель

Для переключения уровней мощностей предусмотрены две кнопки: "Ув. мощности" и "Ум. мощности". Для аварийного останова - кнопка "Останов".

Управление системой производится следующим образом. При включении микродрели в сеть питания происходит инициализация (мощность = 0). При нажатии кнопки "Ув. мощности" микродрель начинает работать (уровень мощности равен 1, или при автоповторе соответствующая). Если перед работой нужно установить определённый уровень мощности (не 1-ый), нажимается кнопка "Останов"; кнопками "Ув. мощности" и "Ум. мощности" задается мощность и затем повторным нажатием кнопки "Останов" микродрель, плавно разгоняясь, начинает работать на заданной мощности. Если во время работы нужно быстро перейти к какой-либо скорости - удерживаем соответствующую клавишу, что вызывает автоповтор. Для паузы в работе или при аварийной ситуации нажимаем кнопку "Останов". Для возобновления работы нажимаем эту кнопку повторно.

На семисегментном индикаторе отображается соответствующее значение мощности.

2. Предварительное проектирование системы


2.1 Разбиение системы на модули


Используя предварительные данные, разобьем нашу проектируемую систему на отдельные модули.

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

2.      Модуль инициализации. После включения питания устройства происходит начальная инициализация устройства.

.        Модуль мощности уменьшает, увеличивает или задаёт автоповтор мощности в зависимости от нажатой кнопки.

.        Модуль аварийного останова выключает микродрель при нажатии кнопки останова.

.        Входной модуль осуществляет считывание текущего состояния кнопок и его запоминание (хранение).

.        Выходной модуль. Управление мощностью нашего двигателя.

.        Модуль ШИМа управляет переключением частоты ШИМа.

.        Модуль индикации: управляет выводом на семисегментный индикатор текущего значения мощности.

Полученная таким образом модульная структура системы показана на рисунке 2.

Рисунок 2 - Модульная структура системы

Каждый модуль состоит из набора функций, принадлежащих этому модулю. Способ распределения функций по конкретным модулям зависит от личного предпочтения разработчика. Если модуль содержит слишком много функций, он может быть разделен на несколько модулей. С целью упрощения несколько модулей, каждый из которых содержит небольшое число функций, могут быть объединены в один модуль. Модульная структура позволяет легко добавлять функции к системе, а также изменять или удалять часть системы в любой момент цикла ее проектирования.

Рассмотрим, как распределяются функции по модулям системы управления мощности двигателя постоянного тока.

1.      Исполнительный модуль состоит из единственной управляющей функции.

2.      Входной модуль включает:

считывание состояния кнопок Ув. /Ум. мощности

считывание состояния кнопки аварийного останова

. Выходной модуль включает:

подача управляющего сигнала на двигатель постоянного тока

вывод на семисегментный индикатор

. Модуль мощности включает единственную функцию задания мощности в соответствии с нажатием кнопок.

. Модуль инициализации включает:

инициализацию системы при начальном включении (включение питания);

. Модуль ШИМа управляет формированием импульсов.

. Модуль аварийного останова включает:

прекращение работы двигателя при нажатии на кнопку аварийного останова

возобновление работы двигателя

. Модуль индикации управляет выводом на семисегментный индикатор

Полная функционально-модульная структура устройства управления мощностью двигателем, включающая функции для каждого модуля, показана на рисунке 3.

Рисунок 3 - Функционально-модульная структура устройства управления

2.2 Соотношение между аппаратными и программными средствами


Связь между аппаратными и программными модулями системы устройства управления микродрели представлена на рисунке 4.

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

Рисунок 4 - Связь между аппаратными и программными модулями

Модуль ШИМа имеет аппаратную и программную часть. Программная часть осуществляет управление ШИМом и задаёт его работу. Входной и выходной модули необходимо поместить в программную часть. Они непосредственно считывают (или записывают) из портов (в порты) ввода (вывода) данные и анализируют их. Модули инициализации проще всего выполнить при помощи программного обеспечения.

Все остальные модули отнесем к аппаратной части.

2.3 Построение структурной схемы аппаратной части системы


На основе функций, выполняемых системой, построим структурную схему аппаратной части системы. Процессорный модуль является ядром системы. В нем происходит обработка входной информации и генерация управляющих воздействий на все компоненты системы. В ПЗУ хранится исполняемая программа и подпрограммы для обработки прерываний. А в ОЗУ содержаться временные переменные. Также в отдельный блок можно выделить модуль генератора тактовых импульсов. Обмен данными между блоком центрального процессора и остальными блоками устройства управления осуществляется через порты.

Для подключения внешних устройств у микроконтроллера предусмотрено пять 8-ми разрядных портов.

В нашем случае, периферийными устройствами будут служить: кнопки, двигатель постоянного тока, семисегментный индикатор. Эти устройства подключаются к устройству ввода - вывода.

Структурная электрическая схема устройства приведена на чертеже БГУИ. ХХХХХХ.001 Э1.

3. Проектирование аппаратных средств системы


Основой аппаратной части является микроконтроллер МС68НС11А8.

В нашем случае микроконтроллер будет работать в однокристальном режиме, поэтому на вход MODA нужно подать логический '0', а на вход MODB логическую ‘1’.

Микроконтроллер адресует до 64 Кбайт памяти (адреса $0000-SFFFF), которые делятся на 16 страниц по 4 Кбайта. Полный объем памяти доступен в расширенном режиме, когда к выводам портов В и С подключается внешняя память. В нашем случае используется однокристальный режим работы, поэтому доступна только внутренняя память микроконтроллера: ПЗУ, РПЗУ, ОЗУ, а порты В и С служат для обмена данными с внешними устройствами. Две последние страницы адресного пространства (адреса $EOOO-$FFFF) занимает внутреннее масочное ПЗУ, содержимое которого программируется в процессе изготовления микроконтроллера по заказу пользователя. В ПЗУ будет содержаться наша программа. РПЗУ размещена по адресам SB600-5B7FF и в данном курсовом проекте не используется ОЗУ при начальной установке микроконтроллера (процедура RESET) занимает адресное пространство $OOOO-$OOFF. Распределение адресного пространства памяти микроконтроллера показано на рисунке 5.

Рисунок 5 - Карта распределения адресного пространства

Служебные регистры определяют конфигурацию и режимы работы микроконтроллера. Содержимое регистра INIT (рисунок 6) определяет старшие четыре разряда адреса (номер страницы) размещения ОЗУ (биты RAM3-RAM0) и блока внутренних регистров (биты REG3-REG0). При начальной установке микроконтроллера биты данного регистра принимают значения RAM3-RAM0 = 0000 (обращение к странице 0), REG3-REG0 = 0001 (обращение к странице 1). В данном курсовом проекте значения, установленные после начальной установки изменяться не будут.

7

6

5

4

3

2

1

0

RA

RA

RA

RA

RE

RE

RE

Рисунок 6 - Служебный регистр INIT (адрес $103D)

Регистр CONFIG определяет конфигурацию микроконтроллера, разрешая или запрещая использование внутренних ПЗУ, РПЗУ и блока контроля функционирования Регистр OPTION определяет функционирование отдельных блоков микроконтроллера. Содержимое регистров HPRIO, INIT, OPTION записывается непосредственно после начальной установки микроконтроллера и затем может быть только считано. Исключение составляют только разряды PSEL3-PSEL0 в регистре HPRIO и разряды ADPU, CSEL в регистре OPTION, которые могут изменяться в процессе работы микроконтроллера путем записи в эти регистры. Содержимое регистра ONFIG программируется таким же образом, как и содержимое внутреннего РПЗУ, и может изменяться только в процессе программирования. Этим обеспечивается его сохранение при отключении питания. Синхронизация микроконтроллера формируется следующей схемой (рисунок 7).

Рисунок 7 - Схема синхронизации микроконтроллера.

Резистор R1 имеет номинал 10 МОм, конденсаторы С1, С2 - номинал 24 пФ. ZQ - кварцевый резонатор (частота 8 МГц). Схема синхронизации подключается к выводам XTAL и EXTAL микроконтроллера. Длительность такта микроконтроллера Тс = 1/Ft определяется генератором тактовых импульсов (ГТИ). Частота следования тактовых импульсов Ft задается кварцевым резонатором. При этом частота F, в 4 раза меньше частоты внешнего резонатора или генератора Ft = Fg/4. Импульсы с частотой Ft поступают на выход Е микроконтроллера и используются для синхронизации работы других устройств системы.

Так как микроконтроллер работает в рабочем режиме (однокристальном или расширенном), то в процессе начальной установки при включении питания или поступлении сигнала RESET# = 0 в программный счетчик PC загружаются два байта: старший байт РСН из ячейки памяти с адресом $FFFE, младший байт PCL - SFFFF. Эти байты являются адресом первой команды, выполняемой микроконтроллером после начальной установки. Так как микроконтроллер работает в однокристальном режиме, данные байты выбираются из внутреннего. При включении питания требуется время 4064Тс для запуска ГТИ и начального состояния регистров, после чего начинается нормальная работа микроконтроллера. Для начальной установки по сигналу RESET# его длительность должна быть не меньше 4ТС. В курсовом проекте для обмена данными с внешними устройствами используются параллельные порты В, С и D, а также вход . Порты A и Е не используются.

К входу  подключена кнопка аварийного останова, посредством которой подаётся немаскируемый сигнал прерывания.

Порт В (регистр PORTB, адрес $1004) используется как 8-разрядный порт вывода данных. Т.к. в регистре управления PIOC установлено значение разряда HNDS = 1, то порт В работает в режиме нестробированного вывода, при котором не происходит формирование стробирующего сигнала на выходе STRB. На выходы PB0-PB3 подключен семисегментный дешифратор CD4543B фирмы Texas Instruments, который преобразует двоично-десятичный код для отображения на семисегментном индикаторе. Из входов микросхемы, помимо входов данных, особое внимание заслуживают три: LD, BL и Ph. BL - вход, при подаче логической единицы на который на выходах дешифратора образуется комбинация из всех нулей, что соответствует очистке семисегментного индикатора. При подаче на вход LD '1' на выходах дешифратора формируется комбинация для отображения на индикаторе, соответствующая текущей комбинации, которая подаётся на входы данных. При подаче ‘0’ на вход LD в независимости от входной комбинации на входах данных, на индикаторе отображается последняя комбинация, при которой на LD был подан '1'. Вход Ph отвечает за вывод комбнации на выходы дешифратора. При подаче на этот вход '1' комбинация инвертированная.

При подаче неверной комбинации (от 10 до 15) семисегментный индикатор также очищается.

Дешифратор подключён к индикатору через токоограничительные резисторы. Семисегментный индикатор подключается с помощью схемы, представленной на рисунке 8.

Рисунок 8 - Схема подключения семисегментного индикатора

В данном проекте порт С служит для ввода данных - проверка состояний кнопок уменьшения, увеличения мощности.

Двунаправленный порт D (регистр PORTD, адрес $1008) имеет шесть выводов PD5-PD0, которые служат входами или выходами данных в зависимости от установки значения битов в регистре направления DDRD (адрес $1009). В данной работе, все шесть выводов настроены на вывод данных. На выход PD0 подключён двигатель постоянного тока. Схема его подключения представлена на рисунке 9.

Рисунок 9 - Схема подключения двигателя постоянного тока

В данной работе был выбран двигатель постоянного тока типа ДПМ-25-02. Двигатель управляется с помощью малогабаритного полевого транзистора IRFD024 фирмы International Rectifier. Для управления этим транзистором не требуется драйвер, так как он надежно открывается напряжением логической 1, равным 5 В, и нагрузочная способность порта микроконтроллера достаточна для этой цели. Резистор R2 обеспечивает закрытое состояние транзистора, когда после включения питания микроконтроллер находится в сброшенном состоянии. При отсутствии этого резистора в моменты включения питания двигатель может делать кратковременные рывки. Резистор R1 нужен для ограничения тока перезарядки затвора полевого транзистора в моменты смены логических уровней. Помимо ограничения допустимого тока, резистор R1 также влияет на скорость нарастания напряжения на двигателе. Если поставить на его место резистор меньшего номинала, то от резких импульсов тока управления начнет страдать микроконтроллер, давая сбои и зависая. Если ставить резистор с большим сопротивлением, скорость нарастания напряжения на двигателе может настолько снизиться, что транзистор перестанет успевать за частотой переключения ШИМа.

Диоды VD2, VD4 служат для подавления резких выбросов напряжения в моменты переключения транзистора. В отсутствие диодов эти импульсы приводят к сбоям в работе микроконтроллера. Быстрый диод VD3 необходим для гашения возможной ЭДС самоиндукции обмотки двигателя. Стабилитрон VD1 защищает шину питания от импульсов высокого напряжения, с которыми не успевает справляться стабилизатор. Т.к. у нас используется двигатель ДПМ на напряжение питания 27 В, то питать прибор следует от источника постоянного нестабилизированного напряжения около 30 В. Больше 35 В не рекомендуется, так как будет превышено максимально допустимое входное напряжение стабилизатора КР1157ЕН5Б и конденсатора C2. Для защиты полевого транзистора от перегрева и выхода из строя из-за более длительной блокировки вала или коротком замыкании обмотки двигателя служит предохранитель FU1.

В контроллере имеется встроенный таймер. Он реализован на базе 16-разрядного счетчика TCNT (адрес старшего байта $100Е, адрес младшего байта $100F). Этот счетчик запускается при начальной установке микроконтроллера, и после запуска его состояние может быть только считано, например командами LDD, LDX, LDY.

Функционирование таймера определяется 8-разрядными регистрами управления. В данном курсовом проекте таймер используется для периодической генерации запросов прерывания. Для разрешения генерации прерывания реального времени устанавливаем бит RTII регистра TMSK2 (адрес $1024) в 1.

Для прерываний используется специальный флаг RTIF в регистре TFLG2 (адрес $1025). Этот флаг принимает значение RTIF = 1 через заданное время Т = 8192TCKt, где величина коэффициента Кt определяется разрядами RTR1-RTR0 в регистре PACTL (адрес $1026). Сброс признака RTIF в состояние 0 производится путем записи соответствующего значения в регистр TFLG2.

В данном курсовом проекте разряды RTR1-RTR0 равны '0'. Разряд разрешения запроса прерывания RTII в регистре TMSK2 имеет значение RTII = 1. Т.к. к микроконтроллеру подключён кварцевый резонатор с частотой 8 МГц, период работы схемы генерации прерываний реального времени равен 4.10 мс.

Регистры TMSK2, TFLG2 и PACTL представлены на рисунке 10.

7

6

5

4

3

2

1

0


TOI

RTII

PAOVI

PAII

0

0

PR1

PR0

TMSK2


7

6

5

4

3

2

1

0


DDRA7

PAEN

PAMOD

PEDGE

0

0

RTR1

RTR0

PACTL


7

6

5

4

3

2

1

0


TOF

RTIF

PAOVF

0

0

0

0

TFLG2

Рисунок 10 - Регистры TMSK2, TFLG2 и PACTL

При подаче на РC0 или РC1 логический уровень сигнала ‘0’ соответственно увеличивается или уменьшается уровень мощности. При подаче '0' на вход  вызывается подпрограмма прерывания по внешнему сигналу.

Разряд РD0 порта D посредством ШИМа управляют мощностью двигателя. Допустим требуемый уровень мощности "6”, тогда подаём на этот разряд '1' шесть тактов из восьми. Оставшиеся два такта подаем уровень '0'. Один такт равен 4,10 мс. Т.е. частота на выходе ШИМа = 243 Гц, что достаточно для нормальной работы двигателя.

Разряды PB0. PB3 порта B представляют собой двоично-десятичный код 8-4-2-1.

Электрическая принципиальная схема устройства управления мощностью двигателя представлена на чертеже БГУИ. ХХХХХХ.002 Э3.

4. Проектирование программного обеспечения


С точки зрения программиста разработанная система управления состоит из программно доступных регистров микроконтроллера, трёх портов В, C и D и входа . Вся работа системы заключается в определении состояния входных портов, выполнения определённых вычислений и выводе данных из микроконтроллера Motorola (ввод данных в порты).

Блок-схема алгоритма работы программы приведена на чертеже БГУИ. ХХХХХХ.003 Э8 приложения Б.

Кнопка "Ув. мощности" подсоединена к разряду РС0 порта С. Когда она нажата в данный разряд поступает логическая '0'. После чего проверяется на нажатие кнопка "Ум. мощности" дабы по одновременному нажатию двух кнопок мощность не менялась. Кнопка "Ум. мощности" подсоединена к разряду PC1 порта С.

В процессе работы системы порт С постоянно опрашивается и значение текущей мощности в виде двоично-десятичного кода подаётся на разряды PB0-PB3 порта B, к которым через семисегментный дешифратор подключён семисегментный индикатор.

К разряду PD0 порта D подключён двигатель постоянного тока. Активный уровень - логическая '1'. Управления мощностью двигателя реализуется посредством ШИМ. Для установления длительности импульсов используется встроенный таймер и прерывания реального времени с периодом 4,10 мс.

Ко входу  подключена кнопка "Останов", при нажатии на которую на вход подаётся '0'. Вызывается немаскируемое прерывание, в котором запрещается прерывания реального времени и мощность устанавливается в ноль.

Полный листинг программы приведен в приложении А. В таблице 1 приведена карта памяти для устройства управления мощностью двигателя.

Таблица 1 - Карта памяти

ОЗУ $0000 - $001F $0020 - $00FF

 Стек Переменные

Регистры и Порты $1002 $1003 $1004 $1008 $1025 $1024 $1026 $1007 $1009

 PIOC PORTC PORTB PORTD TFLG2 TMSK2 PACTL DDRC DDRD

ПЗУ $E000 - $E082 $E085 - $E0A7 $E0A8 - $E0DA $FFF0 - $FFFE

 Основная программа Пользовательские подпрограммы Подпрограмма обработки прерывания Вектора обработки прерываний



Заключение


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

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

Список использованных источников


1.      Методическое пособие по микроконтроллеру семейства М68НС11

2.      Микропроцессорная техника: Учеб. пособие по курсовому проектированию по дисциплине для студ. спец.40 02 02 "Электронные вычислительные средства" дневной формы обуч. / А.А. Петровский, М.В. Качинский, А.Б. Давыдов и др. - Мн.: БГУИР, 2005. - 51 с.: ил. ISBN 985-444-837-1

.        Однокристальная микроЭВМ MC68HC11A8. Техническое описание.

Приложения


Приложение А

Листинг программы:

0001 0000                    RAM         EQU   $0000

1000                    REG        EQU   $1000

e000                    ROM        EQU   $E000

1000                    TCNT       EQU   REG+$OE

                        *----timer

1023                    TFLG1 EQU   REG+$23

1022                    TMSK1 EQU   REG+$22

1025                    TFLG2 EQU   REG+$25

1024                    TMSK2 EQU   REG+$24

1026                    PACTL EQU   REG+$26

0011                         *----ports

1004                    portb EQU   $1004 *регистр данных порта B

1003                    portc EQU   $1003 *регистр данных порта C

1008                    portd EQU   $1008 *регистр данных порта D

1002                    pioc       EQU   $1002 *регистр управления портов B и C

1007                    ddrc       EQU   $1007 *регистр определения напр.выв.п.С

1009                    ddrd       EQU   $1009 *регистр определения напр.выв.п.D

                        *----Маски

0001                    minus EQU   $01   *м. для выделения бита Уменьшение мощности с порта С[0]

0002                    plus       EQU   $02   *м. для выделения бита Увеличение мощности с порта С[1]

0040                    rtif       EQU   $40   *м. для снятия маски прерывания rtif в рег.tflg2

0010                    hnds       EQU   $10   *м. для установки бита HNDS в регистре PIOС (порт B -нестробированный вывод, порт С - двунаправленный обмен)

0023                         *----RAM

001f                               ORG   RAM+$1F

001f                    STACK RMB   1

0020 08                 cnttime FCB      $08

0021 01                 flag       FCB   $01

0022 00                 power FCB   0

0023 00                 razgon     FCB   0

0024 00                 pwm_skv    FCB   0

                        *----interrupt

fff0                               ORG   ROM+$1FF0

fff0 e0 a8              VRTI       FDB   OBRRTI

fff2 e0 bb              VIRQ       FDB   OBRIRQ

fffe                               ORG   ROM+$1FFE

fffe e0 00              VRST       FDB   START

                        *----ROM

e000                               ORG   ROM

e000 8e 00 1f           START:     LDS   #STACK      *Занесение в рег.SP нач адреса стека

e005 b7 10 26                      STAA  PACTL *период работы схемы 4,10 мс (Е=2 МГц)

e008 86 00                         LDAA  #00

e00a b7 10 24                      STAA  TMSK2 *запрет прерывания реального времени

                            

e00d b6 10 02                      LDAA  pioc

e010 8a 10                         ORAA  #hnds

e012 b7 10 02                      STAA  pioc

                       

e015 86 00                         LDAA  #$00  *ИНИЦИАЛИЗАЦИЯ ВСЕГО

e017 b7 10 07                      STAA  ddrc  *ПОРТА С НА ВВОД

                            

e01a 86 ff                         LDAA #$ff  *

e01c b7 10 09                      STAA ddrd  *все выводы порта D - вывод данных

                                  

e01f 86 00                         LDAA  #0

e021 b7 10 04                      STAA  portb *семисегментный индикатор показывает 0

e024 b7 10 08                      STAA  portd *мощность=0,

                            

                        *----основная программа

                            

e027 96 22              ost:       LDAA  power *

e029 97 23                         STAA  razgon      *

                            

e02b 86 08              incr: LDAA  #$08

e02d 97 20                         STAA  cnttime     *счётчик циклов = 8

e02f 86 00                         LDAA  #$00  *

e031 b7 10 24                      STAA  TMSK2 *запрет прерывания реального времени

                            

e034 b6 10 03                      LDAA  portc *считываем порт С

e037 94 02                         ANDA  plus  *выделение бита, соответствующего кнопке "Ув. мощн."

e039 26 09                         BNE   decr  *кнопка не нажата, проверяем кнопку "Ум. мощн."

e03b 96 22                         LDAA  power *иначе

e03d 81 08                         CMPA  #8    *проверяем на выход за пределы возможного ур-ня мощн. (>8)

e03f 27 03                         BEQ   decr  *если 8 ур-нь - переходим к проверке кнопки Ум. мощн.

e041 7c 00 22                      INC   power *если был <8, то увеличиваем переменную мощности

0076                         

e044 b6 10 03           decr: LDAA portc

0078 e047 94 01                    ANDA minus *выделение бита, соответствующего кнопке "Ум. мощн."

e049 26 09                         BNE   indi  *кнопка не нажата, выводим текущую мощность на индикатор

e04b 96 22                         LDAA  power *иначе

e04d 81 00                         CMPA  #0    *проверяем на выход за пределы возможного ур-ня мощн. (<0)

e04f 27 03                         BEQ   indi  *если 0 ур-нь, показываем на индикаторе

e051 7a 00 22                      DEC   power *иначе уменьшаем переменную мощности

                                  

e054 96 22              indi: LDAA power *

e056 b7 10 08                      STAA portd *Вывод переменной мощности на индикатор

                            

e059 bd e0 85                      JSR   pow   *переход к подпрограмме формир. вектора мощн.

                            

e05c 7d 00 21                      TST   flag  *порверяем флаг работы

e05f 27 c6                         BEQ   ost   *если он равен 0, запрещаем прерывания реального времени

                       

e061 7d 00 23                      TST   razgon      *проверяем значение мощности до прерывания

e064 27 12                         BEQ   razr  *если равна нулю - переходим к установлению текущего ур-ня мощн.

e066 7f 00 24                      CLR   pwm_skv     *если не равна - очищаем вектор мощности

0096 e069 7d 00 23           razg: TST   razgon

e06c 27 0a                         BEQ   razr

e06e 86 40                         LDAA  #rtif *

0099 e070 b7 10 24                 STAA  TMSK2 *разрешение прерывания реального времени

e073 bd e0 96                      JSR   plavn *переходим к подпрограмме плавного разгона

e076 20 f1                         BRA   razg  *возвращаемся к проверке значения мощности

                       

e078 86 40              razr: LDAA  #rtif *

e07a b7 10 24                      STAA  TMSK2 *разрешение прерывания реального времени

0105 e07d 7d 00 20           prov: TST   cnttime     *

0106 e080 27 a9                    BEQ   incr  *цикл закончился - переход к осн. прог.

e082 7e e0 7d                      JMP   prov  *цикл не закончился - переход в начало цикла

                            

                        *----Подпрограмма формирования вектора мощности

                            

e088 96 22                         LDAA  power *загружаем в регистр А переменную мощности

e08a 27 09                         BEQ   zero  *если она равна нулю - выход. Вектор = 0

e08c 78 00 24           vector:    LSL   pwm_skv     *иначе вектор сдвигаем влево

e08f 7c 00 24                      INC   pwm_skv     *увеличиваем на 1

e092 4a                            DECA        *количество итераций = переменной мощности

e093 26 f7                         BNE   vector      *если счётчик цикла не равен 0, повторяем цикл

e095 39                 zero: RTS         *иначе выход из подпрограммы

                       

                        *----Подпрограмма плавного разгона

                       

e096 78 00 24           plavn:     LSL   pwm_skv     *формируем вектор мощности

e099 7c 00 24                      INC   pwm_skv     *постепенно увеличивая его до требуемого ур-ня

e09c 7a 00 23                      DEC   razgon      *уменьшаем переменную разгона

0125 e09f 7d 00 20           prov2: TST   cnttime     *

0126 e0a2 27 03                    BEQ   exit0 *цикл закончился - переход к осн. прог.

e0a4 7e e0 9f                      JMP   prov2 *цикл не закончился - переход в начало цикла

e0a7 39                 exit0:     RTS  

                       

                        *----Подпрограмма обработки прерывания RTIF

                       

e0a8 86 01                         OBRRTI:     LDAA  #%00000001

e0aa 94 24                         ANDA  pwm_skv     *выделяем младший бит Вектора

e0ac b7 10 08                      STAA  portd *загружаем его в порт D[0]

e0af 76 00 24                      ROR   pwm_skv     *циклически сдвигаем вектор вправо

e0b2 7a 00 20                      DEC   cnttime     *уменьшаем счётчик циклов

                            

e0b5 86 40                         LDAA #rtif *

e0b7 b7 10 25                      STAA TFLG2 *сброс флага RTIF

                            

e0ba 3b                      RTI

                       

                        *----Подпорграмма обработки прерывания IRQ#

                       

e0bb 7d 00 21                 OBRIRQ:    TST   flag  *проверяем флаг работы двигателя

e0be 26 0b                         BNE   zapret      *если он не равен нулю (равен 1), останавливаем двигатель

e0c0 86 01                         LDAA  #1    *иначе

e0c2 97 21                         STAA  flag  *устанавливаем флаг в 1

e0c4 86 40                         LDAA  #rtif *

e0c6 b7 10 24                      STAA  TMSK2 *разрешаем прерывание реального времени

e0c9 20 0f                         BRA   exit  *выходим из прерывания

e0cb 7f 00 21           zapret:    CLR   flag  *сбрасываем флаг в 0

e0ce 86 00                         LDAA  #$00  *и

e0d0 b7 10 24                      STAA  TMSK2 *запрещаем прерывание реального времени

0155 e0d3 b7 10 08                 STAA  portd *мощность=0

0156 e0d6 96 22                    LDAA  power *сохраняем текущий ур-нь мощности

e0d8 97 23                         STAA  razgon      *для плавного разгона

e0da 3b                 exit: RTI               *выходим из прерывания

Похожие работы на - Разработка устройства управления мощностью двигателя

 

Не нашли материал для своей работы?
Поможем написать уникальную работу
Без плагиата!