इस परियोजना में, हम ATMEGA8 माइक्रोकंट्रोलर और फायर सेंसर का उपयोग करके एक फायर अलर्ट सिस्टम बनाने जा रहे हैं । फायर सेंसर किसी भी प्रकार का हो सकता है, हालाँकि हम IR (इन्फ्रारेड) आधारित फायर सेंसर का उपयोग कर रहे हैं । यद्यपि आईआर आधारित फायर सेंसर में ज्यादातर अशुद्धि के कुछ नुकसान हैं, लेकिन यह आग का पता लगाने का सबसे सस्ता और आसान तरीका है ।
IR बेस्ड फायर सेंसर में सेंसिंग विज़न कम होता है, इसलिए हम फायर सेंसर को सर्वो मोटर पर माउंट करने जा रहे हैं। सर्वो 180 डिग्री पेंडुलम घुमाव बना रहा है। इस पर लगे फायर सेंसर के साथ, हमें 270+ डिग्री फायर सेंसिंग विज़न मिलता है। इमदादी लगातार घूमता रहेगा और इस तरह एक पूरा कमरा फायर अलर्ट सिस्टम देगा। अधिक सटीकता के लिए हम सिस्टम में एक स्मोक सेंसर जोड़ सकते हैं। इससे हम उच्च सटीकता प्राप्त कर सकते हैं।
सर्किट घटक
हार्डवेयर: + 5 वी बिजली की आपूर्ति, सर्वो मोटर (sg90), ATMEGA8, BUZZER, बटन, 10K 1 रोकनेवाला, 1KΩ रोकनेवाला, 220Ω रोकनेवाला, 100nF संधारित्र, AVR-ISR PROGRAMMER।
सॉफ्टवेयर: Atmel स्टूडियो 6.1, progisp या फ़्लैश मैजिक।
सर्किट आरेख और कार्य
इमदादी शाफ्ट को ले जाने के लिए सभी दूर जाने के लिए हमें राशन पर 1/18 बारी देने की जरूरत है, और शाफ्ट के लिए बाईं ओर सभी तरह से घुमाने के लिए हमें 2/18 के ड्यूटी राशन के साथ पीडब्लूएम देने की जरूरत है। हम ATMEGA8 को PWM सिग्नल देने के लिए प्रोग्राम करने जा रहे हैं, जो एक निश्चित देरी के बाद सर्वो शाफ्ट को 180 और फिर 0 पर घुमाएगा।
पूरे समय के दौरान फायर सेंसर चालू रहेगा और नियंत्रक पूरी तरह से सतर्क रहेगा। यदि कोई आग है, तो सेंसर एक उच्च पल्स प्रदान करता है जब नियंत्रक द्वारा पता लगाया जाता है तो यह एक अलार्म सेट करता है। रीसेट बटन को दबाकर अलार्म बंद कर दिया जाएगा जो इससे जुड़ा हुआ है।
तीन PWM चैनलों के लिए atmega8 में, हमने तीन पिन निर्दिष्ट किए हैं। हम केवल इन पिनों पर ही PWM आउटपुट ले सकते हैं। चूंकि हम PWM1 का उपयोग कर रहे हैं इसलिए हमें OC1A पिन (PORTB 1 सेंट पिन) पर PWM सिग्नल लेना चाहिए । जैसा कि सर्किट आरेख में दिखाया गया है, हम सर्वो सिग्नल को OC1A पिन से जोड़ रहे हैं। यहां एक और बात तीन पीडब्लूएम चैनलों पर है, दो 8-बिट पीडब्लूएम चैनल और एक 16-बिट पीडब्लूएम चैनल हैं। हम यहां 16-बिट PWM चैनल का उपयोग करने जा रहे हैं।
ATMEGA में PWM उत्पन्न करने के कुछ तरीके हैं, वे हैं
1. चरण सही PWM।
2. फास्ट पीडब्लूएम।
यहां हम सब कुछ सरल रखने जा रहे हैं, इसलिए हम PWM सिग्नल उत्पन्न करने के लिए FAST PWM विधि का उपयोग करने जा रहे हैं।
पीडब्लूएम की आवृत्ति का चयन करने के लिए सबसे पहले, यह आवेदन पर निर्भर करता है, आमतौर पर एक एलईडी के लिए 50 हर्ट्ज से अधिक की आवृत्ति होती है। उस कारण से हम काउंटर क्लॉक 1MHZ का चयन कर रहे हैं। इसलिए हम कोई प्रीस्कूलर नहीं चुन रहे हैं। एक प्रीस्कूलर एक संख्या है जिसे कम काउंटर घड़ी प्राप्त करने के लिए चुना जाता है। उदाहरण के लिए, यदि थरथरानवाला घड़ी 8Mhz है, तो हम काउंटर के लिए 1MHz घड़ी प्राप्त करने के लिए '8' के एक प्रस्तार को चुन सकते हैं। प्रीस्कूलर को आवृत्ति के आधार पर चुना जाता है। यदि हम अधिक समय अवधि की दाल चाहते हैं, तो हमें उच्चतर प्रिस्कूलर चुनना होगा।
अब ATMEGA से 50Hz घड़ी की FAST PWM प्राप्त करने के लिए, हमें " TCCR1B " रजिस्टर में उपयुक्त बिट्स को सक्षम करने की आवश्यकता है ।
यहाँ, CS10, CS11, CS12 (पीला) - काउंटर घड़ी चुनने के लिए प्रीस्कूलर का चयन करें। उपयुक्त प्रीस्कूलर के लिए तालिका नीचे तालिका में दिखाई गई है। तो एक (थरथरानवाला घड़ी = काउंटर घड़ी) prescaling के लिए।
इसलिए CS10 = 1, अन्य दो बिट्स शून्य हैं।
RED (WGM10-WGM13): PWM के लिए नीचे दी गई तालिका के आधार पर वेवफॉर्म जनरेशन मोड को चुनने के लिए बदल दिया जाता है। हमारे पास WGM11, WGM12 और WGM12 1 हैं।
अब हम जानते हैं कि PWM अलग-अलग ड्यूटी राशन या अलग-अलग टर्न ऑन टर्न ऑफ टाइम वाला सिग्नल है। अब तक हमने PWM की आवृत्ति और प्रकार को चुना है। इस अध्याय का मुख्य विषय इस भाग में है। अलग-अलग ड्यूटी राशन पाने के लिए, हम 0 और 255 (8 की वजह से 2 ^ 8) के बीच एक मान चुनने जा रहे हैं। मान लें कि हम एक मान 180 चुनते हैं, क्योंकि काउंटर 0 से गिनती शुरू करता है और मूल्य 180 तक पहुंचता है, आउटपुट प्रतिक्रिया शुरू हो सकती है। यह ट्रिगर inverting या non inverting हो सकता है। यह है कि आउटपुट को गिनती तक पहुंचने पर खींचने के लिए कहा जा सकता है, या इसे गिनती तक पहुंचने पर खींचने के लिए कहा जा सकता है।
GREEN (COM1A1, COM1A0): ऊपर या नीचे खींचने का यह चयन CM1A0 और CM1A1 बिट्स द्वारा चुना जाता है।
जैसा कि तालिका में दिखाया गया है, आउटपुट के लिए तुलना पर उच्च जाने के लिए और अधिकतम मूल्य तक आउटपुट उच्च रहेगा। हमें ऐसा करने के लिए इनवर्टिंग मोड चुनना होगा, इसलिए COM1A0 = 1; COM1A1 = 1।
जैसा कि नीचे दिए गए आंकड़े में दिखाया गया है, OCR1A (आउटपुट तुलना रजिस्टर 1 ए) बाइट है जो उपयोगकर्ता द्वारा चुने गए मूल्य को संग्रहीत करता है। इसलिए यदि हम OCR1A = 180 बदलते हैं, तो नियंत्रक 0 से 180 तक पहुंचने पर परिवर्तन (उच्च) को ट्रिगर करता है।
OCR1A 180 डिग्री के लिए 19999-600 और 0 डिग्री के लिए 19999-2400 होना चाहिए।