Tässä projektissa aiomme tehdä palohälytysjärjestelmän käyttämällä ATMEGA8-mikrokontrolleria ja paloanturia. Paloanturi voi olla mitä tahansa tyyppiä, mutta käytämme kuitenkin IR (Infrapuna) -pohjaista paloanturia. Vaikka IR-pohjaisilla paloantureilla on joitain haittoja, lähinnä epätarkkuuksista, se on halvin ja helpoin tapa havaita palo.
IR-pohjaisilla paloantureilla on heikompi havainnonäkö, joten aiomme asentaa paloanturin servomoottoriin. Servo pyörittää 180 astetta heiluria. Kun siihen on asennettu paloanturi, saamme yli 270 asteen palotunnistavan näön. Servo pyörii jatkuvasti, mikä antaa täydellisen huoneen palohälytysjärjestelmän. Tarkkuuden lisäämiseksi voimme lisätä savunilmaisimen järjestelmään. Sen avulla saisimme paremman tarkkuuden.
Piirikomponentit
Laitteisto: + 5v virtalähde, servomoottori (sg90), ATMEGA8, BUZZER, painike, 10KΩ vastus, 1KΩ vastus, 220Ω vastus, 100nF kondensaattori, AVR-ISP-OHJELMOINTI.
Ohjelmisto: Atmel studio 6.1, progisp tai flash magic.
Piirikaavio ja työskentely
Jotta servoakseli siirtyisi vasemmalle, meidän on annettava 1/18 kierrosta annoksen ja akselin pyöriessä vasemmalle meidän on annettava PWM: lle 2/18-käyttöarvo. Aiomme ohjelmoida ATMEGA8: n antamaan PWM-signaalin, joka kiertää servoakselin 180: een ja sitten 0: een tietyn viiveen jälkeen.
Koko ajan paloanturi on päällä ja ohjain on täydellisessä hälytyksessä. Tulipalon sattuessa anturi antaa korkean pulssin, pulssi asettaa hälytyksen, kun ohjain havaitsee sen. Hälytys kytketään pois päältä painamalla siihen kytkettyä nollauspainiketta.
Kolmen PWM-kanavan atmega8: ssa olemme määrittäneet kolme nastaa. Voimme ottaa PWM-lähdön vain näillä nastoilla. Koska käytämme PWM1 meidän pitäisi ottaa PWM-signaalin OC1A tappi (PORTB 1 st PIN). Kuten piirikaaviossa on esitetty, yhdistämme servosignaalin OC1A-nastaan. Tässä toinen asia on yli kolme PWM-kanavaa, kaksi on 8-bittisiä PWM-kanavia ja yksi 16-bittinen PWM-kanava. Aiomme käyttää täällä 16-bittistä PWM-kanavaa.
ATMEGA: ssa on pari tapaa luoda PWM, ne ovat
1. Vaihe oikea PWM.
2. Nopea PWM.
Täällä pidämme kaiken yksinkertaisena, joten aiomme käyttää FAST PWM -menetelmää PWM-signaalin luomiseen.
Ensin valitaan PWM-taajuus, Tämä riippuu sovelluksesta yleensä, LEDille mikä tahansa yli 50 Hz: n taajuus. Tästä syystä valitsemme laskurin 1MHz. Esipalkka on luku, joka on valittu niin, että saadaan pienempi laskuri. Esimerkiksi, jos oskillaattorin kello on 8 MHz, voimme valita esiasteen '8' saadaksemme 1 MHz: n kellon laskurille. Esiasteikko valitaan taajuuden perusteella. Jos haluamme enemmän ajanjaksopulsseja, meidän on valittava korkeampi preskalaari.
Nyt, jotta 50 Hz: n kellon NOPEA PWM saadaan pois ATMEGA: sta, meidän on otettava käyttöön sopivat bitit “ TCCR1B ” -rekisterissä.
Tässä, CS10, CS11, CS12 (KELTAINEN) - valitse esikalkka laskurin valitsemiseksi. Taulukko sopivasta esikcalarista on esitetty alla olevassa taulukossa. Joten esilajittamiseen yksi (oskillaattorin kello = laskuri).
joten CS10 = 1, muut kaksi bittiä ovat nolla.
PUNAINEN (WGM10-WGM13): Muutetaan aaltomuotojen muodostustilojen valitsemiseksi alla olevan taulukon perusteella nopeaa PWM: ää varten. Meillä on WGM11, WGM12 ja WGM12 on asetettu arvoon 1.
Nyt tiedämme, että PWM on signaali, jolla on erilainen käyttösuhde tai eri käynnistyksen sammutusajat. Tähän asti olemme valinneet PWM: n taajuuden ja tyypin. Tämän luvun pääteema on tässä osiossa. Eri käyttöannoksen saamiseksi aiomme valita arvon välillä 0 ja 255 (2 ^ 8 8 bitin takia). Oletetaan, että valitsemme arvon 180, koska laskuri alkaa laskea 0: sta ja saavuttaa arvon 180, lähtövaste voidaan laukaista. Tämä liipaisin voi olla käänteinen tai ei käänteinen. Toisin sanoen tuotoksen voidaan kertoa vetävän ylöspäin, kun laskenta on saavutettu, tai sen voidaan kertoa vetävän alaspäin, kun laskenta saavutetaan.
VIHREÄ (COM1A1, COM1A0): Tämä ylös- tai alaspäin vedon valinta valitaan CM1A0- ja CM1A1-bitteillä.
Kuten taulukossa on esitetty, tuotos nousee korkealle vertailussa ja lähtö pysyy korkealla maksimiarvoon saakka. Meidän on valittava käänteinen tila sitä varten, joten COM1A0 = 1; COM1A1 = 1.
Kuten alla olevassa kuvassa on esitetty, OCR1A (Output Compare Register 1A) on tavu, joka tallentaa käyttäjän valitseman arvon. Joten jos muutamme OCR1A = 180, ohjain laukaisee muutoksen (korkea), kun laskuri saavuttaa 180 0: sta.
OCR1A: n on oltava 19999-600 180 astetta varten ja 19999-2400 0 astetta.