Микропроцессорный датчик скорости на базе процессора КР1878ВE1 Тесей

Федеральное Агентство по Образованию РФ

Вологодский Государственный Технический Университет

Кафедра АВТ

Дисциплина : Микропроцессорные устройства систем управления

Курсовой проект

Микропроцессорный датчик скорости на базе процессора КР1878ВE1“Тесей”

Выполнил: Белов А.А

Принял: Анкудинов В.Б

Вологда

2009

Содержание

ВВЕДЕНИЕ……………………………………………………………………………....3

ТЕХНИЧЕСКОЕ ЗАДАНИЕ…………………………………………………………....4

  1. Обзор материала по теме курсового проекта……………….. …………………5
    1. Датчики и кнопки…….. ………………………………………………………5
    2. КР1878ВЕ1 однокристальный микроконтроллер…………………………..7
      1. Основные характеристики……………………………………………..8
      2. Принципы адресации операндов……………………………………...9
      3. Временное представление потока команд………………………….....11
      4. Порты ввода/вывода А и В……………………………………………..12
      5. Интервальный таймер-счетчик событий……………………………...12
    3. Способы реализации устройства…..………………………………………...13
      1. Датчик оборотов коленчатого вала...………………………………….13
      2. Инфракрасные датчики положения и скорости вращения…………..14
      3. Абсолютные датчики углового положения…………………………...15
  2. Вариант реализации устройства ………………………………………………...18
    1. Создание структурной схемы устройства……………………………...........19
    2. Принцип работы устройства, согласно структурной схеме ……………….19
  3. Разработка устройства……………………………………………………………20
    1. Разработка блок-схемы……………………………………………………….20
    2. Разработка принципиальной схемы …………………………………………20
    3. Разработка алгоритма работы программы…………………………………..21
    4. Разработка управляющей программы для датчика скорости..……………..22
      1. Настройка таймера……………………………………………………...22
      2. Настройка портов А и В …………………………………………….....24
      3. Адресация сегментов памяти………………………………………......25
      4. Расчет и реализация программной задержки…………………………26
    5. Оценка ошибок в работе устройства………………………………………...27
  4. Разработка конструкции микропроцессорной системы ……………………….30

ЗАКЛЮЧЕНИЕ……………………………………………………………………….31

СПИСОК ИСПОЛЬЗОВАННОЙ ЛИТЕРАТУРЫ………………………………….32

ПРИЛОЖЕНИЕ 1…………………………………………………………………….33

ПРИЛОЖЕНИЕ 2…………………………………………………………………….35

ПРИЛОЖЕНИЕ 3…………………………………………………………………….36

ПРИЛОЖЕНИЕ 4…………………………………………………………………….37

ПРИЛОЖЕНИЕ 5…………………………………………………………………….38

Введение

Неотъемлемой частью любых технических систем управления в современном мире являются датчики. Датчики исполняют роль своеобразных «органов чувств» в технических системах. Лишь сотрудничая с подобными устройствами и анализируя их состояния, система может понять, правильно ли она работает, удовлетворяет ли она требуемым показателям качества работы, стабильна ли её работа и не предвидится ли при такой работе аварийных ситуаций.

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

Техническое задание

  1. На статоре двигателя установлен герконовый контакт, управляемый магнитом на роторе.
  2. Скорость вращения двигателя – 0 – 1500 об. / мин.
  3. Измерение скорости производить 1 раз в секунду.
  4. Информацию о скорости выводить в цифровом формате на 12-ти разрядный дисплей.
  5. Использовать ОЭВМ К1878ВЕ1.

1.Обзор материала по теме курсового проекта

  1. Датчики и кнопки

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

Схема подключения такого датчика к микроконтроллеру приведена на рис.1.1. Датчик представляет собой свободно разомкнутые контакты геркона. В приведенном примере датчик подключен к линии Р1.0 порта Р1 микроконтроллера. Однако с таким же успехом подобную схему можно подключить и к любой другой линии любого из двух портов микроконтроллера. (см. рис.1.1).

Рис.1.1 - Простая схема подключения датчика на основе геркона.

Принцип работы очень прост. В исходном состоянии контакты датчика разомкнуты. На вход микроконтроллера через резистор R1 подается напряжение как сигнал логической единицы. При срабатывании датчика контакты замыкаются и соединяют вывод микроконтроллера с общим проводом. В результате напряжение на входе Р1.0 падает до нуля. Теперь микросхема воспринимает входной уровень сигнала как логический ноль. Резистор R1 при этом служит токоограничивающим элементом, предотвращая короткое замыкание между шиной питания и общим проводом. Наличие резистора R1 обязательно лишь в том случае, если датчик подключается к линии Р1.0 или Р1.1. Остальные линии имеют свои внутренние резисторы нагрузки, которые могут с успехом заменить внешний резистор.

