close

Вход

Забыли?

вход по аккаунту

?

Курсач (7)

код для вставкиСкачать
МИНОБРНАУКИ РОССИИ
Федеральное государственное бюджетное образовательное учреждение высшего профессионального образования
"Ижевский государственный технический университет имени М.Т. Калашникова"
Факультет "Информатика и вычислительная техника"
Кафедра "Вычислительная техника"
Пояснительная записка
к курсовому проекту на тему
"Разработка и моделирование микропроцессорной системы для измерения давления среды в нефтедобывающей скважине"
по курсу "Микропроцессоры в информационно-измерительных системах"
ВЫПОЛНИЛ
Студент группы М03-782-1
____________П.А.Маслов
"___"____________2012 г.
ПРОВЕРИЛ
к.т.н, доцент кафедры ВТ
___________К.Ю.Петухов
"___"__________2012 г.
2012
СОДЕРЖАНИЕ
Введение3
1 Техническое задание5
2 Разработка структуры7
3 Разработка схемы 9
4 Разработка функциональной схемы 17
5 Разработка электрической принципиальной схемы 18
6 Разработка управляющей программы 19
Заключение 23
Литература 24
ВВЕДЕНИЕ
Микропроцессорная система (МПС) представляет собой функционально законченное изделие, состоящее из одного или нескольких устройств, главным образом микропроцессора и/или микроконтроллера.
Микропроцессорное устройство (МПУ) представляет собой функционально и конструктивно законченное изделие, состоящее из нескольких микросхем, в состав которых входит микропроцессор; оно предназначено для выполнения определённого набора функций: получение, обработка, передача, преобразование информации и управление.
Микроконтроллер (МК, англ. Micro Controller Unit, MCU) - микросхема, предназначенная для управления электронными устройствами. Типичный микроконтроллер сочетает в себе функции процессора и периферийных устройств, содержит ОЗУ или ПЗУ. По сути, это однокристальный компьютер, способный выполнять простые задачи.
С появлением однокристальных микро-ЭВМ связывают начало эры массового применения компьютерной автоматизации в области управления. По-видимому, это обстоятельство и определило термин "контроллер" (англ. Controller - регулятор, управляющее устройство).
В связи со спадом отечественного производства и возросшим импортом техники, в том числе вычислительной, термин "микроконтроллер" (МК) вытеснил из употребления ранее использовавшийся термин "однокристальная микро-ЭВМ".
Первый патент на однокристальную микро-ЭВМ был выдан в 1971 году инженерам М. Кочрену и Г. Буну, сотрудникам американской Texas Instruments. Именно они предложили на одном кристалле разместить не только процессор, но и память с устройствами ввода-вывода.
В 1976 году американская фирма Intel выпускает микроконтроллер i8048. Чуть позже в этом же году Intel выпускает следующий микроконтроллер: i8051. Удачный набор периферийных устройств, возможность гибкого выбора внешней или внутренней программной памяти и приемлемая цена обеспечили этому микроконтроллеру успех на рынке. С точки зрения технологии микроконтроллер i8051 являлся для своего времени очень сложным изделием - в кристалле было использовано 128 тыс. транзисторов, что в 4 раза превышало количество транзисторов в 16-разрядном микропроцессоре i8086.
На сегодняшний день существует более 200 модификаций микроконтроллеров, совместимых с i8051, выпускаемых двумя десятками компаний, и большое количество микроконтроллеров других типов. Популярностью у разработчиков пользуются 8-битные микроконтроллеры PIC фирмы Microchip Technology и AVR фирмы Atmel, 16-битные MSP430 фирмы TI, а также ARM, архитектуру которых разрабатывает фирма ARM и продаёт лицензии другим фирмам для их производства.
Целью данного курсового проектирования является создание измерительного канала для подключения тензодатчика в контексте измерения параметров давления на скважинах нефти и газа и его дальнейшее моделирование в среде Proteus.
ОАО "Ижевский радиозавод" выпускает для топливно-энегетического комплекса различное оборудование, позволяющее проводить мониторинг параметров в процессе нефте- и газодобычи.
Например, блоки погружные предназначены для контроля технологических параметров погружных электронасосов и среды в нефтедобывающей скважине, а именно: температуры масла ПЭД, давления масла ПЭД, вибрации ПЭД, температуры пластовой жидкости, давления пластовой жидкости. Рабочая температура подземного оборудования до +150°С.
Питание погружного блока и передача данных осуществляется по штатному силовому кабелю "ТМПН - ПЭД" наземным блоком ТМС-Э5, ТМС-Э6, что обеспечивает передачу скважинной информации на поверхность к станции управления.
1 ТЕХНИЧЕСКОЕ ЗАДАНИЕ
1.1 Наименование и область применения.
Наименование: Система микропроцессорная для измерения давления среды в нефтедобывающей скважине.
Область применения: Устройство предназначено для мониторинга давления пластовой жидкости.
1.2 Наименование предприятия разработчика.
Ижевский государственный технический университет имени М.Т.Калашникова, кафедра "Вычислительная техника", гр. М03-782-1, Маслов П.А.
1.3 Наименование предприятия заказчика.
Ижевский государственный технический университет имени М.Т.Калашникова
1.4 Цель создания системы.
- автоматизация работы станции управления.
- снижение использования человеческих ресурсов.
- повышение вероятности безотказной работы станции управления за счет контроля параметров.
1.5 Значения показателей.
1.5.1 Режимы работы.
- мониторинг давления.
1.5.2 Входные данные.
- данные, поступающие с датчиков погружного блока и характеризующие фактическое давление конкретной среды в скважине.
1.5.3 Выходные данные.
- текущие значения давления среды.
1.6 Требования к системе.
1.6.1 Требования по электропитанию.
- Питание системы осуществляется от источников питания станции. Рабочие напряжения: +5В.
1.6.2 Требования к метрологическому обеспечению.
- Диапазон измеряемого давления: от 0 до плюс 250кПа.
- Точность индикации: 1кПа.
- Погрешность измерений: ±0,5%.
1.6.3 Технические требования.
- обеспечение вывода информации на ЖКИ и через интерфейс RS-485.
- использование современных электронных компонентов
1.6 Документация, подлежащая разработке:
- структурная схема ТООО.469535 Э1
- функциональная схема ТООО.469535.001 Э2
- электрическая принципиальная схема ТООО.469535.001 Э3
- перечень элементов ТООО.469535.001 ПЭ3
- пояснительная записка ТООО.469535.001 ПЗ
2 РАЗРАБОТКА СТРУКТУРЫ
2.1 Основные функции
- обработка данных, поступающих с датчика микроконтроллером для последующего вывода на дисплей и передачи данных через интерфейс RS-485.
2.2 Основные модули.
2.2.1 Датчик
Датчики - являются неотъемлемой частью системы, они используются для того, чтобы система могла в реальном времени реагировать на изменения внешних параметров по заранее разработанному алгоритму. В настоящее время на рынке представлено большое разнообразие различных типов датчиков, некоторые из них являются узкоспециализированными. Нашей системе требуются один тензометрический датчик, который будет отслеживать текущие значения давления в нефтяной скважине.
2.2.2 Устройство управления (микроконтроллер)
Устройство управления является главной частью системы, оно необходимо для сбора и обработки информации поступающей с системы датчиков, выработки управляющих сигналов для исполнительных устройств, а также вывода информации на устройство индикации.
2.2.3 Блок индикации
Для наглядного представления полученных данных, их необходимо вывести на дисплей.
2.2.4 Интерфейс
Для связи с внешними устройствами необходимо выбрать один из распространенных интерфейсов физической среды передачи данных. В техническом задании на данное устройство предусмотрен вывод через интерфейс RS-485.
2.3 Выбор структуры
Рассмотренные выше модули данного устройства позволяют создать окончательную структуру (Рисунок 1).
Рисунок 1 - Структурная схема устройства.
На схеме приняты следующие обозначения:
Д1 - датчик;
АЦП - аналого-цифровой преобразователь;
УУ - устройство управления;
Инт - интерфейс физической среды передачи данных;
БИ - блок индикации.
Структурная схема представлена на листе 1 графической части.
2.4 Алгоритм работы
При подаче питающего напряжения, на выходах тензодатчика формируется выходное напряжение, которое затем подается на входы аналого-цифрового преобразователя (АЦП). Соответствующий код с АЦП в свою очередь подается на микроконтроллер (МК). Согласно функции преобразования, которая для данного тензодатчика линейна, с выхода МК выводятся на дисплей соответствующие показатели давления в данный момент времени. Так же соответствующие сигналы подаются на драйвер RS-485 для передачи приемному устройству. 3 РАЗРАБОТКА СХЕМЫ
3.1 Выбор микроконтроллера
Подбор контроллера базируется в первую очередь на достаточной функциональности для выполнения требуемой программы, то есть необходимыми являются такие параметры как обширный набор команд, минимальный размер, минимально необходимый набор регистров, напряжение питания 5В, достаточный объем памяти для хранения программ работы системы, высокая производительность и т.д.
Учитывая вышесказанное, выберем микроконтроллер Atmega32 фирмы Atmel, так как он обладает необходимой функциональностью, быстродействием, экономичностью, предельная рассеиваемая мощность не превышает 800 мВт и к тому же стоит сравнительно дешево (175р за модель в корпусе SO).
3.2 Описание микроконтроллера
Atmel Corporation - изготовитель полупроводниковых электронных компонентов. Компания основана в 1984 году. Акции продаются на бирже, NASDAQ. Один из лидеров производства микроконтроллеров (MCS-51, ARM, AVR, AVR32). Также разрабатывает и производит небольшие модули энергонезависимой памяти для электронных изделий, ПЛИС, цифровые микросхемы-радиоприёмники и передатчики, сканеры отпечатков пальцев. Компания для своих клиентов может предложить систему на кристалле, объединяющую затребованные компоненты.
Продукция Atmel широко применяется в компьютерных сетях, промышленности, медицине, связи, автомобилях, космосе, военных устройствах, а также кредитных картах.
Микроконтроллер ATmega8 выполнен по технологии CMOS, 8-разрядный, микропотребляющий, основан на AVR-архитектуре RISC. Выполняя одну полноценную инструкцию за один такт, ATmega8 достигает производительности 1 MIPS на МГц, позволяя достигнуть оптимального соотношения производительности к потребляемой энергии.
Технические параметры:
* Память для программ составляет 8 Кб с возможностью перезаписать 10 000 раз
* 512 байт флеш-памяти для хранения переменных (100 000 циклов перезаписи)
* 1 Кб ОЗУ и 32 регистра общего назначения
* Два 8-разрядных Таймера/Счетчика с раздельным прескалером, режим сравнения
* 16-разрядный Таймер/Счетчик с раздельным прескалером, режим сравнения, режим захвата
* Таймер реального времени с независимым генератором
* 3 канала ШИМ
* 6 каналов 10-разрядного АЦП
* Двухпроводный последовательный интерфейс
* Программируемый последовательный USART
* Интерфейс SPI с режимами Master/Slave
* Программируемый сторожевой таймер с отдельным независимым генератором
* Встроенный аналоговый компаратор
* Сброс при включении питания, программируемая защита от провалов питания
* Встроенный калиброванный RC-генератор
* Обработка внутренних и внешних прерываний
* 5 режимов с пониженным энергопотреблением: Idle, ADC Noise Reduction, Power-save, Power-down, и Standby
* Напряжение питания 4.5 - 5.5В
* Тактовая частота 0-16 МГц
23 порта ввода/вывода, объединенных в 3 группы:
* Порт В (PB0 - РВ7): Два вывода (РВ6 и PB7) используются для подключения кварцевого резонатора. Выводы РВ2 - РВ5 зарезервированы для внутрисхемного программирования. Таким образом, для общего применения остаются порты PB0 и PB1.
* Порт С (PC0 - РС6 : 7 выводов): Порты PC0 - РС5 можно использовать в качестве аналоговых входов. РС6 обычно используется для сброса.
* Порт D (PD0 - PD7 : 8 выводов): Эти порты можно использовать для общего применения.
3.3 Выбор датчика
В качестве датчика выберем тензометрический датчик серии MD от компании ПромА. Этот датчик имеет диапазон рабочих температур от -50°С до +125°С, диапазон выходного сигнала от 100 до 200мВ. Учитывая тот факт, что в библиотеке среды моделирования Proteus подобных датчиков нет, будем использовать имитационную схему данного тензодатчика.
3.4 Подключение ЖКИ
В качестве дисплея будем использовать 2х16 строчный OLED дисплей WEH001602ALPP5N00001. Все ЖКИ можно разделить на индикаторы со встроенным контроллером и простые индикаторы без микроконтроллера. Индикаторы с микроконтроллером более предпочтительны для самостоятельного применения. Встроенный микроконтроллер уже содержит в себе сложные программы, выполняющие большинство операций по выводу изображения на индикатор и учитывающий все специфические особенности именно этой индикаторной панели. А интерфейс связи встроенного контроллера обычно совсем не сложный и позволяет легко подключить его к любому универсальному контроллеру. Дисплей WEH001602ALPP5N00001 имеет такой встроенный контроллер, совместимый с HD44780. Контроллер HD44780 (а также совместимый с ним KS0066) - стандарт де-факто на контроллеры черно-белых жидкокристаллических знакосинтезирующих дисплеев с параллельным 4- или 8-битным интерфейсом. Эти контроллеры были фактически монополистами на рынке в 90-е годы. В настоящее время все активнее вытесняются контроллерами с SPI или I2C интерфейсами, а также контроллерами цветных дисплеев. Назначение выводов представлено в таблице 1.
Таблица 8 - Назначение выводов дисплея.
Схема подключения представлена, согласно даташиту, на рисунке 2.
Рисунок 2 - Схема подключения дисплея к МК.
Общая схема подключения, применимая ко всем подобным дисплеям, представлена на рисунке 3.
Рисунок 3 - Схема подключения дисплеев к МК.
Резистор R1 в данном случае необходим для управления контрастностью дисплея. Для дисплея WEH001602ALPP5N00001 его номинал выбирается равным 20кОм.
3.5 Интерфейс RS-485
RS-485 (англ. Recommended Standard 485), EIA-485 (англ. Electronic Industries Alliance-485) - стандарт физического уровня для асинхронного интерфейса. Регламентирует электрические параметры полудуплексной многоточечной дифференциальной линии связи типа "общая шина".
Стандарт приобрел большую популярность и стал основой для создания целого семейства промышленных сетей широко используемых в промышленной автоматизации.
Стандарт RS-485 совместно разработан двумя ассоциациями: Ассоциацией электронной промышленности (EIA - Electronics Industries Association) и Ассоциацией промышленности средств связи (TIA - Telecommunications Industry Association). Ранее EIA маркировала все свои стандарты префиксом "RS" (англ. Recommended Standard - Рекомендованный стандарт). Многие инженеры продолжают использовать это обозначение, однако EIA/TIA официально заменил "RS" на "EIA/TIA" с целью облегчить идентификацию происхождения своих стандартов.
Сеть, построенная на интерфейсе RS-485, представляет собой приемопередатчики, соединенные при помощи витой пары - двух скрученных проводов. В основе интерфейса RS-485 лежит принцип дифференциальной (балансной) передачи данных. Суть его заключается в передаче одного сигнала по двум проводам. Причем по одному проводу (условно A) идет оригинальный сигнал, а по другому (условно B) - его инверсная копия. Другими словами, если на одном проводе "1", то на другом "0" и наоборот. Таким образом, между двумя проводами витой пары всегда есть разность потенциалов: при "1" она положительна, при "0" - отрицательна.
Именно этой разностью потенциалов и передается сигнал. Такой способ передачи обеспечивает высокую устойчивость к синфазной помехе. Синфазной называют помеху, действующую на оба провода линии одинаково. К примеру, электромагнитная волна, проходя через участок линии связи, наводит в обоих проводах потенциал. Если сигнал передается потенциалом в одном проводе относительно общего, как в RS-232, то наводка на этот провод может исказить сигнал относительно хорошо поглощающего наводки общего ("земли"). Кроме того, на сопротивлении длинного общего провода будет падать разность потенциалов земель - дополнительный источник искажений. А при дифференциальной передаче искажения не происходит. В самом деле, если два провода пролегают близко друг к другу, да еще перевиты, то наводка на оба провода одинакова. Потенциал в обоих одинаково нагруженных проводах изменяется одинаково, при этом информативная разность потенциалов остается без изменений.
Аппаратная реализация интерфейса - микросхемы приемопередатчиков с дифференциальными входами/выходами (к линии) и цифровыми портами (к портам UART контроллера). Существуют два варианта такого интерфейса: RS-422 и RS-485.
RS-422 - полнодуплексный интерфейс. Прием и передача идут по двум отдельным парам проводов. На каждой паре проводов может быть только по одному передатчику.
RS-485 - полудуплексный интерфейс. Прием и передача идут по одной паре проводов с разделением по времени. В сети может быть много передатчиков, так как они могут отключаются в режиме приема.
Рисунок 4 - Аппаратная реализация интерфейсов RS-422 и RS-485.
Здесь приняты следующие обозначения:
D (driver) - передатчик;
R (receiver) - приемник;
DI (driver input) - цифровой вход передатчика;
RO (receiver output) - цифровой выход приемника;
DE (driver enable) - разрешение работы передатчика;
RE (receiver enable) - разрешение работы приемника;
A - прямой дифференциальный вход/выход;
B - инверсный дифференциальный вход/выход;
Y - прямой дифференциальный выход (RS-422);
Z - инверсный дифференциальный выход (RS-422).
Остановимся поподробнее на приемопередатчике RS-485. Цифровой выход приемника (RO) подключается к порту приемника UART (RX). Цифровой вход передатчика (DI) к порту передатчика UART (TX). Поскольку на дифференциальной стороне приемник и передатчик соединены, то во время приема нужно отключать передатчик, а во время передачи - приемник. Для этого служат управляющие входы - разрешение приемника (RE) и разрешения передатчика (DE). Так как вход RE инверсный, то его можно соединить с DE и переключать приемник и передатчик одним сигналом с любого порта контроллера. При уровне "0" - работа на прием, при "1" - на передачу.
Рисунок 5 - Подключение интерфейса RS-485 к МК.
Приемник, получая на дифференциальных входах (AB) разность потенциалов (UAB) переводит их в цифровой сигнал на выходе RO. Чувствительность приемника может быть разной, но гарантированный пороговый диапазон распознавания сигнала производители микросхем приемопередатчиков пишут в документации. Обычно эти пороги составляют ± 200 мВ. То есть, когда UAB > +200 мВ - приемник определяет "1", когда UAB < -200 мВ - приемник определяет "0". Если разность потенциалов в линии настолько мала, что не выходит за пороговые значения - правильное распознавание сигнала не гарантируется. Кроме того, в линии могут быть и не синфазные помехи, которые исказят столь слабый сигнал.
Все устройства подключаются к одной витой паре одинаково: прямые выходы (A) к одному проводу, инверсные (B) - к другому.
Входное сопротивление приемника со стороны линии (RAB) обычно составляет 12 КОм. Так как мощность передатчика не беспредельна, это создает ограничение на количество приемников, подключенных к линии. Согласно спецификации RS-485 c учетом согласующих резисторов передатчик может вести до 32 приемников. Однако есть ряд микросхем с повышенным входным сопротивлением, что позволяет подключить к линии значительно больше 32 устройств.
Максимальная скорость связи по спецификации RS-485 может достигать 10 Мбод/сек. Максимальное расстояние - 1200 м. Если необходимо организовать связь на расстоянии большем 1200 м или подключить больше устройств, чем допускает нагрузочная способность передатчика - применяют специальные повторители (репитеры).
Протокол UART (Universal asynchronous receiver/transmitter) является одним из самых распространённых протоколов передачи данных между устройствами. Стандартный размер посылки при асинхронной передаче данных составляет 10 бит. Если по линии ничего не передаётся, то она находится в состоянии логической единицы. Передача начинается со стартового бита, который равен 0. Затем следуют 8 бит данных. Завершается передача стоп-битом, который равен 1.
Рисунок 6 - Передача байта 10000010.
Для настройки и работы c UART в mega8 выделено 4 регистра:
1) Регистр управления UCSRB: разрешает/запрещает прерывания от UART, управляет функциями приёмопередатчика
2) Регистр состояния UCSRA
3) Регистр данных UDR - представляет собой 2 регистра, расположенных по одному адресу (1 регистр для передачи, 2 - для приёма данных)
4) Регистр UBRR отвечает за скорость передачи данных. Задаются значения младшего (UBBRL) и старшего (UBBRH) байтов регистра
5) Биты регистра UCSRC задают формат кадра
Регистр UCSRB:
Рисунок 7 - Регистр UCSRB.
RXCIE=1 и прерывания разрешены (бит I=1 в регистре SREG) : прерывание по завершению приёма по UART разрешено
TXCIE=1 и прерывания разрешены (бит I=1 в регистре SREG) : прерывание по завершению передачи по UART разрешено
UDRIE=1 и прерывания разрешены (бит I=1 в регистре SREG) : прерывание по опустошению регистра данных UART разрешено
RXEN=1 : активация приёмника, вывод D0 становится входом UART.
TXEN=1 : активация передатчика, вывод D1 становится выходом UART.
CHR9=1 : длина передаваемой посылки с становится равной 11 бит (9 бит данных + старотовый бит + стоп-бит).
Регистр UCSRA:
Рисунок 8 - Регистр UCSRA.
Регистр UCSRA информирует о состоянии UART.
RXC=1: принятое слово данных перемещено из сдвигового регистра в регистр UDR. После чтения регистра UDR бит RXC сбрасывается в 0
TXC=1: символ в сдвиговом регистре передан полностью (включая стоп-бит), и из регистра UDR не ожидается новый байт данных.
UDRE=1: содержимое регистра UDR передано в сдвиговый регистр, т.е приёмопередатчик готов к передаче нового байта. Только после этого в UDR можно записывать новое значение. В противном случае можно потерять байт, который находился в UDR в ожидании отправки в сдвиговый регистр. Бит UDRE сбрасывается при записи данных в регистр UDR. При включении питания бит UDRE устанавливается в лог. 1.
FE=1: ошибка кадрирования. Ошибка кадрирования происходит, если стоп-бит не равен лог.1
OR=1: один из символов, переданный в UDR из сдвигового регистра не был прочитан перед поступлением следующего символа.
Настройка скорости передачи данных по UART
Скорость передачи данных по UART рассчитывается по формуле
f=Ф/(16(UBRR+1))
Ф - тактовая частота микроконтроллера
UBRR - значение регистра UBRR (состоит из значений младшего и старшего байтов UBBRH+UBBRL)
Расчет скорости:
Рисунок 9 - Расчет значения UBRR для заданной частоты и скорости передачи данных.
Значения скоростей передачи на передающим и принимающем устройствах должны совпадать! Также совпадать должны форматы передающихся кадров.
Формат кадра задаётся в регистре UCSRC.
Таблица 1 - Формат кадра
3.6 Интерфейс SPI
Интерфейс SPI (Serial Peripheral Bus) - интерфейс для обмена данными между микросхемами. Придуман компанией Motorola, но в настоящее время используется в продукции многих производителей. Шина SPI организована как "ведущий-подчиненный". В качестве ведущего чаще всего выступает микроконтроллер. Внешние устройства подключенные к ведущему являются подчиненными (ведомыми). Если соединить два микроконтроллера по шине SPI, то они могут по очереди становится ведущим или ведомым. Главное, что в конкретный момент времени на шине SPI только одно устройство может быть ведущим. Рассмотрим на примере ATmega8 какие ножки в МК связаны с шиной SPI и что они означают.
Рисунок 10 - Выводы МК для интерфейса SPI.
Подключение устройств к ведущему показано на рисунке 7.
Рисунок 11 - Подключение устройств по интерфейсу SPI.
При загрузке значения в регистр данных SPI ведущего он сразу же начинает генерить тактовый сигнал на SCK и побитно выдвигать данные на вывод MOSI, который соединен с входами MOSI ведомых устройств. Ведомое устройство получит данные, только если на выводе SS присутствует низкий уровень. Т.е. мы можем подключить к шине SPI микроконтроллера несколько SPI устройств и используя дополнительные ножки МК выбирать конкретное устройство с которым мы хотим в данный момент работать. Вывод SS ведущего можно сконфигурировать как выход и использовать его как выходной контакт. Если же он сконфигурирован как вход, его необходимо подключить к шине питания. Если на выводе SS ведущего устройства появится низкий уровень, то он переключится в режим ведомого.
Вообще, удобен этот интерфейс тем, что с ним очень просто работать. Давайте рассмотрим регистры МК, связанные с шиной SPI.
SPDR - регистр данных, содержит посылаемый или принимаемый байт.
Рисунок 12 - Регистр данных SPDR.
SPCR:
Рисунок 13 - Управляющий регистр SPCR.
Бит 7 - SPIE: разрешение прерываний. Прерывание генерится, если этот бит установлен и установлен бит глобального разрешения прерываний регистра SREG (6-й бит).
Бит 6 - SPE: включение SPI. Перед любыми действиями с SPI этот бит должен быть установлен в "1".
Бит 5 - DORD: порядок передачи данных. Если этот бит установлен в "1" то младший бит данных передается первым. Если этот бит сброшен в "0" - старший бит данных передается первым.
Бит 4 - MSTR: выбор режима работы. Если установлен в "1", то выбран режим ведущего, если в "0" - режим ведомого. Если SS сконфигурирован как вход и на него подан низкий уровень, в то время как бит MSTR установлен в "1", тогда этот бит сбросится в "0" и бит SPIF регистра SPSR (см. ниже) установится в "1".
Бит 3 - CPOL: полярность тактового сигнала. "0" - во время ожидания на SCK присутствует низкий уровень. "1" - во время ожидания на SCK присутствует высокий уровень.
Бит 2 - CPHA: фаза тактового сигнала. Если этот бит установлен в "1", то данные считываются по спадающему фронту SCK, если в "0" - по нарастающему фронту SCK.
Рисунок 14 - Фаза тактового сигнала.
Таким образом установкой этих бит мы можем выбирать один из четырех режимов работы шины SPI. Рисунок 15 - Режимы работы SPI.
Биты 1:0 - SPR1:SPR0: скорость передачи (частота тактирования). Только для устройств в режиме ведущего. Если МК настроен на работу в качестве ведомого, установка этих бит не будет иметь никакого эффекта. В таблице ниже можно посмотреть какие значения нужно записать в эти биты, чтобы установить нужную скорость передачи (Бит SPI2X в регистре SPSR).
Рисунок 16 - Установка скорости передачи.
SPSR:
Рисунок 17 - Управляющий регистр SPSR.
Бит 7 - SPIF: флаг прерывания. Устанавливается по завершении передачи. Прерывание генерится если установлен бит SPIE регистра SPCR и бит I регистра SREG.
Бит 6 - WCOL: флаг коллизий записи. Устанавливается в "1" при попытке записи в регистр SPDR до окончания передачи.
Бит 0 - SPI2X: бит двойной скорости SPI. Если SPI сконфигурирован как ведущий, тогда мы можем работать с двойной частотой. Но если SPI сконфигурирован как ведомый, то мы не можем рассчитывать на двойную скорость работы SPI.
Посмотрим на обмен между АЦП и МК в нашем случае через интерфейс SPI.
#define DDR_SPI DDRB
#define DD_SS 2
#define DD_MOSI 3
#define DD_MISO 4
#define DD_SCK 5
#define SPE 6
#define MSTR 4
#define SPR0 0
#define SPIF 7
void SPI_MasterInit()
{
DDR_SPI |= (1<<DD_MOSI)|(1<<DD_SCK)|(1<<DD_SS);//настраиваем на выход
SPCR |= (1<<SPE)|(1<<MSTR)|(1<<SPR0);//вкл SPI, ведущий, частота fck/16
}
//функция передачи байта
void SPI_MasterTransmit(char cData)
{
SPDR = cData;//начинаем передачу
while(!(SPSR & (1<<SPIF)));//ждем пока передача завершится
}
unsigned int ReceiveADC()
{
unsigned char adcMSB=0;
unsigned char adcLSB=0;
unsigned int adc=0;
PORTB &= ~(1<<DD_SS);
SPI_MasterTransmit(0x00);
adcMSB=SPDR;
SPI_MasterTransmit(0x00);
adcLSB=SPDR;
PORTB |= (1<<DD_SS);
//собираем битовыми операциями наши данные
adcMSB &= 0b00011111;
adc = adcMSB;
adc<<=5;
adcLSB>>=3;
adc |= adcLSB;
return adc;
}
4 РАЗРАБОТКА ФУНКЦИОНАЛЬНОЙ СХЕМЫ
При разработке электрической функциональной схемы учитывалась структура микроконтроллера Atmega8, структура интерфейса RS-485, а также структура АЦП MCP3001. Схему электрическую функциональную можно увидеть на листе 2 графической части.
5 РАЗРАБОТКА ЭЛЕКТРИЧЕСКОЙ ПРИНЦИПИАЛЬНОЙ СХЕМЫ
Схема электрическая принципиальная представляет собой окончательный вариант реализации устройства, с выбранными компонентами и линиями связи между ними. Схема электрическая принципиальная представлена на листе 3 графической части.
6 РАЗРАБОТКА УПРАВЛЯЮЩЕЙ ПРОГРАММЫ
/*****************************************************
Chip type : ATmega8
Program type : Application
AVR Core Clock frequency: 8,000000 MHz
Memory model : Small
External RAM size : 0
Data Stack size : 256
*****************************************************/
#include <mega8.h>
#include <delay.h>
#include "mcp3001.h"
// Alphanumeric LCD functions
#include <alcd.h>
// Standard Input/Output functions
#include <stdio.h>
// SPI functions
#include <spi.h>
#define F_CPU 8000000
// Declare your global variables here
void main(void)
{
unsigned int adc=0;
float t,p;
char buffer[5]="";
// Declare your local variables here
// Input/Output Ports initialization
// Port B initialization
// Func7=In Func6=In Func5=Out Func4=In Func3=Out Func2=Out Func1=In Func0=In // State7=T State6=T State5=0 State4=T State3=0 State2=0 State1=T State0=T PORTB=0x00;
DDRB=0x2C;
// Port C initialization
// Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In // State6=T State5=T State4=T State3=T State2=T State1=T State0=T PORTC=0x00;
DDRC=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 PORTD=0x00;
DDRD=0x00;
// Timer/Counter 0 initialization
// Clock source: System Clock
// Clock value: Timer 0 Stopped
TCCR0=0x00;
TCNT0=0x00;
// Timer/Counter 1 initialization
// Clock source: System Clock
// Clock value: Timer1 Stopped
// Mode: Normal top=0xFFFF
// OC1A output: Discon.
// OC1B output: Discon.
// Noise Canceler: Off
// Input Capture on Falling Edge
// Timer1 Overflow Interrupt: Off
// Input Capture Interrupt: Off
// Compare A Match Interrupt: Off
// Compare B Match Interrupt: Off
TCCR1A=0x00;
TCCR1B=0x00;
TCNT1H=0x00;
TCNT1L=0x00;
ICR1H=0x00;
ICR1L=0x00;
OCR1AH=0x00;
OCR1AL=0x00;
OCR1BH=0x00;
OCR1BL=0x00;
// Timer/Counter 2 initialization
// Clock source: System Clock
// Clock value: Timer2 Stopped
// Mode: Normal top=0xFF
// OC2 output: Disconnected
ASSR=0x00;
TCCR2=0x00;
TCNT2=0x00;
OCR2=0x00;
// External Interrupt(s) initialization
// INT0: Off
// INT1: Off
MCUCR=0x00;
// Timer(s)/Counter(s) Interrupt(s) initialization
TIMSK=0x00;
// USART initialization
// Communication Parameters: 8 Data, 1 Stop, No Parity
// USART Receiver: Off
// USART Transmitter: On
// USART Mode: Asynchronous
// USART Baud Rate: 9600
UCSRA=0x00;
UCSRB=0x08;
UCSRC=0x86;
UBRRH=0x00;
UBRRL=0x33;
// Analog Comparator initialization
// Analog Comparator: Off
// Analog Comparator Input Capture by Timer/Counter 1: Off
ACSR=0x80;
SFIOR=0x00;
// ADC initialization
// ADC disabled
ADCSRA=0x00;
// SPI initialization
// SPI Type: Slave
// SPI Clock Rate: 2000,000 kHz
// SPI Clock Phase: Cycle Start
// SPI Clock Polarity: Low
// SPI Data Order: MSB First
SPCR=0x50; //01010000
SPSR=0x00; //00000000
// TWI initialization
// TWI disabled
TWCR=0x00;
// Alphanumeric LCD initialization
// Connections are specified in the
// Project|Configure|C Compiler|Libraries|Alphanumeric LCD menu:
// RS - PORTD Bit 0
// RD - PORTD Bit 2
// EN - PORTD Bit 3
// D4 - PORTD Bit 4
// D5 - PORTD Bit 5
// D6 - PORTD Bit 6
// D7 - PORTD Bit 7
// Characters/line: 16
lcd_init(16);
printf ("Power OK \r\n");
while (1)
{
// Place your code here
adc=ReceiveADC();
//delay_ms (500);
t=(float)adc*2.08/1023;
p=(float)t*120.2;
// printf("ADC= %.2f \r\n",t);
printf("Pressure= %.2f kPa\r\n",p);
lcd_clear();
sprintf(buffer,"Press=%.2f kPa",p);
lcd_puts(buffer);
delay_ms(100);
}
}
ЗАКЛЮЧЕНИЕ
В результате выполнения курсового проектирования была разработана и промоделирована микропроцессорная система для измерения давления пластовой жидкости в нефтяной скважине, а также разработан комплект конструкторской документации. В этом устройстве соблюдены все требования, указанные в техническом задании. Был применен системный подход при проектировании. А именно, последовательно были проведены следующие этапы: анализ технического задания, разработка структуры устройства, разработка схемы, разработка функциональной схемы, электрической принципиальной схемы, разработка управляющей программы микроконтроллера, моделирование схемы в среде Proteus. Графическая часть представлена структурной схемой, функциональной схемой, схемой электрической принципиальной, а так же перечнем элементов.
ЛИТЕРАТУРА
1. Петухов К.Ю. Микропроцессоры в ИИС. Курс лекций / Ижевск: ИжГТУ, 2012
2
Документ
Категория
Рефераты
Просмотров
329
Размер файла
310 Кб
Теги
курсач
1/--страниц
Пожаловаться на содержимое документа