Контроллер опорно-поворотного устройства антенны

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

Контроллер опорно-поворотного устройства антенны











Тема: Контроллер опорно-поворотного устройства антенны

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

микроконтроллер антенна сборка моделирование

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

СОДЕРЖАНИЕ

1 ОБЗОР ЛИТЕРАТУРЫ

.1 Структура микроконтроллера

.2 Шаговый двигатель 

ФУНКЦИОНАЛЬНАЯ СХЕМА УСТРОЙСТВА

ПРИНЦИПИАЛЬНАЯ СХЕМА УСТРОЙСТВА

ВЫБОР ЭЛЕМЕНТНОЙ БАЗЫ УСТРОЙСТВА

.1 Выбор микроконтроллера

.2 Выбор двигателя

.3 Выбор транзисторной сборки

.4 Выбор дисплея

.5 Источник питания

АЛГОРИТМ РАБОТЫ УСТРОЙСТВА

МОДЕЛИРОВАНИЕ УСТРОЙСТВА

.1 Описание среды моделирования

.2 Моделирование устройства

ЗАКЛЮЧЕНИЕ

СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ

ПРИЛОЖЕНИЕ

ВВЕДЕНИЕ

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

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

Как бы там ни было, неоспоримым остается тот факт, что повсеместное распространение микроконтроллеров произвело революцию во всей электронике в целом и технике измерения и управления в частности. Измерительные приборы, которые еще пару лет назад можно было в шутку назвать «могильщиками» микросхем, сегодня состоят из одного микроконтроллера и нескольких дополнительных конструктивных элементов. Управляющие и регулирующие устройства, которые в не столь давние времена были чрезвычайно энергоемкими, сейчас имеют еще один дополнительный микроконтроллер (например, ATtiny26) и довольствуются током 15 мА при тактовой частоте 8 МГц.

AVR - это новое семейство 8-разрядных RISC-микроконтроллеров фирмы Almel. Эти микроконтроллеры позволяют решать множество задач встроенных систем. Они отличаются от других распространенных в настоящее время микроконтроллеров большей скоростью работы, большей универсальностью. Быстродействие данных микроконтроллеров позволяет в ряде случаев применять их в устройствах, для реализации которых ранее можно было применять только 16-разрядные микроконтроллеры, что позволяет ощутимо удешевить готовую систему.

1 ОБЗОР ЛИТЕРАТУРЫ

 

.1 Структура микроконтроллера


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

На рис. 1.1 изображена структурная схема типичного современного микроконтроллера.

Рис. 1.1 Структура микроконтроллера

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

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

Давайте рассмотрим типичные схемы, присутствующие в микроконтроллерах.

. Центральное процессорное устройство (ЦПУ) - сердце микроконтроллера. Оно принимает из памяти программ коды команд, декодирует их и выполняет. ЦПУ состоит из регистров, арифметико-логического устройства (АЛУ) и цепей управления.

. Память программ. Здесь хранятся коды команд, последовательность которых формирует программу для микроконтроллера.

. Оперативная память данных. Здесь хранятся переменные программ. У большинства микроконтроллеров здесь расположен также стек.

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

. Цепь сброса. Эта цепь служит для правильного запуска микроконтроллера.

. Последовательный порт - очень полезный элемент микроконтроллера. Он позволяет обмениваться данными с внешними устройствами при малом количестве проводов.

. Цифровые линии ввода/вывода. По сравнению с последовательным портом с помощью этих линий возможно управлять одновременно несколькими линиями (или проверять несколько линий).

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

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

 

.2 Шаговый двигатель


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

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

1.       угол поворота ротора определяется числом импульсов, которые поданы на двигатель

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

.        прецизионное позиционирование и повторяемость. Хорошие шаговые двигатели имеют точность 3-5% от величины шага. Эта ошибка не накапливается от шага к шагу

.        возможность быстрого старта/остановки/реверсирования

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

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

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

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

Виды шаговых двигателей

Существуют три основных типа шаговых двигателей:

·        двигатели с переменным магнитным сопротивлением

·        двигатели с постоянными магнитами

·        гибридные двигатели

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

Биполярные и униполярные шаговые двигатели

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