Схема, приведенная на рис. 1.2, универсальна и широко применяется как для подключения простейших контактных датчиков, так и для подключения различных кнопок управления. Любое реальное микропроцессорное устройство редко обходится без кнопок управления. При помощи таких кнопок могут переключаться режимы работы вашего устройства. Например кнопки «Пуск» и «Стоп» могут быть использованы для запуска и останова любого процесса. Если вам нужно иметь несколько кнопок управления, вы можете подключить их к разным входам микроконтроллера. При этом будут одновременно работать несколько кнопок. Если количество кнопок не слишком велико, то данный способ их включения – самый рациональный. Однако, если требуется большое количество управляющих кнопок, то вам просто может не хватить имеющихся выводов. В этом случае не обойтись без матрицы клавиш. На рис.1.2 приведена схема подключения клавиатуры из 32 клавиш путем составления из них матрицы.

Рис.1.2 - Схема подключения клавиатуры в виде матрицы клавиш

  1. КР1878ВЕ1 однокристальный микроконтроллер.

Микроконтроллер КР1878ВЕ1 разработан на основе отечественного микроконтроллерного ядра ТЕСЕЙ, предназначенного для построения 8-разрядных RISC-контроллеров реального времени. Примером разнообразия возможностей ядра ТЕСЕЙ являются такие микроконтроллеры, как КР1878ВЕ1 — управляющий МК, КР1878ВЕ2 — БИС поведенческих развивающих игр или КБ5004ВЕ1 — БИС банковской интеллектуальной платёжной карты с многоуровневой системой защиты.

Характерными особенностями микроконтроллеров семейства ТЕСЕЙ являются: гарвардская RISC-архитектура, позволяющая выполнять любую из 52 команд за два такта частоты процессора; единая система команд для всего семейства с возможностью адресации до двух операндов, находящихся в памяти; малое время реакции на прерывание и сохранение контекста; широкий диапазон конфигураций внутренних памяти команд, памяти данных и периферийных устройств.

Микроконтроллер КР1878ВЕ1 предназначен для использования в системах управления реального времени. Он отличается малым количеством внешних выводов, низким током потребления, высокой производительностью, наличием энергонезависимой памяти данных и возможностью многократного перепрограммирования памяти команд. При необходимости и при достаточном объёме партии микроконтроллер может поставляться с масочным ПЗУ программ.

1.2.1 Оcновные характеристики

Электрически стираемое (ЭС)

ППЗУ команд — 1К x 16 бит.

ОЗУ данных — 128 x 8 бит.

ЭСППЗУ данных — 64 x 8 бит.

Система команд — 52 команды.

Тактовая частота — 32 кГц ... 8 МГц.

Время выполнения любой команды — 2 такта (250 нс при частоте 8 МГц).

Прерываний — 7

(начальный пуск, системная ошибка, сторожевой таймер, порт А, порт В, таймер, конец записи в ЭСППЗУ).

Время реакции на прерывание — 3 такта.

12 (13) линий ввода/вывода с индивидуальным управлением направлением и прерыванием от любой линии.

Максимальный ток — 25 мА.

16-разрядный таймер с 8-разрядным делителем частоты.

Сторожевой таймер с автономным генератором.

Напряжение питания — VСС = (4,0...6,0) В.

Ток потребления — < 2 мA при VСС = 5 В и f = 5 МГц, — 50 мкА при VСС = 5 В и f = 32 кГц, — <1 мкА в режиме STOP.

Корпус — 18-выводной пластмассовый ДИП типа 2104.18-8.

Микроконтроллер КР1878ВЕ1 содержит функционально законченные устройства, необходимые для локального управления широким кругом разнообразных бытовых и промышленных объектов, в том числе: центральный процессор, ЭСППЗУ команд, ОЗУ данных, ЭСППЗУ данных, сторожевой таймер, 2 порта ввода/вывода и таймер общего назначения. Обмен данными между центральным процессором, ОЗУ данных и периферийными устройствами производится по единой шине (рис. 1.3).

Рис. 1.3 - Структурная схема КР1878ВЕ1

Микроконтроллер изготовлен по КМОП-технологии и выпускается в 18-выводном пластмассовом копусе ДИП типа 2104.18-8. По цоколевке КР1878ВЕ1 совместим с подобными микроконтроллерами фирм Microchip, Zilog и др. Это даёт возможность отечественным потребителям, перепрограммировав реализацию своих алгоритмов, заменить ранее применённые импортные микроконтроллеры на отечественные с лучшими, в ряде случаев, техническими характеристиками. А для применения в новых разработках микроконтроллер КР1878ВЕ1 просто незаменим.

Применение микроконтроллера КР1878ВЕ1 облегчается его обеспеченностью программными и аппаратными средствами автоматизации программирования и отладки, включающими как кросс-систему на основе персонального компьютера, так и резидентную систему на основе аппаратного эмулятора.

1.2.2 Принципы адресации операндов

Все операнды команд (объекты программирования) находятся в едином адресном пространстве памяти данных. Размерность этого пространства в микроконтроллере КР1878ВЕ1 — 256 байт.

Команда имеет одновременный доступ к 32 байт этого адресного пространства через 4 сегмента (окна) адресации (сегменты A, B, C и D) размером по 8 байт. Каждому сегменту соответствует регистр адреса сегмента, значение которого определяет местонахождение данного сегмента в пространстве адресации памяти данных.

Регистры адресов сегментов принадлежат к категории служебных регистров процессора SR. В нём имеется 8 служебных регистров (SR0 - SR7), обращение к которым производится специальными командами процессора. Значения этих регистров можно сохранять в отдельном аппаратном стеке данных и восстанавливать из него с помощью соответствующих команд.

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

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

