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

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

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

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

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

Рік:
2013
Тип роботи:
Звіт до лабораторної роботи
Предмет:
Мікропроцесори

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

МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ "ЛЬВІВСЬКА ПОЛІТЕХНІКА" ІНСТИТУТ КОМП’ЮТЕРНИХ ТЕХНОЛОГІЙ, АВТОМАТИКИ ТА МЕТРОЛОГІЇ КАФЕДРА ”ЗАХИСТ ІНФОРМАЦІЇ”  Звіт до лабораторної роботи № 3 з курсу: "Мікропроцесори в системах технічного захисту інформації" на тему: “Побудова інфрачервоних детекторів руху на AVR-мікроконтролерах” Варіант – 17 Мета роботи: Ознайомитись з будовою та принципом дії інфрачервоних детекторів руху і їх програмно-апаратною реалізацією на AVR-мікроконтролерах. Повний текст завдання: Домашня підготовка до роботи: Вивчити теоретичний матеріал. Вивчити основні властивості МК, принципи побудови інфрачервоних детекторів руху необхідні для виконання лабораторної роботи. Підготувати програму функціонування інфрачервоного детектора руху згідно індивідуального завдання у табл. 1. Коефіцієнт підсилення аналогових кіл прийняти рівним 1924. Виконання в лабораторії: Створити проект в AVR Studio, ввести свою програму, провести її асемблювання. В режимі покрокової відладки переконатися в правильності роботи програми. Відкрити файл LR_3.dsn в програмі Proteus, внести зміни у схему відповідно до свого індивідуального завдання, підключити до МК отриманий в AVR Studio hex-файл. Запустити режим симуляції схеми та перевірити правильність функціонування детектора у всіх режимах роботи. Табл. 1. № Тактова частота, МГц Період опитування АЦП Tadc, с Максимальний рівень шуму, мкВ Час встановлення PIR-давача Tset, с Час включення світлодіода Talarm, с Вивід МК для підключення світлодіода Виводи МК для підключення АЦП  17 10 0,17 320 32 35 PD1 PD2,3,4,5   Лістинг програми одержаної в AVR Studio та необхідні розрахунки: .nolist .include "2313def.inc" .list ;//////////////////Регістри для зберігання змінних///////////////////////// .def result_h = r16 ; Розряди D11-D8 поточного результату АЦП .def result_l = r17 ; Розряди D7-D0 поточного результату АЦП .def temp1 = r18 ; Проміжні результати .def temp2 = r19 ; Проміжні результати ; Регістри часової затримки .def Delay1 = r21 .def Delay2 = r22 .def Delay3 = r23 ;////////////////////////////////////////////////////////////////////////// ;//////////////////Виводи для підключення елементів схеми////////////////// ; АЦП .equ CS = PD4 ;PB6 .equ SCLK = PD3 ;PB5 .equ DOUT = PD5 ;PB7 .equ SHDN = PD2 ;PB4 .equ PORT_ADC = PORTD .equ DDR_ADC = DDRD .equ PIN_ADC = PIND ; Світлодіод .equ Led = PD1 .equ PORT_Led = PORTD .equ DDR_Led = DDRD .equ PIN_Led = PIND ;////////////////////////////////////////////////////////////////////////// ;///////////////////////////////Константи////////////////////////////////// ; Верхній поріг .equ VTR_P = 2552 ; VTR = (3.11568 * 4096)/5 ; Нижній поріг .equ VTR_N = 1543 ; VTR = (1.88432 * 4096)/5 ; Константа для задання періоду опитування АЦП таймером Т1 в режимі порівняння (DIV=64) .equ T_300ms = 26562 - 1 ; N = (FT * TADC / DIV) - 1 ; Константи для підпрограми часової затримки .equ T_4s = (10000000*4 - 15)/5 .equ T_3s = (10000000*3 - 15)/5 ;////////////////////////////////////////////////////////////////////////// ;///////////////////////////////Оголошення макросів//////////////////////// ; Макрос зчитування одного біту з АЦП МАХ1241 .MACRO BIT_READ sbi PORT_ADC, SCLK ; Сформувати передній фронт таткового імпульсу __| nop nop nop nop ; Затримка cbi PORT_ADC, SCLK ; Сформува задній фронт тактового імпульсу nop nop nop nop ; Затримка для встановлення біту на лінії DOUT in temp1, PIN_ADC ; Прочитати сигнали з виводів АЦП sbrc temp1, DOUT ; Якщо DOUT = 1 ori @0, @1 ; Занести 1 (параметр @1) у відповідний розряд регістра .ENDMACRO ; Макрос затримки на 10 мкс .MACRO Wait_4us rjmp PC+1 rjmp PC+1 rjmp PC+1 rjmp PC+1 rjmp PC+1 rjmp PC+1 rjmp PC+1 rjmp PC+1 .ENDMACRO ;////////////////////////////////////////////////////////////////////////// .listmac .cseg .org 0 rjmp RESET ; Вектор скиду .org 0x04 rjmp TIM_COMP1 ; Вектор переривання від таймера Т1 в режимі "Порівняння" .org 0x0B RESET: ; Основна програма ; Ініціалізація стеку ldi temp1, low(RAMEND) out SPL, temp1 ldi temp1, (1<<CS) out PORT_ADC, temp1 ; DOUT - вхід, #CS, DCLK, #SHDN - виходи ldi temp1, (1<<CS) | (1<<SCLK) | (1<<SHDN) ;| (1<<Led) out DDR_ADC, temp1 ;ldi temp1, (1<<Led) ;out PORT_Led, temp1 ;out DDR_Led, temp1 sbi PORT_Led, Led sbi DDR_Led, Led ; Затримка 32 секунди для встановлення PIR-давача (8 * 4 сек) ;ldi temp1, 8 ; Лічильник 4 секундних затримок Next_1: ; Задати затримку 4 сек ldi Delay1, low(T_4s) ldi Delay2, high(T_4s) ldi Delay3, byte3(T_4s) ; Виклик підпрограми часової затримки (4 сек) rcall Delay ;dec temp1 ; Зменшити лічильник на 1 ;brne Next_1 ; Якщо лічильник не нуль, перейти на мітку Next_1 ; Дозвіл переходу в режим пониженого енергоспож-ня (SЕ=1), встановити режим Idle (SM=0) ldi temp1, (1<<SE) out MCUCR, temp1 ; Занести в регістр порівняння таймера Т1 розраховану константу T_300ms ldi temp1, high(T_300ms) out OCR1AH, temp1 ; Спочатку занести старший байт ldi temp1, low(T_300ms) out OCR1AL, temp1 ; Потім молодший байт ; Дозволити переривання від таймера Т1 в режимі порівняння ldi temp1, (1<<OCIE1A) out TIMSK, temp1 ; Запустити таймер Т1, задати DIV=64, скидання TCNT1 в ноль при співпадінні ldi temp1, (1<<CTC1) | (1<<CS11) | (1<<CS10) out TCCR1B, temp1 ; Дозволити переривання sei Wait_Loop: sleep ; Перейти в режим пониженого енергоспоживання rjmp Wait_Loop ; Після пробудження від Т1, знову перейти в режим сну ;********************************************************************* TIM_COMP1: ; П/п обробки переривання від таймера Т1 в режимі порівняння ; Викликати п/п аналого-цифрового перетворення rcall ADC_CONV ; Обчислити |VTR+ - RESULT| ; Занести в temp2-temp1 значення верхнього порога ldi temp1, low(VTR_P) ldi temp2, high(VTR_P) ; Відняти від верхнього порога поточне значення АЦП (VTR+ - RESULT) sub temp1, result_l sbc temp2, result_h ; Якщо результат < 0, то сигнал АЦП перевищив верхній поріг і треба включити тривогу brlo Alarm ; Якщо VTR_P < RESULT перейти на мітку Alarm ; Якщо сигнал АЦП < VTR+ треба перевірити чи він не виходить за межі нижнього порогу ; Обчислити |VTR- - RESULT| ; Занести в temp2-temp1 значення нижнього порогу ldi temp1, low(VTR_N) ldi temp2, high(VTR_N) ; Відняти від нижнього порогу поточне значення АЦП (VTR- - RESULT) sub temp1, result_l sbc temp2, result_h ; Якщо результат >= 0, то сигнал АЦП менший нижнього порогу і треба включити тривогу brsh Alarm ; Якщо VTR_N > RESULT перейти на мітку Alarm ; Якщо сигнал не вийшов за межі порогів - виключити світлодіод і перейти в кінець п/п LL1: sbi PORT_LED, LED ; Виключити світлодіод rjmp End ; Перейти на мітку End ; Якщо виявлено порушника Alarm: clr temp1 ; temp1 = 0 out TCCR1B, temp1 ; Зупинити таймер Т1 ; Затримка на час включення світлодіоду 3 сек ldi Delay1, low(T_3s) ldi Delay2, high(T_3s) ldi Delay3, byte3(T_3s) cbi PORT_LED, LED ; Включити світлодіод rcall Delay ; Почекати 3 сек sbi PORT_LED, LED ; Виключити світлодіод ; Включити таймер Т1 з попередніми параметрами ldi temp1, (1<<CTC1) | (1<<CS11) | (1<<CS10) out TCCR1B, temp1 End: reti ; Вихід з п/п обслуговування переривання ;********************************************************************* ADC_CONV: ; П/п аналого-цифрового перетворення для МАХ1241 ; Вивести АЦП з режиму ShutDown (#SHDN = 1) sbi PORT_ADC, SHDN ; Почекати > 10 мкс, поки АЦП перейде в робочий режим Wait_4us Wait_4us Wait_4us Wait_4us Wait_4us Wait_4us Wait_4us Wait_4us Wait_4us ; Очистити регістри результату clr result_h clr result_l ; Почати перетворення - подати на лінію #CS логічний 0 cbi PORT_ADC, CS nop nop nop ; Затримка для встановлення сигналу на лінії DOUT ; Чекати завершення перетворення - поки лінія DOUT не стане рівна 1 EOC: sbis PIN_ADC, DOUT ; Пропустити наступну команду, якщо DOUT = 1 rjmp EOC ; Якщо DOUT = 0 - продовжити чекати ; Зчитати результат перетворення ; Старші 4 біти результату - в регістр result_h BIT_READ result_h, 0b00001000 ; Розряд D11 BIT_READ result_h, 0b00000100 ; Розряд D10 BIT_READ result_h, 0b00000010 ; Розряд D9 BIT_READ result_h, 0b00000001 ; Розряд D8 ; Молодші 8 біт результату - в регістр result_l BIT_READ result_l, 0b10000000 ; Розряд D7 BIT_READ result_l, 0b01000000 ; Розряд D6 BIT_READ result_l, 0b00100000 ; Розряд D5 BIT_READ result_l, 0b00010000 ; Розряд D4 BIT_READ result_l, 0b00001000 ; Розряд D3 BIT_READ result_l, 0b00000100 ; Розряд D2 BIT_READ result_l, 0b00000010 ; Розряд D1 BIT_READ result_l, 0b00000001 ; Розряд D0 ; Завершити перетворення (лінія #CS = 1) sbi PORT_ADC, CS ; Перевести АЦП в режим ShutDown (лінія # SHDN = 0) cbi PORT_ADC, SHDN ret ; Вихід з підпрограми ;********************************************************************* Delay: ; Підпрограма часової затримки subi Delay1, 1 ; Зменшити регістри Delay3-Delay2-Delay1 на 1 sbci Delay2, 0 sbci Delay3, 0 brcc Delay ; Поки результат >= 0 продовжити віднімати 1 nop ; Затримка на 1 такт ret ; Вихід з підпрограми ;********************************************************************* Схема симуляції в Proteus:  Висновок: Виконавши лабораторну роботу ми ознайомились з принципами роботи інфрачервоних детекторів руху і їх реалізацією на AVR-мікроконтролерах. Розширили навики створення та відладки програмно-апаратних засобів на основі мікроконтролерів сімейства AVR у програмах AVR Studio та Proteus 7. Також виконуючи дану роботу ми ознайомились з принципами оцифровування аналогових сигналів, та роботою аналогово-цифрових перетворювачів на прикладі АЦП MAX 1241, та управління роботою програми за допомогою внутрішніх таймерів-лічильників, що використовуються для лічби, порівняння та ін.
Антиботан аватар за замовчуванням

12.02.2013 22:38

Коментарі

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

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

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

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

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

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

Admin

26.02.2023 12:38

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