इस परियोजना में हम 1 वाट एलईडी की चमक को समायोजित करने के लिए ATmega32A की सुविधाओं में से एक का उपयोग करने जा रहे हैं । एलईडी की गति को समायोजित करने के लिए जिस विधि का उपयोग किया जाता है वह पीडब्लूएम (पल्स चौड़ाई मॉडुलन) है। यह AVR माइक्रोकंट्रोलर PWM ट्यूटोरियल PWM अवधारणा और PWM की पीढ़ी के बारे में विस्तार से बताता है (आप इस साधारण PWM जनरेटर सर्किट की जांच भी कर सकते हैं)। एक साधारण सर्किट पर विचार करें जैसा कि चित्र में दिखाया गया है।
अब यदि उपरोक्त आकृति में स्विच समय की अवधि में लगातार बंद रहता है तो उस दौरान बल्ब लगातार चालू रहेगा। यदि स्विच 8ms के लिए बंद है और 10ms के चक्र पर 2ms के लिए खोला गया है, तो बल्ब केवल 8 घंटे में चालू होगा। अब औसत टर्मिनल 10ms से अधिक की अवधि में = समय चालू करें / (समय चालू करें + बंद समय चालू करें), इसे कर्तव्य चक्र कहा जाता है और यह 80% (8 / (8 + 2)) है, इसलिए औसत आउटपुट वोल्टेज बैटरी वोल्टेज का 80% होगा।
दूसरे मामले में, स्विच 5ms के लिए बंद है और 10ms की अवधि में 5ms के लिए खोला गया है, इसलिए आउटपुट पर औसत टर्मिनल वोल्टेज बैटरी वोल्टेज का 50% होगा। यह कहें कि यदि बैटरी वोल्टेज 5V है और कर्तव्य चक्र 50% है, तो औसत टर्मिनल वोल्टेज 2.5V होगा।
तीसरे मामले में कर्तव्य चक्र 20% और औसत टर्मिनल वोल्टेज बैटरी वोल्टेज का 20% है।
ATMEGA32A में हमारे चार PWM चैनल हैं, जैसे OC0, OC1A, OC1B और OC2। यहां हम एलईडी की चमक को अलग करने के लिए OC0 PWM चैनल का उपयोग करने जा रहे हैं ।
अवयव आवश्यक
हार्डवेयर:
ATmega32 माइक्रोकंट्रोलर
बिजली की आपूर्ति (5v)
एवीआर-आईएसपी प्रोग्रामर
100uF संधारित्र, 1 वाट का एलईडी
TIP127 ट्रांजिस्टर
बटन (2 टुकड़े)
100nF (104) संधारित्र (2 टुकड़े), 100 और 1kΩ प्रतिरोधक (2 टुकड़े)।
सॉफ्टवेयर:
Atmel स्टूडियो 6.1
प्रोगिस्प या फ्लैश मैजिक
सर्किट आरेख और कार्य स्पष्टीकरण
उपरोक्त आंकड़ा AVR माइक्रोकंट्रोलर के साथ एलईडी डिमर के सर्किट आरेख को दर्शाता है (आप इस सरल एलईडी डिमर सर्किट की जांच भी कर सकते हैं)।
ATmega में, चार PWM चैनलों के लिए, हमने चार पिन निर्दिष्ट किए हैं। हम केवल इन पिनों पर ही PWM आउटपुट ले सकते हैं। चूंकि हम PWM0 का उपयोग कर रहे हैं इसलिए हमें OC0 पिन (PORTB 3 rd पिन) पर PWM सिग्नल लेना चाहिए । जैसा कि चित्र में दिखाया गया है कि हम पावर एलईडी ड्राइव करने के लिए ट्रांजिस्टर के आधार को OC0 पिन से जोड़ रहे हैं। यहां एक और बात चार पीडब्लूएम चैनलों पर है, दो 8-बिट पीडब्लूएम चैनल हैं। हम यहां 8-बिट PWM चैनल का उपयोग करने जा रहे हैं।
एक संधारित्र शेख़ी से बचने के लिए प्रत्येक बटन से जुड़ा हुआ है। जब भी कोई बटन दबाया जाता है तो पिन पर कुछ शोर होता है। हालांकि यह शोर मिलीसेकंड में स्थिर हो जाता है। नियंत्रक के लिए तेज चोटियों को स्थिरीकरण से पहले ट्रिगर के रूप में कार्य करता है। प्रोग्राम को सरल बनाने के लिए सॉफ्टवेयर या हार्डवेयर द्वारा इस प्रभाव को समाप्त किया जा सकता है। हम डिबगिंग कैपेसिटर को जोड़कर हार्डवेयर विधि का उपयोग कर रहे हैं।
कैपेसिटर बटन के उछलने के प्रभाव को कम करते हैं।
ATMEGA में PWM उत्पन्न करने के कुछ तरीके हैं, वे हैं:
1. चरण सही PWM
2. फास्ट पीडब्लूएम
यहां हम सब कुछ सरल रखने जा रहे हैं, इसलिए हम PWM सिग्नल उत्पन्न करने के लिए FAST PWM विधि का उपयोग करने जा रहे हैं ।
पीडब्लूएम की आवृत्ति को चुनने के लिए सबसे पहले, यह आमतौर पर एक एलईडी के लिए 50 हर्ट्ज से अधिक की आवृत्ति पर निर्भर करता है। इस कारण से हम काउंटर क्लॉक 1MHZ चुन रहे हैं। इसलिए हम कोई प्रिस्कलर नहीं चुन रहे हैं। एक प्रीस्कूलर एक संख्या है जिसे कम काउंटर घड़ी प्राप्त करने के लिए चुना जाता है। उदाहरण के लिए, यदि थरथरानवाला घड़ी 8Mhz है, तो हम काउंटर के लिए 1MHz घड़ी प्राप्त करने के लिए '8' के एक प्रस्तार को चुन सकते हैं। प्रीस्कूलर को आवृत्ति के आधार पर चुना जाता है। यदि हम अधिक समय अवधि की दाल चाहते हैं, तो हमें उच्चतर प्रिस्कूलर चुनना होगा।
अब ATMEGA से 50Hz घड़ी की FAST PWM प्राप्त करने के लिए, हमें " TCCR0 " रजिस्टर में उपयुक्त बिट्स को सक्षम करने की आवश्यकता है । यह एकमात्र रजिस्टर है जिसे हमें परेशान करने की आवश्यकता है, 8bit फास्ट पीडब्लूएम प्राप्त करने के लिए।
यहाँ, 1. CS00, CS01, CS02 (YELLOW) - काउंटर क्लॉक चुनने के लिए प्रीस्कूलर का चयन करें। उपयुक्त प्रीस्कूलर के लिए तालिका नीचे तालिका में दिखाई गई है। तो एक (थरथरानवाला घड़ी = काउंटर घड़ी) prescaling के लिए।
इसलिए CS00 = 1, अन्य दो बिट्स शून्य हैं।
2. WGM01and WGM00 को फास्ट पीडब्लूएम के लिए, नीचे दी गई तालिका के आधार पर, तरंग निर्माण मोड का चयन करने के लिए बदल दिया जाता है। हमारे पास WGM00 = 1 और WGM01 = 1 है;
3. अब हम जानते हैं कि पीडब्लूएम अलग-अलग ड्यूटी रेशियो या अलग-अलग टर्न ऑन टर्न ऑफ टाइम वाला सिग्नल है। अब तक हमने PWM की आवृत्ति और प्रकार को चुना है। इस परियोजना का मुख्य विषय इस खंड में है। अलग-अलग ड्यूटी अनुपात प्राप्त करने के लिए, हम 0 और 255 के बीच का मान चुनने जा रहे हैं (2 ^ 8 8 बिट के कारण)। मान लें कि हम एक मान 180 चुनते हैं, क्योंकि काउंटर 0 से गिनती शुरू करता है और मूल्य 180 तक पहुंचता है, आउटपुट प्रतिक्रिया शुरू हो सकती है। यह ट्रिगर inverting या non inverting हो सकता है। यह है कि आउटपुट को गिनती तक पहुंचने पर खींचने के लिए कहा जा सकता है, या इसे गिनती तक पहुंचने पर खींचने के लिए कहा जा सकता है।
ऊपर या नीचे खींचने का यह चयन CM00 और CM01 बिट्स द्वारा चुना गया है।
जैसा कि तालिका में दिखाया गया है, आउटपुट के लिए तुलना पर उच्च जाने के लिए और अधिकतम मूल्य तक आउटपुट उच्च रहेगा (जैसा कि नीचे चित्र में दिखाया गया है)। हमें ऐसा करने के लिए इनवर्टिंग मोड चुनना होगा, इसलिए COM00 = 1; COM01 = 1।
जैसा कि नीचे दिए गए आंकड़े में दिखाया गया है, OCR0 (आउटपुट तुलना रजिस्टर 0) वह बाइट है जो उपयोगकर्ता द्वारा चुने गए मूल्य को संग्रहीत करता है। इसलिए अगर हम OCR0 = 180 को बदलते हैं, तो नियंत्रक 0 से 180 तक पहुंचने पर परिवर्तन (उच्च) को ट्रिगर करता है।
अब एलईडी की चमक को अलग करने के लिए हमें PWM सिग्नल के DUTY RATIO को बदलना होगा। कर्तव्य अनुपात को बदलने के लिए, हमें OCR0 मान को बदलने की आवश्यकता है। जब हम OCR0 के इस मान को बदलते हैं, तो OCR0 तक पहुँचने के लिए काउंटर को अलग समय लगता है। इसलिए कंट्रोलर आउटपुट को अलग-अलग समय पर खींचता है।
इसलिए अलग-अलग ड्यूटी साइकल के PWM के लिए, हमें OCR0 मान को बदलने की आवश्यकता है।
सर्किट में हमारे पास दो बटन होते हैं। एक बटन OCR0 मान बढ़ाने के लिए है और इसलिए PWM सिग्नल के DUTY RATIO, अन्य OCR0 मान को कम करने के लिए है और इसलिए PWM सिग्नल के DUTY RATIO।