Таблица 1

Два старших индекса сегмента D имеют несколько иной статус и используются для полной адресации операнда в адресном пространстве памяти данных в качестве регистров косвенной адресации IR0 и IR1. Обращение команды к индексу D6 (IR0) транслируется по адресу, записанному в регистре адреса 0-го косвенного регистра — 4-м служебном регистре. Соответственно, обращение к D7 (IR1) транслируется по адресу, записанному в регистре адреса 1-го косвенного регистра — 5-м служебном регистре.

Оба косвенных регистра обладают возможностями изменения адреса после обращения либо в сторону увеличения, либо в сторону уменьшения адреса на единицу в зависимости от режима работы косвенного регистра. Регистр IR0 имеет режим отключения, при котором адрес обращения формируется из значения регистра адреса сегмента D и индекса 6. Регистр IR1 имеет режим обращения к памяти команд. В этом режиме адрес операнда, находящегося в памяти команд, формируется из полного значения 6-го и трёх младших разрядов 7-го служебных регистров. Адресация памяти команд через IR1 производится с точностью до байта. Режим работы IR1 при адресации памяти команд автоинкрементный. То есть после обращения к текущему байту памяти команд регистр IR1 указывает на следующий байт памяти команд.

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

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

1.2.3 Временное представление потока команд

Для повышения производительности процессора производится совмещение в потоке команд отдельных операций, выполняемых внутренними устройствами микроконтроллера. На рис. 2 показан принцип совмещения по времени различных фаз выполнения команды на примере трёх арифметических команд и одной команды перехода. Фазы выполнения команд:

ВК + Д — выборка и дешифрация команды;

ВО —- выборка операндов из памяти данных;

ИК — исполнительная фаза — работа АЛУ;

ЗР — запись результата в память данных;

ЗСК — перепись нового счётчика команд в случае выполненного перехода.

Временное представление потока команд изображено на рис.1.4

Выборка операндов для текущей команды и её исполнение совмещаются с выборкой и дешифрацией последующей команды. Запись результата в память данных отложена на один такт для обеспечения нормальной за-грузки информационных трактов памяти данных. Когда результат операции используется в качестве операнда для последующей команды, операнд берётся из регистра результата на выходе АЛУ. Таким образом, происходит совмещение по времени выборки и дешифрации (n+1)-ой команды с выборкой операндов и исполнительной фазой n-ой команды и записью результата (n-1)-ой команды. При обработке ситуаций, когда изменяется счётчик команд, после дешифрации команды перехода и соблюдения условия перехода происходит перепись нового счётчика команд из регистра команды в счётчик команд.

Рис.1.4 – Временное представление потока команд

1.2.4 Порты ввода/вывода А и В

Порты ввода/вывода А и В по построению однотипны и отличаются, в основном, разрядностью (5 и 8 индивидуально управляемых линий ввода/вывода, соответственно). Они предназначены для формирования на выводах PA0...PA4 и PB0...PB7 необходимых уровней напряжения, в случае, когда эти выводы используются в режиме выхода, и считывания значения уровней напряжения с этих выводов, как собственных, так и подаваемых извне, когда выводы используются в режиме входа. Возможна инициация процедуры прерывания по изменению уровня напряжения на выводах портов. 5-я линия порта А (вывод РА4) имеет второе назначение — ввод внешней частоты интервального таймера (сигнал TCLC). Задание режимов работы выводов портов и программирование прерываний производится с помощью соответствующих регистров.

1.2.5 Интервальный таймер-счётчик событий

Интервальный таймер-счётчик внешних событий (далее “таймер”) предназначен для формирования определённых временных интервалов для привязки исполняемой программы к реальному времени или для подсчёта количества внешних событий на входе внешней синхронизации таймера.

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

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

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

  1. Способы реализации устройства

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

  1. Датчик оборотов коленчатого вала

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

Рис.1.4 – Принцип работы датчика оборотов коленчатого вала

1.3.2 Инфракрасные датчики положения и скорости вращения

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

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

Отражательные ИК датчики положения представляют собой систему из ИК излучателя и ИК фотоприемника (фототранзистор или составной фототранзистор), жестко закрепленных в корпусе, оптические оси которых пересекаются под определенным углом вне корпуса датчика. Когда детектируемый объект находится в поле обзора датчика (пересечение оптических осей излучателя и приемника), отраженный от него сигнал, формируемый излучателем, в точке приема максимален. Этот факт вызывает резкое увеличение выходного тока через фототранзистор. Основными параметрами оптических датчиков отражательного типа являются точка оптимального обнаружения (оптимальное расстояние объекта до апертуры фотоприемника датчика, при котором отклик на выходе максимален) и чувствительность. Первый параметр зависит от взаимного расположения излучателя и приемника, определяемого конструкцией датчика, второй - от чувствительности фотоприемника.

1.3.3 Абсолютные датчики углового положения

