У овом пројекту ћемо направити систем за дојаву пожара користећи АТМЕГА8 микроконтролер и сензор за пожар. Ватрогасни сензор може бити било које врсте, али ми користимо ИР (инфрацрвени) сензор пожара. Иако ИР сензори пожара имају неке недостатке, углавном због непрецизности, то је најјефтинији и најлакши начин за откривање ватре.
Ватрогасни сензори засновани на ИЦ-у имају слабији вид, па ћемо монтирати сензор пожара на серво мотор. Серво ће вртети клатно од 180 степени. Са уграђеним сензором пожара, добијамо визију осетљивости пожара од 270+ степени. Серво се непрекидно ротира, што даје комплетан систем упозорења на пожар у соби. За већу прецизност у систем можемо додати сензор дима. Уз то бисмо могли добити већу тачност.
Компоненте склопа
Хардвер: + 5в напајање, серво мотор (сг90), АТМЕГА8, БУЗЗЕР, тастер, 10КΩ отпорник, 1КΩ отпорник, 220Ω отпорник, 100нФ кондензатор, АВР-ИСП ПРОГРАМЕР.
Софтвер: Атмел студио 6.1, прогисп или фласх магиц.
Кружни дијаграм и рад
Да би се осовина сервоа померала улево, потребно је да дамо 1/18 окретаја, а да би се осовина ротирала скроз улево, треба да дамо ПВМ са односом дужине 2/18. Програмираћемо АТМЕГА8 да даје ПВМ сигнал који ће окретати серво вратило на 180, а затим на 0 након одређеног кашњења.
Током целог времена сензор пожара ће бити укључен, а контролер у потпуном упозорењу. Ако дође до пожара, сензор даје висок импулс овај импулс када га контролер детектује и поставља аларм. Аларм ће се искључити притиском на тастер за ресетовање који је повезан са њим.
У атмега8 за три ПВМ канала одредили смо три пина. Излаз ПВМ можемо узети само на овим пиновима. Будући да користимо ПВМ1, требало би да узмемо ПВМ сигнал на ОЦ1А пин (ПОРТБ 1. ст. ПИН). Као што је приказано на дијаграму кола, повезујемо серво сигнал на ОЦ1А пин. Овде је још једна ствар преко три ПВМ канала, два су 8-битна ПВМ канала и један 16-битни ПВМ канал. Овде ћемо користити 16-битни ПВМ канал.
У АТМЕГА постоји неколико начина за генерисање ПВМ-а
1. Фаза исправља ПВМ.
2. Брзи ПВМ.
Овде ћемо све поједноставити, па ћемо користити ФАСТ ПВМ методу за генерисање ПВМ сигнала.
Прво одаберите фреквенцију ПВМ-а. Ово обично зависи од примене, када ЛЕД диода ради било коју фреквенцију већу од 50Хз. Из тог разлога бирамо бројач 1МХЗ, тако да не бирамо преткалар. Прескалар је број који је одабран тако да добије мањи бројач сати. На пример, ако је такт осцилатора 8 МХз, можемо одабрати прескалар од '8' да добијемо такт од 1 МХз за бројач. Прескалар се бира на основу учесталости. Ако желимо више импулса у временском периоду, морамо одабрати виши предскалар.
Сада да бисмо из АТМЕГА-е избацили БРЗИ ПВМ од 50 Хз такта, морамо да омогућимо одговарајуће битове у регистру „ ТЦЦР1Б “.
Ево, ЦС10, ЦС11, ЦС12 (ЖУТО) - одаберите прескала за одабир бројача сата. Табела за одговарајући предкалар приказана је у доњој табели. Дакле, за предкалирање једног (осцилаторни сат = бројач).
па је ЦС10 = 1, друга два бита су нула.
ЦРВЕНИ (ВГМ10-ВГМ13): промењени су да бирају режиме генерисања таласних облика, на основу доње табеле, за брзи ПВМ. Имамо ВГМ11, ВГМ12 и ВГМ12 постављени су на 1.
Сада знамо да је ПВМ сигнал са различитим односом дужине или различитим временима УКЉУЧИВАЊА И ИСКЉУЧИВАЊА. До сада смо бирали фреквенцију и тип ПВМ-а. Главна тема овог поглавља лежи у овом одељку. Да бисмо добили другачији однос дужине, изабраћемо вредност између 0 и 255 (2 ^ 8 због 8 бита). Рецимо да одаберемо вредност 180, јер бројач почиње рачунати од 0 и достигне вредност 180, излазни одговор се може активирати. Овај окидач може бити инвертујући или неинвертујући. То је излаз који се може зауставити када се постигне бројање, или се може рећи да се повукао када се достигне бројање.
ЗЕЛЕНО (ЦОМ1А1, ЦОМ1А0): Овај избор повлачења нагоре или надоле бирају битови ЦМ1А0 и ЦМ1А1.
Као што је приказано у табели, да би излаз био висок при упоређивању и излаз ће остати висок до максималне вредности. Морамо изабрати начин инвертовања да бисмо то урадили, па је ЦОМ1А0 = 1; ЦОМ1А1 = 1.
Као што је приказано на доњој слици, ОЦР1А (Оутпут Цомпаре Регистер 1А) је бајт који чува вредност коју је изабрао корисник. Дакле, ако променимо ОЦР1А = 180, контролер покреће промену (високу) када бројач достигне 180 од 0.
ОЦР1А мора бити 19999-600 за 180 степени и 19999-2400 за 0 степени.