Проектирование микропроцессорной системы сбора данных на базе микроконтроллера Atmega8515

 

Содержание


Введение

Задание на курсовой проект

. Разработка структурной схемы и обобщенного алгоритма работы прибора

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

2.1 Схема питания

.2 Нормирующие усилители на базе AD8532

2.3 Схема подключения МК ATmega8515

.4 Схема включения АЦП

.5 Схема включения буфера RS232 MAX1282BEUE

.6 Схема включения гальванической развязки

Оценка максимальной погрешности для ДДЛ

.1 Оценка максимальной погрешности нормирующего усилителя

3.2 Оценка максимальной погрешности АЦП

.3 Максимальная оценка погрешности ИОН

.4 Максимальная оценка погрешности вычисления ДДЛ

Оценка максимальной погрешности для ДДН

Расчет потребляемой мощности и надежности

.1 Расчёт потребляемой мощности

.2 Расчет надёжности

Разработка алгоритма вычислений

.2 Оценка общей максимальной погрешности

Разработка программного кода, на языке ассемблера

Заключение

Приложения


Введение


Цель курсового проекта - проектирование микропроцессорной системы сбора данных (МССД), на базе микроконтроллера (МК) Atmega8515 [1] от фирмы ATMEL с ядром AVR. Данные поступают с датчиков трех видов:

-линейный датчик давления (ДДЛ);

-нелинейный датчик давления (ДДН);

-датчик контроля давления (ДКД).

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

Дальше все данные оцифровываются и передаются в компьютер (ПК) через буфер RS232.

Основным элементом МССД является МК Atmega8515. Это 8-битный микроконтроллер. Он имеет:

-RISC архитектуру;

-встроенный таймер-счетчик;

-интерфейс USART;

-сторожевой таймер;

-общее количество выводов - 44.


Задание на проектирование


Основные технические характеристики устройства:

-количество линейных датчиков - 1;

-количество нелинейных датчиков - 1;

-количество датчиков контроля давления - 2;

-наименование ДДЛ - ДД73;

-наименование ДДН - ДД33;

-наименование ДКД - ДКД2(2).

Статистическая характеристика линейного датчика ДД73:


. (1)


Коэффициенты статистической характеристики а1 = 0,492, а0 = - 9,76.

Диапазон измерения давления от 0 до 40 кПа. Максимальная погрешность датчика 0,05 %. Требуемая погрешность измерений 0,25 %.

ДКД2 имеет характеристики:

-активный логический уровень - 1;

-выходное напряжение логического нуля - от минус 5 до минус 4,5 В;

-выходное напряжение логической единицы - от 4,5 до 5 В;

-максимальный выходной ток для логического нуля - 25 мА;

-максимальный выходной ток для логической единицы - 10 мА.

Устройство работает на базе АЦП - MAX1282BEUE, супервизора - MCP100_xTT, буфера RS232 - ADM206EAR, микроконтроллера - Atmega8515-16AI, операционного усилителя - AD8532ARU.

1. Структурная схема и обобщенные алгоритмы работы


На рисунке 1.1 представлена структурная схема системы сбора данных на базе микроконтроллера фирмы Atmel, с ядром AVR.


Рисунок 1.1 - Структурная схема системы сбора данных


С датчиков давления ДДЛ и ДДН поступают аналоговые сигналы в совершенно разном диапазоне. Аналогово-цифровой преобразователь (АЦП) MAX1282BEUE [2] имеет входной диапазон от 0 до 2,5 В. Чтобы выходной сигнал с датчиков давления совпадал с входным диапазоном АЦП, нужно поставить схему нормирования.

АЦП преобразует аналоговый сигнал в цифровой код и передает его в микроконтроллер (МК). МК вычисляет значение давления поданного на вход ДДН или ДДЛ. После этого, МК опрашивает датчики контроля давления (ДКД), на выходе которых могут быть либо логические ноли, либо логические единицы. Чтобы МК смог обработать данные, нужно преобразовать сигнал с ДКД в такой формат, который поймет МК. Это осуществляется через гальваническую развязку (ГР).

Все данные, которые поступили в МК с датчиков ДДЛ, ДДН и ДКД, сохраняются в оперативной памяти МК. Когда собран весь пакет данных, он пересылается в персональный компьютер через буфер RS232, если поступил запрос с ПК. микропроцессорный датчик усилитель данные

На рисунке 1.1 приняты следующие сокращения:

-РВП - разъем внутрисхемного программирования;

-СВ - супервизор;

-ГТИ - гениратор тактовых импульсов;

-ИОН - источник опорного напряжения.



2. Описание работы элементов принципиальной схемы


В целом вся принципиальная электрическая схема микропроцессора сбора данных представлена на листе в графической части 1.


2.1 Схема блока питания


На рисунке 2.1 представлена схема блока питания.


Рисунок 2.1 - Схема блока питания


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

Диодный мост выпрямляет переменное напряжение. Конденсатор C2, емкостью 10 мкФ, используется для фильтрации сигнала поступающего от источника питания. Линейный стабилизатор понижает напряжение с 10 В на входе до 5 В на выходе. Так же на выходе стабилизатора устанавливаются керамический конденсатор С8, емкостью 0,1 мкФ и электролитический конденсатор С10, емкостью 0,1 мкФ для уменьшения помех на выходе блока питания.


2.2 Схема нормирования


На рисунке 2.2 представлена схема нормирования.

Схема нормирования нужна для того, что бы сопоставить аналоговые сигналы с датчиков давления с входным уровнем АЦП. Резисторы R1 и R3, для ДДЛ, номиналом 10 кОм и резистор R4, номиналом 1,6 кОм, являются делителем напряжения. R3 и R4 нужны для того, чтобы выходное напряжение (от минус 9,76 до 9,92 В) преобразовать в напряжение от 0 до 2,5 В.


