Главная

Материал взят из книги


Скачать оригинал КНИГИ в хорошем качестве

Выбор процессора

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

В моем случае, я искал небольшой по размерам, не требующий для своей работы дополнительных микросхем окружения, недорогой процессор, обладающий в то же время достаточными возможностями для решения поставленной задачи. Сразу было решено использовать либо Р1С-кон-троллер, либо что-то аналогичное ему. В результате я обратил внимание на неизвестный мне ранее микроконтроллер АТ89С2051 фирмы АТМЕЬ.

Он мне сразу понравился. Во-первых, по размерам, количеству портов ввода/вывода, вычислительным возможностям, он ничем не уступает Р1С-контроллерам. Во-вторых, он также, как и большинство Р1С-кон-троллеров, имеет встроенную флэш-память программ. Однако, по сравнению с Р1С-ами, выбранный мной контроллер имел одно очень для меня существенное преимущество. Его внутренняя структура и система команд была максимально совместима со структурой и системой команд микроконтроллера 1МС8-51 фирмы 1п1е1. Ее советский аналог

— микроконтроллер К1816ВЕ51 широко применялся в отечественной микропроцессорной технике. Мне приходилось работать с этими микросхемами, и их система команд была мне хорошо знакома. Кроме того, у меня уже имелись в наличии все основные инструментальные программы, необходимые для составления и отладки программ. А именно

— транслятор с языка Ассемблера и Отладчик.

Правда и то и другое предназначалось для микросхем 1МС8-51, но полностью подходило для выбранной мной микросхемы. Кроме того, подкупало наличие готовых фирменных алгоритмов, специально разработанной фирмой АТМЕЬ для своего контроллера АТ89С2051 и являющихся примерами работы с различными внешними устройствами. В частности, на сайте фирмы я нашел схему подключения микросхем внешней флэш-памяти по двухпроводной шине с протоколом 12С и пример программы для обслуживания этой схемы. И в довершение всего в моем распоряжении оказалась схема простого программатора для прошивки памяти программ. Его схему и описания я привожу в конце этой книги.

Но прежде, чем окончательно остановиться на выбранном процессоре, необходимо было убедиться в том, что возможностей процессора хватит для решения всех поставленных задач. Первый критический момент, по которому процессор может не подойти для данной конкретной системы — это его быстродействие. Быстродействие любого микропроцессора определяется, прежде всего, частотой его тактового генератора. По техническим условиям, максимально допустимая частота тактового генератора процессора АТ89С2051 — 24 МГц.

Однако для правильной работы упомянутых выше алгоритмов поддержки флэш-памяти необходимо, чтобы тактовая частота была равна ровно 12 МГц. Оценим теперь, хватит ли такой частоты для выполнения всех предусмотренных техническим заданием функций. Сначала вспомним, что частота тактового генератора, прежде чем поступить на все схемы микроконтроллера, при помощи встроенного делителя частоты делится на шесть. В результате частота синхросигнала основной схемы в нашем случае фактически равна 1 МГц.

Теперь посмотрим, хватит ли нам такой частоты. Самый быстрый процесс, который придется обрабатывать микроконтроллеру — это распознавание команд пульта дистанционного управления. Стандартный пульт ДУ от телевизора «Горизонт» (именно этот пульт было решено применить для управления позиционером), излучает управляющий сигнал в виде пачек импульсов. Частота следования импульсов в пачке — 1 кГц. Программа позиционера должна распознавать команды от пульта в режиме реального времени. Очевидно, что на каждый входной импульс от пульта ДУ придется 1000 тактов работы процессора. Учитывая, что большинство команд процессора выполняются за один, либо за два такта (см. приложение), то за время, равное периоду следования импульсов в сигнале пульта ДУ, данный процессор может выполнить программу длиной более 500 команд. Исходя из опыта построения подобных алгоритмов, можно утверждать, что такого количества команд более чем достаточно. Когда мы дойдем до описания соответствующих фрагментов реальной управляющей программы позиционера, вы сможете убедиться в том, что она состоит всего из 60 операторов.

Второй вопрос, который нужно продумать при выборе процессора — количество линий ввода/вывода. Наш процессор должен управлять следующими устройствами: двухразрядным светодиодным дисплеем, состоящим из двух семисегментных индикаторов, двумя ключами включения и выключения мотора поворотного устройства (прямой и инверсный ход). Кроме того, процессор должен получать и обрабатывать сигналы от следующих внешних устройств: кнопки управления (7 кнопок), датчик поворота антенны, фотоприемник сигналов ДУ.

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

Последним аргументом, склонившим чашу весов в сторону окончательного выбора — это невысокая цена микросхемы АТ89С2051. На тот момент времени, когда разработка позиционера только начиналась, цена этой микросхемы в странах СНГ была равна приблизительно 3 у.е. В настоящее время эта цена снизилась почти вдвое.

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

Следующий этап — разработка принципиальной электрической схемы. К этому этапу нужно подходить со всей серьезностью. Удачно разработанная схема — залог качества и надежности всей конструкции. Я обычно очень долго вынашиваю основные принципы построения схемы в своей голове. Всесторонне обдумываю разные варианты схемного решения. Сравниваю их между собой, стараясь оценить недостатки и преимущества каждого из вариантов. Само собой разумеется, что для этого нужно иметь некоторый опыт в разработке микропроцессорных устройств. Поэтому я предлагаю просто посмотреть на рис. 44. Перед вами принципиальная электрическая схема позиционера спутниковой антенны. Далее будет приведено подробное описание этой схемы. Описывая каждый узел, я постараюсь объяснить, из каких соображений я применил в данном случае именно такое схемотехническое решение.

Основа всего устройства — микроконтроллер 001. Он включен по типовой схеме, приведенной в документации разработчика. Для реали-

зации типового подключения потребовалось всего пять радиоэлементов. Это кварцевый резонатор Ъ\ с двумя согласующими конденсаторами С6, С7 и цепь начального сброса процессора, состоящая из резистора Ш и конденсатора СЗ. Мы уже частично рассматривали назначение обеих этих систем. Кварцевый резонатор служит для стабилизации частоты колебаний внутреннего тактового генератора.

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

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

Микросхема внешней флэш-памяти 002 (К558РР1). Для управления этой микросхемой используются линии Р1.2, Р1.3 микроконтроллера. В данном случае применена типовая схема включения, которая соответствует всем требованиям 12С-шины. Я6 и Я7 — это развязывающие резисторы. Я8, Я9 — внешняя нагрузка. Наличие такой нагрузки обязательно, так как во всех устройствах, предназначенных для работы с 12С-шиной, используются выходы с открытым коллектором. Микросхема К558РР1 специально разработана для работы с 12С-шиной. Кроме входов 5 и 6, реализующих протокол этой шины, она имеет еще три входа (А1, А2 и АЗ). Это входы установки адреса.