Рис. 2. Биполярный двигатель (а), униполярный (б) и четырехобмоточный (в).

Униполярный двигатель также имеет одну обмотку в каждой фазе, но от середины обмотки сделан отвод. Это позволяет изменять направление магнитного поля, создаваемого обмоткой, простым переключением половинок обмотки. При этом существенно упрощается схема драйвера. Драйвер должен иметь только 4 простых ключа. Таким образом, в униполярном двигателе используется другой способ изменения направления магнитного поля. Средние выводы обмоток могут быть объединены внутри двигателя, поэтому такой двигатель может иметь 5 или 6 выводов (рис. 2.б). Иногда униполярные двигатели имеют раздельные 4 обмотки, по этой причине их ошибочно называют 4-х фазными двигателями. Каждая обмотка имеет отдельные выводы, поэтому всего выводов 8 (рис. 2.в). При соответствующем соединении обмоток такой двигатель можно использовать как униполярный или как биполярный. Униполярный двигатель с двумя обмотками и отводами тоже можно использовать в биполярном режиме, если отводы оставить неподключенными. В любом случае ток обмоток следует выбирать так, чтобы не превысить максимальной рассеиваемой мощности.

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

Момент, создаваемый шаговым двигателем, пропорционален величине магнитного поля, создаваемого обмотками статора. Путь для повышения магнитного поля - это увеличение тока или числа витков обмоток. Естественным ограничением при повышении тока обмоток является опасность насыщения железного сердечника. Однако на практике это ограничение действует редко. Гораздо более существенным является ограничение по нагреву двигателя вследствие омических потерь в обмотках. Как раз этот факт и демонстрирует одно из преимуществ биполярных двигателей. В униполярном двигателе в каждый момент времени используется лишь половина обмоток. Другая половина просто занимает место в окне сердечника, что вынуждает делать обмотки проводом меньшего диаметра. В то же время в биполярном двигателе всегда работают все обмотки, т.е. их использование оптимально. В таком двигателе сечение отдельных обмоток вдвое больше, а омическое сопротивление - соответственно вдвое меньше. Это позволяет увеличить ток в корень из двух раз при тех же потерях, что дает выигрыш в моменте примерно 40%. Если же повышенного момента не требуется, униполярный двигатель позволяет уменьшить габариты или просто работать с меньшими потерями. На практике все же часто применяют униполярные двигатели, так как они требуют значительно более простых схем управления обмотками. Это важно, если драйверы выполнены на дискретных компонентах. В настоящее время существуют специализированные микросхемы драйверов для биполярных двигателей, с использованием которых драйвер получается не сложнее, чем для униполярного двигателя. Например, это микросхемы L293E, L298N или L6202 фирмы SGS-Thomson, PBL3770, PBL3774 фирмы Ericsson, NJM3717, NJM3770, NJM3774 фирмы JRC, A3957 фирмы Allegro, LMD18T245 фирмы National Semiconductor.

Способы управления фазами шагового двигателя.

Первый способ обеспечивается попеременной коммутации фаз, при этом они не перекрываются, в один момент времени включена только одна фаза (рис 3.а). Этот способ называют ”one phase on” full step или wave drive mode. Точки равновесия ротора для каждого шага совпадают с «естественными» точками равновесия ротора у незапитанного двигателя. Недостатком этого способа управления является то, что для биполярного двигателя в один и тот же момент времени используется 50% обмоток, а для униполярного - только 25%. Это означает, что в таком режиме не может быть получен полный момент.


Второй способ - управление фазами с перекрытием: две фазы включены в одно и то же время. Его называют ”two-phase-on” full step или просто full step mode. При этом способе управления ротор фиксируется в промежуточных позициях между полюсами статора (рис. 3.б) и обеспечивается примерно на 40% больший момент, чем в случае одной включенной фазы. Этот способ управления обеспечивает такой же угол шага, как и первый способ, но положение точек равновесия ротора смещено на полшага.

