Указания по организации самостоятельной работы
Перед работой необходимо проработать теоретический материал по литературе [1, 4] и конспект лекций, ознакомиться с принципами функционирования и возможностями программирования, встроенного в микроконтроллер AVR АТMEGA 128 АЦП, изучить методику измерения температуры с помощью аналогового термодатчика. В состав микроконтроллера AVR АТMEGA 128 входит 10-разрядный аналого-цифровой преобразователь (АЦП), реализующий принцип последовательного приближения (см. рисунок 6.1). На входе модуля АЦП имеется
,
где – значение входного напряжения, – величина опорного напряжения.
Рисунок 6.1 – Обобщенная структурная схема модуля АЦП в микроконтроллере AVR АТMEGA 128
Для работы с модулем АЦП используются следующие регистры: ADCW (ADCH, ADCL) – 16-разрядный регистр данных, расположенный по адресу 4h/24h. В регистре используется 10 разрядов, выровненных по левой или правой границе. ADCSRA – регистр управления/статуса. ADMUX – регистр управления мультиплексором входных каналов. Форматы и описания отдельных битов регистров ADCSRA и ADMUX приводится на рисунках 6.2, 6.3 и в таблицах 6.1, 6.2 соответственно.
Рисунок 6.2 – Регистр состояния ADCSRA Таблица 6.1 – Описание значений управляющих битов регистра ADCSRA
Рисунок 6.3 – Регистр состояния ADMUX
Таблица 6.2 – Описание значений управляющих битов регистра ADMUX
Согласно формату регистров ADCSRA и ADMUX для работы с модулем АЦП в режиме одиночного преобразования необходимо при каждом чтении данных из регистра ADCW выполнить следующий инициализирующий код на языке С: ADMUX=0b11000000; используется внутренний источник опорного напряжения UREF (2.56 В), оцифровывание данных, поступающих по 0-му входному каналу; ADCSRA=0b11000000; запуск модуля АЦП в режиме одиночного преобразования. Если используется режим, в котором модуль АЦП генерирует прерывание ADC INT (cм. таблицу 4.1) по окончанию преобразования, то необходимо обязательно описать процедуру обработки данного прерывания.
6.2 Описание лабораторной установки
Лабораторная работа выполняется в индивидуальном порядке. На каждом рабочем месте должны быть установлены: многофункциональный лабораторный макет на базе микроконтроллера AVR ATMEGA 128, ПЭВМ типа IBM PC/AT c инсталлированным программным обеспечением: операционной системой MS–WINDOWS v. 9x, 2000, XP, программатором на основе кросс-компилятора языка программирования C CodeVision AVR, утилитой Terminal для работы с последовательным интерфейсом RS232C. Задания выполняются на лабораторном макете на базе 8-разрядного микроконтроллера AVR ATMEGA 128, к 0-му выводу порта F которого подключен аналоговый датчик температуры Analog Devices TMP–35. Данный термодатчик обладает следующими характеристиками: Диапазон рабочих напряжений: 2,7 – 5,5 В. Диапазон измеряемых температур: - 40°С - +125°С. Погрешность измерений: ± 2°С Масштабирующий коэффициент: 10 мВ/1°С. Для функционирования термодатчика используется схема подключения, изображенная на рисунке 6.4. Уровень логического нуля на входе переводит выход термодатчика в высокоимпедансное состояние. Если отключение термодатчика в процессе работы системы не предусматривается, то вход подключается к выводу VREF. Дополнительно в работе используется кабель с 9-контактными разъемами DB-9 (см. рисунок 1.8) для соединения лабораторного макета с ПЭВМ через последовательный интерфейс RS232C.
Рисунок 6.4 – Схема подключения датчика температуры TMP–35 к лабораторному макету
Измерение температуры (в °С) с помощью термодатчика TMP–35 выполняется путем преобразования оцифрованного значения входного напряжения (по отношению к лабораторному макету) по следующей формуле:
, (6.1)
где – значение входного напряжения, – величина опорного напряжения; – напряжение смещения (500 мВ).
6.3 Порядок проведения работы и указания по ее выполнению
Перед началом выполнения практической части лабораторной работы проводится экспресс–контроль знаний по принципам функционирования модуля АЦП, входящего в состав микроконтроллера AVR ATMEGA 128. При подготовке к лабораторной работе необходимо составить предварительный вариант листинга программы, в соответствии с индивидуальным заданием (см. таблицу 6.3). Задание: разработать в среде программирования Code Vision AVR программу на языке С для измерения значений температуры с помощью термодатчика Analog Devices TMP–35 в соответствии с параметрами режима работы, приведенными в таблице 6.3. Порядок выполнения задания: 1. Включить лабораторный макет (установить выключатель электропитания в положение I, и убедиться в свечении индикатора электропитания красным цветом). 2. Запустить компилятор Code Vision AVR. 3. Создать пустой проект. 4. Создать файл ресурса для кода программы и подключить его к проекту. 5. Ввести код исходного модуля программы для считывания данных с модуля АЦП. 6. Выполнить компиляцию (нажав клавишу F9) исходного модуля программы и устранить ошибки, полученные на данном этапе. 7. Настроить параметры программатора. 8. Создать загрузочный модуль программы (нажав комбинацию клавиш Shift+F9) и выполнить программирование микроконтроллера. 9. Проверить работоспособность, загруженной в микроконтроллер программы, и показать результаты работы преподавателю. 10. В случае некорректной работы разработанной программы, выполнить аппаратный сброс микроконтроллера, провести отладку исходного модуля программы и заново проверить функционирование программы, повторив выполнение пункта 9.
Пример выполнения задания:разработать программу для передачи данных о температуре в ПЭВМ по интерфейсу RS232C: режим работы АЦП – непрерывное преобразование, значение делителя частоты – 128; если величина температуры превысит 27°С, то выдать сигнал предупреждения с помощью включения светодиода. Решение:исходя из параметров режима работы модуля АЦП необходимо настроить регистры ADCSRA и ADMUX,настроить порт D на вывод данных и погасить все светодиоды, инициализироватьмодуль USART1, в цикле считывать данные из регистра ADCW, вычислять значения температуры по формуле 6.1, выводить их в регистр UDR1 и анализировать величину температуры для формирования сигнала предупреждения. Алгоритм программы приводится на рисунке 6.5, полный текст исходного модуля программы на языке С с подробными комментариями приводится ниже: #include <mega128.h> подключить заголовочный файл mega128.h; #include <delay.h> подключить заголовочный файл delay.h; #define VREF 2560L задание константы ; #define OFFSET 500L задание константы ; int a;описание глобальной переменной а; int read_adc() { описание подпрограммы считывания данных int result; из модуля АЦП и вычисления значения result = ADCW; температуры по формуле 6.1; result=((result*VREF)/1024 –OFFSET)/10; return result; } main() { основная часть программы; DDRD=0xFF;установка всех линий порта D в режим вывода дан- PORTD=0xFF;ных и выключение всех светодиодов; инициализация модуля АЦП ADMUX=0b11000000; используется внутренний источник опорного напряжения UREF (2.56 В); оцифровывание данных, поступающих по 0-му входному каналу; ADCSRA=0b11101111;запуск модуля АЦП в режиме непрерывного преобразования, делитель частоты равен 128; инициализация модуля USART1: UCSR1A=0x00;установка стандартного режима задания скорости передачи данных; UCSR1B=0x08;установка 3-го бита регистра UCSR1B для инициализации USART1 в режиме передатчика; UCSR1C=0x06;установка формата кадра: 8 бит данных с отклю ченным режимом четности; UBRR1H=0x00;установка значения делителя (35), соответствующего UBRR1L=35;скорости приемаданных 19200 бит/с; while (1) { организовать цикл с бесконечным числом итераций; a=read_adc(); получить новое значение температуры; delay_ms(100); установить временную задержку 100 мс; UDR1=a;выполнить передачу значения температуры по интерфейсу RS232C в ПЭВМ; if (a>27) PORTD.1=0; зажечь 1-й светодиод блока индикации, если значение else PORTD.1=1; } температуры превышает 27°С; } завершающая операторная скобка программы;
Таким образом, программа будет осуществлять измерение температуры и передавать данные в ПЭВМ по интерфейсу RS232C, а также формировать сигнал предупреждения о повышении температуры на величину более 27°С. Данные, передаваемые в ПЭВМ, будут фиксироваться предварительно запущенной программой Terminal с соответствующими настройками протокола обмена данными.
Рисунок 6.5 – Алгоритм программы передачи данных о температуре из микроконтроллера AVR ATMEGA 128 в ПЭВМ по интерфейсу RS232C с формированием сигнала предупреждения при повышении температуры
Таблица 6.4 – Варианты индивидуальных заданий
Продолжение таблицы – 6.4
* задания повышенной сложности.
Содержание отчета В отчете необходимо привести следующее: – характеристики лабораторной вычислительной системы; – исходный модуль разработанной программы; – анализ полученных результатов и краткие выводы по работе, в которых необходимо отразить особенности использования встроенного в микроконтроллер модуля АЦП для измерения аналоговых величин.
Контрольные вопросы и задания 1. Поясните принцип работы встроенного в микроконтроллер 2. Назовите основные управляющие регистры АЦП, встроенного в микроконтроллер, и поясните их функции. 3. Поясните принцип измерения температуры с помощью термодатчика. 4. Для чего применяется выравнивание результата по левой или правой границе слова? 5. Поясните возможности передачи данных о температуре в ПЭВМ. 6. Поясните возможность отображения данных о температуре на экране цифрового индикатора Holtek НТ1613, рассмотренного в лабораторной работе № 3.
РЕКОМЕНДУЕМАЯ ЛИТЕРАТУРА
1. Евстифеев А.В. Микроконтроллеры AVR семейств Tiny и Mega фирмы ATMEL. – М.: Изд. дом Додэка-ХХI, 2004. – 560 с. 2. Голубцов М.С., Кириченкова А.В. Микроконтроллеры AVR: от простого к сложному.- М.: СОЛОН-Пресс, 2004. – 304 с. 3. Баранов В.Н. Применение микроконтроллеров AVR: схемы, алгоритмы, программы.- М.: Издательский дом “Додэка-XXI”, 2004. – 288 с. 4. http://www.atmel.ru/ – описание микроконтроллеров фирмы ATMEL на русском языке.
|