ЛР5. Ислледование управления внешними устройствами (Готовая лабораторная работа №5)
Описание файла
Документ из архива "Готовая лабораторная работа №5", который расположен в категории "". Всё это находится в предмете "элементы управления в асоиу" из 7 семестр, которые можно найти в файловом архиве МГТУ им. Н.Э.Баумана. Не смотря на прямую связь этого архива с МГТУ им. Н.Э.Баумана, его также можно найти и в других разделах. Архив можно найти в разделе "лабораторные работы", в предмете "элементы управления в асоиу" в общих файлах.
Онлайн просмотр документа "ЛР5. Ислледование управления внешними устройствами"
Текст из документа "ЛР5. Ислледование управления внешними устройствами"
Московский государственный технический университет им. Н.Э. Баумана
Факультет информатики и систем управления
Автоматизированные системы обработки информации и управления
Кивва А.А.
Методические указания
«Введение в программирование микроконтроллеров AVR»
Лабораторная работа №3
Москва 2012г.
Цель работы
Изучить взаимодействие микроконтроллера с внешними устройствами на примере интерфейса UART и сервомотора.
Введение
В прошлой лабораторной работе Вами была изучена работа таймера и система прерываний в МК AVR ATMega16. Эти знания понадобятся для реализации программной части блока управления сервомотором с персонального компьютера. Для этой лабораторной работы необходимо изучить интерфейсы UART, RS-232 и логику работы простых сервомоторов.
Интерфейс UART
Большинство МК AVR имеют аппаратную реализацию интерфейса UART, который является одним из простейших и широко распространенных стандартов передачи данных.
Логическое устройство интерфейса UART
Приёмник соединён с передатчиком. Передатчик устанавливает 0 на линии, после чего через интервал T1 начинает отправлять биты, выдерживая между ними интервал T2.
Приёмник отслеживает падение напряжения на линии передачи, после чего тоже выжидает T1 и через каждые T2 единиц времени считывает значение на линии. В конце должен идти SP, стоповый бит. На схеме ниже приведён простейший вариант работы:
Также интерфейс UART позволяет использовать более одного стопового бита, передавать 5-9 бит информации и проводить контроль чётности, однако такие аспекты работы в данной ЛР не рассматриваются.
RS-232
Этот интерфейс имеет широко известное «народное» название – COM порт. Принцип передачи а этом интерфейсе абсолютно такой же, как и в UART, однако он использует отличные от МК уровни напряжений, поэтому необходимо использование схемы-преобразователя напряжений (например, в макетной плате установлена MAX232). Именно ввиду того, что один и тот же интерфейс поддерживается и ПК, и МК, он до сих пор является достаточно распространённым.
UART в AVR
В МК AVR существует аппаратная реализация интерфейса UART. Для работы с ним используется блок регистров, перечисленных на вкладке USART в окне IOView.
UBRRL и UBRRH – регистры, устанавливающие скорость передачи данных. В данной ЛР используется стандартная скорость в 9600 бит/c. Значение регистров рассчитывается по формуле XTAL/(16*BR)-1, где XTAL – тактовая частота МК, а BR – скорость передачи.
UCSRA – регистр флагов и контроля. Флаги RXC, TXC и UDRE сигнализируют об окончании приёма, передачи и об освобождении регистра данных, вместе с их установкой происходит соответствующее прерывание. Далее идут флаги FE, DOR и PE, сигнализирующие о наличии ошибок. Бит U2X удваивает скорость передачи. В этой ЛР его следует установить в 0. Последний бит – MPCM (Multi-processor Communication Mode), использование которого тоже выходит за рамки текущей ЛР.
UCSRB – регистр управления. Биты RXCIE, TXCIE, UDRIE разрешают прерывания по окончании приёма, передачи и опустошению UDR. RXEN и TXEN разрешают использование ножек Rx и Tx для приёма и передачи данных. UCSZ2 (вместе с UCSZ1:0 в регистре UCSC) устанавливает количество битов посылки. Последние два бита являются девятыми битами при приеме и передаче девятибитных сообщений.
UCSRC – второй регистр управления. Старший бит URSEL – селектор. При записи в UCSRC значение этого бита должно быть равно 1, иначе данные будут записаны в UBRRH (чем вызвано такое техническое решение, остаётся загадкой). UMSEL – бит выбора режима. В данной ЛР используется асинхронный режим, поэтому здесь должно быть 0. Биты UPM1:0 регулируют проверку чётности (в данной ЛР не используется, равно 0). USBS – выбор количества стоповых битов. Для стандартной посылки стоповый бит один, поэтому здесь имеем 0. UCSZ1:0 устанавливают формат посылки вместе с битом UCSZ2 из регистра UCSRB, для стандартной 8мибитной посылки должны быть равны 11b. Последний бит UCPOL не используется в асинхронном режиме.
UDR – регистр данных. В реальности представляется двумя разными регистрами, один для записи, другой для чтения. Записанный в него байт передаётся через UART, а принятый считывается из него.
Пример инициализации UART
Для примера установим стандартную 8-мибитную посылку с одним стоповым битом.
.equ XTAL = 8000000 ; Тактовая частота
.equ baudrate = 9600 ; Скорость передачи
.equ bauddivider = XTAL/(16*baudrate)-1 ; Формула для расчёта
; Устанавливаем скорость передачи
LDI R16, low(bauddivider)
OUT UBRRL,R16
LDI R16, high(bauddivider)
OUT UBRRH,R16
; Сбрасываем все флаги
LDI R16,0
OUT UCSRA, R16
; Разрешаем прерывание при приёме и сам приём
LDI R16, (1<<RXEN)|(0<<TXEN)|(1<<RXCIE)|(0<<TXCIE)|(0<<UDRIE)
OUT UCSRB, R16
; Устанавливаем стандартную 8мибитную посылку
LDI R16, (1<<URSEL)|(1<<UCSZ0)|(1<<UCSZ1)
OUT UCSRC, R16
. . .
; Прерывание чтения байта из USART
USART_READ:
PUSH R16 ; Сохраняем состояние
IN R16, SREG
PUSH R16
IN R16, UDR ; Считываем байт
. . . ; Делаем что-то важное
POP R16 ; Восстанавливаем состояние
OUT SREG, R16
POP R16
RETI
Сервомотор
Используемый в ЛР сервомотор представляет собой электродвигатель, вращение которого через многоступенчатый редуктор передаётся на основную ось, закреплённую на потенциометре. Таким образом сервомотор «знает» своё текущее положение и может его удерживать. Внутри находится электронная схема, преобразующая входной сигнал в угол поворота привода.
Управление сервомотором
При приходе внешнего сигнала, исходя из текущего положения, схема управления генерирует импульс определённой длительности. Затем пришедший и сгенерированный импульсы сравниваются и их разность подаётся на мотор с определенной полярностью. В результате двигатель немного поворачивается в сторону сокращения этой разности. Поскольку импульсы идут достаточно часто (через каждые 15-20 мс), двигатель вращается непрерывно. В документации на сервомотор указаны длительности входных импульсов для крайних положений, остальные высчитываются пропорционально. Для используемого в ЛР мотора эти длительности составляют соответственно 0.5-2.2 мс.
Логика работы блока управления
Изучив приведённый выше материал можно спроектировать логику работы блока. Так как управление происходит с компьютера, данные МК будет получать по интерфейсу UART, после чего в соответствии с этими данными он должен будет установить положение сервомотора, посчитав необходимую длительность импульса и циклически передавая её на управляющий вход сервомотора.
Выполнение работы
-
Ознакомится с методическими указаниями.
-
Написать программу управления сервомотором с компьютера.
-
Удостовериться в работоспособности программы в эмуляторе AVRStudio.
-
Удостовериться в правильности длительности генерируемых импульсов в эмуляторе ISIS Proteus.
-
Запрограммировать МК, соединить макет с компьютером и проверить работу при помощи предоставляемой компьютерной программы.
5