Третий способ является комбинацией первых двух и называется полушаговым режимом, ”one and two-phase-on” half step или просто half step mode, когда двигатель делает шаг в половину основного. Этот метод управления достаточно распространен, так как двигатель с меньшим шагом стоит дороже и очень заманчиво получить от 100-шагового двигателя 200 шагов на оборот. Каждый второй шаг запитана лишь одна фаза, а в остальных случаях запитаны две (рис. 3.в). В результате угловое перемещение ротора составляет половину угла шага для первых двух способов управления. Кроме уменьшения размера шага этот способ управления позволяет частично избавиться от явления резонанса. Полушаговый режим обычно не позволяет получить полный момент, хотя наиболее совершенные драйверы реализуют модифицированный полушаговый режим, в котором двигатель обеспечивает практически полный момент, при этом рассеиваемая мощность не превышает номинальной.

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

Применение шаговых двигателей

Шаговые двигатели находят широкое применение в различном оборудовании:

·              Приборы точной механики и оптики

·              Измерительные приборы, в том числе спектрометры, газоанализаторы, приборы для анализа нефтепродуктов; оборудование для отбора проб; приборы для контроля качества зерна, муки и т. д.

·              Дозаторы и питатели

·              Перемешивающие устройства

·              Робототехника

·              Стрелочные приборы (спидометры, тахометры, комбинации, часы) для автоэлектроники, летных тренажеров и т. п.

·              Спектрометры

·              Медицинское и лабораторное оборудование

·              Координатные и поворотные столы

·              Приводы ЧПУ - фрезерные, гравировальные, шлифовочные, электроэррозионные станки, комплексы лазерной, плазменной, газовой резки.

·              Приводы исполнительных механизмов конвейерных систем

·              Упаковочное, фасовочное, сортировочное, этикеровочное оборудование

·              Вязальное, вышивальное оборудование

·              Оборудование для намотки

·              Полиграфические автоматы

·              Морские радиолокационные и гидроакустические станции

·              Светотехническое оборудование

·              Дисководы, факсимильные аппараты, принтеры, сканеры, копировальные машины, а также различная бытовая техника

·              Теплотехника

·              Приводы для систем безопасности - турникеты, поворотные камеры

·              Специальное технологическое оборудование

2 ФУНКЦИОНАЛЬНАЯ СХЕМА УСТРОЙСТВА


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

Управление и контроль ОПУ осуществляется с помошью:

·        Жидкокристаллического индикатора - для отображения угла поворота измеряемой антенны и отображения текущего режима работы;

·        Светодиод «+12В» для отображения наличия питания +12В;

·        Светодиод «Led_step» отображает управление двигателем;

·        Кнопка «МЕНЮ», устанавливающая нулевой угол поворота;

·        Кнопка поворота по часовой стрелке;

·        Кнопка поворота против часовой стрелки;

·        Разъем для подключения шагового двигателя.

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

Наиболее важной особенностью шагового двигателя является то, что на каждый импульс управления ротор поворачивается на фиксированный угол, значение которого в градусах называется шагом. При получении команды цепь определяет, какая фаза должна быть задействована и посылает сигнал управления. Если выходной потенциал схемы высокий, возбуждается соответствующая фаза обмотки. Если выходной потенциал низкий, фаза обмотки с этим номером отключается. Двигатель вращается по часовой стрелке (вправо) при управляющей последовательности 1001=9 > 0011=3 > 1100=6 > 1000=C > 1001=9 > …,  направление против часовой стрелки (влево) реализуется при обратной последовательности ..1001=9 > 1000=С > 0110=6 > 0011=3 > 1001=9... шаговый двигатель осуществляет 25 шагов на градус, таким образом, для осуществления полного поворота на 360º двигателю необходимо произвести 9000 шагов.

Рис. 2.2 Диаграмма работы в полушаговом режиме

3 ПРИНЦИПИАЛЬНАЯ СХЕМА УСТРОЙСТВА

В составе устройства используется микроконтроллер ATmega 8535, обладающий необходимым количеством портов ввода/вывода и прерываний. Для отображения информации используется жидкокристаллический индикатор LM016L, который содержит 2 строки по 16 символов, встроенный знакогенеретор.

В качестве двигателя выбран ДШИ-200-1, драйвер которого представляет собой четыре мощных транзисторных ключа, необходимых для коммутации обмоток шагового двигателя.