Среди обширного класса измерительных преобразователей угловых перемещений абсолютные датчики углового положения занимают особое место. Эти датчики позволяют решать задачи прецизионных измерений не только величин угловых перемещений, но и без потери точности могут обеспечить «жесткую» координатную привязку различного рода позиционируемых объектов при их статическом положении. Часто абсолютные датчики углового положения называют абсолютными энкодерами, преобразователями считывания углового положения или преобразователями угол-код.

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

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

В основе принципа действия таких датчиков лежит анализ позиционного сочетания уровней сигналов дискретных фотоприемников, располагаемых в формируемой светотеневой картине соответствующих концентрических кольцевых кодовых дорожек или на одной дорожке (в случае однодорожечного кода). Совокупность указанных фотоприемников образует считывающее фотоприёмное устройство (матрицу считывающих фотопремников), конкретное выполнение которого определяется структурой используемого кода и конструкцией датчика. В абсолютных датчиках углового положения увеличение количества кодовых разрядов соответствует увеличению их угловой разрешающей способности. Как правило, для многодорожечных шкал датчиков положения используют позиционные коды. Их особенность заключается в том, что в отличие от обычных кодов, они обладают свойством непрерывности бинарной комбинации (так называемая «одношаговость кода»): изменение кодируемого числа на единицу соответствует изменению кодовой комбинации только в одном разряде (см, рис.1.5).

Рис.1.5 – Способ кодирования “Код Грея”

Это свойство позволяет свести погрешность считывания кода к значению младшего разряда, обеспечив, тем самым, высокую информационную надёжность преобразования угол-код. Наибольшее распространение среди кодов этого класса получил код Грея. Этот код обладает способностью зеркального отображения информации, то есть инвертированием старшего бита можно менять направление счета и, таким образом, задавать направление вращения вала датчика. Для осуществления дальнейшей обработки Грей-кода на основе законов двоичной математики его преобразуют в двоичный код. Реализацию такого кодового преобразования легко осуществить с помощью логических элементов «исключающее или» аппаратным или программным способами. По диапазону измерений абсолютные датчики углового положения делятся на однооборотные и многооборотные. В датчиках первого типа кодирование углового положения вала осуществляется в пределах изменения угла поворота от 0°до 360°. В многооборотных датчиках рабочий диапазон превышает 360°. Они строятся на основе абсолютных однооборотных датчиков, последовательно соединённых между собой через двоичные понижающие редукторы. Как правило, используется один датчик точного отсчёта и один или несколько датчиков грубого отсчёта. Точный отсчёт используется для преобразования в цифровой код в пределах одного оборота вала, а грубые - для счёта числа оборотов. Для уменьшения погрешностей, вносимых редукторами и датчиками грубого отсчёта, применяются электронные методы согласования грубых и точных отсчётов. Устройство абсолютного датчика углового положения приведено на рис.1.5

Рис.1.5 – устройство абсолютного датчика углового положения

Формируемый осветителем 1,2 пучок лучей создаёт в плоскости анализирующей маски 4 теневое изображение кодовой шкалы 3. Анализирующая маска, представляет собой совокупность щелевых диафрагм, выделяющих необходимые для анализа участки изображения кодовой шкалы. За каждой диафрагмой по ходу лучей установлен дискретный фотоприемник, располагаемый в зоне теневого изображения соответствующей кольцевой дорожки кодовой шкалы, В распространённом случае считывающее фотоприемное устройство представляет собой анализирующую маску в виде одной узкой щелевой диафрагмы с установленной за ней линейкой фотодиодов 5. Конструктивно абсолютный датчик включает в себя оптико-механический узел, оптико-электронное считывающее устройство, а также электронную схему выделения и обработки сигналов фотоприёмников. Оптико-механический узел датчика представляет собой корпусную деталь с прецизионными направляющими, обеспечивающими вращательное движение вала и жестко связанного с ним измерительного лимба, центрированного по отношению к оси вращения вала. Оптико-электронное считывающее устройство содержит узел осветителя и считывающее фотоприемное устройство (матрицу фотоприемников с установленной перед ней анализирующей маской), а также электронную схему выделения и обработки сигналов фотоприемников. В общем случае, считывающее фотоприемное устройство содержит матрицу пространственно распределённых фото приемников с установленной перед ними анализирующей маской. Для получения значений кода на один оборот вала, кратных одному угловому градусу, используют укороченный код Грея, начальное значение которого не соответствует нулевой позиции обычного кода Грея, а имеет значение некоторого смещения, позволяющего при замыкании кодовой последовательности сохранить основные его свойства. В зависимости от уровня сигналов, снимаемых с фотоприемников, им присваиваются значения 0 или 1, то есть получаемые кодовые комбинации являются бинарными кодами.

2. Вариант реализации устройства

Устройство должно выполнять по сути счет импульсов в единицу времени, либо считать количество импульсов тактовой частоты между двумя соседними импульсами, поступившими с входного порта A, разряда PT4/TCLC, однако во втором случае при тактовой частоте процессора 8МГц при скорости вращения двигателя 1 об/сек. максимальное число в счетчике по окончанию счета будет 8000000D или 7A1200H, следовательно для каждого значения счетчика нужно ставить в соответствие число, записанное в памяти данных и несущее значение скорости вращения, что в свою очередь потребует значительных затрат памяти данных, хотя такой вариант исполнения может дать наибольшую производительность. Поэтому выбираю способ, предложенный первым, т.е счет внешних событий в единицу времени, т.к он более прост в реализации и требует незначительных затрат памяти. Для реализации этого способа потребуется программируемый таймер в режиме счета внешних событий, порт ввода с 1 счетным битом, соединенным с герконом. Код должен выводиться в двоичном формате на диодные индикаторы, но тут есть еще один нюанс. Разрядность выводимого кода частоты – 12 бит. Чтобы реализовать вывод информации на 12 индикаторов в систему придется включить 2 буферных регистра (под младший и старший байты представленной частоты), а светодиоды будут подключены уже к их выводам.

