विषयसूची:
- चरण 1: परियोजना के उद्देश्य
- चरण 2: प्रोग्रामिंग लचीलापन
- चरण 3: हार्डवेयर
- चरण 4: कीपैड इंटरप्ट करता है
- चरण 5: टाइमर का उपयोग करना
- चरण 6: मेनू स्क्रीन शॉट्स
- चरण 7: सिस्टम का डिज़ाइन
- चरण 8: बिजली की आपूर्ति
- चरण 9: सीपीयू बोर्ड
- चरण 10: फ़्लोकोड निष्कर्ष
- चरण 11: वैकल्पिक I2C रिले बोर्ड
- चरण 12: वैकल्पिक आरएफ लिंक
- चरण 13: अंतिम उत्पाद
वीडियो: 8 चैनल प्रोग्राम करने योग्य टाइमर: 13 कदम
2024 लेखक: John Day | [email protected]. अंतिम बार संशोधित: 2024-01-30 09:22
परिचय
मैं 1993 से अपनी परियोजनाओं के लिए माइक्रोचिप के माइक्रोकंट्रोलर की पीआईसी रेंज का उपयोग कर रहा हूं, और माइक्रोचिप एमपीलैब आईडीई का उपयोग करके अपनी सभी प्रोग्रामिंग असेंबलर भाषा में किया है। मेरी परियोजनाओं में साधारण ट्रैफिक लाइट और फ्लैशिंग एलईडी से लेकर आर/सी मॉडल के लिए यूएसबी जॉयस्टिक इंटरफेस और उद्योग में उपयोग किए जाने वाले स्विचगियर एनालाइजर शामिल हैं। विकास में कई दिन लगे, और कभी-कभी कोडांतरक कोड की हजारों लाइनें।
मैट्रिक्स मल्टीमीडिया फ्लोकोड 4 प्रोफेशनल प्राप्त करने के बाद, मुझे सॉफ्टवेयर पर काफी संदेह था। यह विश्वास करना बहुत आसान लग रहा था। मैंने इसे आजमाने का फैसला किया, और सभी अलग-अलग कंपोनेंट मैक्रोज़ का परीक्षण किया, सभी को बड़ी सफलता के साथ। फ़्लोकोड का उपयोग करने का सबसे अच्छा हिस्सा यह था कि साधारण परियोजनाओं को एक ही रात में कोडित किया जा सकता था। I²C और DS1307 रीयल टाइम क्लॉक के साथ खेलने के बाद, मैंने फ़्लोकोड का उपयोग करके 8 चैनल टाइमर को डिज़ाइन करने का निर्णय लिया। एक छोटा और आसान प्रोजेक्ट नहीं होने के कारण, मुझे विश्वास था कि फ़्लोकोड खुद को सिखाने के लिए यह एक बेहतरीन प्रोजेक्ट होगा।
माइक्रोप्रोसेसर और अन्य घटकों का चयन
आवश्यक I/O पिनों की संख्या के कारण, यह स्पष्ट था कि एक ४० पिन डिवाइस की आवश्यकता होगी। PIC 18F4520 को मुख्य रूप से इसकी 32K प्रोग्राम मेमोरी और 1536 बाइट्स डेटा मेमोरी के लिए चुना गया था। उपयोग किए गए सभी घटक मानक थ्रू-होल डिवाइस हैं, जिससे यदि आवश्यक हो तो वेरो बोर्ड पर सर्किट बनाना संभव हो जाता है। इसने ब्रेडबोर्ड पर विकास में भी सहायता की।
चरण 1: परियोजना के उद्देश्य
उद्देश्यों
- बैटरी बैक-अप के साथ सटीक समय कीपिंग।
- बिजली के नुकसान के बाद भी सभी कार्यक्रमों और डेटा को बरकरार रखा जाना है।
- सरल यूजर इंटरफेस।
- प्रोग्रामिंग लचीलापन।
समय रखना
बिजली की विफलता वाले क्षेत्र में रहना, बिजली लाइनों से मानक 50/60 हर्ट्ज सटीक समय रखने के लिए पर्याप्त नहीं होगा। एक वास्तविक समय घड़ी आवश्यक थी, और कई आरटीसी चिप्स का परीक्षण करने के बाद, मैंने DS1307 पर इसके सरल थरथरानवाला और बैटरी बैक-अप कॉन्फ़िगरेशन के कारण निर्णय लिया। DS1307 से जुड़े केवल 32.768 kHz क्रिस्टल का उपयोग करके काफी सटीक समय कीपिंग प्राप्त की गई थी। क्रिस्टल के 4 अलग-अलग रूपों का उपयोग करके 2 महीने की परीक्षण अवधि में सटीकता 2 सेकंड के भीतर थी।
डेटा प्रतिधारण
बिजली की विफलता के दौरान भी सभी टाइमर प्रोग्राम डेटा को बरकरार रखा जाना चाहिए। 100 विभिन्न कार्यक्रमों और विभिन्न कॉन्फ़िगरेशन डेटा के साथ, यह स्पष्ट हो गया कि PIC के ऑन-बोर्ड EEPROM के 256 बाइट्स पर्याप्त बड़े नहीं होंगे। एक 24LC256 I²C EEPROM का उपयोग सभी प्रोग्रामिंग सूचनाओं को संग्रहीत करने के लिए किया जाता है।
सरल यूजर इंटरफेस
यूजर इंटरफेस में केवल 2 आइटम होते हैं, एलईडी बैकलाइट के साथ 16 x 4 लाइन एलसीडी डिस्प्ले, और 4 x 3 कीपैड। सभी प्रोग्रामिंग केवल कुछ बटनों के प्रेस के साथ की जा सकती हैं। इंटरफ़ेस के अतिरिक्त एक श्रव्य पीजो बजर, और दृश्य चमकती एलसीडी बैकलाइट हैं।
चरण 2: प्रोग्रामिंग लचीलापन
पर्याप्त प्रोग्राम लचीलापन सुनिश्चित करने के लिए, टाइमर में 100 प्रोग्राम हैं जिन्हें व्यक्तिगत रूप से सेट किया जा सकता है। प्रत्येक कार्यक्रम के लिए, ऑन टाइम, ऑफ टाइम, आउटपुट चैनल और सप्ताह का दिन निर्धारित किया जा सकता है। प्रत्येक कार्यक्रम में तीन मोड होते हैं:
- ऑटो: ऑन टाइम, ऑफ टाइम, आउटपुट चैनल और सप्ताह का दिन निर्धारित है।
- बंद: सेटिंग्स को हटाए बिना व्यक्तिगत प्रोग्राम को अक्षम किया जा सकता है। कार्यक्रम को फिर से सक्षम करने के लिए, बस एक अलग मोड चुनें।
- दिन / रात: समय पर, बंद समय, आउटपुट चैनल और सप्ताह का दिन निर्धारित है। ऑटो मोड के समान काम करता है, लेकिन होगा
केवल अंधेरा होने पर आउटपुट को चालू और बंद समय के बीच चालू करें। यह पूरे दिन/रात नियंत्रण को भी सक्षम बनाता है
सूर्यास्त के समय रोशनी चालू करने और सूर्योदय के समय बंद करने के लिए अतिरिक्त लचीलेपन के रूप में।
उदाहरण १: २०:०० के बाद लाइट जलाएगा और सूर्योदय के समय लाइट बंद कर देगा।
पर: 20:00, बंद:12:00, उदाहरण २: सूर्यास्त के समय लाइट जलाएगा, और २३:०० बजे लाइट बंद कर देगा।
पर: 12:00
बंद: २३:००
उदाहरण ३: सूर्यास्त के समय प्रकाश चालू करेगा, और सूर्योदय के समय प्रकाश बंद कर देगा।
दिनांक: 12:01
बंद: 12:00
अतिरिक्त विकल्प उपलब्ध हैं, सभी 100 चालू/बंद कार्यक्रमों से स्वतंत्र रूप से काम कर रहे हैं।
प्रोग्राम चैनल सक्रिय: कई प्रोग्राम बंद करने के बजाय, अलग-अलग आउटपुट चैनल को प्रोग्राम को बदलने की आवश्यकता के बिना अक्षम किया जा सकता है।
सहायक इनपुट: दो डिजिटल इनपुट उपलब्ध हैं, जो कुछ आउटपुट चैनलों को एक विशिष्ट समय के लिए चालू करने की अनुमति देते हैं। उदाहरण के लिए, इसका उपयोग रात में देर से घर पहुंचने पर कुछ रोशनी को चालू करने के लिए किया जा सकता है, जब रिमोट पर एक बटन दबाया जाता है, या जब घर का अलार्म चालू होता है तो रोशनी के एक अलग सेर को चालू करने के लिए इस्तेमाल किया जा सकता है।
सहायक आउटपुट: दो अतिरिक्त आउटपुट (8 आउटपुट चैनलों के अलावा) उपलब्ध हैं। उन्हें कुछ आउटपुट चैनलों या डिजिटल इनपुट के साथ चालू करने के लिए प्रोग्राम किया जा सकता है। मेरी स्थापना में, मेरे पास मेरी सिंचाई को नियंत्रित करने वाले 6-8 आउटपुट हैं, जो 24V पर काम करता है। मैं सिंचाई प्रणाली के लिए 24V बिजली की आपूर्ति पर स्विच करने के लिए, सहायक आउटपुट में से एक को चालू करने के लिए चैनल 6-8 का उपयोग करता हूं।
मैनुअल ऑन: जब मुख्य स्क्रीन में, चैनल को मैन्युअल रूप से चालू या बंद करने के लिए बटन 1-8 का उपयोग किया जा सकता है।
चरण 3: हार्डवेयर
बिजली की आपूर्ति: बिजली की आपूर्ति में एक रेक्टिफायर, स्मूथिंग कैपेसिटर और अधिभार संरक्षण के लिए 1 एम्पियर फ्यूज होता है। इस आपूर्ति को तब 7812 और 7805 नियामक द्वारा नियंत्रित किया जाता है। 12V आपूर्ति का उपयोग आउटपुट रिले को चलाने के लिए किया जाता है, और अन्य सभी सर्किट 5V आपूर्ति से संचालित होते हैं। चूंकि 7805 रेगुलेटर 7812 रेगुलेटर के आउटपुट से जुड़ा है, कुल करंट 7812 रेगुलेटर के माध्यम से 1 amp तक सीमित होना चाहिए। इन नियामकों को उपयुक्त हीट सिंक पर माउंट करने की सलाह दी जाती है।
I²C बस: हालांकि फ़्लोकोड हार्डवेयर I²C नियंत्रण की अनुमति देता है, मैंने सॉफ़्टवेयर I²C कॉन्फ़िगरेशन का उपयोग करने का निर्णय लिया। यह पिन असाइनमेंट के अधिक लचीलेपन की अनुमति देता है। हालांकि धीमा (50 kHz), यह अभी भी हार्डवेयर I²C बस की तुलना में बहुत अच्छा प्रदर्शन करता है। DS1307 और 24LC256 दोनों इस I²C बस से जुड़े हैं।
रीयल टाइम क्लॉक (DS1307): स्टार्ट-अप के दौरान, RTC रजिस्टर 0 और 7 को यह निर्धारित करने के लिए पढ़ा जाता है कि इसमें वैध समय और कॉन्फ़िगरेशन डेटा है या नहीं। एक बार सेटअप सही हो जाने पर, RTC समय पढ़ा जाता है और PIC में लोड किया गया समय। यह एकमात्र समय है जब आरटीसी से समय पढ़ा जाता है। स्टार्टअप के बाद, RTC के पिन 7 पर 1Hz पल्स मौजूद रहेगा। यह 1Hz सिग्नल RB0/INT0 से जुड़ा है, और एक इंटरप्ट सर्विस रूटीन के माध्यम से, PIC समय हर सेकंड अपडेट किया जाता है।
बाहरी EEPROM: सभी प्रोग्राम डेटा और विकल्प बाहरी EEPROM पर संग्रहीत होते हैं। EEPROM डेटा स्टार्ट-अप पर लोड किया जाता है, और डेटा की एक प्रति PIC मेमोरी में संग्रहीत की जाती है। EEPROM डेटा केवल तभी अपडेट किया जाता है जब प्रोग्राम सेटिंग्स बदली जाती हैं।
दिन/रात सेंसर: एक मानक प्रकाश निर्भर प्रतिरोधी (एलडीआर) का उपयोग दिन/रात सेंसर के रूप में किया जाता है। चूंकि एलडीआर कई आकार और किस्मों में आते हैं, सभी समान प्रकाश स्थितियों के तहत विभिन्न प्रतिरोध मूल्यों के साथ, मैंने प्रकाश स्तर को पढ़ने के लिए एक एनालॉग इनपुट चैनल का उपयोग किया। दिन के साथ-साथ रात के स्तर समायोज्य हैं, और विभिन्न सेंसरों के लिए कुछ लचीलेपन की अनुमति देते हैं। कुछ हिस्टैरिसीस सेट करने के लिए, दिन और रात के लिए अलग-अलग मान सेट किए जा सकते हैं। स्थिति तभी बदलेगी जब प्रकाश का स्तर दिन के नीचे या रात के निर्धारित बिंदुओं से ऊपर 60 सेकंड से अधिक समय तक रहेगा।
एलसीडी डिस्प्ले: 4 लाइन, 16 कैरेक्टर डिस्प्ले का उपयोग किया जाता है, क्योंकि सभी डेटा को 2-लाइन डिस्प्ले पर प्रदर्शित नहीं किया जा सकता है। प्रोजेक्ट में कुछ कस्टम वर्ण शामिल हैं, जिन्हें LCD_Custom_Char मैक्रो में परिभाषित किया गया है।
सहायक इनपुट: दोनों इनपुट एनपीएन ट्रांजिस्टर के साथ बफर किए जाते हैं। +12v और 0V कनेक्टर पर भी उपलब्ध है, जिससे बाहरी कनेक्शन के लिए अधिक लचीले कनेक्शन की अनुमति मिलती है। एक उदाहरण के रूप में, रिमोट कंट्रोल रिसीवर को आपूर्ति से जोड़ा जा सकता है।
आउटपुट: सभी आउटपुट 12 वी रिले के माध्यम से सर्किट से विद्युत रूप से पृथक होते हैं। उपयोग किए गए रिले, 10 amps पर 250V AC के लिए रेट किए गए हैं। सामान्य रूप से खुले और सामान्य रूप से बंद संपर्कों को टर्मिनलों पर लाया जाता है।
कीपैड: उपयोग किया गया कीपैड 3 x 4 मैट्रिक्स कीपैड है, और PORTB:2..7 से जुड़ा है।
चरण 4: कीपैड इंटरप्ट करता है
मैं किसी भी कुंजी प्रेस पर PORTB इंटरप्ट ऑन चेंज इंटरप्ट का उपयोग करना चाहता था। इसके लिए, फ़्लोकोड में एक कस्टम इंटरप्ट बनाया जाना था, यह सुनिश्चित करने के लिए कि प्रत्येक कीपैड इंटरप्ट से पहले और बाद में PORTB दिशा और डेटा सही तरीके से सेट किया गया है। हर बार जब कोई बटन दबाया जाता है, या छोड़ा जाता है तो एक रुकावट उत्पन्न होती है। इंटरप्ट रूटीन केवल तभी प्रतिक्रिया करता है जब कोई कुंजी दबाया जाता है।
कस्टम इंटरप्ट
कोड सक्षम करें
पोर्टब = 0b00001110; ट्रिसब = 0b11110001;
intcon. RBIE = 1;
intcon2. RBIP = 1;
intcon2. RBPU = 1;
rcon. IPEN = 0;
हैंडलर कोड
अगर (इंटकॉन और (1 << आरबीआईएफ))
{एफसीएम_%एन ();
पोर्टब = 0b00001110;
ट्रिसब = 0b11110001;
Wreg = पोर्टब;
clear_bit (इंटकॉन, आरबीआईएफ);
}
समस्या मिली
एक रुकावट के दौरान, इंटरप्ट सर्विस रूटीन को किसी भी स्थिति में नहीं होना चाहिए, किसी भी अन्य मैक्रो को कॉल करना चाहिए जो कि बाकी प्रोग्राम में कहीं इस्तेमाल किया जा सकता है। यह अंततः स्टैक ओवरफ्लो समस्याओं को जन्म देगा, क्योंकि रुकावट उसी समय हो सकती है जब मुख्य कार्यक्रम भी उसी सबरूटीन में होता है। कोड संकलित होने पर इसे फ़्लोकोड द्वारा एक गंभीर त्रुटि के रूप में भी पहचाना जाता है।
GetKeyPadNumber के अंतर्गत कीपैड के कस्टम कोड में, Delay_us मैक्रो के लिए ऐसी कॉल होती है, जो स्टैक ओवरफ़्लो का कारण बनेगी। इसे दूर करने के लिए, मैंने Delay_us(10) कमांड को हटा दिया है, और इसे "wreg = porta" की 25 पंक्तियों से बदल दिया है। आदेश। यह आदेश PORTA को पढ़ता है, और इसके मूल्य को W रजिस्टर में रखता है, बस कुछ देरी पाने के लिए। यह आदेश असेंबलर movf porta, 0 के समान एक निर्देश के लिए संकलित किया जाएगा। परियोजना में उपयोग की जाने वाली 10MHz घड़ी के लिए, प्रत्येक निर्देश 400ns होगा, और 10us देरी प्राप्त करने के लिए, मुझे इनमें से 25 निर्देशों की आवश्यकता है।
चित्र 3 की दूसरी पंक्ति पर ध्यान दें: GetKeypadNumber कस्टम कोड, कि मूल देरी_स (10) कमांड को "//" के साथ अक्षम कर दिया गया है। इसके नीचे, मैंने अपना 25 “wreg = porta” जोड़ा है। एक नया 10us विलंब प्राप्त करने का आदेश देता है। Keypad_ReadKeypadNumber कस्टम कोड के अंदर किसी भी मैक्रोज़ को कॉल न किए जाने के साथ, कीपैड मैक्रो को अब इंटरप्ट सर्विस रूटीन के अंदर इस्तेमाल किया जा सकता है।
यह ध्यान दिया जाना चाहिए कि फ्लोकोड कीपैड और ईब्लॉक घटक इनपुट लाइनों पर मानक पुल-अप प्रतिरोधों का उपयोग नहीं करते हैं। इसके बजाय, यह 100K पुल-डाउन प्रतिरोधों का उपयोग करता है। विकास के दौरान कीपैड पर कुछ हस्तक्षेप पाए जाने के कारण, 100K प्रतिरोधों को 10K से बदल दिया गया था, और सभी 10K प्रतिरोधों को 1K5 से बदल दिया गया था। कीपैड का परीक्षण 200 मिमी के लीड के साथ सही ढंग से काम करने के लिए किया गया था।
चरण 5: टाइमर का उपयोग करना
सेटिंग्स में त्वरित परिवर्तन करने के लिए उपयोगकर्ता के लिए सभी आवश्यक जानकारी को इंगित करने के लिए सभी स्क्रीन सेट अप की गई हैं। लाइन 4 का उपयोग मेनू और प्रोग्राम विकल्पों के माध्यम से नेविगेशन में सहायता के लिए किया जाता है। सामान्य ऑपरेशन के दौरान कुल 22 स्क्रीन उपलब्ध हैं।
पंक्ति 1: समय और स्थिति
वर्तमान दिन और समय दिखाता है, उसके बाद स्थिति चिह्न दिखाता है:
ए - इंगित करता है कि ऑक्स इनपुट ए ट्रिगर किया गया था, और ऑक्स इनपुट ए टाइमर चल रहा है।
बी - इंगित करता है कि ऑक्स इनपुट बी ट्रिगर किया गया था, और ऑक्स इनपुट बी टाइमर चल रहा है।
सी - इंगित करता है कि औक्स आउटपुट सी चालू है।
डी - इंगित करता है कि औक्स आउटपुट डी चालू है।
} - दिन/रात सेंसर की स्थिति। यदि मौजूद है, तो इंगित करता है कि यह रात है।
लाइन 2: प्रोग्राम आउटपुट
उन चैनलों को दिखाता है जिन्हें विभिन्न कार्यक्रमों द्वारा चालू किया गया है। चैनल उनके आउटपुट नंबरों में प्रदर्शित होते हैं, और एक "-" इंगित करता है कि विशिष्ट आउटपुट चालू नहीं है। "प्रोग्राम आउटपुट एक्टिव" में अक्षम किए गए चैनल अभी भी यहां इंगित किए जाएंगे, लेकिन वास्तविक आउटपुट सेट नहीं किए जाएंगे।
लाइन 3: वास्तविक आउटपुट
दिखाता है कि कौन से चैनल विभिन्न कार्यक्रमों, ऑक्स इनपुट ए और बी, या उपयोगकर्ता द्वारा सेट किए गए मैन्युअल आउटपुट द्वारा चालू किए गए हैं। 0 दबाने से सभी मैन्युअल रूप से सक्रिय आउटपुट बंद हो जाएंगे, और औक्स आउटपुट ए और बी टाइमर रीसेट हो जाएंगे।
पंक्ति 4: मेनू और कुंजी विकल्प (सभी मेनू पर)
"*" और "#" कुंजियों के कार्य को इंगित करता है।
मध्य भाग इंगित करता है कि चयनित स्क्रीन के लिए कौन सी संख्यात्मक कुंजियाँ (0-9) सक्रिय हैं।
Aux Input A & B की इनपुट स्थिति को एक ओपन या क्लोज्ड स्विच आइकन के माध्यम से भी दिखाया जाता है।
कीपैड पर संबंधित कुंजी दबाकर आउटपुट को मैन्युअल रूप से चालू/बंद किया जा सकता है।
पूरे मेनू में, विभिन्न प्रोग्राम विकल्पों के माध्यम से नेविगेट करने के लिए स्टार और हैश कुंजियों का उपयोग किया जाता है। विकल्प सेट करने के लिए कुंजी 0-9 का उपयोग किया जाता है। जहां सिंगल स्क्रीन या प्रोग्रामिंग मेनू पर कई विकल्प उपलब्ध हैं, वहां विभिन्न विकल्पों के माध्यम से कदम उठाने के लिए हैश कुंजी का उपयोग किया जाता है। वर्तमान चयनित विकल्प हमेशा स्क्रीन के बाईं ओर ">" वर्ण द्वारा इंगित किया जाएगा।
0-9 समय मान दर्ज करें
1-8 चैनल चयन बदलें
14 36 स्टेप थ्रू प्रोग्राम, 1-स्टेप बैक, 4-स्टेप बैक 10 प्रोग्राम, 3-स्टेप फॉरवर्ड, 6-स्टेप फॉरवर्ड 10
कार्यक्रमों
1-7 सप्ताह के दिन निर्धारित करें। १=रविवार, २=सोमवार, ३=मंगलवार, ४=बुधवार, ५=गुरुवार, ६=शुक्रवार, ७=शनिवार
0 मुख्य स्क्रीन में, सभी मैन्युअल ओवरराइड और इनपुट A और इनपुट B टाइमर साफ़ करें। अन्य मेनू में, परिवर्तन
चयनित विकल्प
# मुख्य स्क्रीन में, सभी मैनुअल ओवरराइड, इनपुट ए और इनपुट बी टाइमर और प्रोग्राम आउटपुट को तब तक अक्षम कर देगा जब तक
अगली घटना।
* और 1 टाइमर को रीबूट करें
* और 2 सभी प्रोग्राम और विकल्प साफ़ करें, सेटिंग्स को डिफ़ॉल्ट पर पुनर्स्थापित करें।
* और 3 टाइमर को स्टैंडबाय में रखें। टाइमर को फिर से चालू करने के लिए, कोई भी कुंजी दबाएं।
किसी भी समय मान की गलत प्रविष्टियों के दौरान, एलसीडी बैकलाइट त्रुटि को इंगित करने के लिए 5 बार फ्लैश करेगा। साथ ही बजर भी बजने लगेगा। बाहर निकलें और अगला आदेश केवल तभी काम करेगा जब वर्तमान प्रविष्टि सही होगी।
एलसीडी प्रकाश
आरंभिक स्टार्ट-अप पर, LCD बैकलाइट 3 मिनट के लिए चालू रहेगी, जब तक कि:
- एक हार्डवेयर विफलता है (ईईपीरोम या आरटीसी नहीं मिला)
- आरटीसी में समय निर्धारित नहीं है
कीपैड पर किसी भी उपयोगकर्ता इनपुट पर एलसीडी बैकलाइट फिर से 3 मिनट के लिए चालू हो जाएगी। यदि एलसीडी बैकलाइट बंद है, तो कोई भी कीपैड कमांड पहले एलसीडी बैकलाइट को चालू करेगा, और दबाए गए कुंजी को अनदेखा कर देगा। यह सुनिश्चित करता है कि उपयोगकर्ता कीपैड का उपयोग करने से पहले एलसीडी डिस्प्ले को पढ़ने में सक्षम होगा। यदि औक्स इनपुट ए या ऑक्स इनपुट बी सक्रिय है तो एलसीडी बैकलाइट भी 5 सेकंड के लिए चालू हो जाएगी।
चरण 6: मेनू स्क्रीन शॉट्स
कीपैड का उपयोग करके, प्रत्येक विकल्प को आसानी से प्रोग्राम किया जा सकता है। छवियां कुछ जानकारी देती हैं कि प्रत्येक स्क्रीन क्या करती है।
चरण 7: सिस्टम का डिज़ाइन
सभी विकास और परीक्षण ब्रेडबोर्ड पर किए गए थे। सिस्टम के सभी वर्गों को देखते हुए, मैंने सिस्टम को तीन मॉड्यूल में तोड़ दिया। यह निर्णय मुख्य रूप से ईगल के मुक्त संस्करण की पीसीबी आकार सीमाओं (80 x 100 मिमी) के कारण था।
मॉड्यूल 1 - बिजली की आपूर्ति
मॉड्यूल 2 - सीपीयू बोर्ड
मॉड्यूल 3 - रिले बोर्ड
मैंने तय किया कि सभी घटकों को आसानी से प्राप्य होना चाहिए, और मैं सतह माउंट घटकों का उपयोग नहीं करना चाहता था।
आइए उनमें से प्रत्येक के माध्यम से चलते हैं।
चरण 8: बिजली की आपूर्ति
बिजली की आपूर्ति सीधे आगे है, और 12V और 5V के साथ CPU और रिले बोर्ड की आपूर्ति करती है।
मैंने अच्छे हीट सिंक पर वोल्टेज रेगुलेटर लगाए, और आपूर्ति के लिए ओवररेटेड कैपेसिटर का भी इस्तेमाल किया।
चरण 9: सीपीयू बोर्ड
एलसीडी स्क्रीन, कीपैड और रिले को छोड़कर सभी घटक सीपीयू बोर्ड पर लगे होते हैं।
आपूर्ति, दो डिजिटल इनपुट और लाइट सेंसर के बीच कनेक्शन को आसान बनाने के लिए टर्मिनल ब्लॉक जोड़े गए थे।
हैडर पिन/सॉकेट एलसीडी स्क्रीन और कीपैड के आसान कनेक्शन के लिए प्रावधान करते हैं।
रिले के आउटपुट के लिए, मैंने ULN2803 का उपयोग किया। इसमें पहले से ही सभी आवश्यक ड्राइविंग प्रतिरोधक और फ्लाईबैक डायोड शामिल हैं। इसने सुनिश्चित किया कि ईगल के मुफ्त संस्करण का उपयोग करके सीपीयू बोर्ड अभी भी बनाया जा सकता है। रिले दो ULN2803s से जुड़े हैं। निचला ULN2803 8 आउटपुट के लिए उपयोग किया जाता है, और शीर्ष ULN2803 दो सहायक आउटपुट के लिए उपयोग किया जाता है। प्रत्येक सहायक आउटपुट में चार ट्रांजिस्टर होते हैं। रिले से कनेक्शन हेडर पिन/सॉकेट के माध्यम से भी होते हैं।
PIC 18F4520 को एक प्रोग्रामिंग सॉकेट के साथ फिट किया गया था, ताकि PicKit 3 प्रोग्रामर के माध्यम से आसान प्रोग्रामिंग की अनुमति मिल सके।
ध्यान दें:
आप देखेंगे कि बोर्ड में अतिरिक्त 8 पिन आईसी है। शीर्ष आईसी एक पीआईसी 12F675 है, और एक डिजिटल इनपुट से जुड़ा है। यह पीसीबी डिजाइन के दौरान जोड़ा गया था। इससे डिजिटल इनपुट को प्री-प्रोसेस करना आसान हो जाता है। मेरे आवेदन में, डिजिटल इनपुट में से एक मेरे अलार्म सिस्टम से जुड़ा है। अगर अलार्म बजता है, तो मेरे घर में कुछ लाइटें चालू हैं। मेरे अलार्म सिस्टम को चालू करने और निरस्त्र करने से सायरन पर अलग-अलग बीप सुनाई देती है। PIC 12F675 का उपयोग करके, मैं अब आर्म/डिसर्म और एक वास्तविक अलार्म के बीच अंतर कर सकता हूं। 12F675 एक प्रोग्रामिंग सॉकेट से भी सुसज्जित है।
मैंने हेडर पिन/सॉकेट के माध्यम से I2C पोर्ट के लिए भी प्रावधान किया। यह बाद में रिले बोर्डों के काम आएगा।
बोर्ड में कुछ जंपर्स होते हैं, जिन्हें आईसी सॉकेट्स को फिट करने से पहले मिलाप किया जाना चाहिए।
चरण 10: फ़्लोकोड निष्कर्ष
जैसा कि मुझे असेंबली में रजिस्टर स्तर पर काम करने की आदत है, कभी-कभी घटक मैक्रोज़ का उपयोग करना मुश्किल और निराशाजनक होता था। यह मुख्य रूप से फ़्लोकोड की प्रोग्रामिंग संरचना के बारे में मेरे ज्ञान की कमी के कारण था। केवल एक ही स्थान जहां मैंने सी या एएसएम ब्लॉक का उपयोग किया है, आउटपुट को एक इंटरप्ट रूटीन के अंदर चालू करना था, और कीपैड इंटरप्ट को अक्षम/सक्षम करने के लिए Do_KeyPressed रूटीन में। जब EEPROM या RTC नहीं मिलता है, तो ASM ब्लॉक का उपयोग करके PIC को SLEEP में भी रखा जाता है।
विभिन्न I²C आदेशों के उपयोग के लिए सहायता, सभी फ़्लोकोड सहायता फ़ाइलों के भीतर से प्राप्त की गई थीं। कमांड को सफलतापूर्वक उपयोग करने से पहले यह जानना आवश्यक है कि विभिन्न I²C डिवाइस कैसे काम करते हैं। एक सर्किट डिजाइन करने के लिए डिजाइनर को सभी प्रासंगिक डेटाशीट उपलब्ध कराने की आवश्यकता होती है। यह फ़्लोकोड की कमी नहीं है।
फ्लोकोड वास्तव में परीक्षण के लिए खड़ा था, और माइक्रोप्रोसेसरों की माइक्रोचिप श्रेणी के साथ काम करना शुरू करने के इच्छुक व्यक्तियों के लिए अत्यधिक अनुशंसित है।
PIC के लिए फ़्लोकोड प्रोग्रामिंग और कॉन्फ़िगरेशन चित्रों के अनुसार सेट किए गए थे
चरण 11: वैकल्पिक I2C रिले बोर्ड
सीपीयू बोर्ड में पहले से ही 16 रिले के लिए हेडर कनेक्शन हैं। ये आउटपुट दो ULN2803 चिप्स के माध्यम से खुले कलेक्टर ट्रांजिस्टर हैं। इसका उपयोग रिले को सीधे बिजली देने के लिए किया जा सकता है।
सिस्टम के पहले परीक्षणों के बाद, मुझे सीपीयू बोर्ड और रिले के बीच के सभी तार पसंद नहीं थे। जैसा कि मैंने CPU बोर्ड पर I2C पोर्ट शामिल किया था, मैंने I2C पोर्ट से कनेक्ट करने के लिए रिले बोर्ड को डिज़ाइन करने का निर्णय लिया। 16 चैनल MCP23017 I/O पोर्ट एक्सपैंडर चिप और ULN2803 ट्रांजिस्टर सरणी का उपयोग करके, मैंने CPU और रिले के बीच के कनेक्शन को 4 तारों तक कम कर दिया।
जैसा कि मैं 80 x 100 मिमी पीसीबी पर 16 रिले फिट नहीं कर सका, मैंने दो बोर्ड बनाने का फैसला किया। प्रत्येक MCP23017 इसके 16 बंदरगाहों में से केवल 8 का उपयोग करता है। बोर्ड 1 8 आउटपुट को संभालता है, और बोर्ड 2 दो सहायक आउटपुट को संभालता है। बोर्डों पर एकमात्र अंतर प्रत्येक बोर्ड के पते का है। यह आसानी से एक मिनी जम्पर के साथ सेट हो जाता है। प्रत्येक बोर्ड में दूसरे बोर्ड को बिजली और I2C डेटा की आपूर्ति करने के लिए कनेक्टर होते हैं।
ध्यान दें:
यदि आवश्यक हो, तो सॉफ्टवेयर केवल एक बोर्ड के लिए प्रावधान करता है जो सभी 16 बंदरगाहों का उपयोग कर सकता है। सभी आउटपुट रिले डेटा पहले बोर्ड पर उपलब्ध है।
जैसा कि सर्किट वैकल्पिक और बहुत सरल है, मैंने एक योजनाबद्ध नहीं बनाया। अगर पर्याप्त मांग है, तो मैं इसे बाद में जोड़ सकता हूं।
चरण 12: वैकल्पिक आरएफ लिंक
परियोजना के पूरा होने के बाद, मुझे जल्द ही एहसास हुआ कि मुझे टाइमर के लिए 220V एसी की बहुत सारी वायरिंग खींचनी है। मैंने मानक 315 मेगाहर्ट्ज मॉड्यूल का उपयोग करके एक आरएफ लिंक विकसित किया जिसने टाइमर को एक अलमारी के अंदर रखा, और छत के अंदर रिले बोर्ड, सभी 220V तारों के करीब।
लिंक 16MHz पर चलने वाले AtMega328P का उपयोग करता है। ट्रांसमीटर और रिसीवर दोनों के लिए सॉफ्टवेयर समान है, और एक मिनी जम्पर द्वारा मोड का चयन किया जाता है।
ट्रांसमीटर
ट्रांसमीटर को केवल CPU I2C पोर्ट में प्लग किया जाता है। कोई अतिरिक्त सेटअप की आवश्यकता नहीं है, क्योंकि AtMega328P I2C रिले बोर्ड के समान डेटा को सुनता है।
I2C पोर्ट पर डेटा प्रति सेकंड एक बार अपडेट किया जाता है, और ट्रांसमीटर इस जानकारी को RF लिंक पर भेजता है। यदि ट्रांसमीटर को लगभग 30 सेकंड के लिए I2C डेटा प्राप्त नहीं होता है, तो ट्रांसमीटर सभी रिले को रिसीवर यूनिट में बंद करने के लिए लगातार डेटा संचारित करेगा।
पीसी बोर्ड पर मिनी जम्पर के साथ पावर टू ट्रांसमीटर मॉड्यूल को 12V और 5V के बीच चुना जा सकता है। मैं 12V का उपयोग करके अपने ट्रांसमीटर को पावर दे रहा हूं।
रिसीवर
रिसीवर ट्रांसमीटर से कोडित डेटा सुनता है, और डेटा को I2C पोर्ट पर रखता है। रिले बोर्ड बस इस पोर्ट में प्लग करता है, और उसी तरह काम करता है जैसे इसे सीपीयू बोर्ड में प्लग किया गया था।
यदि रिसीवर को 30 सेकंड के लिए वैध डेटा प्राप्त नहीं होता है, तो रिसीवर लगातार I2C पोर्ट पर रिले बोर्ड पर सभी रिले को बंद करने के लिए डेटा भेजेगा।
schematics
एक दिन, अगर इसकी मांग है। Arduino स्केच में सर्किट आरेख के बिना सर्किट बनाने के लिए सभी आवश्यक जानकारी होती है।
श्रेणी
मेरी स्थापना में, ट्रांसमीटर और रिसीवर लगभग 10 मीटर दूर हैं। टाइमर एक अलमारी के अंदर है, और रिले इकाई छत के ऊपर है।
चरण 13: अंतिम उत्पाद
मुख्य इकाई को एक पुराने प्रोजेक्ट बॉक्स में फिट किया गया था। इसमें निम्नलिखित शामिल हैं:
- 220V / 12V ट्रांसफार्मर
- बिजली आपूर्ति बोर्ड
- सीपीयू बोर्ड
- एलसीडी प्रदर्शन
- कीपैड
- आरएफ लिंक ट्रांसमीटर
- अतिरिक्त होम रिमोट रिसीवर यूनिट मुझे रिमोट के माध्यम से रोशनी चालू / बंद करने में सक्षम बनाता है
रिले इकाई में निम्नलिखित शामिल हैं:
- 220V / 12V ट्रांसफार्मर
- बिजली आपूर्ति बोर्ड
- आरएफ लिंक रिसीवर
- 2 x I2C रिले बोर्ड
सभी बोर्डों को एक ही आयाम के साथ डिजाइन किया गया था, जिससे उन्हें एक दूसरे के ऊपर 3 मिमी स्पेसर के साथ ढेर करना आसान हो गया।
सिफारिश की:
प्रोग्राम करने योग्य कद्दू लाइट: 25 कदम (चित्रों के साथ)
प्रोग्रामेबल कद्दू लाइट: यह इंस्ट्रक्शनल ATTiny माइक्रोकंट्रोलर के साथ प्रोग्रामेबल कद्दू लाइट बनाने के लिए है। इसे Arduino IDE का उपयोग करके किसी भी व्यक्ति (आयु 8+) को इलेक्ट्रॉनिक्स और प्रोग्रामिंग माइक्रोकंट्रोलर में पेश करने के लिए एक लर्निंग डेमो के रूप में डिज़ाइन किया गया था। झुकी हुई ओब्जेक
प्रोग्राम करने योग्य एलईडी का उपयोग करके एकीकृत ब्लिंकर के साथ मोटरसाइकिल टेल लैंप: 4 कदम
प्रोग्राम करने योग्य एलईडी का उपयोग करके एकीकृत ब्लिंकर के साथ मोटरसाइकिल टेल लैंप: हैलो! यह आपकी मोटरसाइकिल या संभवतः WS2812B (व्यक्तिगत रूप से पता करने योग्य एलईडी) और Arduinos का उपयोग करके एक कस्टम प्रोग्रामेबल RGB टेल लैंप (एकीकृत ब्लिंकर / संकेतक के साथ) बनाने का एक आसान DIY है। . लाइटिन के 4 तरीके हैं
बाहरी प्रदर्शन के लिए प्रोग्राम करने योग्य परिवेश प्रकाश: 4 कदम
बाहरी डिस्प्ले के लिए प्रोग्रामेबल एम्बिएंट लाइट: यह प्रोजेक्ट आपको अपने बाहरी मॉनिटर या टीवी के लिए एम्बिएंट लाइट सेट करने में मदद करता है, जिससे आप वेब ब्राउज़र वाले और अपने राउटर से जुड़े किसी भी डिवाइस के आराम से निम्नलिखित को नियंत्रित कर सकते हैं। एलईडी रंग एक डीजे प्रभाव देने के लिए पलक झपकने की आवृत्ति अलग है
एवीआर माइक्रोकंट्रोलर। टाइमर का उपयोग कर एलईडी फ्लैशर। टाइमर बाधित। टाइमर सीटीसी मोड: 6 कदम
एवीआर माइक्रोकंट्रोलर। टाइमर का उपयोग कर एलईडी फ्लैशर। टाइमर बाधित। टाइमर सीटीसी मोड: सभी को नमस्कार! इलेक्ट्रॉनिक्स के क्षेत्र में टाइमर एक महत्वपूर्ण अवधारणा है। हर इलेक्ट्रॉनिक कंपोनेंट टाइम बेस पर काम करता है। इस बार आधार सभी कामों में तालमेल बिठाने में मदद करता है। सभी माइक्रोकंट्रोलर कुछ पूर्वनिर्धारित घड़ी आवृत्ति पर काम करते हैं
DIY विशाल 12000 वाट 230v प्रोग्राम करने योग्य प्रकाश सेटअप 12 चैनल: 10 कदम
DIY विशाल 12000 वाट 230v प्रोग्राम करने योग्य प्रकाश सेटअप 12 चैनल: सभी को नमस्कार, इस परियोजना में मैं आपको दिखाऊंगा कि आप 12000 वाट के बड़े पैमाने पर प्रकाश नियंत्रक कैसे बना सकते हैं। यह एक 12 चैनल सेटअप है, इस सर्किट का उपयोग करके आप किसी भी 230v प्रकाश को नियंत्रित कर सकते हैं आप प्रकाश व्यवस्था के विभिन्न पैटर्न बना सकते हैं। इस वीडियो में मैं