Šajā projektā mēs gatavojamies izveidot ugunsgrēka trauksmes sistēmu, izmantojot ATMEGA8 mikrokontrolleru un uguns sensoru. Ugunsdzēsības sensors var būt jebkura veida, tomēr mēs izmantojam uz IR (infrasarkano) balstītu ugunsdrošības sensoru. Lai gan uz IR balstītiem ugunsdrošības sensoriem ir daži trūkumi, galvenokārt ar neprecizitāti, tas ir lētākais un vienkāršākais veids, kā atklāt uguni.
Uz IR balstītiem ugunsdrošības sensoriem ir mazāka redzamība, tāpēc uguns sensoru uzstādīsim uz servomotora. Servo rotēs svārsta rotācijas 180 grādos. Kad uz tā ir uzstādīts uguns sensors, mēs iegūstam 270+ grādu uguns uztverošu redzējumu. Servo rotē nepārtraukti, tādējādi nodrošinot pilnīgu ugunsgrēka trauksmes sistēmu telpā. Lai iegūtu lielāku precizitāti, mēs varam pievienot dūmu sensoru sistēmai. Ar to mēs varētu iegūt lielāku precizitāti.
Ķēdes komponenti
Aparatūra: + 5v barošanas avots, servomotors (sg90), ATMEGA8, BUZZER, poga, 10KΩ rezistors, 1KΩ rezistors, 220Ω rezistors, 100nF kondensators, AVR-ISP PROGRAMMER.
Programmatūra: Atmel studio 6.1, progisp vai flash magic.
Shēmas diagramma un darbība
Lai servo vārpsta varētu pārvietoties pa kreisi, mums jādod 1/18 pagrieziena devas, un, lai vārpsta pagrieztos pa kreisi, mums jādod PWM ar darba devu 2/18. Mēs plānosim ieprogrammēt ATMEGA8, lai dotu PWM signālu, kas pēc noteikta kavēšanās pagriezīs servo vārpstu uz 180 un pēc tam uz 0.
Visā laikā uguns sensors būs ieslēgts, un kontrolieris būs pilnīgā trauksmē. Ja ir ugunsgrēks, sensors nodrošina augstu impulsu, kad kontrolieris to atklāj, un tas nosaka trauksmi. Modinātājs tiks izslēgts, nospiežot tam pievienoto atiestatīšanas pogu.
Atmega8 trim PWM kanāliem mēs esam norādījuši trīs tapas. Mēs varam uzņemt PWM izvadi tikai pie šīm tapām. Tā kā mēs izmantojam PWM1 mums jāņem PWM signālu OC1A pin (PORTB 1 st PIN). Kā parādīts ķēdes shēmā, mēs savienojam servo signālu ar OC1A tapu. Šeit cita lieta ir vairāk nekā trīs PWM kanāli, divi ir 8 bitu PWM kanāli un viens 16 bitu PWM kanāls. Mēs šeit izmantosim 16 bitu PWM kanālu.
ATMEGA ir vairāki veidi, kā ģenerēt PWM
1. Fāzes pareizais PWM.
2. Ātra PWM.
Šeit mēs visu paturēsim vienkāršu, tāpēc PWM signāla ģenerēšanai izmantosim FAST PWM metodi.
Vispirms jāizvēlas PWM frekvence. Tas parasti ir atkarīgs no lietojuma, ja LED darbotos jebkura frekvence, kas lielāka par 50Hz. Šī iemesla dēļ mēs izvēlamies skaitītāja pulksteni 1MHZ. Tātad mēs neizvēlamies preskalāru. Preskalārs ir skaitlis, kas ir tik izvēlēts, lai iegūtu mazāku skaitītāja pulksteni. Piemēram, ja oscilatora pulkstenis ir 8Mhz, mēs varam izvēlēties preskalāru “8”, lai iegūtu 1MHz pulksteni skaitītājam. Preskalārs tiek izvēlēts, pamatojoties uz frekvenci. Ja mēs vēlamies vairāk laika periodu impulsu, mums jāizvēlas augstāks preskalārs.
Tagad, lai no ATMEGA iegūtu FAST PWM 50Hz pulksteni, mums ir jāiespējo atbilstošie biti “ TCCR1B ” reģistrā.
Šeit, CS10, CS11, CS12 (DZELTENS) - izvēlieties pirmsskalu, lai izvēlētos skaitītāju. Piemērotā preskalāra tabula ir parādīta zemāk esošajā tabulā. Tātad priekšskalēšanai viens (oscilatora pulkstenis = skaitītāja pulkstenis).
tātad CS10 = 1, pārējie divi biti ir nulle.
RED (WGM10-WGM13): tiek mainīti, lai ātrai PWM izvēlētos viļņu formas ģenerēšanas režīmus, pamatojoties uz zemāk esošo tabulu. Mums ir WGM11, WGM12 un WGM12 ir iestatīti uz 1.
Tagad mēs zinām, ka PWM ir signāls ar atšķirīgu darba devu vai atšķirīgu ieslēgšanas un izslēgšanas laiku. Līdz šim mēs esam izvēlējušies PWM biežumu un veidu. Šīs nodaļas galvenā tēma ir šajā sadaļā. Lai iegūtu atšķirīgu darba devu, mēs izvēlēsimies vērtību starp 0 un 255 (2 ^ 8 8 bitu dēļ). Pieņemsim, ka mēs izvēlamies vērtību 180, jo skaitītājs sāk skaitīt no 0 un sasniedz vērtību 180, var tikt aktivizēta izejas atbilde. Šis aktivizētājs var būt apgriezts vai nav apgriezts. Tas ir rezultāts, kuru var pateikt, sasniedzot skaitli, vai arī to var pateikt, lai sasniegtu skaitli.
ZAĻŠ (COM1A1, COM1A0): Šo atlasīšanas virzienu uz augšu vai uz leju izvēlas biti CM1A0 un CM1A1.
Kā parādīts tabulā, lai produkcija salīdzinātu augstu un izlaide paliktu augsta līdz maksimālajai vērtībai. Lai to izdarītu, mums jāizvēlas apgrieztais režīms, tāpēc COM1A0 = 1; COM1A1 = 1.
Kā parādīts attēlā, OCR1A (izejas salīdzināšanas reģistrs 1A) ir baits, kurā tiek saglabāta lietotāja izvēlētā vērtība. Tātad, ja mēs mainām OCR1A = 180, kontrolieris iedarbina izmaiņas (augstas), kad skaitītājs sasniedz 0 no 0.
OCR1A jābūt 19999-600 180 grādiem un 19999-2400 0 grādiem.