2.1 Создание структурной схемы устройства

Рис.2.1 - Структурная схема устройства

2.2 Принцип работы устройства согласно структурной схеме

Сигналы от герметичного контакта подводятся к порту A (PA4) , соединенному со счетным входом таймера. Таймер находится в режиме счета внешних событий и с течением времени производит суммирование сигналов, поступающих с порта. Программно реализуется задержка в 1 секунду. После программной задержки информация подается на порт вывода B из счетного регистра таймера двумя байтами (младший, старший). После подачи младшего байта выдается сигнал с порта А (PA0) на БША1, настраивающий БША1 на прием младшего байта, следующим шагом извлекаем старший байт из счетного регистра таймера, выдаем на порт В, и подаем сигнал с порта A (PA1) на БША2, настраивающий БША2 на прием старшего байта, затем с порта A (PA2) подаем сигнал на БША1 и БША2 для выдачи байта на индикаторы.

3. Разработка устройства

3.1 Разработка блок-схемы

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

Блок-схема работы системы приведена на рис 3.1

Рис.3.1 - Блок-схема работы системы

3.2 Разработка принципиальной схемы устройства

Полная принципиальная схема устройства приведена в приложении 1.

Все процессы микропроцессорной системы синхронизируются последовательностью тактовых импульсов, поэтому необходимым элементом такой системы является тактирующий элемент. ОЭВМ содержит встроенный генератор тактовых импульсов, частоту синхронизации которого определяет резонатор, подключаемый к выводам OSC1 и OSC2. OSC1 является входом, а OSC2 - выходом генератора, способного выдавать частоту 8 МГц.

Для задания опорной частоты подключим кварцевый резонатор РК454 с частотой 8 МГц к выводам OSC1 и OSC2 (см. рис. 3.2).

8МГц = 1/8000000 = 0.000000125 сек = 125нс

При частоте 8 МГц время одного такта 0.125 мкс.

Для инициализации микропроцессора используется кнопка сброс, подключаемая к порту, соединенному с инверсным входом (RST), и к внешнему источнику питания 5В. При нажатии кнопка создает импульс (логическую единицу), которая сбрасывает микроконтроллер.

Для вывода частоты на индикаторы будем использовать блок из двух буферных регистров К580ИР82, хранящих байт информации, при подаче на вход (STB) высокого уровня сигнала, и сброс его в положение логического нуля. Регистр БША1 подключен всеми входными выводами (D0D7) к выводам порта B (PB0PB7) соответственно номерам, входом OE к порту А (PA2), входом STB к порту A(PA0). Выходы БША1 (Q0Q7) подключены к светодиодам HL1HL8.

Регистр БША2 подключен входными выводами (D0D3) к выводам порта B (PB0PB3) соответственно номерам, входом OE к порту А (PA2), входом STB к порту A(PA1). Выходы БША1 (Q0Q3) подключены к светодиодам HL9HL11.

3.3 Разработка алгоритма работы программы индикации

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

По справочным данным время выполнения 1 команды – 2 машинных такта (250нс). Рассчитаем число команд в 1 секунде:

;

Итак в циклической части должно уложиться 4 000 000 команд.

Последние команды в этом числе команд – команды вывода информации на индикаторы, следовательно программная задержка должна формироваться за вычетом этих последних команд. В разработанной программе команд индикации всего 11, следовательно задержка должна осуществляться 3 999 989 командами.

Алгоритм работы программы приведен на рис. 3.2

Рис. 3.2 - Алгоритм работы программы

Листинг программы приведен в Приложении 1.

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

3.4.1 Настройка таймера

На рис.3.3 приведен формат управляющего слова регистров конфигурации и управления таймера.

Рис.3.3 – форматы управляющих слов таймера

Для реализации счета внешних событий настроим таймер на соответствующий режим:

Управляющее слово для регистра конфигурации таймера представлено

в таблице 2.1

Таблица 2.1

X

1

0

1

0

0

0

0

Сравнение с полным 16-разрядным значением регистра-интервала

Пересчет по переднему фронту

Счет ведется от импульсов с порта

без делителя частоты

Коэффициент деления делителя 1/2

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

в таблице 2.2

Таблица 2.2

0

0

0

0/1

0/1

0

0

0

Разряды ошибки

Доступен/недоступен регистр конфигурации

Доступен байт счетного регистра/ регистра интервала

Задействован младший байт регистра *

Нет прерывания на процессор по окончанию счетного интервала

При записи 1 таймер начинает счет

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

Доступ к регистру интервала (мл.Бт): 00000000b

Теперь младший байт регистра интервала доступен по адресу 05h

