V tomto projektu budeme vyrábět Fire Alert System pomocí mikrokontroléru ATMEGA8 a požárního senzoru. Požární čidlo může být jakéhokoli typu, ale používáme IR (infračervené) požární čidlo. Ačkoli IR senzory ohně mají některé nevýhody, zejména nepřesnosti, je to nejlevnější a nejjednodušší způsob detekce požáru.
Infračervené požární senzory mají menší snímací vidění, takže namontujeme požární senzor na servomotor. Servo bude otáčet o 180 stupňů kyvadlem. S namontovaným požárním senzorem získáme 270+ stupňů detekce ohně. Servo se bude otáčet nepřetržitě, což poskytne kompletní požární výstražný systém v místnosti. Pro větší přesnost můžeme do systému přidat kouřový senzor. S tím bychom mohli dosáhnout vyšší přesnosti.
Součásti obvodu
Hardware: Napájení + 5 V, Servomotor (sg90), ATMEGA8, BUZZER, Tlačítko, Rezistor 10KΩ, Rezistor 1KΩ, Rezistor 220Ω, Kondenzátor 100nF, PROGRAMÁTOR AVR-ISP.
Software: Atmel studio 6.1, progisp nebo flash magic.
Schéma zapojení a práce
Aby se servo hřídel pohyboval úplně doleva, musíme dát 1/18 zapínací poměr, a aby se hřídel otočil úplně doleva, musíme dát PWM s poměrem 2/18. Budeme programovat ATMEGA8 tak, aby vydával PWM signál, který po určité prodlevě otočí servo hřídel na 180 a poté na 0.
Po celou dobu bude zapnutý požární senzor a řídicí jednotka bude v plné pohotovosti. Pokud dojde k požáru, snímač poskytuje vysoký pulz, který při detekci řídicí jednotkou nastaví poplach. Budík se vypne stisknutím resetovacího tlačítka, které je k němu připojeno.
V atmega8 pro tři kanály PWM jsme určili tři piny. Výstup PWM můžeme přijímat pouze na těchto pinech. Protože používáme PWM1, měli bychom vzít PWM signál na pin OC1A (PORTB 1. PIN). Jak je znázorněno v schématu zapojení, připojujeme servo signál k pinu OC1A. Tady je další věc přes tři PWM kanály, dva jsou 8bitové PWM kanály a jeden 16bitový PWM kanál. Zde použijeme 16bitový PWM kanál.
V ATMEGA existuje několik způsobů, jak generovat PWM
1. Fázově správné PWM.
2. Rychlé PWM.
Zde budeme udržovat vše jednoduché, takže použijeme metodu FAST PWM ke generování signálu PWM.
Nejprve si vyberte frekvenci PWM. Závisí to obvykle na aplikaci, pro LED by byla jakákoli frekvence větší než 50 Hz. Z tohoto důvodu volíme hodiny 1MHZ. Nevybíráme tedy žádný prescalar. Prescalar je číslo, které je vybráno tak, aby získalo menší počitadlo hodin. Například pokud jsou hodiny oscilátoru 8Mhz, můžeme zvolit prescalar '8', abychom získali 1MHz hodiny pro čítač. Prescalar je vybrán na základě frekvence. Pokud chceme více pulzů časového období, musíme zvolit vyšší prescalar.
Nyní, abychom z ATMEGA dostali RYCHLÉ PWM 50Hz hodin, musíme povolit příslušné bity v registru „ TCCR1B “.
Tady, CS10, CS11, CS12 (ŽLUTÉ) - vyberte předkallar pro výběr počítadel. Tabulka pro příslušný předškolní systém je uvedena v následující tabulce. Takže pro přednastavení jednoho (hodiny oscilátoru = počítadlo hodin).
takže CS10 = 1, další dva bity jsou nulové.
ČERVENÁ (WGM10-WGM13): jsou změněny tak, aby volily režimy generování křivek na základě níže uvedené tabulky pro rychlé PWM. Máme WGM11, WGM12 a WGM12 jsou nastaveny na 1.
Nyní víme, že PWM je signál s různou pracovní dobou nebo různými časy zapnutí a vypnutí. Až dosud jsme zvolili frekvenci a typ PWM. Hlavní téma této kapitoly spočívá v této části. Pro získání různých pracovních dávek zvolíme hodnotu mezi 0 a 255 (2 ^ 8 kvůli 8 bitům). Řekněme, že zvolíme hodnotu 180, protože počitadlo začne počítat od 0 a dosáhne hodnoty 180, může být spuštěna výstupní odezva. Tato spoušť může být invertující nebo neinvertující. To znamená, že výstup lze říci, že se dosáhne po dosažení počtu, nebo se dá říci, že se dosáhne po dosažení počtu.
ZELENÁ (COM1A1, COM1A0): Tuto volbu tahání nahoru nebo dolů volí bity CM1A0 a CM1A1.
Jak je uvedeno v tabulce, výstup bude při porovnání vysoký a výstup zůstane vysoký až do maximální hodnoty. K tomu musíme zvolit invertující režim, takže COM1A0 = 1; COM1A1 = 1.
Jak je znázorněno na následujícím obrázku, OCR1A (Output Compare Register 1A) je bajt, který ukládá uživatelem zvolenou hodnotu. Takže pokud změníme OCR1A = 180, ovladač spustí změnu (vysokou), když čítač dosáhne 180 od 0.
OCR1A musí být 19999-600 pro 180 stupňů a 19999-2400 pro 0 stupňů.