Дело в том, что последовательная шина стандарта 12С допускает параллельное подключение до 128 различных устройств. Обычно одно из таких устройств выступает в качестве ведущего. Все остальные устройства — ведомые. Ведущее устройство, в качестве которого в данном случае выступает микроконтроллер, имеет возможность обращаться к любому из ведомых устройств, используя его уникальный адрес. В микросхемах флэш-памяти К558РР1 имеется возможность выставлять значение этого адреса. Адрес набирается в двоичном коде на входах А1, А2, АЗ. Если вход соединить с общим проводом, то это равносильно подаче на него сигнала логического нуля. Для того, чтобы подать на вход сигнал логической единицы, он соединяется с шиной питания (+5 В). Таким образом, адрес микросхемы может принимать значение от 000В до 111В, то есть от 0 до 15. В нашей схеме используется только одна микросхема флэш-памяти, поэтому все три адресных входа соединены с общим проводом. Таким образом, микросхема имеет нулевой адрес. Микроконтроллер АТ89С2051 не имеет специальных аппаратных средств работы по Лещине. Алгоритм такой шины реализован программным путем. Как уже говорилось, был использован программный модуль, разработанный фирмой АТМЕБ, который был получен с сайта фирмы (http://www.atmel.com).

Приемник сигнала от пульта дистанционного управления (ДУ). Для приема сигналов в инфракрасном диапазоне используется специальная микросхема (0Э5), которая называется «фотоприемник». В данном конкретном случае применена микросхема ТК-19. Внешний вид этой микросхемы приведен на рис. 45. Микросхема имеет всего три вывода и содержит фотодатчик, усилитель и преобразователь уровня сигнала. Назначение выводов следующее: 1 — общий провод, 2 — напряжение питания (+5 В), 3 — выход.

На выходе микросхема формирует стандартный логический сигнал ТТЛ уровня. Если датчик микросхемы освещен, на выходе микросхемы формируется сигнал логической единицы. В противном случае на нем логический ноль. В процессе работы пульт ДУ излучает управляющий сигнал в виде пачки импульсов различной длительности. При попадании этого сигнала на чувствительный элемент фотоприемника, на его выходе появляется цифровой сигнал, полностью повторяющий сигнал с пульта. Выход фотоприемника подключен к линии Р1.5 микроконтроллера.


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

Датчик поворота антенны. Сигнал от датчика поступает на линию Р1.4. В связи с тем, что датчик поворота располагается в механизме актюато-ра, который вместе с антенной обычно находится где-то на крыше, предусмотрена система гальванической развязки между внешними цепями подключения датчика и всеми цепями управляющей схемы. Развязка обеспечивается при помощи транзисторного оптрона DAI (АОТ104). Для питания светодиода оптрона используется постоянное напряжение, которое снимается с выпрямительного моста VDA2. Это напряжение предназначено для питания всех внешних цепей схемы. А именно: двигателя поворота антенны и цепей датчика поворота.

Двигатель питается непосредственно от пульсирующего напряжения. Для питания светодиода такое напряжение непригодно. Импульсы 50 Ги могут быть восприняты, как импульсы от датчика поворота антенны. Поэтому в схеме применен сглаживающий фильтр R4, С8. Сглаженное напряжение подается на светодиод оптрона DA1 через контакт датчика поворота антенны и токоограничивающий резистор R3. Светодиод загорается в момент замыкания контактов датчика. При этом транзистор оптрона открывается и замыкает на общий провод вывод 16 микроконтроллера (линию Р1.4). Это равносильно подаче на этот вход сигнала логического нуля. При размыкании контакта датчика светодиод гаснет, транзистор закрывается и на входе

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

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

Индикатор дежурного режима. Одно из требований, выдвинутое при разработке схемы позиционера, это наличие дежурного режима. Схема разработана таким образом, что она никогда не выключается полностью. Вместо этого схема переходит в дежурный режим. В дежурном режиме схема потребляет минимум энергии. В то же время пользователь в любой момент может включить позиционер при помощи пульта ДУ. В дежурном режиме моторы выключены, все кнопки (кроме кнопки включения) заблокированы. Все индикаторы потушены. Для индикации дежурного режима используется сегмент десятичной точки элемента НБ2. Он загорается в момент перехода в дежурный режим и гаснет при выходе из этого режима. Индикатор удобен тем, что можно отличать состояние дежурного режима от состояния, когда устройство просто не подключено к сети. Для управления индикатором дежурного режима используется линия Р1.1 микроконтроллера.

Теперь рассмотрим более сложную часть схемы: схему подключения семисегментных индикаторов, кнопок управления и регистра управления мотором. Для подключения всех этих устройств используется порт РЗ микроконтроллера. Причем оба индикатора, кнопки клавиатуры и регистр управления мотором (ОЭ4) подключены к этому порту параллельно. Здесь налицо совместный способ подключения устройств к одним и тем же выводам. Рассмотрим, как же устроена эта схема.

Начнем с индикаторов. Индикаторы позиционера работают в режиме динамической индикации. Динамическая индикация — это очень распространенный прием в цифровой технике. Суть его состоит в том, что для сокращения количества управляющих сигналов индикаторы включают таким образом, чтобы в каждый момент времени светился только один из разрядов. В процессе работы происходит постоянное переключение индикаторов. Сначала включается первый индикатор и высвечивает старший разряд. Затем включается второй индикатор, и высвечивает младший. Затем весь цикл повторяется. Частота повторения подобрана таким образом, что человеческий глаз не видит мерцаний. Ему кажется, что каждый индикатор постоянно высвечивает свою цифру.

Схема индикации реализована на основе двух семисегментных индикаторов с общим анодом (ШЛ, НБ2). Одноименные катоды каждого из индикаторов соединены вместе и подключены к выводам порта РЗ. Для переключения индикаторов используется дешифратор 003 (К555ИД4). Используется только одна из двух секций дешифратора. Дешифратор управляется при помощи линий Р1.6, Р1.7 микроконтроллера. Подавая на входы дешифратора двухразрядный двоичный сигнал, процессор может активизировать один из четырех выходов верхней секции дешифратора. Выходы ()2 и ()3 используются для выбора одного из двух разрядов индикатора. Для того, чтобы выбрать индикатор Н1Д, процессор должен подать на вход дешифратора код 01В. Для того, чтобы выбрать НЬ2, нужно подать код 10В.

Управляющие ключи Я12, УТ4 и Я13, УТ5 предназначены для согласования выходов дешифратора с нагрузкой и повышения яркости свечения индикаторов. Резисторы К14...1Т20 выполняют роль токоограничивающих.

Благодаря дешифратору БОЗ процессор может подключать к порту РЗ не два, а четыре внешних устройства. Выход ()1 используется для активизации кнопок управления. Выход СИ используется для записи управляющих сигналов в двухразрядный параллельный регистр, выполненный на основе микросхемы 004 (К555ТМ2), который, в свою очередь, служит для управления двигателем поворота антенны.

Для считывания информации с клавиатуры процессор подает на вход дешифратора код 00В. На выходе СМ появляется сигнал логического нуля. В результате нижние по схеме выводы кнопок управления Б1...Б7 оказываются подключенными к общему проводу. Таким образом, происходит инициализация клавиатуры. Остальные устройства, управляемые дешифратором 004, окажутся отключенными и на работу схемы влиять не будут. Теперь микроконтроллер может произвести чтение информации из порта РЗ. Перед тем как производить чтение порта, процессор обязательно должен записать туда код, устанавливающий все его разряды в единичное состояние. Данный процесс называется чтением кода состояния клавиатуры. Если ни одна кнопка не нажата, то код состояния клавиатуры будет равен ОРЯН.

Теперь допустим, что мы нажали кнопку Б1. Тогда в процессе чтения состояния клавиатуры катод диода УЭ1 через контакты кнопки Б1 и выход ()1 дешифратора 004 окажется подключенным к общему проводу. Под действием логической единицы на выходе линии РЗ.О микроконтроллера диод откроется и линия РЗ.О окажется соединенной с общим проводом. Уровень сигнала в линии упадет до нуля. Это равносильно подаче на нее сигнала низкого логического уровня. В этом случае код состояния клавиатуры окажется равным ОБЕН (11111110В). Нажатие остальных кнопок приведет к обнулению других разрядов. Поэтому при разных комбинациях нажатых кнопок процессор получит разные коды. Эти коды используются процессором для переключения режимов работы позиционера.

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

Регистр выполнен на основе двух Э-триггеров, входящих в состав микросхемы 004. О-входы этого импровизированного регистра подключены к линиям РЗ.О и Р3.1 микроконтроллера. На С-входы обоих триггеров поступает сигнал с выхода СИ дешифратора. Запись управляющих битов в регистр производится следующим образом: сначала процессор записывает в младшие разряды порта РЗ (Р3.1 и Р3.2) управляющий сигнал. Управляющий сигнал представляет собой двухбитиое двоичное число. Эти два бита поступают на О-входы обоих триггеров микросхемы 004. Затем процессор подает на входы дешифратора 003 код 11В. На выходе 04 устанавливается логический ноль. Перепад уровней с 1 на 0 на С-входах обоих триггеров микросхемы 004 вызывает запись управляющего сигнала в оба триггера регистра. К прямым выходам триггеров регистра подключены управляющие ключи ШО, УТ2 и ЯП, УТЗ. Ключи служат для управления электромагнитными реле К1, К2. Применение реле обеспечило гальваническую развязку по цепям управления мотором. Реле К1 предназначено для включения мотора в прямом направлении, а при помощи реле К2 включается реверс. Одновременно оба реле никогда не включаются.

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

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

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

В заключение нужно сказать, что схема питается от одного трансформатора, имеющего две независимые вторичные обмотки. Одна используется для питания цифровой части и обоих реле, а другая — для питания мотора поворотного устройства. Каждое напряжение поступает на свой выпрямитель. Для питания схемы позиционера используется выпрямитель VDA1, фильтр С1, С2 и стабилизатор напряжения DA1. На выходе стабилизатора мы получаем стабилизированное напряжение +5 В. Напряжение питания мотора поступает на выпрямительный мост VDA2.

Используются технологии uCoz