Питание осуществляется с помощью стабилизированного источника питания на 5В, рассчитанного на входное напряжение 7..12 В.

Рис. 3.1 -  Принципиальная схема устройства

4 ВЫБОР ЭЛЕМЕНТНОЙ БАЗЫ УСТРОЙСТВА

 

.1 Выбор микроконтроллера


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

Некоторые отличительные особенности:

·        высокая производительность при малом потреблении;

·        развитая RISC архитектура;

·        энергонезависимая память программ и память данных;

·        40 - выводной корпус PDIP;

·        32 программируемых входа-выхода

·        рабочее напряжение питания: 4.5 В до 5.5 В;

·        рабочая тактовая частота: 0-16 МГЦ.

Таблица 1 - Параметры микроконтроллера ATMEGA8535.

Flash (байт)

ISP

SRAM (байт)

EEPROM (байт)

IOR

P

I/O

ALT

SPI

USART

TWSI

T/C0

T/C1

ADC

AC

PHM

8K

+

512

512


54

4

32

26

+

+


A

E

C

8

+


 

Рис.4.1 - Вид сверху и цоколевка микроконтроллера ATMEGA8535

4.2 Выбор двигателя

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

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

Параметры ДШИ-200-1

Макс. статистический cинхронизирующий момент, нм                   0,25

Единичный шаг, град. и погрешность отработки шага            1,8 (±3%)

Макс. частота приемистости, Гц                                                       1200

Номинальный ток питания в фазе электродвигателя, А                      1,5

Сопротивление фазных обмоток, Ом                                         1,56±0,15

Индуктивность фазных обмоток, мГн (не более)                                 1,6

Биение вала, мкм (не более)                                                                   12

Число фазных обмоток                                                                                    4

Масса, кг                                                                                               0,35

Выбранный двигатель не сможет обеспечить достаточной точности при повороте антенны, т.е. за полный оборот он совершает 200 шагов, поэтому необходимо поставить редуктор с передаточным числом 45, т.е. получим 45*200=9000 шагов на оборот, т.е. 25 шагов на 1 градус.

 

.3 Выбор транзисторной сборки.


Для того, чтобы согласовать уровни сигналов на выходе порта микроконтроллера с уровнями сигнала управления двигателя необходимо использовать мощные транзисторные ключи на основе транзисторов КТ972А.

Обмотку ШД представляют на схеме замещения последовательным соединением индуктивности и резистора.  Кроме того, при вращении ротора в обмотках возникает ЭДС. Следовательно, эквивалентная схема замещения ШД выглядит, как на рис. 3.

Рис. 4.2 - Эквивалентная схема замещения шагового двигателя

При запирании транзистора из-за наличия индуктивность L (di/dt) возникает ЭДС самоиндукции, которая может привести к выходу из строя транзистора. Для снижения перенапряжения и защиты транзистора от перенапряжения будем использовать диоды обратного тока 1N4005.

Если параллельно с обмоткой включен диод, то после выключения транзистора ток обмотки замыкается через него. В этой схеме не бывает больших изменений тока при выключении.

Рис. 4.3 - Схема силового модуля

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

4.4 Выбор дисплея


Для отображения информации используется дисплей LM016L.

·        Тип: символьный ( знакосинтезирующий)

·        Разрешение: 16 символов х 2 строк

Табл. .1 Электрические параметры

 

.5 Источник питания


В качестве источника питания выбрана схема на основе стабилизатора напряжения положительной полярности L7805CV.

Рис. 4.4 - Стабилизированный источник питания

Параметры микросхемы L7805CV

Номинальный выходной ток, мА

1.5

Выходное напряжение, В

5

Максимальное входное напряжение, В

40

Корпус

TO220




Руководствуясь документацией на интегральный стабилизатор напряжения L7805CV,  были подобраны номиналы и типы конденсаторов: С3, С6 - конденсаторы для поверхностного монтажа (SMD) номиналом 0,1 мкФ, С4, С5 - электролитические ЧИП конденсаторы номиналом 10 мкФ.

5 АЛГОРИТМ РАБОТЫ УСТРОЙСТВА


