Вивчення принципів роботи з вбудованим у мікроконтролер АНАЛОГО-ЦИФРОВИМ перетворювачем на прикладі виміру температури за допомогою аналогового термодатчика

Ціль роботи: вивчити принципи функціонування вбудованого в мікроконтролер AVR АТMEGA128 АЦП і методику виміру температури за допомогою аналогового термодатчика.

 

6.1 Вказівки по організації самостійної роботи

Перед роботою необхідно проробити теоретичний матеріал по літературі [1, 4] і конспект лекцій, ознайомитися принципами функціонування й можливостями програмування вбудованого в мікроконтролер AVR АТMEGA 128 АЦП, вивчити методику виміру температури за допомогою аналогового термодатчика.

До складу мікроконтролера AVR АТMEGA 128 входить 10-розрядний аналого-цифровий перетворювач (АЦП), що реалізує принцип послідовного наближення (див. рисунок 6.1). На вході модуля АЦП є 8-ми канальний аналоговий мультиплексор, керуючий перемиканням даних, що надходять із восьми каналів з несиметричними входами. Як джерело опорної напруги може виступати напруга від внутрішнього джерела UREF (2.56 В), напруга живлення мікроконтролера UCC, або зовнішнього джерела. Найбільша точність перетворення досягається при тактовій частоті модуля АЦП порядку 50 ¸ 200 кгц. Модуль АЦП може функціонувати в режимах одиночного й безперервного перетворень. Стандартне перетворення аналогового значення в цифрове за допомогою вбудованого АЦП виконується за 13 тактів, одиночне – за 25 тактів. Результат перетворення для каналів з несиметричним входом визначається з вираження:

,

де – значення вхідної напруги, – величина опорної напруги.

 

Рисунок 6.1 - Узагальнена структурна схема модуля АЦП

у мікроконтролері AVR АТMEGA 128

 

Для роботи з модулем АЦП використовуються наступні регістри:

ADCW (ADCH, ADCL) – 16-розрядний регістр даних, розташований за адресою 4h/24h. У регістрі використовується 12 розрядів, вирівняних по лівій або правій границі.

ADCSRA – регістр керування/статусу.

ADMUX – регістр керування мультиплексором вхідних каналів.

Формати й описи окремих бітів регістрів ADCSRA і ADMUX приводиться на рисунках 6.2, 6.3 і в таблицях 6.1, 6.2 відповідно.

 

№ біта                
06h (26h) ADEN ADSC ADFR ADIF ADIE ADPS2 ADPS1 ADPS0

Рисунок 6.2 - Регістр стану ADCSRA

Таблиця 6.1 – Опис значень керуючих бітів регістра ADCSRA

Розряд Позначення Опис
  ADEN Дозвіл роботи АЦП: 0 – вимк.; 1- вкл.
  ADSC Запуск перетворення (1 – почати перетворення)
  ADFR Вибір режиму роботи АЦП: 1 - режим безперервного перетворення, 0 - режим одиночного перетворення
  ADIF Прапор переривання (1 – відбулося переривання від АЦП). Скидається апаратно при переході на процедуру обробки переривання.
  ADIE Обмін по перериванню (1 – дозвіл переривання)
2 – 0 ADPS2- ADPS0 Керування переддільником тактової частоти АЦП
ADPS2 ADPS1 ADPS0 k
       
       
       
       
       
       
       
       

 

 

№ біта                
07h (27h) REFS1 REFS0 ADLAR MUX4 MUX3 MUX2 MUX1 MUX0

Рисунок 6.3 - Регістр стану ADMUX

 

Таблиця 6.2 - Опис значень керуючих бітів регістра ADMUX.

Розряд Позначення Опис
    7, 6     REFS1, REFS0 Вибір джерела опорної напруги (ДОН)
REFS1 REFS0 ДОН
    Зовнішній, AREF
    Напруга живлення UCC
    Зарезервовано
    Внутрішній (2,56 В), UREF
  ADLAR Вирівнювання 10-бітового результату по границі слова: 0 –по правій, 1 –по лівій.
4,3,2,1,0 MUX4 – MUX0 Керування мультиплексором вхідних каналів: при використанні несиметричних входів код на лініях MUX2–MUX0 відповідаєномеру каналу.

Відповідно до формату регістрів 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 - Варіанти індивідуальних завдань

№ п. п. Завдання
  Розробити програму, що виконує вимір температури в режимі одиночного перетворення (дільник частоти дорівнює 2) і формуюча сигнал попередження за допомогою блоку світлодіодів, якщо значення температури перевищить 30°С.
  Розробити програму, що виконує вимір температури в режимі безперервного перетворення (дільник частоти дорівнює 8) і формуюча сигнал попередження за допомогою блоку світлодіодів, якщо значення температури перевищить 40°С.
  Розробити програму, що виконує вимір температури в режимі одиночного перетворення (дільник частоти дорівнює 64) і формуюча сигнали попередження за допомогою блоку світлодіодів, якщо значення температури виходить за рамки діапазону 25°С < T < 30°С.
  Розробити програму, що виконує вимір температури в режимі безперервного перетворення (дільник частоти дорівнює 128) і формуюча сигнали попередження за допомогою блоку світлодіодів, якщо значення температури виходить за рамки діапазону 30°С < T < 40°С.
  Розробити програму, що виконує вимір температури в режимі безперервного перетворення (дільник частоти дорівнює 4) і формуюча сигнали попередження за допомогою блоку світлодіодів, якщо значення температури виходить за рамки діапазонів 25°С < T < 30°С та 40°С < T < 50°С.
  Розробити програму, що виконує вимір температури в режимі одиночного перетворення (дільник частоти дорівнює 32) і формуюча сигнали попередження за допомогою блоку світлодіодів, якщо значення температури виходить за рамки діапазонів 20°С < T < 25°С та 35°С < T < 40°С.
  Розробити програму, що виконує вимір температури в режимі безперервного перетворення (дільник частоти дорівнює 16) і формуюча сигнали попередження за допомогою цифрового індикатораHoltek НТ1613, якщо значення температури виходить за рамки діапазону 25°С < T < 35°С.
  Розробити програму, що виконує вимір температури в режимі безперервного перетворення (дільник частоти дорівнює 4) і формуюча сигнали попередження за допомогою блоку світлодіодів, якщо значення температури виходить за рамки діапазону 25°С < T < 40°С. Обробка даних відбувається по перериванню ADC_INT*.
  Розробити програму, що виконує вимір температури в режимі безперервного перетворення (дільник частоти дорівнює 8) і вивідного значення температури на цифровий індикаторHoltek НТ1613*.
  Розробити програму, що виконує вимір температури в режимі безперервного перетворення (дільник частоти дорівнює 32) і передавального значення температури в ПЕОМ за допомогою послідовного інтерфейсу RS232C.*

* завдання підвищеної складності.

 

Зміст звіту

У звіті необхідно привести наступне:

характеристики лабораторної обчислювальної системи;

вихідний модуль розробленої програми;

аналіз отриманих результатів і короткі виводи по роботі, у яких необхідно відбити особливості використання вбудованого в мікроконтролер модуля АЦП для виміру аналогових величин.

 

6.5 Контрольні питання й завдання

1. Поясніть принцип роботи вбудованого в мікроконтролер 10-розрядного АЦП.

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 на русском языке.

 

 

ДОДАТОК 1


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: