Вход на сайт Навигация по сайту Любить и уважать Бонус-счастливчики
|
Содержимое файла ".doc" (без форматирования) Зміст Вступ ....................................................................................................................3 1 Розробка функціональної схеми системи ......................................................4 2 Розробка принципової схеми мікропроцесорної системи ...........................6 2.1 Мікроконтролер ATtiny2313 фірми Atmel .................................................6 2.2 Опис мікрофону із вбудованим підсилювачем…….………......................7 2.3 Опис принципової схеми ............................................................................10 3 Розробка програмного забезпечення ............................................................12 Висновки ............................................................................................................14 Перелік використаних джерел .........................................................................15 Додаток А ..........................................................................................................16 Додаток Б ...........................................................................................................20 Вступ В останній час спостерігається бурхливий розвиток енергозберігаючих технологій. В цих умовах виконання новорічних гірлянд на базі світлодіодів стає особливо перспективним. Основні переваги світлодіодних технологій: • Абсолютна нешкідливість для очей. У світлодіодах відсутнє ультрафіолетове і інфрачервоне випромінювання. • Практично відсутнє теплове випромінювання. Світлодіоди вібро та ударостійкі і не містять шкідливих для здоров'я речовин. • Світлодіоди мають величезний термін служби. • Висока економічність. Завдяки використанню сучасного мікроконтролера ATtiny2313 фірми Atmel з'являється можливість створення дешевої системи автоматичного керування світлодіодами обо світлодіодними гірляндами, що входять до складу прикрашень новорічної ялинки. Основна мета курсового проекту – отримання практичних навичок в розробці апаратних та програмних засобів мікропроцесорної системи. У даному курсовому проекті потрібно було розробити автомат для керування світло діодами новорічної гірлянди на базі мікроконтролера ATtiny2313. 1 Розробка функціональної схеми системи Функціональна схема реалізованої системи включає слідуючі пристрої: 1. Мікроконтролер ATtiny2313 фірми Atmel з тактовою частотою 4МГц застосовується для аналізу стану напруги на виході мікрофону. Мікрофон підключений до позитивного входу аналогового компаратора. До негативного входу аналогового компаратора підключено потенціометр для забезпечення потрібного порогу спрацьовування. Також контролер керує роботою світлодіодів за допомогою ШІМ. 2. Мікрофон генерує на виході напругу пропорційну гучності зовнішнього середовища. Опис функціонування мікропроцесорної системи (МПС): після подавання живлення на мікроконтролер він встановлює необхідні налаштування портів та переривань. Далі мікроконтролер за допомогою таймер-лічильника плавно вмикає непарний рядок світлодіодів у режимі ШІМ, після цього, також плавно вмикається парний рядок світлодіодів. Після часової затримки (1 сек) усі діоди плавно вимикаються. Далі МК очікує переривання від компаратора. Зміна рівня на компараторі перемикає світловий ефект в режимі кола. Функціональна схема приведена на рис. 1.1. Рис.1.1 – Функціональна схема автомата світлових ефектів 2 Розробка принципової схеми мікропроцесорної системи 2.1 Мікроконтролер ATtiny2313 фірми Atmel Загальний опис: ATtiny2313 — низько-споживаючий 8-бітний КМОП мікроконтролер з AVR RISC архітектурою. Виконуючи команди за один цикл, ATtiny2313 досягає продуктивності 1 MIPS при частоті заданого генератора 1 МГц, що дозволяє розробнику оптимізувати відношення споживання до продуктивності. AVR ядро поєднує багату систему команд і 32 робочих регістра загального призначення. Всі 32 регістра безпосередньо пов’язані з арифметикою-логічним пристроєм (АЛП), що дозволяє отримати доступ до двох незалежним регістрам при виконанні однієї команди. В результаті ця архітектура дозволяє забезпечити в десятки разів більшу продуктивність, ніж стандартна CISC архітектура. ATtiny2313 має наступні характеристики: 2 КБ програмованої в системі Flash пам’ять програми, 128-байтову EEPROM пам’ять даних, 128-байтне SRAM (статичний ОЗП), 18 ліній введення-виведення загального застосування, 32 робочих регістра загального призначення, однодротовий інтерфейс для вбудованого відладчика, два гнучких таймера / лічильника зі схемами порівняння, внутрішні та зовнішні джерела переривання, послідовний програмуємий USART, універсальний послідовний інтерфейс з детектором стартового умови, програмуємий сторожовий таймер з вбудованим генератором і три програмно ініціалізуємих режиму зниженого споживання. У режимі Idle зупиняється ядро, але ОЗУ, таймери / лічильники і система переривань продовжують функціонувати. У режимі Power-Down регістри зберігають своє значення, але генератор зупиняється, блокуючи всі функції приладу до наступного переривання або апаратного скидання. У Standby режимі задає генератор працює, у той час як інша частина приладу бездіяльності. Це дозволяє дуже швидко запустити мікропроцесор, зберігаючи при цьому в режимі бездіяльності потужність. Прилад виготовлений з високо-щільній енергонезалежній технології виготовлення пам’яті компанії Atmel. Вбудована ISP Flash дозволяє перепрограмувати пам’ять програми в системі через послідовний інтерфейс SPI або звичайним програматором енергонезалежній пам’яті. Об’єднавши в одному кристалі 8-бітне RISC ядро з самопрограмуємою Flash пам’яттю, ATtiny2313 став потужним мікроконтролером, що дає більшу гнучкість розробнику мікропроцесорних систем. Блок-схема та розміщення виводів ATtiny2313 представлені на рисунках 2.2 та 2.1 відповідно. Рис. 2.1 — Розташування виводів ATtiny2313 ATtiny2313 підтримується різними програмними засобами та інтегрованими засобами розробки, такими як компілятори C, макро-асемблери, програмні відладчики, симулятори, внутрісхемні емулятори й ознайомлювальні набори. 2.2 Вибір типу мікрофона Найбільш відповідним за ціною та масогабаритним характеристикам є елекретний мікрофон. Електретний мікрофон - різновид конденсаторного мікрофона. Рис. 2.2 — Блок-схема ATtiny2313 [2] Принцип дії електретного конденсаторного мікрофона заснований на здатності деяких діелектричних матеріалів (електрети) зберігати поверхневу неоднорідність розподілу заряду протягом тривалого часу. На відміну від динамічних мікрофонів, які мають низький електричний опір котушки (~ 50Ом 1 кОм), електретний мікрофон має надзвичайно високий імпеданс (що має ємнісний характер, порядку десятків пФ), що змушує підключати їх до підсилювачів з високим вхідним опором. У конструкцію практично всіх електретних мікрофонів входить предпідсилювач (перетворювач опору, согласовувач імпедансу) на польових транзисторах, рідше на мініатюрних радіолампах з вхідним опором близько 1 ГОм і вихідним опором у сотні Ом, що знаходиться в безпосередній близькості від капсуля. Тому, незважаючи на відсутність необхідності в поляризуючей напрузі, такі мікрофони вимагають зовнішнього джерела електроживлення. Електретні мікрофони широко застосовуються в радіоелектронних приладах і системах. Володіючи високою чутливістю, малими спотвореннями і широким діапазоном частот, малою вагою і габаритами, вони вигідно відрізняються від динамічних мікрофонів підвищеною стійкістю до ударних перевантажень і механічних вібрацій. Ця якість робить кращим їх використання на транспорті і переносний апаратурі. Застосування динамічних мікрофонів виправдовує себе у випадках, коли потрібна знижена чутливість в дальньої зоні від мікрофона, наприклад в естраді на сцені. В даний час у продажу є безліч недорогих динамічних мікрофонів різної якості. Вони, як правило, не містять вбудованого підсилювача і це може створити труднощі при стикуванні з аудіоапаратурою, що не має мікрофонного входу. Вибираємо мікрофон F9445AL фірми JLI Electronics Inc, який розрахований на напругу живлення 5 В. Принципова схема електретного мікрофона наведена на рис.2.3. Рис. 2.3 – Принципова схема електретного мікрофона микрофона F9445AL 2.3 Опис принципової схеми З основними елементами світлодіодної гірлянди ми визначилися у попередньому розділі. Як видно зі схеми на рисунку 2.4 мікроконтролер ATtiny2313 є центральним управляючим елементом. До 20-го піну підводиться живлення 5 В, попередньо стабілізоване за допомогою стабілізатора 78L05, що дає змогу використовувати різні джерела живлення. Щоб відфільтрувати скачки напруги використовуємо конденсатори ємністю 0,1 мкФ. До виводів XTAL1 та XTAL2 підключаємо кварцовий резонатор на 4 МГц для стабілізації частоти. Мікрофон підключен до піну 0 порта В . Reset підтягуємо до джерела живлення за допомогою резистора. Рис.2.4 – Принципова схема автомата світлових ефектів 3 Розробка програмного забезпечення На основі сформованої блок-схеми, яка представлена на рисунку 3.1, пишемо програму, що забезпечує функціонування світлодіодної гірлянди. Код програми, що забезпечує роботу мікроконтролера, наведений у додатках А та Б. Рис.3.1 — Блок-схема програми Висновки В результаті виконання курсового проекту було розроблено автомат керування світло діодами, що входять до складу новорічної гірлянди на основі мікроконтролеру ATtiny2313. Відміною рисою цього пристрою є керування світловими ефектами за допомогою акустичних сигналів. Була розроблена функціональна та принципова схеми пристрою, а також програмний алгоритм функціювання схеми. Пристрій функціонує без ускладнень і помилок. Перелік використаних джерел 1. www.123avr.com. 2. www.atmel.com. 3. http://pol-sem.narod.ru/muson/muson.htm. 4. Мортон Джон. Микроконтроллеры AVR. Вводный курс. М.: Додэка-ХХI, 2006. Додаток А //#include "hardware.h" #include #include //#include //Объявление глобальных переменных unsigned char data_1; //Данные eeprom unsigned char flag_tc_1; //Флаг прерывания по 1-му таймер счетчику unsigned char port_state; //Переменная для анализа состояния порта unsigned long int data_recive; //Переменная для приема общей команды ПДУ unsigned char i; //Переменная для организации цикла (счетчик) unsigned char k; //Переменная для организации цикла (счетчик) void eeprom_write(unsigned char adr_h,unsigned char data_d) //Функция записи данных в eeprom (адрес adr_h а данные data_d) { while (EECR&0x02) { } { EEAR=adr_h; EEDR=data_d; EECR=0x04; EECR=0x06; } } void eeprom_read(unsigned char adr_h) //Функция чтения данных из eeprom (адрес adr_h, данные в data_1) { while (EECR&0x02) { } { EEAR=adr_h; EECR=0x01; data_1=EEDR; } } void ports_init(void) //Функция инициализации портов { DDRB=0xfc; //Порт b настроен на вывод PORTB=0xfc; DDRD=0x70; //Пин d0, d1,d2 на вввод, остальные на вывод PORTD=0x70; //d5=1 d6=1 } //Функция инициализации 1-го таймер-счетчика void start_tc(unsigned char data_h,unsigned char data_l) //Старт 1-го таймер счетчика, data_h, data_l - величина задержки { TCNT1L=0; //Начальное состояяние счетчика TCNT1H=0; //Начальное состояяние счетчика OCR1AH=data_h; //0xf4 (1 сек при 4 мГц кварце OCR1AL=data_l; //0x24 TIMSK=0x40; //Разрешение прерывания по совпадению (1< TCCR1B=0x01|0x08; //clk-0x01, /8 - 0x02, /64 - 0x03 0/256 - x04 /1024 - 0x05 flag_tc_1=0x00; } void stop_tc(void) //Останов 1-го таймер счетчика { TCNT1L=0; TCNT1H=0; TIMSK=0x00; TCCR1B=0x00; } void ana_comp_int(void) //Активация прерывания по перепаду на входе компараторе { ACSR=0x08; } void inter_activ(void) //Функция инициализации прерывания по INT_0 и INT_1 { MCUCR=0x0a; // Настройка прерываний INT0 и INT_1 по падающему фронтуся GIMSK=0xc0; } void pwm(void) //Фукция плавного включения светодиодов с ШИМ { unsigned char pwm_sped; unsigned char cik_1; pwm_sped=0x2f; //Задаем число уровней ШИМ (скорость изменения яркости) cik_1=1; flag_tc_1=0x00; while(cik_1 { PORTD=PORTD&0x0f; //Включение лампы start_tc(cik_1,0x00); //Запуск таймер-счетчика для организации временнной задержки while (flag_tc_1==0x00) {} stop_tc(); //Отанов таймер-счетчика PORTD=PORTD|0x70; //Выключение лампы start_tc(pwm_sped-cik_1,0x00); while (flag_tc_1==0x00) {} stop_tc(); cik_1++; } PORTD=PORTD&0x0f; } void pwm_off(void) //Фукция плавного выключения светодиодов с ШИМ { unsigned char pwm_sped; unsigned char cik_1; cik_1=1; pwm_sped=0x2f; flag_tc_1=0x00; while(cik_1 { PORTD=PORTD|0x70; start_tc(cik_1,0x00); while (flag_tc_1==0x00) {} stop_tc(); PORTD=PORTD&0x0f; start_tc(pwm_sped-cik_1,0x00); while (flag_tc_1==0x00) {} stop_tc(); cik_1++; } PORTD=PORTD|0x70; } //Обработка прерываний #pragma vector=INT0_vect //Обработка прерывания по INT0 __interrupt void INT0(void) { PORTD=PORTD|0x70; //выключение лампы eeprom_write(0,0); //запись состояния лампы в энергонезависимую память } #pragma vector=INT1_vect //Обработка прерывания по INT1 __interrupt void INT1(void) { PORTD=PORTD&0x0f; //включение лампы eeprom_write(0,1); //запись состояния лампы в энергонезависимую память } #pragma vector=TIMER1_COMPA_vect //Обработка прерывания по совпадению ТС1 __interrupt void TIM1_COMPA(void) { flag_tc_1=1; //Флаг прерывания } #pragma vector=ANA_COMP_vect //Обработка прерывания по компаратору __interrupt void ANA_COMP(void) { flag_tc_1=2; //Флаг прерывания от компаратора по перепаду } void main(void) { ports_init(); //Вызов функции инициализации портов port_state=0x00; //Начальное состояние регистра команды flag_tc_1=0x00; //Флаг прерывания по 1-му таймер-счетчику inter_activ(); //Активация внешних прерываний __delay_cycles(1000000); //Задержка для устранения переходных процессов eeprom_read(0x00); //Чтение состояния лампы из EEPROM port_state=data_1; if (port_state==0) { PORTD=PORTD|0x70; //выключение лампы } else if (port_state==1) { PORTD=PORTD&0x0f; //включение лампы } __enable_interrupt(); //sei(); //Разрешение прерываний ana_comp_int(); //Установка режима аналогового компаратора port_state=0x00; while(1) { port_state=ACSR&0x20; //Чтение состояния копаратора if (port_state==0x20) //Проверка (Если на выходе копаратора высокий уровень?) {pwm();__delay_cycles(500000);} //Запуск ШИМ на включение лампы и задержка для устранения дребезга else if (port_state==0) //Проверка (Если на выходе копаратора низкий уровень?) {pwm_off();__delay_cycles(500000);} //Запуск ШИМ на выключение лампы и задержка для устранения дребезга flag_tc_1=0; //Обнуление флага прерываний while (flag_tc_1==0) //Ожидание новых прерываний {} __delay_cycles(1000000); } //Переход к началу цикла } РТ81.000000.016ПЗ Арк. Дата Підпис № докум. Арк. Змн. |
Посетителей: 1, из них зарегестрированных: 0, гостей: 1 Зарегистрированные пользователи: Подробно | Страница сгенерирована за 0.0953 сек. |