При включении контроллера происходит инициализация прерываний INT0, INT1, INT2 по спадающему фронту, инициализация порта PORTC управления двигателем, инициализация ЖКИ.

Для поворота двигателя необходимо переключать его обмотки в необходимом порядке, указанном в спецификации двигателя. Этот порядок задается в массиве nSteps. Текущий индекс переключения обмоток хванится в переменной nCurrentStep. Текущее положение антенны хранится в переменной nCurrentAngle в градусах.

Обработка нажатий клавиш происходит при помощи прерываний. Прерывание INT0 служит для обработки нажатия клавиши «Влево». Прерывание INT1 служит для обработки нажатия клавиши «Вправо», прерывание INT2 - клавиши «МЕНЮ».

При нажатии клавиши «МЕНЮ» обнуляется и выводится текущее положение антенны.

Рис. 5.1 - Блок-схема функции ext_int_menu обработки нажатия на клавишу «MENU»

При нажатии клавиши «Влево» / «Вправо» микроконтроллер поворачивает двигатель на 1 градус по/против часовой стрелки, отображая текущее положение антенны на ЖКИ. Если кнопка нажата более 0,3 секунды, то антенна поворачивается на 1 градус с периодом 0,3 секунды пока клавиша не будет отпущена.

Рис. 5.2 - Блок-схема функции ext_int_left обработки нажатия на клавишу «LEFT»

Рис. 5.3 - Блок-схема функции RotateLeft поворота антенны на 1 градус

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

6 МОДЕЛИРОВАНИЕ УСТРОЙСТВА

 

.1 Описание среды моделирования.


Proteus, созданный фирмой Labcenter Electronics на основе ядра SPICE3F5 университета Berkeley, является так называемой сквозной средой проектирования. Это означает создание устройства, начиная с его графического изображения (принципиальной схемы) и заканчивая изготовлением печатной платы устройства, с возможностью контроля на каждом этапе производства.

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

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

6.2 Моделирование устройства

 

Рис.6.1 - Устройство инициализировано, готово к работе

Рис. 6.2 - Обработка прерывания при нажатии кнопки «MENU», установка в ноль текущего угла поворота антенны

Рис. 6.3 - Поворот антенны на право на 1 градус

Рис. 6.4 - Поворот антенны на лево в случае, когда кнопка «LEFT» нажата более 0,3 с

ЗАКЛЮЧЕНИЕ

Разработан контроллер опорно-поворотного устройства антенны.  Написана программа для микроконтроллера ATmega8535 на языке Assembler AVR и СИ. Произведено моделирование синтезированного устройства в среде Proteus.

СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ


1.       Гребнев В.В. Микроконтроллеры семейства AVR фирмы Atmel. - М.: ИП Радио Софт, 2002 - 176 с.

2.       Голубцов М. С. Микроконтроллеры AVR: от простого  сложному/ М.С., Голубцов - М.: СОЛОН-Пресс, 2003, 288с.

.        Максимов. Симулятор - отладчик PROTEUS VSM ISIS

.        Трамперт В. Измерение, управление и регулирование с помощью AVR - микроконтроллеров.: Перю с нем. - К.: «МК-Пресс», 2006. - 208с., ил.

.        Хартов В.Я. Микроконтроллеры AVR. Практикум для начинающих. - М.: Изд-во МГТУ им. Н.Э. Баумана, 2007. - 240 с: ил.

6.       <http://www.telesys.ru>

ПРИЛОЖЕНИЕ

Листинг программы инициализации устройства

// прерывания кнопок

// меню

#define MENUPORT        PORTB

#define MENUDDR         DDRB

#define MENUBIT         2

#define INT_MENU        EXT_INT2

// лево

#define LEFTPORT        PORTD

#define LEFTDDR         DDRD

#define LEFTPIN         PIND

#define LEFTBIT         2

#define INT_LEFT        EXT_INT0

// право

#define RIGHTPORT       PORTD

#define RIGHTDDR        DDRD

#define RIGHTPIN        PIND

#define RIGHTBIT        3

#define INT_RIGHT       EXT_INT1

// двигатель

#define MOTORPORT       PORTC

#define MOTORDDR        DDRC

char nSteps[4], nCurrentStep;