Доступ к регистру интервала (ст.Бт): 00000100b

Теперь старший байт регистра интервала доступен по адресу 05h

В младший и старший байты регистра интервала таймера посылаем числа FF. Это делается для того, чтобы таймер производил подсчет импульсов до предельно возможного значения FFFFh=65535d

Значения количества импульсов, поступивших на вход PA4 порта A и используемых для индикации, будем извлекать из счетного регистра таймера следующим образом:

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

Доступ к счетному регистру (мл.Бт): 00001000b

Теперь младший байт счетного регистра доступен по адресу 05h

Доступ к счетному регистру (ст.Бт): 000000100b

Теперь старший байт счетного регистра доступен по адресу 05h

3.4.2 Настройка портов А и В

На рис.3.4 приведен формат управляющих слов для регистров конфигурации портов ввода/вывода А и В.

рис.3.4 - Формат управляющих слов портов А и В

Произведем настройку порта А:

0

0

0

1

1

0

1

1

x

x

Прерывания запрещены

Автоинкремент регистра

Разрешить запись

Начать с подрегистра 3

Аналогично для порта В

Настройка подрегистра [3]

0

0

0

1

1

1

1

1

x

x

x

Линии PA0PA4 вход/выход

1

1

1

1

1

1

1

1

Все линии порта В вход/выход

Настройка подрегистра [4]

0

0

0

1

1

1

1

1

x

x

x

Линии PA0PA4 с активным выходом

1

1

1

1

1

1

1

1

Все линии порта В с активным выходом

Настройка подрегистра [5]

0

0

0

0

0

0

0

0

x

x

x

К линиям PA0PA4 нагрузка не подключена

0

0

0

0

0

0

0

0

Ко всем линиям порта В не подключена нагрузка

Настройка подрегистра [6]

0

0

0

0

0

0

0

0

x

x

X

От линий PA0PA4 запрещены прерывания (п. фронт)

0

0

0

0

0

0

0

0

Запретить прерывания по переднему фронту от всех линий порта

Настройка подрегистра [7]

0

0

0

0

0

0

0

0

x

x

x

От линий PA0PA4 запрещены прерывания (з.фронт)

0

0

0

0

0

0

0

0

Запретить прерывания по заднему фронту от всех линий порта

3.4.3 Адресация сегментов в памяти

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

Таблица 3

Определим сегменту B адреса, 00h – 07h: таким образом рабочие регистры портов будут находиться по индексам 1(порт А), 2(порт В), 4 (регистр управления таймера), 5(рабочий регистр таймера).

Сегмент А, 18h – 20h: сюда попадут регистры конфигурации портов по индексам 1(Порта А), 2(Порта В).

Сегмент С, 40h – 48h: область оперативной памяти, по индексам 07 имеем возможность помещать константы.

Текст рабочей программы приведен в Приложении 1.

3.4.4 Расчет и реализация программной задержки

Для правильной работы устройства необходимо программным способом организовать задержу времени продолжительностью 1 с. Таким образом, имея тактовую частоту 8 МГц (125нс на такт) и время выполнения 1 команды (кроме команд передачи управления, которые выполняются за 3 такта) 2 такта (0.25мкс) нетрудно рассчитать, что вся программа должна содержать порядка 4000000 команд.

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

movl temp3,49h;

delay10: movl temp4,7dh;

delay11: movl temp1,7ch;

delay12: dec temp1;

jnz delay12;

dec temp4;

jnz delay11;

dec temp3;

jnz delay10;

подсчитаем сколько раз (тактов) выполнится каждая команда.

movl temp3,49h : 2*1 = 2;

movl temp4,7dh : 125*73*2 = 18250;

movl temp1,7ch : 125*124*73*2 = 2263000;

dec temp1 :125*124*73*2 = 2263000;

jnz delay12 : 125*124*73*3 = 3394500;

dec temp4 : 125*69*2 =18250;

jnz delay11 : 125*69*3 = 27375 ;

dec temp3 : 69*2 =146;

jnz delay10: 69*3 =219;

общее число тактов циклической части программы 7 984 742

8 000 000 – 7 984 742 = 15258

добавим еще один цикл

movl temp3,07h : 2*1 = 2;

delay21: movl temp4,7fh : 128*17*2= 4318;

delay22: dec temp4 : 128*17*2 = 4318;

jnz delay22: 128*17*3 =6318;

dec temp3 :17*2 =14;

nop : 17*2 =34;

jnz delay21:17*3 =51;

итого15234;

всего 15234 + 7984742 = 7 999 976;

последние 12 команд (24 такта) отведены под команды индикации.

3.5 Оценка ошибок в работе устройства

Несмотря на видимую безошибочность реализации циклической части программы есть некоторые нюансы, однозначно влекущие за собой ошибки. При обращении к счетному регистру таймера последний прерывает счет импульсов в последние 24 такта (3мкс) программы, следовательно если импульсы от геркона придут в этот интервал времени, устройство не произведет их пересчет. При максимальной частоте вращения двигателя 1500 об./сек. частота вращения будет равна 1/1500 = 0.00067 Гц, то есть минимальный интервал между приходом двух соседних импульсов - 670 мкс, а т.к временной интервал неактивности таймера 2мкс, можно сделать вывод, что в него не попадет более одного импульса. Следовательно возможная погрешность прибора ±1 оборот/сек.

