Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Лаб2_ПЗА

.docx
Скачиваний:
13
Добавлен:
17.01.2020
Размер:
291.02 Кб
Скачать

МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ ХАРКІВСЬКИЙ НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ РАДІОЕЛЕКТРОНІКИ

Кафедра СТ

ЗВІТ з лабораторної роботи № 2 з дисципліни: «Периферійні засоби автоматики»

Варіант 3

Виконали: Перевірив:

ст. гр. АКТСІу -17-1 доц. каф. СТ

Черкашин В.А. Ребезюк Л. М.

Юрченко В.Р.

Харків 2019

2 ВИВЧЕННЯ ПРИНЦИПІВ ПРОГРАМНОГО УПРАВЛІННЯ 10-РОЗРЯДНИМ АЦП ІНТЕГРОВАНИМ У МІКРОКОНТРОЛЕР AVR ATMEGA 128 НА ПРИКЛАДІ ВИМІРЮВАННЯ ТЕМПЕРАТУРИ АНАЛОГОВИМ ТЕРМОДАТЧИКОМ TMP-36

2.1 Мета роботи

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

Розробити програму, що виконує вимірювання температури в режимі безперервного перетворення (дільник частоти дорівнює 8) і формує сигнал попередження за допомогою блоку світлодіодів, якщо значення температури перевищить 40°С.

2.2 Хід роботи

В ході виконання лабораторної роботи була написана програма, згідно якої на екран мікроконтролера AVR ATMega128 виводилось значення температури від підключеного до нього датчика температури ТМР-36.

Мікроконтролер ATMega128 містить 8–канальний 10–розрядний АЦП, який який реалізує АЦ перетворення за принципом послідовного наближення. На рисунку 4.1 виділені ключові піни (контакти виводів) мікроконтролера (МК), що повязані з обробкою аналогових сигналів.

Рисунок 2.1 – Виділені виводи мікроконтролера ATMega128, що повязані з обробкою аналогових сигналів

Рисунок 2.4 – Схема алгоритму управління 10-розрядним АЦП інтегрованим у мікроконтролер AVR ATMega128 на прикладі вимірювання температури аналоговим термодатчиком TMP-36 та виведення її на графічний РК-дисплей

#include <avr/io.h>

#include <util/delay.h>

#include <avr/interrupt.h>

#include "t6963c.h"

#include "graphic.h"

#include <stdio.h>

volatile uint16_t adcRes;

volatile uint8_t redrawRequired;

ISR(ADC_vect)

{

static uint8_t samplesNumber = 0;

if (redrawRequired == 0){

adcRes += ADC;

samplesNumber++;

if (samplesNumber == 32) {

adcRes = adcRes/32;

redrawRequired = 1;

}

} else {

samplesNumber = 0;

}

}

void barFrameDraw(){

GLCD_Rectangle(19, 43, 200, 10, 0);

GLCD_TextGoTo(2,7);

GLCD_WriteString("-10");

GLCD_TextGoTo(25,7);

GLCD_WriteString("100");

}

void drawBar(uint8_t height){

static uint8_t prevHeight = 0;

if (height > prevHeight){

GLCD_Rectangle(19, 44, height, 8, 1);

} else if (height < prevHeight) {

GLCD_ClearRectangle(19 + height, 44, prevHeight - height, 8, 1);

}

prevHeight = height;

}

void redrawDisplay(){

char textbuf[40];

if (redrawRequired == 1){

double vin = ((double)adcRes * 2.56)/1024;

int16_t temperature = (vin - 0.5 ) * 100;

if ((temperature <25 )||(temperature>30)){

PORTD = 0x00;

} else {PORTD = 0xFF;

}

sprintf(textbuf, "ADC:%4d V:%.3f Temp: %3d",adcRes, vin, temperature);

GLCD_TextGoTo(2,4);

GLCD_WriteString(textbuf);

uint16_t barHeight = ((10 + temperature)*200)/110;

drawBar(barHeight);

redrawRequired = 0;

adcRes = 0;

}

}

void adcInit(){

ADCSRA = (1<<ADEN | 1<<ADFR | 1<<ADIE | 0<<ADPS0| 1<<ADPS1| 1<<ADPS2);

ADMUX = (1<<REFS0 | 1<<REFS1);

}

void GLCDInit() {

GLCD_InitalizeInterface();

GLCD_Initalize();

GLCD_ClearGraphic();

GLCD_ClearText();

GLCD_ClearCG();

}

int main(void)

{

adcInit();

GLCDInit();

GLCD_TextGoTo(0,0);

GLCD_WriteString("ADC SAMPLE");

barFrameDraw();

DDRD = 0xFF;

PORTD = 0xFF;

sei();

ADCSRA |= 1<<ADSC;

while(1){

_delay_ms(600);

redrawDisplay();

ВИСНОВКИ

На лабораторній роботі були засвоєні принципи функціонування вбудованого в мікроконтролер AVR АТMEGA128 аналого-цифрового перетворювача (АЦП) та методику вимірювання температури за допомогою аналогового термодатчика. Також, була написана програма, що виконує вимірювання температури в режимі безперервного перетворення.

Мікроконтролер ATMega128 містить 8 – канальний 10- розрядний АЦП, який який реалізує АЦ перетворення за принципом послідовного наближення.

На вході модуля АЦП є 8-ми канальний аналоговий мультиплексор, який керує перемиканням даних, що надходять з восьми каналів з несиметричними входами. Як джерело опорної напруги може виступати напруга від внутрішнього джерела UREF (2,56 В), напруга живлення мікроконтролера UCC, або напруга від зовнішнього джерела. Найбільша точність перетворення досягається при тактовій частоті модуля АЦП близько 50...200 кГц. Модуль АЦП може функціонувати в режимах одиночного і безперервного перетворення. Стандартне безперервне перетворення аналогового значення в цифрове за допомогою вбудованого АЦП виконується за 13 тактів, одиночне – за 25 тактів.

Основні режими роботи АЦП – режим одиничного заміру (singleconversionmode) та режим послідовних замірів з автозапуском (free running mode). В режимі одиничного заміру АЦП після його запуску робить один замір та заносить результат у відповідний регістр, після чого вимикається, наступний замір почнеться тільки після того, як він буде запущений ядром МК. В режимі послідовних замірів з автозапуском кожен наступний замір (аналогово-цифрове перетворення) починається одразу після того, як завершено попереднє – запустивши АЦП один раз в такому режимі зупинити його можна тільки за допомогою вимкнення АЦП.

Соседние файлы в предмете Периферийные средства автоматики