DevioLabавтоматичне керування капіталом
ПРАЦЮЄ 24/7
КРИПТОВАЛЮТИ · АКЦІЇ · 10 БІРЖ

Портфель, який керується автоматично

DevioLab підбирає стратегії, відстежує ринки та автоматизує купівлю і продаж активів. Кількість доступних криптовалют, акцій і торгових можливостей зростає щодня.

10підключених біржCrypto + Stocksв одному портфелі24/7автоматичний контроль

Звіт до лабораторної роботи № 3: Побудова інфрачервоних детекторів руху на AVR-мікроконтролерах

Інформація про навчальний заклад

ВУЗ:
Національний університет Львівська політехніка
Інститут:
Інститут комп’ютерних технологій, автоматики та метрології
Факультет:
Комп’ютерні науки
Кафедра:
Кафедра програмного забезпечення

Інформація про роботу

Рік:
2017
Тип роботи:
Звіт до лабораторної роботи
Предмет:
Програмування
Група:
КН-1
Коротко про документ

Про що ця робота

У звіті досліджено побудову та принцип дії інфрачервоних детекторів руху на базі AVR-мікроконтролерів. Наведено апаратно-програмну реалізацію на мові C в середовищі CodeVisionAVR та результати симуляції в Proteus.

У роботі розглядаються

  • Мікроконтролери AVR
  • Інфрачервоні детектори руху
  • Програмування на мові C
  • Аналого-цифрове перетворення
  • Симуляція в Proteus
  • CodeVisionAVR

Зміст і розділи

  1. Мета роботи
  2. Завдання
  3. Розрахунок меж роботи детектора руху
  4. Лістинг програми
  5. Схема симуляції в Proteus
  6. Висновок
Для кого:Студенти технічних спеціальностей та виші
Викладачі:Викладач кафедри

Ключові поняття

детектора рухуАЦПCodeVisionAVRProteusперериванняпоріг спрацюванняініціалізаціянапруга

Частина тексту файла (без зображень, графіків і формул):

МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ «ЛЬВІВСЬКА ПОЛІТЕХНІКА» / Звіт до лабораторної роботи № 3 Побудова інфрачервоних детекторів руху на AVR - мікроконтролерах з навчальної дисципліни: “ Технології програмування ” Варіант № 16 Мета роботи - ознайомитись з побудовою та принципом дії інфрачервоних детекторів руху і їх апаратно-програмною реалізацією на AVR - мікроконтролерах. Завдання 1. Домашня підготовка до роботи Вивчити теоретичний матеріал. Вивчити основні властивості мікроконтролера AT90S2313. принципи побудови інфрачервоних детекторів руху необхідні для виконання лабораторної роботи. Підготовити програму функціонування інфрачервоного детектора руху на мові С згідно індивідуального завдання у таблиці 1. Коефіцієнт підсилення аналогових кіл прийняти рівним 1924. Таблиця 1 № Тактова частота МК, МГц Період опитування АЦП TADC, с Максимальний рівень шуму, мкВ Час встановлення RIP – давача TSet, с Час включення світлодіода TAlarm, с Вивід МК для підключення світлодіода Виврди МК для підключення АЦП  16 9 0,16 290 29 4,5 PD0 PB2,3,4,5   2. Виконати в лабораторії Створити проект в CodeVisionAVR C Compiler, ввести свою програму на мові С, провести її компіляцію. Переконатися в правильності роботи програми, перевірити дотримання заданих в завданні часових параметрів та умов спрацювання. Відкрити файл LR_3.dsn у програмі Proteus, внести зміни у схему відповідно до свого індивідуального завдання, підключити до МК отриманий після компіляції в CodeVisionAVR C Compiler hex-файл та асемблерний файл. Запустити режим симуляції схеми та перевірити правильність функціонування детектора руху у всіх режимах роботи. Розрахунок меж роботи детектора руху VTriger = VNoise * KU = 290 мкВ * 1924 = 55796 мВ VTR- = VOffset - VTriger = 2,5 – 0,55796 = 1,94204 В VTR- = VOffset + VTriger = 2,5 + 0,55796 = 3,05796 В Лістинг програми #include <90S2313.h> #include <delay.h> #include <sleep.h> #include <stdint.h> //Виводи для підключення елементів схеми // АЦП #define CS 4 //PD4 #define SCLK 3 //PD3 #define DOUT 5 //PD5 #define SHDN 2 //PD2 #define PORT_ADC PORTD #define DDR_ADC DDRD #define PIN_ADC PIND // Підключення світлодіода #define PORT_LED PORTD #define DDR_LED DDRD #define PIN_LED PIND #define LED 0 // Період мигання світлодіоду в режимі порівняння DIV = 8 #define T_ADC 9374 // N = (FT * TADC / DIV) - 1 // Верхній поріг #define VTR_P 2284 // VTR = (2.7886 * 4096)/5 // Нижній поріг #define VTR_N 1811 // VTR = (2.2114 * 4096)/5 // Результат аналогово-цифрового перетворення int16_t result_ADC = 0; // Вектор переривання від таймера Т1 в режимі "Порівняння" interrupt [TIM1_COMP] void T1_COMP_ISR(void); // П/п аналого-цифрового перетворення uint16_t ADC_CONV(void); void Pin_Init( void ); void Timer_Init( void ); void System_Init(void ); void Run( void ); //Початок програми void main(void) { System_Init(); Run(); } // П/п обробки переривання від таймера Т1 в режимі порівняння interrupt [TIM1_COMP] void T1_COMP_ISR(void) { result_ADC = ADC_CONV(); if ((result_ADC > VTR_P) || (result_ADC < VTR_N)) { PORT_LED.LED = 0; TCCR1B = 0; TCNT1 = 0; delay_ms(4000); PORT_LED.LED = 1; TCCR1B = (1<<CS11) |(1<<CS10)| (1<<CTC1); } } // П/п аналого-цифрового перетворення для МАХ1241 uint16_t ADC_CONV(void) { uint8_t i; uint16_t data=0; // Почати перетворення - подати на лінію #CS логічний 0 PORT_ADC.CS = 0; delay_us(20); // Затримка для встановлення сигналу на лінії DOUT #asm("nop") #asm("nop") #asm("nop") while( PIN_ADC.DOUT == 0 ) {}; delay_us(20); for(i=0;i<12;i++) { data<<=1; PORT_ADC.SCLK = 1; #asm("nop"); #asm("nop"); #asm("nop") PORT_ADC.SCLK = 0; if( PIN_ADC.DOUT == 1 ) { data |= 1; } } PORT_ADC.CS = 1; return data; } void Pin_Init( void ) { //Ініціалізація виводів // DOUT - вхід, #CS, SCLK, #SHDN - виходи PORT_ADC.CS = 1; DDR_ADC.CS = 1; DDR_ADC.SCLK = 1; PORT_ADC.SCLK = 0; DDR_ADC.SHDN = 1; PORT_ADC.SHDN = 1; PORT_ADC.SHDN = 0; delay_us(20); PORT_ADC.SHDN = 1; DDR_ADC.DOUT = 0; PORT_LED.LED = 1; DDR_LED.LED = 1; } void Timer_Init( void ) { // Занести в регістр порівняння таймера Т1 розраховану константу T_300ms OCR1 = T_ADC; // Дозволити переривання від таймера Т1 в режимі порівняння TIMSK = (1<<OCIE1A); // Запустити таймер Т1, задати DIV=64, скидання TCNT1 в ноль при співпадінні TCCR1B = (1<<CS11) | (1<<CTC1)|(1<<CS10); } void System_Init(void ) { Pin_Init( ); //Затримка 15 секунд для встановлення PIR-давача delay_ms(5000); sleep_enable(); Timer_Init(); //Дозвіл переривань #asm("sei") } void Run( void ) { while(1) { idle(); } } Схема симуляції в Proteus / Висновок Під час виконання даної лабораторної роботи була розроблена програма функціонування інфрачервоного детектора руху на мові С, час встановлення RIP – давача. Якщо напруга на виході Analog_Out буде більшою за встановлені межі тоді включатиметься звукова чи світлова сигналізація.
Допоможи студентському архіву

Ми допомогли тобі — допоможи наступному студенту

Файл ще не обрано

Оголошення від адміністратора

Антиботан аватар за замовчуванням

Подякувати Студентському архіву довільною сумою

Admin

26.02.2023 12:38

Дякуємо, що користуєтесь нашим архівом!