Отладка рабочей программы производилась в программе MC_WIN. При отладке ошибок выявлено не было. В качестве подтверждения работоспособности программы прикладываю к курсовому проекту файл листинга отладочной среды TESSA.

LST-файл программы:

Windows VERSION

1 #DEFINE PA_DR A1 ;регистр управления порта А

2 #DEFINE PB_DR A2 ;регистр управления порта В

3 #DEFINE PA_WR B1 ;рабочий регистр порта А

4 #DEFINE PB_WR B2 ;рабочий регистр порта В

5 #DEFINE TIMERRU B4 ;регистр управления таймера

6 #DEFINE TIMERRC B5 ;регистр конфигурации таймера

7 #DEFINE TEMP1 C0 ;временная переменная 1

8 #DEFINE TEMP2 C1 ;временная переменная 2

9 #DEFINE TEMP3 C2 ;временная переменная 3

10 #DEFINE TEMP4 C3 ;временная переменная 4

11 ;точка старта

12 0000 2018 START: LDR #A,18H ;сегмент регистров конфигурации портов

13 0001 2001 LDR #B,0H ;сегмент рабочих регистров портов

14 0002 2042 LDR #C,40H ;1ый сегмент рабочих переменных

15 ;конфигурируем порт А

16 0003 4361 MOVL A1,00011011B

17 0004 40E1 MOVL A1,00111B ;все линии вход/выход

18 0005 5FE1 MOVL A1,0FFH ;все с активным выходом

19 0006 4001 MOVL A1,0 ;нагрузка отключена

20 0007 4001 MOVL A1,0 ;прерывания

21 0008 4001 MOVL A1,0 ;запрещены

22 ;конфигурируем порт В

23 0009 4362 MOVL A2,00011011B

24 000A 5FE2 MOVL A2,0FFH ;все вход/выход

25 000B 5FE2 MOVL A2,0FFH ;все с активным выходом

26 000C 4002 MOVL A2,0 ;нагрузка отключена

27 000D 4002 MOVL A2,0 ;прерывания

28 000E 4002 MOVL A2,0 ;запрещены

29 ;конфигурируем таймер

30 000F 420C MOVL B4,00010000B ;регистр конфигурации доступен

31 0010 4A0D MOVL B5,01010000B ;регистр конфигурации настроен

32 0011 400C MOVL B4,00000000B ;регистр интервала (мл.Бт) доступен

33 0012 4FED MOVL B5,7FH ;счет до максимума

34 0013 408C MOVL B4,00000100B ;регистр интервала (ст.Бт) доступен

35 0014 4FED MOVL B5,7FH ;***

36 ;основная программа

37 0015 402C BEGIN: MOVL B4,00000001B ;таймер на счет

38 ;1 - реализуем задержку в 1сек

39 0016 4932 MOVL C2,49H

40 0017 4FB3 DELAY10: MOVL C3,7DH

41 0018 4F90 DELAY11: MOVL C0,7CH

42 0019 2C30 DELAY12: DEC C0

43 001A B019 JNZ DELAY12

44 001B 2C33 DEC C3

45 001C B018 JNZ DELAY11

46 001D 2C32 DEC C2

47 001E B017 JNZ DELAY10

48

49 001F 40F2 MOVL C2,07H

50 0020 4FF3 DELAY21: MOVL C3,7FH

51 0021 2C33 DELAY22: DEC C3

52 0022 B021 JNZ DELAY22

53 0023 2C32 DEC C2

54 0024 0000 NOP

55 0025 B020 JNZ DELAY21

56

57 ;2 - реализуем вывод данных счетного регистра на индикаторы

58 0026 410C INDICATION: MOVL B4,00001000B ;Cчетный регистр (мл.Бт) доступен

59 0027 054D MOV B5,B2 ;содержимое СчРг на порт B

60 0028 40A9 MOVL B1,00000101B ;Буф.Рг1 принял байт

61 0029 4089 MOVL B1,00000100B ;----------------------------

62 002A 418C MOVL B4,00001100B ;счетный регистр (ст.Бт) доступен

63 002B 054D MOV B5,B2 ;содержимое СчРг на порт B

64 002C 40C9 MOVL B1,00000110B ;Буф.Рг2 принял байт

65 002D 4089 MOVL B1,00000100B ;----------------------------

66 002E 4009 MOVL B1,00000000B ;выдаем на индикатор

67 002F 8015 JMP BEGIN

68 0030 000C RTS

4. Разработка конструкции микропроцессорной системы

Принципиальная схема нарисована в редакторе P-CAD Schematic и приведена в Приложении 2.

На основе полученной принципиальной схемы в P-CAD Schematic с помощью PCB печатная плата и выполнена ее трассировка при помощи P-CAD Quick Route.

Печатная плата разработана в программе P-CAD-2001. Размеры платы выбраны равными 50х120 мм , плата сделана из стеклотекстолита толщиной 2 мм с двухсторонней метализацией. В приложении 3 приведен монтажный чертеж платы с указанием перечня компонентов. В приложении 4 приведена разводка печатной платы.

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