Рисунок 2.2 - Схема нормирования


Резистор R2 = R5 = 1 кОм. Резистор R5 служит делителем напряжения. Так же как и в случае с ДДЛ, резистор R5 является делителем напряжения, преобразуя входной аналоговый сигнал (от 0 до 5 В) в напряжение от 0 до 2,5 В.

После преобразования, все сигналы отправляются в усилитель AD8532ARU [1]. Для работоспособности операционного усилителя обязательно потребуется керамическая конденсатор С1, емкостью 0,1 мкФ, установленный между выводами питания.

В среде разработки OrCAD 9.2 была составлена принципиальная схема нормирования и проведен анализ сигналов. Входные сигналы и сигналы, прошедшие через схему нормирования, для ДДЛ представлены на рисунке 2.4, а принципиальная схема нормирования аналоговых сигналов изображена на рисунке 2.3. Принципиальная схема нелинейного датчика давления и схемы нормирования показана на рисунке 2.5.


Рисунок 2.3 - Принципиальная схема нормирования ДДЛ в пакете проектирования OrCAD


Рисунок 2.4 - Сигналы до и после схемы нормирования, для ДДЛ


Рисунок 2.5 - Принципиальная схема нормирования ДДН в пакете проектирования OrCAD


Входные сигналы и сигналы, прошедшие через схему нормирования, для ДДН представлены на рисунке 2.6.


Рисунок 2.6 - Сигналы до и после схемы нормирования, для ДДН


2.3 Гальваническая развязка


На рисунке 2.7 представлена схема гальванической развязки.

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


Рисунок 2.7 - Схема гальванической развязки


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

Данные, поступающие с ДКД обязательно должны пройти через гальваническую развязку (ГР), чтобы получить нужный формат данных, который воспримет МК.

В ГР присутствует оптопара, которая состоит из светодиода и фотоприемника (фототранзистора). Нужна она для того, что бы получить аналоговый сигнал, в диапазоне от 0 до 2,5 В, на выходе. Так как форма изначального аналогового сигнала может быть непредсказуемой.

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

Полученный сигнал проходит через триггер Шмитта, тем самым мы получаем либо логическую единицу, либо логический ноль.

Триггер Шмитта - это компонент электронного устройства, функция которого является формирование постоянно изменяющегося сигнала на входе в серию прямоугольных импульсов на выходе.


2.4 Схема включения АЦП


На рисунке 2.4 представлена схема включения АЦП.


Рисунок 2.4 - Схема включения АЦП


Для работоспособности АЦП по рекомендации производителя необходимо подключить 4 конденсатора (С3, С4, С5 и С6), два из которых являются электролитическими (C3 и С6). Емкость конденсаторов С3 и С5 равна 10 мкФ, а емкость конденсаторов С4 и С6 равна 0,1 мкФ. Так же обязательно ко входу REF подключить ИОН, который также нуждается в электролитическом конденсаторе С9 и керамических конденсаторах C11 и C15, емкостью 10, 0,1 и 0,1 мкФ соответственно. ИОН задает рабочий диапазон для сигнала для АЦП.

АЦП преобразует входной аналоговый сигнал с ДДЛ и ДДН в цифровой код, который передается в МК для дальнейшей обработки.

ИОН нужен АЦП для того, чтобы входное напряжение сравнивалось с опорным напряжением, и на основании этой разницы формировался соответствующий цифровой сигнал на выходе, а напряжение равное опорному напряжению, кодировалось как цифровой 0 (начало отсчёта). Данные АЦП в последовательном коде выставляются на вывод SDATA, которые далее поступают в МК для преобразования и передачи в ПК. Вход CS отвечает за запуск - начало работы АЦП. Вход SCLK служит для синхронизации АЦП с МК.

Минимальные и максимальные значения интервалов времени, изображенных на рисунке 2.5, представлены в технической документации производителя АЦП MAX1282BEUE.


Рисунок 2.5 - Временные диаграммы, однофазового режима работы АЦП MAX1282BEUE


По диаграммам (рисунок 2.5) видно, что в начальный момент времени сигнал CS инициирует процесс преобразования и передачи данных. Появление среза на линии CS в начальном состоянии приводит к тому, что выбирается аналоговый вход и начинается преобразование. Во временных диаграммах используются следующие временные интервалы:

= 35 нс/мин. Установить начальный байт управления до начала работы АЦП;

= 35 нс/мин. Окончание передачи байта управления и первый тактовый

импульс;

= 62 нс/мин должно быть между импульсами на линии SCLK;

= 62 нс/мин. Длительность тактового импульса (ТИ);

= 156 нс/ми. Длительность между началом первого ТИ и началом второго ТИ ;

= 0 нс/мин. Время, которое должно пройти после ТИ для выключения АЦП;

= 100 нс/мин минимальное время для включения и выключения АЦП;

= 35 нс/мин;

= 25 нс/мин. Время, которое должно пройти после передачи байта

управления и первым ТИ;

= 0 нс/мин. Время перехода ТИ из «0» в «1»;

= 65 нс/мин

= 20 нс/мин. Время от начала ТИ, до начала передачи от АЦП данных в МК;

= 80 нс/мин. Время от начала ТИ, до передачи от АЦП данных в МК;

= 65 нс/мин

= 65 нс/мин

= 20 нс/мин. Время от начала ТИ, до перехода в «1» на линии SSTRB;

= 80 нс/мин. Время перехода из «0» в «1» на линии SSTRB;

= 65 нс/мин. Время перехода от начала выключения АЦП на линии CS

до фронта перехода в «1» на линии SSTRB.

На рисунке 2.6 показаны временные диаграммы для одного цикла преобразования и байт управления АЦП.


Рисунок 2.6 - Временные диаграммы для одного цикла преобразования и байт управления АЦП


