Микропроцессорная измерительная техника
Заказать уникальную курсовую работу- 22 22 страницы
- 0 + 0 источников
- Добавлена 06.01.2020
- Содержание
- Часть работы
- Список литературы
- Вопросы/Ответы
ВВЕДЕНИЕ 2
1 ОПИСАНИЕ РАБОТЫ УСТРОЙСТВА ПО ФУНКЦИОНАЛЬНОЙ СХЕМЕ 2
2 РАЗРАБОТКА АЛГОРИТМА ВЫЧИСЛЕНИЙ 2
2.1 Вывод расчетной формулы 2
3 РАЗРАБОТКА ПРИНЦИПИАЛЬНОЙ ЭЛЕКТРИЧЕСКОЙ СХЕМЫ 6
3.1 Схема питания 6
3.2 Преобразователь уровней 6
3.3 Схема включения микроконтроллера 7
3.4 Преобразователь интерфейсов 7
4 НАПИСАНИЕ ПРОГРАММЫ НА ЯЗЫКЕ АССЕМБЛЕР 8
ЗАКЛЮЧЕНИЕ 12
СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ 12
ПРИЛОЖЕНИЕ А. ТЕКСТ ПРОГРАММЫ 13
ldi r24,1 ; запись 1 в регистр-флаг Завершающая стадия работы обработчика прерываний. Восстанавливаем из стека сохраненные при входе в подпрограмму обработчикарегистры SREGи r16,разрешаем прерывания, выходим из подпрограммы обработчика.lab01:popr16outSREG,r16;восстановление регистра SREGpopr16;восстановление r16sei;разрешение прерыванийretiПодпрограмма деления двухбайтного числа на однобайтноеdiv16_8 взята с ресурса [1] с доработкой. Из исходного текста программы исключена процедура проверки делителя на ноль (мы всегда делим на одно и то же число, отличное от нуля). Используемые подпрограммой div16_8ресурсы:r17:r16 - делимое при входе и частное на выходеr20 - делительr18 - целочисленный остатокr21,r22 - вспомогательные регистрыЗаключениеСписок использованных источниковТехническая документация[интернет ресурс] http://cxem.net/mc/book30.php (дата обращения 15.10.19).Приложение А. Текст программы.include "m8535def.inc" ;Загрузить файл с описанием ; регистров ввода-вывода для МК ATmega8535.cseg.org $0rjmpreset ;вектор сброса.org $09rjmpT0_ovf ;вектор переполнения Т0reset:;Инициализациястекаldir16,HIGH(RAMEND) ;$5foutspl,r16ldir16,LOW(RAMEND) ;$02outsph,r16;Инициализация таймера 0;запись в счетный регистр T0 числа 61ldir16,61outTCNT0,r16;запуск таймера Т0 с предделителем CLK/1024ldir16,0x05outTCCR0,r16;Инициализация таймера/счетчика 1clrr16outTCCR1A,r16ldir16,0x08outTCCR1B,r16;Инициализация UART, асинхронный;9600бод, 8 Data, 1 Stop, No Parityclrr16outUCSRA,r16outUBRRH,r16ldir16,0x08outUCSRB,r16ldir16,0x86out UCSRC,r16ldir16,0x33outUBRRL,r16;Маскирование прерывания по переполнению Т0ldir16,0x01outTIMSK,r16clrr23; обнулить счетчик цикловclrr24; Обнулить признак наличия рез.измеренияsei;разрешение прерываний;Начало бесконечного циклаmain:;цикл ожидания результатов измеренияcpi r24,1 ; проверяем, прерывание обработано?brnemain ; нет, вернуться;даclr r24; обнуляем регистр-флаг;Первая операция:загрузка результатов измерения Nlds r16,0x200lds r17,0x201;Вторая операция: вычитание N1=N-a0subir16,LOW(20000) ; a0 млsbcir17,HIGH(20000) ; a0 ст;Третья операция: деление N2=N1/a1ldir20,75 ;a1rcalldiv16_8 ;обращение к подпрограмме деления;Четвертая операция вычитание t=N2-35subir16,35 ; млsbcir17,0 ; ст;Передача результата в ПКlab02: sbis UCSRA,UDRE; ожидание готовности UART на передачуrjmp lab02out UDR, r16; передача мл.байтаlab03: sbis UCSRA,UDRE; ожидание готовности UART на передачуrjmp lab03out UDR, r17; передача ст. байта;Переход на начало бесконечного циклаrjmpmain;Обработчик прерыванияT0_ovf:cli;запрет прерыванийpushr16; сохранение r16inr16,SREG;сохранение регистра SREGpushr16;запись в счетный регистр Т0 числа 61ldir16,61outTCNT0,r16;Проверка закончен ли измерительный интервал 1сек?incr23;инкремент счетчика циклов r23;цикл крайний?cpir23,4brnelab01 ; нет;да, измерительный цикл 1сек завершенclrr23 ; обнулить счетчик циклов;считать результат замера из Т/С1;запись содержимого TCNT1L в ячейку памятиin r16, TCNT1Lsts 0x0200,r16;запись содержимого TCNT1H в ячейку памятиin r16, TCNT1Hsts 0x201,r16;очистка содержимого счетного регистра T/C1clr r16out TCNT1H,r16out TCNT1L,r16;установка признака наличия результата измеренияldi r24,1 ; запись 1 в регистр-флаг ;восстановление регистров,завершение обр.прерыванияlab01:popr16outSREG,r16;восстановление регистра SREGpopr16;восстановление r16sei;разрешение прерыванийreti;Подпрограмма деления;[r17:r16]+{r18}=r17:r16/r20;r17:r16 - делимое при входе и частное на выходе;r20 - делитель;r18 - целочисленный остаток;r21,r22 - вспомогательные регистрыdiv16_8:clrr18clrr19clrr21ldir22,16dv1:lslr16rolr17rolr18rolr19subr18,r20sbcr19,r21orir16,0x01brccdv2addr18,r20adcr19,r21andir16,0xFEdv2:decr22brnedv1ret
1 ОПИСАНИЕ РАБОТЫ УСТРОЙСТВА ПО ФУНКЦИОНАЛЬНОЙ СХЕМЕ
2 РАЗРАБОТКА АЛГОРИТМА ВЫЧИСЛЕНИЙ
2.1 Вывод расчетной формулы
Датчик температуры ДТ9 формирует сигнал, частота которого пропорциональна измеренной температуре. Статическая характеристика преобразования датчика температуры может быть описана уравнением первого порядка
F(t)=a_1∙t+a_0 , (1)
где t – температура датчика;
a_0,a_1 – коэффициенты статической характеристики.
Преобразуем выражение (1) для расчета температуры
t(F)=(F-a_0)/a_1 . (2)
Основные параметры датчика ДТ9:
коэффициенты характеристики преобразования датчика температуры:
а0 = 75;
a0 = 20000.
диапазон измерения [-35..110]оС.
При обработке таймером микроконтроллера внешних сигналов есть вероятность переполнения таймера, и тогда измерения становятся недостоверными. Чтобы проверить, переполнится ли используемый 16-разрядный таймер 1, следует подставить в формулу (1) максимальную температуру датчика ДТ9, значение которой составляет 110 °С.
После подстановки данных:
Fmax = 110∙75+20000=28250 Гц.
В результате значение частоты составило 28250 Гц. При измерении количества импульсов за одну секунду их максимальное количество будет меньше, чем максимальное число в 16-разрядном таймере 65535 и дополнительных мер при составлении программы принимать не следует.
Микропроцессорный термометр должен отправить значение вычисленной температуры. Преобразуем выражение (1) для вычисления температуры:
t=1/a1∙F(t)-а0/а1 . (2)
Далее в формуле (2) 1/a1 заменяется на K, а ( - а0/a1 ) на В, и формула приобретает следующий вид:
t=К∙F-B.
Подстановка значения а1 для К:
K=1/75=0,133
Подстановка значений а1 и а0 для В:
B=20000/75=266,7 .
Полученное значение К является дробными, что влечет за собой усложнение исходного текста программы. Округление числа приведет к потере значащих разрядов.
Для сохранения точности следует умножить значения всех полученных значений на масштабирующий коэффициент.
Умножение коэффициента K:
K' = K • А, . (3)
где K' – коэффициент К, умноженный на масштабирующий коэффициент;
А - масштабирующий коэффициент, принимается равным 232, или 4294967296.
Подстановка значения и округление до целой части:
K^'=0,01333∙4294967296=57251914=〖369984A〗_16.
Коэффициент K^' положительный, поэтому в программу он загружается в прямом коде.
Умножение коэффициента В:
В' = В • А, (4)
где В' – коэффициент В, умноженный на масштабирующий коэффициент.
Подставляя числовое значение и опуская дробную часть:
В^'=-266,67∙ 4294967296=-1145338928824=-〖10AAB851EB8〗_16 .
Коэффициент В' отрицательный, поэтому в программу он загружается в дополнительном коде.
Дополнительный код возможно получить из прямого через обратный. Сначала все биты прямого кода инвертируются, образуя обратный код. Затем путем прибавления единицы к обратному коду образуется дополнительный код исходного числа.
После перевода в обратный код:
В' = 1111.1110.1111.0101.0101.0100.0111.1010.1110.0001.0100.01112
В' = FEF5547AE14716.
После перевода в дополнительный код:
В' = 1111.1110.1111.0101.0101.0100.0111.1010.1110.0001.0100.10002
В' = FEF5547AE14816.
Представленный метод умножения на масштабирующий коэффициент вносит в итоговое значение температуры погрешность вычислений, которую можно определить по следующей формуле:
γ вых =|t_р-t_ид |/t_ид ∙100% , (5)
где γвых – относительная погрешность вычислений, %;
tр – реально полученное значение температуры (после масштабирования), °С;
tид – теоретическое идеальное значение температуры, °С.
Расчет погрешности будет произведен по максимальному значению температуры, которое для датчика ДТ9 составляет 110°С. Максимально допустимое значение погрешности составляет 0,001%. Для определения погрешности необходимо отдельно рассчитать tид и tр (формулы (6) и (7) выведены из формулы (2)) :
tид = K • Fmax – В, (6)
tр = (K`•Fmax – В`)/A. (7)
После подстановки чисел в (6) и (7):
t_ид = 0,01333∙28250–266,67=109,903℃,
t_р = (57251914 • 28250-1145338928824)/4294967296=109,902℃.
Выполняется расчет погрешности вычислений:
γ_вых =|109,903-109,902|/109,903∙100%=0,00091%.
В результате погрешность составила 0,00091%, что меньше максимально допустимого значения 0,001%.
3 РАЗРАБОТКА ПРИНЦИПИАЛЬНОЙ ЭЛЕКТРИЧЕСКОЙ СХЕМЫ
Принципиальная электрическая схема представлена в графической части работы на листе формата А1. К схеме прилагается перечень элементов, который содержит информацию о номиналах элементов (в т.ч. наименования активных компонентов). Для пассивных элементов указывается допуск на максимальное отклонение от номинальной величины.
Вопрос-ответ:
Что такое микропроцессорная измерительная техника?
Микропроцессорная измерительная техника - это специальные устройства, основанные на микропроцессорах и предназначенные для измерения различных параметров с высокой точностью и скоростью.
Какие функции выполняет устройство по функциональной схеме?
Устройство по функциональной схеме выполняет функции измерения и вычисления различных параметров в соответствии с заданным алгоритмом.
Как разрабатывается алгоритм вычислений для микропроцессорной измерительной техники?
Алгоритм вычислений для микропроцессорной измерительной техники разрабатывается на основе требуемых испытуемых параметров и методов их вычисления. Затем этот алгоритм переводится в формулы, которые реализуются в программе устройства.
Как разрабатывается принципиальная электрическая схема для микропроцессорной измерительной техники?
Принципиальная электрическая схема для микропроцессорной измерительной техники разрабатывается с учетом требуемой функциональности и необходимых компонентов. Она включает в себя схемы питания, преобразователи уровней, схемы включения микроконтроллера и преобразователи интерфейсов.
Как написать программу на языке ассемблера для микропроцессорной измерительной техники?
Для написания программы на языке ассемблера для микропроцессорной измерительной техники необходимо ознакомиться с документацией по микропроцессору, определить требуемые операции и регистры, а затем написать соответствующий код программы, используя синтаксис языка ассемблера и инструкции микропроцессора.
Какое устройство описывается в статье?
В статье описывается микропроцессорная измерительная техника.
Какая информация содержится в разделе "Описание работы устройства по функциональной схеме"?
В разделе "Описание работы устройства по функциональной схеме" содержится информация о разработке алгоритма вычислений и выводе расчетной формулы.
Что включает в себя раздел "Разработка принципиальной электрической схемы"?
Раздел "Разработка принципиальной электрической схемы" включает в себя описание схемы питания, преобразователя уровней, схемы включения микроконтроллера и преобразователя интерфейсов.
Что описывается в разделе "Написание программы на языке ассемблер"?
В разделе "Написание программы на языке ассемблер" описывается процесс написания программы для микропроцессора на указанном языке.
Содержит ли статья список используемых источников?
Да, в статье приведен список использованных источников.