/*****************************************************

***                          Функция InitButtons                                   ***

***                    Инициализация прерывания кнопок              ***

*****************************************************/InitButtons(void)

{

// настройка портов.MENUBIT = 1;

MENUDDR.MENUBIT = 1;

LEFTPORT.LEFTBIT = 1;.LEFTBIT = 1;.RIGHTBIT = 1;.RIGHTBIT = 1;

// Настройка прерываний

// INT0: On

// INT0 Mode: Falling Edge

// INT1: On

// INT1 Mode: Falling Edge

// INT2: On

// INT2 Mode: Falling Edge|=0xE0;=0x0A;=0x00;=0xE0;

}

/*****************************************************

***                                  Функция InitMotor                              ***

***                            Инициализация двигателя                        ***

*****************************************************/InitMotor(void)

{= 0x00;= 0xFF;

[0] = 0x09;[1] = 0x03;[2] = 0x06;[3] = 0x0C;

 = 0;

}

Листинг программы контроллера опорно-поворотного устройства антенны

Chip type           : ATmega8535

*****************************************************/

#include <mega8535.h>

// Alphanumeric LCD Module functions

#asm

.equ __lcd_port=0x1B ;PORTA

#endasm

#include <lcd.h>

// Standard Input/Output functions

#include <stdio.h>

#include <delay.h>

// настройки платы

#include <BoardConfig.h>

// прототипы фунцийRotateLeft(unsigned short nCount);RotateLeftStep(unsigned short nCount);RotateRight(unsigned short nCount);RotateRightStep(unsigned short nCount);ShowCurrentAngle(void);Initialization(void);

// текущий поворот антены в градусахshort nCurrentAngle;

/*****************************************************

***                         Функция ShowCurrentAngle                       ***

***          Отображение текущего поворота в первой строке  ***

*****************************************************/ShowCurrentAngle(void)

{

// буфер для строки

unsigned char szBuffer[17];

// переход к первому символу первой строки

lcd_gotoxy(0,0);(szBuffer, "Povorot: %3u    ", nCurrentAngle);_puts(szBuffer);

}

/*****************************************************

***                              Функция ext_int_menu                           ***

***                Обработка нажатия на кнопку "Меню"             ***

*****************************************************/[INT_MENU] void ext_int_menu(void)

{

#asm("cli");_gotoxy(0,1);_putsf("MENU pressed!");

= 0;();

#asm("sei");

}

/*****************************************************

***                             Функция ext_int_left                               ***

***                  Обработка нажатия на кнопку "Лево"             ***

*****************************************************/[INT_LEFT] void ext_int_left(void)

{

#asm("cli");_gotoxy(0,1);_putsf("LEFT pressed!");

// поворачиваем влево на один градус(1);

delay_ms(300);(!LEFTPIN.LEFTBIT)

{(1);_ms(300);

}

#asm("sei");

}

/*****************************************************

***                              Функция ext_int_right                             ***

***                  Обработка нажатия на кнопку "Право"            ***

*****************************************************/[INT_RIGHT] void ext_int_right(void)

{

#asm("cli");_gotoxy(0,1);_putsf("RIGHT pressed!!!");

// поворачиваем вправо на один градус(1);

delay_ms(300);(!RIGHTPIN.RIGHTBIT)

{(1);_ms(300);

}

#asm("sei");

}

/*****************************************************

***                             Функция RotateLeftStep                          ***

***                Поворачивает против часовой стрелки на         ***

***                              указанное число шагов.                         ***

*****************************************************/RotateLeftStep(unsigned short nCount)