В байте для регистра управления содержатся следующие биты:

-Start - бит старта, который равен 1;

-SEL2, SEL1, SEL0 - эти 3 бита отвечают за то, какой входной канал АЦП будет работать. Линия CH0 равна 001, CH1 равна 101, CH2 равна 010, CH3 равна 110;

-UNI/BIP - бит, отвечающий за униполярный или биполярный режим работы, для униполярного равен 0, для биполярного равен 1;

-SGL/DIF - бит, отвечающий за дифференциальный или одноканальный режим работы, для одноканального равен 1, а для дифференциального 0;

-PD2 (PD1 и PD0) - биты, отвечающие за режим работы АЦП. Без пониженного энергопотребления, в нормальном режиме PD1 = PD0 = 1.


2.5 Схема включения МК


На рисунке 2.5 представлена схема включения МК.


Рисунок 2.6 - Схема включения МК


К МК обязательно подключаем супервизор MCP100, чтобы в случае падения питания на МК или в схеме в целом, ниже нужного уровня, от супервизора подавался импульс для перезагрузки всего устройства. По документации разработчиков, к выходу Vdd требуется подключить керамический конденсатор С12, емкостью 0,001 мкФ, для сглаживания помех на входе.

Для работы МК обязательно требуется генератор тактовых импульсов (ГТИ). ГТИ состоит из параллельно включенных в цепь емкостей с подключенным к ним кварцевым резонатором, и двумя запускающими конденсаторами С13 и С14, емкостью 10 мкФ. Кварцевый резонатор генерирует электрические импульсы заданной частоты (обычно прямоугольной формы) для синхронизации различных процессов в цифровых устройствах. Так же ко входу Vcc нужно подключить питание 5 В и конденсатор С16, емкостью 0,1 мкФ.

МК, получив цифровой код с ГР или с АЦП, начинает обрабатывать его. После завершения вычисления, МК пересылает данные в ПК, через буфер RS232, по линиям RxD и TxD . Но до начала работы МК, в него нужно записать программу через разъем программирования, написанную на языке программирования Assembler в IDE AVR Studio. Отлаженную программу записывают в МК по линиям MISO, MOSI, SCK.

Линии VTG и GND, в разъеме программирования - это выводы питания. К VTG подвести 5 В, а GND заземлить. MOSI, MISO, SCK подвести к МК в порты с (такими же) соответствующими названиями. Res - это линия входа. Если от супервизора посылается импульс, то прибор будет перезагружен (сброшен).


2.6 Схема включения буфера RS232 ADM206EAR


На рисунке 2.6 представлена схема включения буфера RS232 ADM206EAR.

RS232 - физический уровень для асинхронного (UART) интерфейса. Это физическая и электрическая среда для передачи данных. Обычно физический уровень описывает: передачи на примерах топологий, сравнивает аналоговое и цифровое кодирование, синхронизацию бит, сравнивает узкополосную и широкополосную передачу, многоканальные системы связи, последовательную (логическую 5-вольтовую) передачу данных.


Рисунок 2.7 - Буфер RS232 ADM206EAR


Информация передается по проводам двоичным сигналом с двумя уровнями напряжения в персональный компьютер (ПК). Логическому «0» соответствует положительное напряжение (от 3 до 15 В для передатчика), а логической «1» отрицательное (от минус 3 до минус 15 В для передатчика).

Для нормальной работы буфера ADM206EAR [2] требуется 5 электролитических конденсаторов (С17, С18, С19, С20, С21), емкостью 0,1 мкФ, для работы встроенного удвоителя напряжения и инвертора напряжения.

Для дальнейшей работы и анализа данных, требуется подключить к буферу RS232 ком порт. Ком порт осуществляет прием и передачу данных с МК в ПК и обратно. Линию GND нужно заземлить. Линии DTR, DCD и DSR нужно замкнуть между собой. RTS и CTS, так же замкнуть между собой.



3. Оценка максимальной погрешности ДДЛ


Максимальная погрешность канала АЦП состоит из погрешности датчика линейного (ДДЛ) и нелинейного давления (ДДН), полученные путём сложения всех элементов канала. Погрешности для ДДЛ и ДДН рассчитываются по отдельности.

Формула погрешности для ДДЛ выглядит следующим образом:


(2)


где?ЛД - собственная погрешность линейного датчика;

?НУ - погрешность нормирующего усилителя;

?АЦП - погрешность АЦП;

?ИОН - погрешность источника опорного напряжения (0,05%);

?ВЫЧ - погрешность вычислений.


3.1 Погрешность нормирующего усилителя


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

Погрешность, вызванная токами утечки диодов, не превысит значение рассчитанной по формуле:


(3)


гдеIУТ - ток утечки диодов, IУТ = 25нА;

R1 - максимальное сопротивление резисторов в схеме НУ, R1 = 10 кОм;

KСХ - коэффициент усиления для ОУ (для повторителя KСХ = 1);

Umax - максимальное напряжение на выходе датчика давления;

Umin - минимальное напряжение на выходе датчика давления.

Разность напряжений, вызванная током утечки диодов, определяется как произведение максимального тока (25 нА) на максимальное сопротивление в схеме равна 10 кОм..

Подставляя значения в формулу (3), получаем:



Резисторы, выбранные в данном проекте имеют допуск ± 1 %. Наихудший случай разброса значений резисторов для НУ DA1 будет следующим: R1 = R3 = 9990 Ом, R4 = 1610 Ом, при входном сигнале 10 В (максимальный). Промоделировав схему, с данными значениями резисторов, в Orcad, получаем U= 9,998 В. Если бы резисторы R1 - R4 были идеальными, то напряжение на положительном входе ОУ при максимальном входном сигнале, составляло 10 В. Разность, между двумя этими напряжениями будет составлять абсолютную погрешность (?U = 0,002 В).

