Побудова інфрачервоних детекторів руху

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

ВУЗ:
Національний університет Львівська політехніка
Інститут:
Не вказано
Факультет:
Не вказано
Кафедра:
Не вказано

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

Рік:
2024
Тип роботи:
Звіт до лабораторної роботи
Предмет:
Мікропроцесори в системах технічного захисту інформації

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

МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ «ЛЬВІВСЬКА ПОЛІТЕХНІКА» / Звіт до лабораторної роботи № 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 буде більшою за встановлені межі тоді включатиметься звукова чи світлова сигналізація.
Антиботан аватар за замовчуванням

17.03.2017 09:03-

Коментарі

Ви не можете залишити коментар. Для цього, будь ласка, увійдіть або зареєструйтесь.

Ділись своїми роботами та отримуй миттєві бонуси!

Маєш корисні навчальні матеріали, які припадають пилом на твоєму комп'ютері? Розрахункові, лабораторні, практичні чи контрольні роботи — завантажуй їх прямо зараз і одразу отримуй бали на свій рахунок! Заархівуй всі файли в один .zip (до 100 МБ) або завантажуй кожен файл окремо. Внесок у спільноту – це легкий спосіб допомогти іншим та отримати додаткові можливості на сайті. Твої старі роботи можуть приносити тобі нові нагороди!
Нічого не вибрано
0%

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

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

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

Admin

26.02.2023 12:38

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