- कार्य स्पष्टीकरण:
- अवयव:
- प्रोग्रामिंग:
- EasyEDA का उपयोग कर सर्किट और पीसीबी डिजाइन:
- गणना और आदेश पीसीबी नमूने ऑनलाइन:
इस परियोजना में, हम एक IR रिमोट का उपयोग करके कुछ एसी भार को दूर से नियंत्रित करने के लिए PIC माइक्रोकंट्रोलर का उपयोग करने जा रहे हैं। इसी तरह की एक परियोजना IR रिमोट नियंत्रित होम ऑटोमेशन पहले से ही Arduino के साथ भी किया जा चुका है, लेकिन यहां हमने EasyEDA के ऑनलाइन पीसीबी डिज़ाइनर और सिम्युलेटर का उपयोग करके पीसीबी पर इसे डिज़ाइन किया है, और पीसीबी बोर्ड को ऑर्डर करने के लिए अपनी पीसीबी डिजाइनिंग सेवाओं का उपयोग किया है जैसा कि बाद के अनुभाग में दिखाया गया है। लेख।
इस परियोजना के अंत में आप अपने चेयर / बेड के आराम से एक साधारण रिमोट का उपयोग करके किसी भी एसी लोड को चालू (चालू / बंद) कर सकेंगे। इस परियोजना को और अधिक रोचक बनाने के लिए हमने एक फीचर को ट्राइक की मदद से पंखे की गति को नियंत्रित करने के लिए भी सक्षम किया है। ये सब आपके आईआर रिमोट पर साधारण क्लिक के साथ किया जा सकता है। आप इस परियोजना के लिए अपने किसी भी टीवी / डीवीडी / एमपी 3 रिमोट का उपयोग कर सकते हैं। रिमोट से अलग-अलग आईआर सिग्नल माइक्रोकंट्रोलर द्वारा प्राप्त किए जाते हैं जो फिर रिले ड्राइवर सर्किट के माध्यम से संबंधित रिले को नियंत्रित करता है। इन रिले का उपयोग एसी लोड (लाइट्स / फैन) को जोड़ने और डिस्कनेक्ट करने के लिए किया जाता है।
कार्य स्पष्टीकरण:
इस परियोजना का काम समझना काफी सरल है। जब आईआर रिमोट पर एक बटन दबाया जाता है तो यह 38Khz मॉड्युलेटिंग फ्रिक्वेंसी का उपयोग करके एन्कोडेड दालों के रूप में कोड का एक क्रम भेजता है। ये दाल TSOP1738 सेंसर द्वारा प्राप्त की जाती है और फिर नियंत्रक द्वारा पढ़ी जाती है। नियंत्रक तब दालों की प्राप्त ट्रेन को एक हेक्स मान में डीकोड करता है और हमारे कार्यक्रम में पूर्वनिर्धारित हेक्स मूल्यों के साथ इसकी तुलना करता है।
यदि कोई मैच होता है, तो नियंत्रक संबंधित रिले / ट्रायैक को ट्रिगर करके एक रिश्तेदार ऑपरेशन करता है और इसी परिणाम को ऑन-बोर्ड एलईडी द्वारा भी संकेत दिया जाता है। यहां इस परियोजना में, हमने विभिन्न रंगों के 4 बल्ब (छोटे बल्ब) का उपयोग किया है क्योंकि प्रकाश भार और एक अन्य बल्ब (बड़ा बल्ब) प्रदर्शन उद्देश्य के लिए एक प्रशंसक माना जाता है।
हमने relay1 को टॉगल करने के लिए की 1 को चुना है, 2 relay2 को टॉगल करने के लिए, 3 को relay3 को टॉगल करने के लिए, 4 को relay4 को टॉगल करने के लिए, और Vol + को फैन की स्पीड बढ़ाने के लिए और Vol- फैन की स्पीड को कम करने के लिए।
नोट: यहां हमने एक प्रशंसक के बजाय 100watt बल्ब का उपयोग किया है।
विभिन्न उपकरणों के लिए कई प्रकार के आईआर रेमो उपलब्ध हैं, लेकिन उनमें से ज्यादातर 38KHz फ्रीक्वेंसी के आसपास काम करते हैं। इस परियोजना में, हम IR टीवी रिमोट का उपयोग करके घरेलू उपकरणों को नियंत्रित करते हैं और IR संकेतों का पता लगाने के लिए, हम एक TSOP1738 IR रिसीवर का उपयोग करते हैं। यह TSOP1738 सेंसर 38Khz फ़्रीक्वेंसी सिग्नल को समझ सकता है। आईआर रिमोट और TSOP1738 का काम इस लेख में विस्तार से कवर किया गया है: आईआर ट्रांसमीटर और रिसीवर
हमारा PIC माइक्रोकंट्रोलर +5V पर संचालित होता है और रिले 12V पर काम करते हैं, इसलिए हम 220V AC को नीचे ले जाने के लिए एक ट्रांसफार्मर का उपयोग करते हैं और इसे एक पूर्ण पुल रेक्टिफायर का उपयोग करके ठीक करते हैं। इसके बाद डीसी वोल्टेज को रेगुलेटेड ICs 7812 और 7805 द्वारा क्रमशः + 12V और + 5V में रेक्टिफाई किया जाता है।
रिले को ट्रिगर करने के लिए हम BC547 जैसे ट्रांजिस्टर का उपयोग करते हैं जो कि तस्वीर की गति को नियंत्रित करने के लिए PIC microcontroller.Further से सिग्नल के आधार पर रिले को बंद / बंद करने के लिए इलेक्ट्रॉनिक स्विच के रूप में कार्य कर सकता है। TRIAC एक पावर सेमीकंडक्टर है जो आउटपुट वोल्टेज को नियंत्रित करने में सक्षम है; इस क्षमता का उपयोग पंखे की गति को नियंत्रित करने के लिए किया जाता है।
हमने अपने PIC माइक्रोकंट्रोलर का उपयोग करके Triac को नियंत्रित करने के लिए Triac ड्राइवर का भी उपयोग किया है। इस ड्राइवर का उपयोग ट्राइक को फायरिंग एंगल पल्स देने के लिए किया जाता है, ताकि आउटपुट पावर को नियंत्रित किया जा सके। यहां हमने गति नियंत्रण के 6 स्तर का उपयोग किया है। जब लेवल 0 होगा तो पंखा बंद हो जाएगा। जब स्तर 1 होगा तब गति पूर्ण गति की 1/5 वीं होगी। जब स्तर 2 होगा तब गति पूर्ण गति की 2 / 5th होगी और क्रमशः दूसरों के लिए होगी। ऑन-बोर्ड 7-सेगमेंट डिस्प्ले का उपयोग करके गति के वर्तमान स्तर की निगरानी की जा सकती है।
परियोजना का ब्लॉक आरेख नीचे दिखाया गया है।
अवयव:
इस परियोजना को बनाने के लिए आवश्यक घटक नीचे दिए गए हैं:
- PIC18f2520 माइक्रोकंट्रोलर -1
- TSOP1738 -1
- आईआर टीवी / डीवीडी रिमोट -1
- ट्रांजिस्टर BC547 -4
- रिले 12 वोल्ट -4
- धारक के साथ बल्ब -5
- कनेक्टिंग तार -
- इजीडे पीसीबी -1
- 16x2 एलसीडी
- बिजली की आपूर्ति 12 वी
- टर्मिनल कनेक्टर 2 पिन `-8
- टर्मिनल कनेक्टर 3 पिन -1
- ट्रांसफार्मर 12-0-12 -1 -
- वोल्टेज नियामक 7805 -1
- वोल्टेज नियामक 7812 -1
- संधारित्र 1000uf -1
- संधारित्र 10uf -1
- संधारित्र 0.1uf -1
- संधारित्र 0.01uf 400V `-1
- 10k -5
- 1k -5
- 100ohm -7
- आम कैथोड खंड -1
- 1n4007 डायोड -10
- BT136 triac -1
- पुरुष / महिला हेडर -
- एलईडी -6
- ऑप्टो-कपलर moc3021 -1
- ऑप्टो-युग्मक mtc2e या 4n35 -1
- 20 मेगाहर्ट्ज क्रिस्टल -1
- 33pf संधारित्र -2
- 5.1v जेनर डायोड -1
- 47 ओम 2 वाट अवरोध -1
ये सभी घटक आमतौर पर उपयोग किए जाते हैं और आसानी से खरीदे जा सकते हैं। हालाँकि अगर आप ऑनलाइन खरीदारी करना चाहते हैं तो हम आपको LCSC की सलाह देंगे।
LCSC सभी प्रकार की परियोजनाओं के लिए अपने इलेक्ट्रॉनिक्स घटकों को खरीदने के लिए एक महान ऑनलाइन स्टोर है। उनके पास लगभग 25,000 प्रकार के घटक हैं और सबसे अच्छी बात यह है कि वे छोटी परियोजनाओं के लिए बहुत कम मात्रा में सामान बेचते हैं और उनके पास ग्लोबल शिपिंग भी है।
IR रिमोट को डिकोड करना:
जैसा कि पहले कहा गया था कि आप अपनी परियोजना के लिए किसी भी प्रकार के रिमोट का उपयोग कर सकते हैं। लेकिन हमें यह जानना होगा कि उस विशेष रिमोट से किस तरह का सिग्नल उत्पन्न होता है। रिमोट पर प्रत्येक व्यक्ति की कुंजी के लिए उस कुंजी के बराबर HEX मान होगा। इस HEX मान का उपयोग करके हम अपने माइक्रोकंट्रोलर पक्ष की प्रत्येक कुंजी के बीच अंतर कर सकते हैं। तो इससे पहले कि हम एक रिमोट का उपयोग करने का निर्णय लें, हमें उस विशेष रिमोट में कीसेट प्रीसेट के लिए HEX मान जानना चाहिए। इस परियोजना में, हमने एक एनईसी रिमोट का उपयोग किया है। NEC रिमोट पर कुंजियों के लिए HEX मान नीचे दिया गया है।
जैसा कि आप देख सकते हैं HEX मान में 7 वर्ण हैं, जिनमें से केवल अंतिम दो भिन्न हैं, इसलिए हम प्रत्येक कुंजियों के बीच अंतर करने के लिए केवल अंतिम दो अंकों पर विचार कर सकते हैं।
सर्किट आरेख:
परियोजना के लिए योजनाबद्ध नीचे दिखाया गया है।
उपरोक्त योजनाबद्ध को esayEDA योजनाबद्ध संपादक का उपयोग करके आसान बनाया गया था क्योंकि वे इस परियोजना में प्रयुक्त सभी घटकों के लेआउट प्रदान करते हैं। इसके लिए इंस्टॉलेशन की भी आवश्यकता नहीं होती है और इसे ऑनलाइन ही इस्तेमाल किया जा सकता है।
उपर्युक्त योजनाबद्ध में पिनआउट और घटक मूल्य स्पष्ट रूप से निर्दिष्ट हैं। आप यहां से योजनाबद्ध फ़ाइल भी डाउनलोड कर सकते हैं।
प्रोग्रामिंग:
इस परियोजना के लिए प्रोग्राम MPLABX का उपयोग करके किया जाता है, कोड भी बहुत सरल और समझने में आसान है। इस ट्यूटोरियल के अंत में पूरा कोड दिया जाएगा, आगे कार्यक्रम के कुछ महत्वपूर्ण विवरण नीचे दिए गए हैं।
कोड की शुरुआत में, हमें आवश्यक पुस्तकालयों को शामिल करना चाहिए, पिन को परिभाषित करना और चर घोषित करना चाहिए।
#शामिल
उसके बाद, हमने "फॉर" लूप का उपयोग करके एक सरल विलंब फ़ंक्शन बनाया है।
शून्य देरी (इंट टाइम) {के लिए (इंट i = 0; मैं
उसके बाद, हमने निम्नलिखित फ़ंक्शन का उपयोग करके टाइमर को इनिशियलाइज़ किया है
शून्य टाइमर () // 10 -> 1us {T0PS0 = 0; T0PS1 = 0; T0PS2 = 0; पीएसए = 0; // टाइमर घड़ी स्रोत प्रिस्कलर T0CS = 0 से है; // prescaler को FCPU (5MHz) T08BIT = 0 से घड़ी मिलती है; // 16 बिट मोड TMR0IE = 1; // सक्षम करें TIMER0 इंटरप्ट PEIE = 1; // पेरिफेरल इंटरप्ट GIE = 1 सक्षम करें; // विश्व स्तर पर TMR0ON = 1 में INT सक्षम करें; // अब टाइमर शुरू करो! }
अब मुख्य कार्य में, हमने चयनित पिंस को दिशा-निर्देश दिए हैं और शून्य क्रॉसिंग का पता लगाने के लिए टाइमर और एक्सटर्नल इंटरप्ट 0 को इनिशियलाइज़ करें।
ADCON1 = 0b00001111; TRISB1 = 0; TRISB2 = 1; TRISB3 = 0; TRISB4 = 0; TRISB5 = 0; TRISC = 0x00; TRISA = 0x00; PORTA = 0xc0; TRISB6 = 0; आरबी 6 = 1; relay1 = 0; relay2 = 0; relay3 = 0; relay4 = 0; rly1LED = 0; rly3LED = 0; rly2LED = 0; rly4LED = 0; fanLED = 0; i = 0; ir = 0; tric = 0; टाइमर (); INTEDG0 = 0; // गिरने के किनारे पर बाधा INT0IE = 1; // INT0 बाहरी व्यवधान (RB0) INT0IF = 0 को सक्षम करें; // क्लियर्स INT0 बाहरी इंटरप्ट फ्लैग बिट PEIE = 1; // पेरिफेरल इंटरप्ट GIE = 1 सक्षम करें; // विश्व स्तर पर INT सक्षम करें
अब, यहाँ हम IR सिग्नल का पता लगाने के लिए किसी भी रुकावट या कैप्चर और तुलना मोड का उपयोग नहीं कर रहे हैं। यहां हमने डेटा पढ़ने के लिए एक डिजिटल पिन का उपयोग किया है जैसे हम एक पुश बटन पढ़ते हैं। जब भी सिग्नल उच्च या निम्न होता है हम सिर्फ डिबगिंग विधि डालते हैं और टाइमर चलाते हैं। जब भी पिन अपने राज्य को दूसरे में बदलता है तो समय मान एक सरणी में सहेजा जाएगा।
IR रिमोट लॉजिक 0 को 562.5us और लॉजिक 1 को 2250us के रूप में भेजते हैं। जब भी टाइमर 562.5us के आसपास पढ़ता है तो हम इसे 0 मान लेते हैं और जब टाइमर लगभग 2250us पढ़ता है तो हम इसे 1 मान लेते हैं। फिर हम इसे हेक्स में बदलते हैं।
रिमोट से आने वाले सिग्नल में 34 बिट्स होते हैं। हम सरणी में सभी बाइट्स संग्रहीत करते हैं और फिर उपयोग करने के लिए अंतिम बाइट को डिकोड करते हैं।
जबकि (ir == 1); INT0IE = 0; जबकि (ir == 0); TMR0 = 0; जबकि (ir == 1); मैं ++; dat = TMR0; if (dat> 5000 && dat <12000) {} और {{= 0; INT0IE = 1; } अगर (i> = 33) {GIE = 0; देरी (50); cmd = 0; for (j = 26; j <34; j ++) {if (dat> 1000 && dat <2000) cmd << = 1; और अगर (dat> 3500 && dat <4500) {cmd- = 0x01; cmd << = 1; }} cmd >> = 1;
कोड का उपरोक्त टुकड़ा प्राप्त करता है और टाइमर सिग्नल का उपयोग करके आईआर सिग्नल को डीकोड करता है और चर सीएमडी में संबंधित एचईएक्स मूल्य को संग्रहीत करता है। अब हम अपने पूर्वनिर्धारित HEX मानों के साथ इस HEX मान (cmd चर) की तुलना कर सकते हैं और नीचे दिखाए अनुसार रिले को टॉगल कर सकते हैं
if (cmd == 0xAF) {relay1 = ~ relay1; rly1LED = ~ rly1LED; } और अगर (cmd == 0x27) {relay2 = ~ relay2; rly2LED = ~ rly2LED; } और यदि (cmd == 0x07) {relay3 = ~ relay3; rly3LED = ~ rly3LED; } और अगर (cmd == 0xCF) {relay4 = ~ relay4; rly4LED = ~ rly4LED; } और अगर (cmd == 0x5f) {गति ++; if (गति> 5) {गति = 5; }} और अगर (cmd == 0x9f) {speed--; if (गति <= 0) {गति = 0; }}
अब यह जानने के लिए कि हमारा पंखा वर्तमान में चल रहा है, हमें 7-खंड के डिस्प्ले का उपयोग करना चाहिए। 7-सेगमेंट डिस्प्ले के पिंस को निर्देश देने के लिए निम्न लाइनों का उपयोग किया जाता है।
if (गति == 5) // 5x2 = 10ms ट्राइगर // स्पीड 0 बंद हो गया {PORTA = 0xC0; // प्रदर्शन 0 आरबी 6 = 1; fanLED = 0; } और यदि (गति == 4) // 8 एमएस ट्रिगर // गति 1 {पोर्टा = 0xfc; // 1 आरबी 6 = 1 प्रदर्शित करना; fanLED = 1; } और यदि (गति == 3) // 6 एमएस ट्रिगर // स्पीड 2 {पोर्टा = 0xE4; // 2 आरबी 6 = 0 प्रदर्शित करना; fanLED = 1; } और यदि (गति == 2) // 4ms ट्रिगर // गति 3 {PORTA = 0xF0; // 3 आरबी 6 = 0 प्रदर्शित करना; fanLED = 1; } और अगर (गति == 1) // 2ms ट्रिगर // गति 4 {PORTA = 0xD9; // 4 आरबी 6 = 0 प्रदर्शित करना; fanLED = 1; } और अगर (गति == 0) // 0ms ट्रिगर // गति 5 पूर्ण शक्ति {PORTA = 0xD2; // 5 आरबी 6 = 0 प्रदर्शित करना; fanLED = 1; }
नीचे का कार्य बाहरी रुकावट और समय के अतिप्रवाह के लिए है। यह फ़ंक्शन शून्य क्रॉसिंग का पता लगाने और ट्राईक को चलाने के लिए जिम्मेदार है।
शून्य बाधा isr () {अगर (INT0IF) {विलंब (गति); tric = 1; for (int t = 0; t <100; t ++); tric = 0; INT0IF = 0; } if (TMR0IF) // चेक करें कि क्या यह TMR0 ओवरफ्लो ISR {TMR0IF = 0 है; }}
इस IR रिमोट नियंत्रित होम ऑटोमेशन के लिए अंतिम पीसीबी नीचे दिखाया गया है:
EasyEDA का उपयोग कर सर्किट और पीसीबी डिजाइन:
इस रिमोट कंट्रोल होम ऑटोमेशन को डिजाइन करने के लिए हमने ईज़ीडा का उपयोग किया है जो एक सहज तरीके से सर्किट और पीसीबी बनाने के लिए एक मुफ्त ऑनलाइन ईडीए उपकरण है। हमने पहले EasyEDA से कुछ PCBs ऑर्डर किए हैं और अभी भी उनकी सेवाओं का उपयोग कर रहे हैं क्योंकि हमने पूरी प्रक्रिया को पाया, सर्किट को खींचने से लेकर PCB को ऑर्डर करने के लिए, अन्य PCB फैब्रिकेटर की तुलना में अधिक सुविधाजनक और कुशल। ईज़ीईडीए मुफ्त में सर्किट ड्राइंग, सिमुलेशन, पीसीबी डिज़ाइन प्रदान करता है और उच्च गुणवत्ता लेकिन कम कीमत अनुकूलित पीसीबी सेवा भी प्रदान करता है। स्कैमैटिक्स, पीसीबी लेआउट बनाने, सर्किट का अनुकरण करने आदि के लिए आसान ईडीए का उपयोग करने के बारे में संपूर्ण ट्यूटोरियल के लिए यहां देखें।
ईजीईडीए दिन-प्रतिदिन सुधर रहा है; उन्होंने कई नई सुविधाओं को जोड़ा है और समग्र उपयोगकर्ता अनुभव में सुधार किया है, जो ईजीएडीए को डिजाइनिंग सर्किट के लिए आसान और उपयोगी बनाता है। वे जल्द ही इसका डेस्कटॉप संस्करण लॉन्च करने जा रहे हैं, जिसे ऑफ़लाइन उपयोग के लिए आपके कंप्यूटर पर डाउनलोड और इंस्टॉल किया जा सकता है।
ईज़ीईडीए में, आप अपने सर्किट और पीसीबी डिज़ाइन को सार्वजनिक कर सकते हैं ताकि अन्य उपयोगकर्ता उन्हें कॉपी या संपादित कर सकें और वहां से लाभ उठा सकें, हमने इस रिमोट कंट्रोल होम ऑटोमेशन के लिए अपने पूरे सर्किट और पीसीबी लेआउट को भी सार्वजनिक कर दिया है।
नीचे ईज़ीईडीए से पीसीबी लेआउट की शीर्ष परत का स्नैपशॉट है, आप परत के 'विंडो' फॉर्म को चुनकर पीसीबी के किसी भी लेयर (टॉप, बॉटम, टॉप्सिल्क, बॉटम्सिल्क आदि) को देख सकते हैं।
गणना और आदेश पीसीबी नमूने ऑनलाइन:
पीसीबी के डिजाइन को पूरा करने के बाद, आप फैब्रिकेशन आउटपुट के आइकन पर क्लिक कर सकते हैं, जो आपको पीसीबी के ऑर्डर पेज पर ले जाएगा। यहाँ आप अपने PCB को Gerber Viewer में देख सकते हैं या अपने PCB की Gerber फाइल डाउनलोड कर सकते हैं और उन्हें किसी भी निर्माता को भेज सकते हैं, इसे EasyEDA में सीधे ऑर्डर करना भी बहुत आसान (और सस्ता) है। यहां आप उन पीसीबी की संख्या का चयन कर सकते हैं जिन्हें आप ऑर्डर करना चाहते हैं, आपको कितने तांबे की परतों की जरूरत है, पीसीबी की मोटाई, तांबे का वजन और यहां तक कि पीसीबी का रंग भी। आपके द्वारा सभी विकल्पों का चयन करने के बाद, "कार्ट में सहेजें" पर क्लिक करें और अपना ऑर्डर पूरा करें, फिर आपको कुछ दिनों के भीतर अपने PCBs मिल जाएंगे।
आप सीधे इस पीसीबी को ऑर्डर कर सकते हैं या इस लिंक का उपयोग करके Gerber फ़ाइल डाउनलोड कर सकते हैं।
पीसीबी के आदेश के कुछ दिनों के बाद हमें पीसीबी मिल गया। हमें जो बोर्ड मिले हैं, वे नीचे दिखाए गए हैं।
एक बार जब हम PCBs प्राप्त कर लेते हैं, तो मैंने PCB पर सभी आवश्यक कंपोनेंट्स को माउंट कर दिया है, और अंत में हमारे पास हमारा IR रिमोट कंट्रोल्ड होम ऑटोमेशन तैयार है, इस सर्किट को प्रदर्शन वीडियो में काम करते हुए लेख के अंत में देखें।