Рассчитываем погрешность резисторов по формуле:


(4)


гдеUОП - опорное напряжение, равное 10 В;

UВЫХ РЕАЛ - реальное выходное напряжение, В.

Подставляя значения в формулу (4), получаем:



Погрешность операционного усилителя складывается из нескольких погрешностей.

Погрешность, вызванная смещением операционного усилителя, определяется по формуле:


(5)


гдеUСМ - максимальное напряжение смещения ОУ, которое указано в технической документации микросхемы AD8532, Uсм = 25 мВ.

Подставляя значения в формулу 5, получаем:



Погрешность ОУ вызванная током смещения ОУ определяется по формуле:


(6)


гдеIСМ - ток максимального смещения IСМ = 25 пA;

RСХmax - максимальное значение сопротивление схемы, равное 10 кОм.

Подставляя значения в формулу (6), получаем:


.


Максимальная приведенная погрешность, обусловленная конечным значением коэффициента ослабления синфазного сигнала (КОСС), определяется по формуле:


(7)


гдеUCmax - максимальное синфазное напряжение;

Kд - дифференциальный коэффициент усиления.

Подставляя значения в формулу (7), получаем:



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


(8)


Подставляя значения в формулу (8), получаем:


.


Погрешность нормирующего усилителя рассчитывается по формуле:


(9)


Подставляя значения в формулу (9), получаем:

.