Трассировка печатной платы выполнена в P-CAD Quick Route.

Заключение.

В курсовом проекте реализован микропроцессорный датчик скорости на герметичном контакте. Аппарат базируется на ОЭВМ К1878ВЕ1, проект «ТЕСЕЙ», являющейся представителем гарвардской (RISC) архитектуры. Устройство реализует подсчет импульсов с герметичного контакта, расположенного на статоре электродвигателя, возникающих при прохождении вблизи контакта магнита на роторе. Информация о числе импульсов суммируется ОЭВМ (в частности интервальным таймером-счетчиком) и выводится на 12 разрядный индикатор в двоичном формате. Датчик предназначен для получения двоичного кода частоты. Управляющая программа представляет собой циклическую индикацию содержимого счетного регистра таймера с интервалом в 1 сек, реализуемым программно. Программа проста в исполнении, требует незначительных затрат памяти ОЭВМ, но неэффективна и может дать ошибку в работе. Возможная ошибка в работе устройства: ±1 об/сек. Датчик неспособен к анализу результатов своей работы, представляет собой линейную систему. Использовать устройство в промышленных целях представляется возможным только в том случае, когда информация фиксируется оператором, а не устройствами систем управления.

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

  1. Анкудинов В. Б. Микропроцессорные устройства систем управления: Учебное пособие. Часть 1. – Вологда: ВоГТУ,2000. -124с.

  1. Анкудинов В. Б. Микропроцессорные устройства систем управления: Учебное пособие. Часть 2. – Вологда: ВоГТУ,2002. -165с.

  1. Аналоговые и цифровые интегральные микросхемы. Справочное пособие/С. В. Якубовский, Н. А. Барканов, Л. И. Ниссельсон и др.; Под ред. С. В. Якубовского.- 2-е изд., перераб. и доп. – М.: Радио и связь, 1985.-432 с., ил. – (Проектирование РЭА на интегральных микросхемах).

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

  1. Угрюмов Е. П. Цифровая схемотехника: Учеб. пособие для вузов. – 2- е. изд., перераб. и доп. – СПб.: БХВ-Петербург,2004. – 800с.: ил.

Приложение 1

Листинг рабочей программы для ОЭВМ К1878ВЕ1

;раздел объявления переменных

#define pa_dr a1 ;регистр управления порта А

#define pb_dr a2 ;регистр управления порта В

#define pa_wr b1 ;рабочий регистр порта А

#define pb_wr b2 ;рабочий регистр порта В

#define timerRU b4 ;регистр управления таймера

#define timerRC b5 ;регистр конфигурации таймера

#define temp1 c0 ;временная переменная 1

#define temp2 c1 ;временная переменная 2

#define temp3 c2 ;временная переменная 3

#define temp4 c3 ;временная переменная 4

;точка старта

start: ldr #a,18h ;сегмент регистров конфигурации портов

ldr #b,0h ;сегмент рабочих регистров портов

ldr #c,40h ;1ый сегмент рабочих переменных

;настраиваем порт А

movl pa_dr,00011011b

movl pa_dr,00111b ;все линии вход/выход

movl pa_dr,0ffh ;все с активным выходом

movl pa_dr,0 ;нагрузка отключена

movl pa_dr,0 ;прерывания

movl pa_dr,0 ;запрещены

;настраиваем порт В

movl pb_dr,00011011b

movl pb_dr,0ffh ;все вход/выход

movl pb_dr,0ffh ;все с активным выходом

movl pb_dr,0 ;нагрузка отключена

movl pb_dr,0 ;прерывания

movl pb_dr,0 ;запрещены

;настраиваем таймер

movl timerRU,00010000b ;регистр конфигурации доступен

movl timerRC,01010000b ;регистр конфигурации настроен

movl timerRU,00000000b ;регистр интервала (мл.Бт) доступен

movl timerRC,7fh ;счет до максимума

movl timerRU,00000100b ;регистр интервала (ст.Бт) доступен

movl timerRC,7fh ;***

;основная программа

begin: movl timerRU,00000001b ;таймер на счет

;1 - реализуем задержку в 1сек

movl temp3,49h

delay10: movl temp4,7dh

delay11: movl temp1,7ch

delay12: dec temp1

jnz delay12

dec temp4

jnz delay11

dec temp3

jnz delay10

movl temp3,07h

delay21: movl temp4,7fh

delay22: dec temp4

jnz delay22

dec temp3

nop

jnz delay21

;2 - реализуем вывод данных счетного регистра на индикаторы

indication: movl timerRU,00001000b ;cчетный регистр (мл.Бт) доступен

mov timerRC,pb_wr ;содержимое СчРг на порт B

movl pa_wr,00000101b ;Буф.Рг1 принял байт

movl pa_wr,00000100b ;----------------------------

movl timerRU,00001100b ;счетный регистр (ст.Бт) доступен

mov timerRC,pb_wr ;содержимое СчРг на порт B

movl pa_wr,00000110b ;Буф.Рг2 принял байт

movl pa_wr,00000100b ;----------------------------

movl pa_wr,00000000b ;выдаем на индикатор

jmp begin

rts

Микропроцессорный датчик скорости на базе процессора КР1878ВE1 Тесей