DevioLab CRYPTO TRADING AUTOMATION
LIVE
AUTOMATED CRYPTO TRADING • BINANCE
Автоматизуйте свій криптопортфель
Торгові боти DevioLab аналізують крипторинок, автоматично відкривають і закривають позиції та керують вашим портфелем на Binance 24/7.
CRYPTO 80 Bots
BINANCE Spot Trading
TRADING 24 / 7
Спробувати DevioLab
deviolab.com

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

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

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

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

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

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

МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ «ЛЬВІВСЬКА ПОЛІТЕХНІКА» / Звіт до лабораторної роботи № 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:55

Коментарі

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

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

Нічого не вибрано
0%

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

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

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

Admin

26.02.2023 12:38

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