Максимально приведенная погрешность нормирующего усилителя ( для ДДЛ не будет превышать


3.2 Оценка максимальной погрешности АЦП


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

Погрешность АЦП складывается из аддитивной погрешности 6 МЗР, мультипликативной погрешности 2,5 МЗР, дифференциальной нелинейности 1 МЗР и интегральной нелинейности 0,25 МЗР. Погрешность АЦП находится по формуле:


(10)


где - это сумма всех погрешностей младшего значащего разряда; n - разрядность АЦП.

Подставляя значения в формулу (10), получаем:



3.3 Вычисление погрешности ИОН


Погрешность ИОН рассчитывается по формуле:


(11)


где IA - указанно в документации в разделе Initial Accuracy IA = [7].

Подставляя значения в формулу (11), получаем:



3.4 Максимальная погрешность вычисления для ДДЛ


Погрешность вычислений находится по формуле:


(12)


где а1 и а2 - данные из варианта в таблице 3;

код - максимально возможный код АЦП, в десятичной системе счисления.

Подставляя значения в формулу (12), получаем:



Исходя из выше рассчитанных погрешностей, можно вычислить погрешность ДДЛ, по формуле 3:


.


Максимальная приведенная погрешность ДДЛ не превышает ? 0,5 %. Для того чтобы уменьшить погрешность канала ДДЛ необходимо проводить предварительную калибровку микропроцессорной системы сбора данных.


4. Оценка максимальной погрешности для ДДН


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

Формула погрешности для ДДН выглядит следующим образом:


(13)


где?АП - максимальная погрешность аппроксимации;

?НД - собственная погрешность нелинейного датчика.


4.1 Максимальная погрешность канала для ДДН


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



где provK - максимальный коэффициент К, рассчитанный в приложении Б; provB - максимальный коэффициент В, рассчитанный в приложении Б; код - максимально возможный код АЦП, в десятичной системе счисления;

А - масштабирующий множитель равный ;

- реальное давление, воспринимаемое датчиком, кПа.

Подставляя значения в формулу (14), получаем:



Далее находим максимальную погрешность вычислений по формуле:



где Pmax - максимальное значение давления, указанное в задании.

Подставляя значения в формулу (15), получаем:



Общая максимальная погрешность прибора ДДН оценивается как сумма всех составляющих погрешностей и определяется по формуле (13):



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


4.2 Оценка максимальной погрешности системы сбора данных


Общая максимальная погрешность прибора оценивается как максимальная погрешность каждого канала системы сбора данных. В соответствии с проведёнными расчётами данных она не превышает погрешности канала ДДН %.


5 Расчет потребляемой мощности и надежности


5.1 Расчёт потребляемой мощности


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

Потребляемая мощность прибора определяется по формуле:


,(16)


где Рп - потребляемая мощность отдельного элемента прибора;

Uпит - напряжение питания отдельного элемента прибора;

Iп - ток потребляемый отдельным элементом прибора;

K - количество элементов.

Расчет потребляемой мощности спроектированной системой сбора данных представлен в таблице 1.


Таблица 1 - Расчёт потребляемой мощности системы сбора данных

Наименование элементаПотребляемый ток, мАНапряжение, ВКоличество элементов, штПотребляемая мощность, мВтATmega8515 45120MAX1282 45120ADM206 3,55117,5AD85320,75513,75L7805612172MCP100 0,09510,45ADR291 0,009510,045TLP523 0,01520,174HC14 0,02510,2Общее значение18,369--133,945


Из таблицы 1 видно, что значение потребляемой мощности составляет 133,945? мВт, а потребляемый ток не превышает тока нагрузки источника напряжения.


5.2 Расчёт надёжности


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

Интенсивность отказов элементов i-го типа определяется по формуле:


, (17)


где ?0 i - интенсивность отказов данного типа элементов при номинальной электрической нагрузке и нормальных условиях эксплуатации, 1/ч;

?i - коэффициент, учитывающий влияние температуры окружающей среды и электрической нагрузки элемента (принимаем ?i = 1);1 - коэффициент, учитывающий влияние механических факторов (вид проектируемого устройства - лабораторный, следовательно, принимаем k1=1); 2 - коэффициент, учитывающий влияние климатических факторов (система будет эксплуатироваться при влажности окружающей среды 60 - 70 % и температуре 20 - 40 °С, следовательно, k2 = 1);3 - коэффициент, учитывающий влияние пониженного атмосферного давления (система будет эксплуатироваться в наземном помещении, следовательно, k3 = 1).

Характеристики надёжности элементов, их среднее время восстановления и количество указаны в таблице 2.


Таблица 2 - Характеристики надёжности элементов

Тип элементаИнтенсивность отказов, ?0 i?10-6, 1/чСреднее время восстановления, ?в i, чКоличество элементов m, шт.№ 1№ 2№ 3№ 4Интегральные микросхемы0,51,27Диоды и стабилитроны0,20,510Оптроны0,50,62Конденсаторы0,070,521Резисторы постоянные0,020,59Разъёмы0,251,07Соединение пайкой0,010,11

Принимая во внимание значения для поправочных коэффициентов ?i, k1, k2, k3, приводим формулу (17) к виду:


?i = ?0 i.(18)


Интенсивность отказов устройства в целом ?, (1/ч) определяется по формуле:


, (19)


где mi - количество элементов i-го типа;

?i - интенсивность отказов.

Подставляя известные данные получаем:


? = (0,5 (1/ч).


Вероятность безотказной работы устройства P определяется по формуле:


,(20)


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

Значение t выбирается из стандартного ряда: 1000 ч, 2000 ч, 4000 ч, 8000 ч, 16000 ч. Пусть время безотказности работы t = 16000 ч, тогда:


Р(t) =


Средняя наработка на отказ T определяется по формуле:


(21).


Подставляя известные данные, получаем:


T = = 100 908 ч.



6. Разработка программного кода, на языке ассемблера


При включении питания МК выполняет подпрограмму инициализации, в которой задается указатель стека, настраиваются линии портов и происходит настройка модуля USART. Далее, до момента выключения питания, МК выполняет основную программу, состоящую из описанных ниже действий.

Первоначально МК настраивает АЦП, посылая определенные комбинации бит по линии DIN. После с АЦП приходят данные в двоичном коде, которые эквивалентны давлению на ДДЛ. Далее выполняется подпрограмма умножения и сложения коэффициентов К и В линейного датчика. Полученный ответ записывается в ОЗУ МК.

Следующим шагом переключается принимающий вход АЦП, который будет отправлять в МК код, эквивалентный давлению на ДДН. После происходит команда умножения и сложения. Полученный ответ сохраняется в ОЗУ МК.

Далее МК опрашивает ДКД, с которых приходят либо логический «0», либо логическая «1». Результаты записываются в ОЗУ МК.

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

Листинг программного кода представлен в приложении В.


Заключение


В данном курсовом проекте была спроектирована микропроцессорная система сбора данных, которая удовлетворяет поставленным условиям.

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

Значение потребляемой мощности составляет 133,945 мВт, а потребляемый ток не превышает тока нагрузки источника напряжения. Рассчитав значения надёжности элементов прибора, получили (1/ч).

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

В ходе работы использовались возможности различных программ, таких как MathCAD, KOMPAS 3D V12 и OrCAD. Для написания программы на языке программирования ассемблер, для микроконтроллера ATmega8515, использовалась программа AVR Studio 4.

Была разработана принципиальная электрическая и структурная схема микропроцессорной системы сбора данных на базе микроконтроллера ATmega8515, с ядром AVR.

Также был проведен Расчет коэффициентов аппроксимации для нелинейного датчика давления. Сделан расчет коэффициентов вычисления давления для нелинейного датчика.


Приложение А


Расчет коэффициентов аппроксимации для нелинейного датчика давления

Исходные данные для аппроксимации.



Вычисляем максимальное и минимальное напряжение при максимальном и минимальном давлении.



Разбиваем исходную характеристику датчика ДДН на 16 интервалов по напряжению. Находим шаг, между интервалами. Он равен 0,3099 В.



Дальше вычисляем функцию P(U) и получаем значения давления по значениям напряжения в заданных границах интервалов.




Рассчитываем коэффициенты линейной функции Kи B, для каждого участка аппроксимации.



Создаем массив точек по напряжению и давлению на всех интервалах аппроксимирующих функций.



Создаем график, показывающий погрешность на каждом участке аппроксимации.



Исходя из показания графика, погрешность аппроксимации не превысит 0,025 %.


Приложение б


Расчет коэффициентов вычисления давления для нелинейного датчика

Находим коэффициенты Kadc и Badc, для расчета значения давления на каждом участке интервалов.




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



После получения значений коэффициентов K и B, переводим их в шестнадцатеричную систему счисления.


Приложение В


листинг программного кода на языке програмирования assembler для системы сбора данных на базе микроконтроллера ATmega8515, с ядром AVR


.include"m8515def.inc";включаем файл с описанием всех ;регистров ввода-вывода МК ;ATmega8515

.org 0Reset;вектор прерывания по сбросу МКINT_0;вектор прерывания на линии INT0 (PD2)INT_1;вектор прерывания на линии INT1 (PD3)TIMER1_CAPT;вектор прерывания по захвату Т/С 1TIMER1_COMPA;вектор прерывания по совпадению "А" Т/С 1TIMER1_COMPB;вектор прерывания по совпадению "B" Т/С 1TIMER1_OVF ;вектор прерывания по переполнению Т/С 1TIMER0_OVF ;вектор прерывания по переполнению Т/С 0SPI_STC ;вектор прерывания по окончании передачи модуля SPIUSART_RxC ;вектор прерывания по окончанию приёма данных

;модулем USART USART_UDRE;вектор прерывания, если UDR передатчика пуст вектор

;прерывания по окончанию передачи данных

;модулем USARTANA_COMP;вектор прерывания аналогового компаратораINT_2;вектор прерывания на линии INT2 (PE0)TIMER0_COMP;вектор прерывания по совпадению Т/С 0EE_RDY;вектор прерывания в момент готовности

;модуля EEPROMSPM_RDY;вектор прерывания в момент готовности модуля SPM :r16, 0x01 ;инициализируем стекSPH, r16 ;старший байт

ldi r16, 0x5F

out SPL, r16;младший байтr16, 0b10110001 ;это настраиваем ножки на вход и

;выход ( PC3(SData)-вход, PC2(BUSY - EOC) - вход,

;PC0(SCLK) - выход, PC4(CS) - выход РС1 (DIN) - выход)

;ддр нужен для того, чтобы настроить выводы МК.

;7,6,5 бит - это настройка по документации

;(там 3 поля, чтобы работал вход сн1 = 101,

;чтобы сн2 = 010)DDRC, r16 ;в регистре находятся 8 битов, каждый определяет как

;будет работать линия (вход, выход). Линии которые не

;используются - на вход делаем (0), на выход - 1r16, 0b00010000 ;sclk = 0, cs = 1 начальные значения для запуска ацпPORTC, r16 ;порт нужен для того, чтобы выдать данные

;настройка USART

ldi r16, 0x00;загружаем константу в регистр UBRR

out UBRRH, r16;чтобы задать скорость 9600 бод

ldi r16, 0x17

out UBRRL, r16;8 бит данных, без удвоения скорости

ldi r16, 0b00000000;1 стоп бит

out UCSRA, r16;без прерывания

ldi r16, 0b00000000;без контроля

out UCSRA, r16;асинхронный

ldi r16, 0b00011000;включить приемник и передатчик

out UCSRB, r16r16, 0b10000110UCSRC, r16:

ldi r16, 0b10011111 ;настраиваем данные для DIN

;(предварительная настройка)initADC;вызов подпрограммы настройки АЦПoprosADC;вызов подпрограммы опроса АЦП0x0160, r21 ;адрес ячейки, в который запишем данные с ацп (код)0x0161, r20 ;две ячейки потому, что разрядность ацп больше 8r19,0x28;загружаем множимое К (40(10))r2,0x0160;загружаем в r2 код с АЦП (старший байт)r1,0x0161;младший байтumnog2x1;вызов п/п умножения для вычисления давления

;линейного датчика0x0162, r18 ;сохранение регистра r18 в ячейке памяти

;с адресом 0x0162 старший0x0163, r17 ;сохранение регистра r17 в ячейке памяти с адресом 0x01630x0164, r16 ;сохранение регистра r16 в ячейке памяти с адресом

;0x0164 младшийPORTB, r19 ;загружаем константу из r19 в PORTBoprosDDN;вызов подпрограммы опроса нелинейного

;датчика давления0x0165,r19;записываем старший байт в ячейке памяти

;с адресом 0x01650x0166,r18;сохранение регистра r18 в ячейке памяти

;с адресом 0x01660x0167,r17;сохранение регистра r17 в ячейке памяти

;с адресом 0x01670x0168,r16;записываем младший байт в ячейке памяти

;с адресом 0x0168oprosDKD;вызов п/п опроса ДКД0x0169, r4;записываем данные с ДКД1 в ячейке памяти

;с адресом 0x01690x016A, r5;записываем данные с ДКД2 в ячейке памяти

;с адресом 0x016A

sbic UCSRA, 7;пропуск команды, если 7 бит = 0peredacha;вызов п/п передачи данных в ПКmain;переход на метку main

;*****************П/П для вычисления давления поданного на вход линейного датчика давления*******x1:r25, 0x00 ;записываем в регистр r25 нулиr26, 0x0A ;записываем число 10 в 26 регистрr3 ;очищаем 4 регистра под ответ

clr r4r5r6

ldi r16, 0x10 ;записываем 16 в счетчик, так как 4 байта и в каждом по 8 бит:r2 ;двигаем все умножаемое число вправоr1;начиная со старшего байтаsdvig ;если число во флаге с = 0, то переходим на метку sdvigr5, r19;складываем результат с константой без переносаr6, r25;учитываем перенос:r6;двигаем весь результат вправо 1 раз

ror r5r4r3

dec r16;уменьшаем счетчикmainMul;если счетчик не равен 0, то перейти на метку mainMulr3, r26;складываем результат умножение с другой константой,

;без учета переносаr4, r25;складываем с учетом переносаr5, r25r16, r3;копируем регистр r3, в регистр r16r17, r4;копируем регистр r4, в регистр r17r18, r5;копируем регистр r5, в регистр r18: ret;выходим из подпрограммы умножения

;***************П/п опроса датчиков контроля давления**********************:r4;обнуляем r4 под результатPINC,0;пропускаем строчку если в бите 0 PINC записан 0DKD2;переход на метку DKD2r4;записываем единицу в r4:r5;обнуляем r5 под результатPINC,1;пропускаем строчку если в бите 1 PINC записан 0vixod;переход на метку vixodr5;записываем единицу в r4:ret;выход из подпрограммы

;*******************П/П для передачи данных в ПК***********************

peredacha:

ldi r25, 0x0B;счетчик

ldi r31, 0x01;помещаем в РП Z адрес ячейки ОЗУ

ldi r30, 0x60

cikl::sbis UCSRA,5;пропуск команды если бит5=1m2;переход на метку m2r4, Z+;отправляем 1 байт данных с линейного датчикаUDR, r4;загружаем в UDR передатчика содержимое r4

dec r25;уменьшаем счетчик

brne cikl;если счетчик не равен 0, то перейти на метку cikl;выход из подпрограммы:

rcall initADC2;переключаем линию АЦП для приема данных

rcall oprosADC2;получаем код с АЦПr16;логический сдвиг содержимого регистра 16 влевоr16;три раза, чтобы потом узнать адрес,r16;с которого начнем доставать коэффициентыr31, high(tabKuB*2) ;загружаем из таблицы старший байт коэффициентаr30, low(tabKuB*2);загружаем из таблицы младший байт коэффициентаr15r30, r16 ;складываем числа, чтобы получить адрес

;с которого начнем доставать коэффициентыr31, r15r18, 0x08 ;создаем счетчик равный 8r27, 0x01 ;cоздаем регистровую пару х для того,r28, 0x70;чтобы указать там ячейку памяти в озу:;берется байт из таблицы и помещается в регистр r0X+, r0 ;взять из r0 и положить в ячейку памяти озу,

;которая указана в регистровой паре Х,

;после чего увеличить значение РП Х на 1.r30, 0x01 ;прибавить 1 к регистровой паре z, чтобы достать

;следующий байт из таблицыr18;уменьшить счетчикlpmCheck;если счетчик не равен 0 - перейти на метку lpmCheckr7, 0x0172 ;загружаем из ОЗУ старший байт коэффициента k

;в регистр 5r8, 0x0173 ;загружаем из ОЗУ младший байт коэффициента k

;в регистр 6r25, 0x00 ;обнуляем регистр 25r3 ;очищаем 4 регистра под ответ

clr r4r5r6

ldi r16, 0x10 ;счетчик, равный 16

mov r21, r2;загружаем в r2 код с АЦП (старший байт)

mov r21, r1;младший байт:r2 ;двигаем все умножаемое число вправоr1;начиная со старшего байтаsdvig ;если число во флаге с = 0, то переходим на метку sdvigr4, r8;складываем коэффициент К с регистрами под ответr5, r7;с учетом переноса:r5;сдвигаем ответ вправо, начиная со старшего байтаr4r3r16;уменьшаем счетчикmainMul;если счетчик стал равен 0 то переходим на метку mainMulr7,0x0174;загружаем с r7 по r10 коэффициент В (старший байт)

lds r8,0x0175r9,0x0176

lds r10,0x0177;младший байтr3, r10;складываем результат умноженияr4, r9;кода АЦП на коэффициент К с коэффициентом Вr5, r8;с учетом переносаr6, r7r16, r3;копируем ответ в другие регистры,r17, r4;для работы с ними

mov r18, r5r19, r6

ret;выходим из подпрограммы опроса нелинейного датчика

;**************подпрограмма инициализации ацп*********:r17, 0x08 ;создаем счетчик, равный 8:rol r16;двигаем настроечный байт влево,

;что бы 1 или 0 оказались во флаге Сone;если флаг С = 0, то перейти на метку onePORTC, 1 ;выставляем на первую линию порта С 1, для инициализацииtwo;перейти на метку two:cbi PORTC, 1 ;выставляем на 1 линию порта С 0, для инициализации:cbi PORTC, 0 ;первая линия порта С, которая отвечает за тактовый импульсPORTC, 0 ;выставляем на 0 линию порта С 1 (тактовый импульс)PORTC, 0 ;ставим 0, для того, чтобы показать, что прошел 1 импульсr17;уменьшаем счетчикinit2;если r17 не равен 0, то перейти на метку init2;выход из подпрограммы инициализации ацп

;*********закончилась подпрограмма инициализации ацп***********

;*************подрограмма опроса ацп******************:PORTC, 0 ;устанавливаем линию, отвечающую за тактовые

;импульсы равной 1 (9 импульсный такт)PORTC, 0 ;устанавливаем линию, отвечающую за тактовые

;импульсы равной 0PORTC, 0 ;10 тактовый импульсPORTC, 0:PINC, 3 ;проверяем третий бит из порта С, если он равен 1,

;то следующую команду не выполнятьcheckThreeBit ;перейти на метку checkThreeBitPORTC, 0 ;11 тактовый импульсPORTC, 0:PINC, 3 ;проверяем третий бит из порта С, если он равен 1,

;то следующую команду не выполнятьcheckThreeBit2;перейти на метку checkThreeBit:r22, 0x0C ;создаем счетчик цикла для тактовых импульсов - это для

;12 разрядногоr20 ;очищаем регистры под код ацпr21:PORTC, 0 ;такт ГТИr16, PINC ;копируем данные в r16 из порта C МК.

;Но нам нужен только третий бит(PC3),

;так как остальные данные являются управляющими

;от мк к ацпr16;извлекаем последний бит, поступивший из порта С (sData)r16;извлекаем 1 битr16;извлекаем 2 битr16;получаем 3 бит данныхr20;записываем в регистры r20 и r21 данные,r21;;которые приходят из 3 бита в порте СPORTC, 0;тактовый импульс делаем равным 0r22;уменьшаем счетчик на 1mADC2;если счетчик не равен 0, то перейти на метку mADC2PORTC, 0 ;24 тактовый импульсPORTC, 0PORTC, 4;устанавливаем линию cs в 1, чтобы выключить ацп;выход из подпрограммы опроса АЦП

;*********закончилась подпрограмма опроса ацп***********

;**************подпрограмма инициализации ацп*********:r16, 0b01010001 ;это настраиваем ножки на вход и

;выход ( PC3(SData)-вход, PC2(BUSY - EOC) - вход,

;PC0(SCLK) - выход, PC4(CS) - выход РС1 (DIN) - выход)

;ддр нужен для того, чтобы настроить выводы МК.

;7,6,5 бит - это настройка по документации

;(там 3 поля, чтобы работал вход сн1 = 101,

;чтобы сн2 = 010)DDRC, r16 ;в регистре находятся 8 битов, каждый определяет как

;будет работать линия (вход, выход). Линии которые не

;используются - на вход делаем (0), на выход - 1r17, 0x08 ;создаем счетчик, равный 8Two:r16;двигаем настроечный байт влево,

;что бы 1 или 0 оказались во флаге Сone2;если флаг С = 0, то перейти на метку onePORTC, 1 ;выставляем на первую линию порта С 1, для инициализацииtwo2;перейти на метку two:sbi PORTC, 1 ;выставляем на 1 линию порта С 1, для инициализации:cbi PORTC, 0 ;первая линия порта С, которая отвечает за тактовый импульсPORTC, 0 ;выставляем на 0 линию порта С 1 (тактовый импульс)PORTC, 0 ;ставим 0, для того, чтобы показать, что прошел 1 импульсr17;уменьшаем счетчикinitTwo;если r17 не равен 0, то перейти на метку initTwo;выход из подпрограммы инициализации ацп

;*********закончилась подпрограмма инициализации ацп***********

;*************подпрограмма опроса ацп******************:PORTC, 0 ;устанавливаем линию, отвечающую за тактовые

;импульсы равной 1 (9 импульсный такт)PORTC, 0 ;устанавливаем линию, отвечающую за тактовые

;импульсы равной 0PORTC, 0 ;10 тактовый импульсPORTC, 0:PINC, 3 ;проверяем третий бит из порта С, если он равен 1,

;то следующую команду не выполнятьcheckThreeBit2;перейти на метку checkThreeBit2PORTC, 0 ;11 тактовый импульсPORTC, 0Two:PINC, 3 ;проверяем третий бит из порта С, если он равен 1,

;то следующую команду не выполнятьcheckThreeBitTwo;перейти на метку checkThreeBitTwo:r22, 0x0C ;создаем счетчик цикла для тактовых импульсов - это для

;12 разрядногоr20 ;очищаем регистры под код ацпr21:PORTC, 0 ;такт ГТИr16, PINC ;копируем данные в r16 из порта C МК.

;Но нам нужен только третий бит(PC3),

;так как остальные данные являются управляющими

;от мк к ацпr16;извлекаем последний бит, поступивший из порта С (sData)r16;извлекаем 1 битr16;извлекаем 2 битr16;получаем 3 бит данныхr20;записываем в регистры r20 и r21 данные,r21;;которые приходят из 3 бита в порте СPORTC, 0;тактовый импульс делаем равным 0r22;уменьшаем счетчик на 1mADC22;если счетчик не равен 0, то перейти на метку mADC2PORTC, 0 ;24 тактовый импульсPORTC, 0PORTC, 4;устанавливаем линию cs в 1, чтобы выключить ацп;выход из подпрограммы опроса АЦП

;*********закончилась подпрограмма опроса ацп***********

;******************НЕИСПОЛЬЗУЕМЫЕ ПРЕРЫВАНИЯ********************

INT_0:reti_1: reti_CAPT:reti_COMPA:reti_COMPB:reti_OVF:reti_OVF:reti_STC:reti_RxC:reti_UDRE:reti_TxC:reti_COMP:reti_2:reti_COMP:reti_RDY:reti_RDY:reti

;*********************Таблица коэффициентов K и b******************:

.db 0x00,0x00;k 0 интервал

.db 0x06,0x6f

.db 0x00,0x00;b 0 интервал

.db 0x00,0x00

.db 0x00,0x00;k 1 интервал

.db 0x06,0x40

.db 0x00,0x66;b 1 интервал

.db 0xf0,0x95

.db 0x00,0x00;k 2 интервал

.db 0x06,0x1b

.db 0x00,0xca;b 2 интервал

.db 0xed,0x98

.db 0x00,0x00;k 3 интервал

.db 0x05,0xfe

.db 0x01,0x2c;b 3 интервал

.db 0x97,0x3f

.db 0x00,0x00;k 4 интервал

.db 0x05,0xe7

.db 0x01,0x8c;b 4 интервал

.db 0x70,0x62

.db 0x00,0x00;k 5 интервал

.db 0x05,0xd7

.db 0x01,0xea;b 5 интервал

.db 0xe7,0x98

.db 0x00,0xa6;k 6 интервал

.db 0x10,0x6d

.db 0x02,0x48;b 6 интервал

.db 0x5d,0x7b

.db 0x00,0x00;k 7 интервал

.db 0x05,0xc7

.db 0x02,0xa5;b 7 интервал

.db 0x29,0x39

.db 0x00,0x00;k 8 интервал

.db 0x05,0xc7

.db 0x03,0x01;b 8 интервал

.db 0x9c,0x14

.db 0x00,0x00;k 9 интервал

.db 0x05,0xcb

.db 0x03,0x5e;b 9 интервал

.db 0x04,0x55

.db 0x00,0x00;k 10 интервал

.db 0x05,0xd4

.db 0x03,0xba;b 10 интервал

.db 0xaf,0xe9

.db 0x00,0x00;k 11 интервал

.db 0x05,0xe2

.db 0x04,0x17;b 11 интервал

.db 0xee,0xfe

.db 0x00,0x00;k 12 интервал

.db 0x05,0xf7

.db 0x04,0x76;b 12 интервал

.db 0x16,0xd1

.db 0x00,0x00;k 13 интервал

.db 0x06,0x12

.db 0x04,0xd5;b 13 интервал

.db 0x85,0x04

.db 0x00,0x00;k 14 интервал

.db 0x06,0x35

.db 0x05,0x36;b 14 интервал

.db 0xa3,0xd3

.db 0x00,0x00;k 15 интервал

.db 0x06,0x61

.db 0x05,0x99;b 15 интервал

.db 0xef,0xcc


Содержание Введение Задание на курсовой проект . Разработка структурной схемы и обобщенного алгоритма работы прибора . Разработка и расчет элем

Больше работ по теме:

КОНТАКТНЫЙ EMAIL: [email protected]

Скачать реферат © 2018 | Пользовательское соглашение

Скачать      Реферат

ПРОФЕССИОНАЛЬНАЯ ПОМОЩЬ СТУДЕНТАМ