{

{.0 = 0;= nSteps[nCurrentStep];

++nCurrentStep;(nCurrentStep > 3)

{= 0;

}_ms(2);.0 = 1;

}(nCount-- > 0);= 0x00;

//nCurrentStep = 0;

/*****************************************************

***                         Функция RotateRightStep                           ***

***                Поворачивает против часовой стрелки на         ***

***                            указанное число градусов.                      ***

*****************************************************/RotateRightStep(unsigned short nCount)

{

{.0 = 0;= nSteps[nCurrentStep];

-nCurrentStep;(nCurrentStep > 3)

{= 3;

}_ms(2);.0 = 1;

}(nCount-- > 0);= 0x00;

//nCurrentStep = 0;

}

/*****************************************************

***                                Функция RotateLeft                             ***

***                Поворачивает против часовой стрелки на         ***

***                             указанное число градусов.                      ***

*****************************************************/RotateLeft(unsigned short nCount)

{

// поворачиваем влево на нужное число шагов

// 25 шагов на градус(nCount * 25);

// уменьшаем текущий угол поворота

nCurrentAngle -= nCount;(nCurrentAngle > 360)

{+= 360;

}

// отображаем текущий угол();

}

/*****************************************************

***                              Функция RotateRight                               ***

***                     Поворачивает по часовой стрелке на             ***

***                             указанное число градусов.                      ***

*****************************************************/RotateRight(unsigned short nCount)

{

// поворачиваем вправо на нужное число шагов

// 25 шагов на градус(nCount * 25);

// увеличиваем текущий угол поворота+= nCount;

if (nCurrentAngle > 360)

{-= 360;

}

// отображаем текущий угол();

}

/*****************************************************

***                                  Функция Initialization                         ***

***                         Инициализация контроллера                      ***

*****************************************************/Initialization(void)

{

/*

// Input/Output Ports initialization

// Port A initialization

// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In

// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T=0x00;=0x00;

// Port B initialization

// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In

// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T=0x01;=0x01;

// Port C initialization

// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In

// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T=0x00;=0x00;

// Port D initialization

// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In

// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T=0x00;=0x00;

*/

#asm R30,LOW(0) 0x1B,R30 0x1A,R30

 R30,LOW(1) 0x18,R30 0x17,R30

 R30,LOW(0) 0x14,R30 0x12,R30 0x11,R30

 R30,LOW(1) 0x1B,R30 0x1A,R30 0x18,R30 0x17,R30 0x14,R30 0x12,R30 0x11,R30

#endasm

// Timer/Counter 0 initialization

// Clock source: System Clock

// Clock value: Timer 0 Stopped

// Mode: Normal top=FFh


// Timer/Counter 1 initialization

// Clock source: System Clock

// Clock value: Timer 1 Stopped

// Mode: Normal top=FFFFh

// OC1A output: Discon.

// OC1B output: Discon.

// Noise Canceler: Off

// Input Capture on Falling Edge

// Timer 1 Overflow Interrupt: Off

// Input Capture Interrupt: Off

// Compare A Match Interrupt: Off

// Compare B Match Interrupt: OffA=0x00;B=0x00;H=0x00;L=0x00;H=0x00;L=0x00;AH=0x00;AL=0x00;BH=0x00;BL=0x00;

// Timer/Counter 2 initialization

// Clock source: System Clock

// Clock value: Timer 2 Stopped

// Mode: Normal top=FFh

// OC2 output: Disconnected=0x00;=0x00;=0x00;=0x00;

// External Interrupt(s) initialization

// INT0: On

// INT0 Mode: Falling Edge

// INT1: On

// INT1 Mode: Falling Edge

// INT2: On

// INT2 Mode: Falling Edge|=0xE0;=0x0A;=0x00;=0xE0;

// Timer(s)/Counter(s) Interrupt(s) initialization=0x00;

// USART initialization

// Communication Parameters: 8 Data, 1 Stop, No Parity

// USART Receiver: On

// USART Transmitter: On

// USART Mode: Asynchronous

// USART Baud Rate: 56000=0x00;=0x18;=0x86;=0x00;=0x08;

// Analog Comparator initialization

// Analog Comparator: Off

// Analog Comparator Input Capture by Timer/Counter 1: Off=0x80;=0x00;

}

/*****************************************************

***                                Функция main                                       ***

***                                Главная функция                                  ***

*****************************************************/main(void)

{

// инициализация контроллера();

// инициализация LCD 16x2

lcd_init(16);

// очистка LCD_clear();

// инициализация кнопок();

// инициализация двигателя();

// включение прерываний

#asm("sei")_gotoxy(0,1);

lcd_putsf("Ready to work");

= 0;

();

// главный цикл(1)

{

};

}

Похожие работы на - Контроллер опорно-поворотного устройства антенны

 

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