atmega8 माइक्रोकंट्रोलर पर कॉम्बिनेशन लॉक। PIC16F628A माइक्रोकंट्रोलर पर कॉम्बिनेशन लॉक

माइक्रोकंट्रोलर पर इन्फ्रारेड कुंजी के साथ डिजिटल संयोजन लॉक की योजना और कार्यक्रम

प्रिय रेडियो शौकीनों, शुभ दिन!
मैं साइट "" पर आपका स्वागत करता हूं

प्रिय रेडियो शौकीनों, शुभ दिन! आज अनुभाग में "माइक्रोकंट्रोलर्स पर रेडियो शौकिया सर्किट"हम एक सरल योजना पर विचार करेंगे - आईआर कुंजी के साथ डिजिटल संयोजन लॉक।

यह संयोजन ताला सीमित पहुंच वाले कमरे के किसी भी प्रवेश द्वार पर स्थापित किया जाता है। दरवाज़ा खोलने के लिए IR कुंजी का उपयोग किया जाता है। इसके लिए धन्यवाद, कोड दर्ज करने के लिए बाहरी कीपैड की आवश्यकता नहीं है, और इसके अलावा, आईआर रेंज में सिग्नल को रोकना बहुत मुश्किल है। कोड लॉक योजना:

कोड लॉक तब तक स्टैंडबाय मोड में रहता है जब तक कि वीडी1 फोटोडायोड द्वारा आईआर सिग्नल प्राप्त नहीं हो जाता है, जो विद्युत आवेगों में परिवर्तित हो जाता है। कुंजी एक आईआर सिग्नल ट्रांसमीटर है और एकल गैल्वेनिक सेल द्वारा संचालित होती है। 1.5 वोल्ट से 5 वोल्ट का एक वोल्टेज कनवर्टर माइक्रो सर्किट पर असेंबल किया जाता है। वोल्टेज कनवर्टर के साथ कुंजी सर्किट के इस हिस्से को नजरअंदाज किया जा सकता है, लेकिन इसके लिए आपको 5 वोल्ट के वोल्टेज के साथ कुंजी के लिए एक उपयुक्त शक्ति स्रोत का चयन करना होगा। कुंजी को SA1 स्विच में वोल्टेज की आपूर्ति करके सक्रिय किया जाता है। "गुप्त" शब्दों को प्रतिस्थापित करते समय, ताले और चाबी दोनों के प्रोग्राम टेक्स्ट में उनके कोड को बदलना आवश्यक है। ताला 12 वोल्ट बिजली आपूर्ति द्वारा संचालित है। मुख्य वोल्टेज की अनुपस्थिति में सोलनॉइड को बिजली देने के लिए इसे बैटरी के साथ पूरक करना वांछनीय है।

शाम का समय था जब एक बड़ी कद की महिला कार्यालय की दहलीज पर एक प्रसिद्ध ब्रांड के व्यंजन खरीदने की पेशकश करती हुई दिखाई दी। अगले दिन, मुझे बॉस (उर्फ) से उसकी रचनात्मक प्रकृति को बिक्री प्रतिनिधियों के हमलों से बचाने का काम मिला। इस तरह से Hungry_Wall कोडनेम वाला प्रोजेक्ट बनाने का विचार पैदा हुआ। बेशक, अब ऐसी कई सेवाएँ हैं जो परिसर तक पहुंच को नियंत्रित करती हैं। लेकिन अपने हाथों से इलेक्ट्रॉनिक लॉक बनाना कहीं अधिक दिलचस्प है, खासकर मेरे लिए, एक नौसिखिए प्रोग्रामर और इलेक्ट्रॉनिक्स इंजीनियर के लिए।

जैसा कि वे कहते हैं, मुख्य बात टीओआर को सही ढंग से तैयार करना है, अर्थात। परिणामस्वरूप हम क्या प्राप्त करना चाहते हैं।

  1. एक कुंजी पहचान प्रणाली बनाएं.
  2. आधार के साथ कुंजी की तुलना करें, और यदि प्रस्तुत कुंजी का कोड आधार में दर्ज कोड में से एक से मेल खाता है, तो ताला खोलें।
  3. चुंबकीय सेंसर की रीडिंग लें, जिससे आप दरवाजे की स्थिति की पहचान कर सकते हैं, और यदि दरवाजा खुला है, तो ताला बंद कर दें।
  4. एक टाइमर का उपयोग करें, जिसके बाद लॉक बंद हो जाता है, उस स्थिति में जब हम प्रवेश/बाहर निकलने के बारे में अपना मन बदल लेते हैं। यह सुनिश्चित करना है कि "दुश्मन" हमारे मूड में बदलाव का फायदा उठाकर गुप्त मांद में न घुस जाएं।
  5. कमरे के अंदर स्थित बटन का उपयोग करके दरवाज़ा खोलना सुनिश्चित करें।
  6. मास्टर कुंजी प्रस्तुत करने के बाद डेटाबेस में एक नई कुंजी रिकॉर्ड करना और निश्चित रूप से, मास्टर को स्वयं रिकॉर्ड करना।
  7. डेटाबेस से एक कुंजी हटाना (सुविधा)।
  8. अधिक आकर्षण के लिए प्रदर्शन प्रणाली.

आधा काम हो चुका है, सबसे कम बाकी है- योजना को हार्डवेयर और सॉफ्टवेयर में लागू करना. इसके लिए आपको चाहिए:

  1. बिजली का ताला
  2. आयरनलॉजिक से प्रॉक्सी (एम-मैरिन) कार्ड रीडर "सीपी-जेड"।
  3. डेटाबेस में प्रवेश के लिए कुंजी या कार्ड
  4. बटन
  5. बिजली की आपूर्ति 12V
  6. शरीर (ताकि सब कुछ साफ-सुथरा और सुंदर हो)
  7. इलेक्ट्रॉनिक्स - ATmega 8 माइक्रोकंट्रोलर, "bedX28", KR1158EN5V स्टेबलाइजर, IRLU 024 N ट्रांजिस्टर, 6 KLEM 2 कनेक्टर, 1 WF 3 कनेक्टर (COM-पोर्ट), कैपेसिटर, एलईडी और स्वाद के लिए प्रतिरोधक।

बोर्ड लेआउट चित्र 1 में दिखाया गया है।

बोर्ड के अंदरूनी हिस्से को चित्र 1 में दिखाया गया है।

कार्यों को हल करने के लिए, उपयोग किए गए सभी उपकरणों को तार्किक ब्लॉकों में विभाजित किया गया है, जो चित्र 2 में प्रस्तुत किया गया है।

लॉक ब्लॉक में एक इलेक्ट्रिक लॉक, एक टाइमओपन टाइमर शामिल है जो आपको लॉक खोलने के लिए अधिकतम समय निर्धारित करने की अनुमति देता है, एक चुंबकीय सेंसर जो दरवाजे के खुलने और बंद होने का संकेत देता है। लॉक ब्लॉक का इनपुट लॉक खोलने (ओपन) का कमांड है, जो ऑरलॉक और बटन के ब्लॉक से आता है। ऑरलॉक ब्लॉक में एक रीडर, एक डेटाबेस, एक टाइममास्टर टाइमर होता है जो डेटाबेस में लिखने के लिए एक नई कुंजी लाने के लिए अधिकतम समय निर्धारित करता है। ब्लॉक में प्रवेश एक कुंजी या मास्टर प्रस्तुत करके किया जाता है। बटन ब्लॉक में एक बटन होता है जो 2 अवस्थाओं (दबाया/दबाया नहीं गया) पर काम कर सकता है।

संपर्क रहित कार्ड पढ़ने के लिए, आयरनलॉजिक के "प्रॉक्सी (एम-मैरिन) "सीपी-जेड" कार्ड रीडर का उपयोग किया जाता है; इसकी विशेषता यह है कि यदि आप इसमें प्रॉक्सी कार्ड लाते हैं तो यह आईबटन (1-वायर) का अनुकरण करता है .. यह आपको अनुमति देता है लॉक की प्रोग्रामिंग को सरल बनाने के लिए। हालाँकि, यह ध्यान में रखना चाहिए कि रीडर के इस संस्करण का अपना अंडरवाटर रेक है।

ऑपरेशन का सिद्धांत बेहद सरल है। जब कुंजी प्रस्तुत की जाती है, तो उसका कोड पढ़ा जाता है और आधार के साथ तुलना की जाती है। यदि कुंजी डेटाबेस में पाई जाती है, तो लॉक को एक ओपन कमांड प्राप्त होता है। यहां लॉक की ख़ासियत को ध्यान में रखना आवश्यक है: उद्घाटन क्लिक (ओपन-क्लोज़-ओपन) के साथ किया जाना चाहिए। यह लॉक के जाम होने से सुरक्षा प्रदान करता है। जब विज़ार्ड प्रस्तुत किया जाता है, तो प्रोग्राम का तर्क बदल जाता है। इसकी उपस्थिति महल के "मूड" को प्रभावित नहीं करती है। उन्हें एक प्रकार का तुर्की सुल्तान माना जाता है, जो एक और पत्नी (कुंजी) को पंजीकृत करने (ईईपीरोम में लिखने) के लिए तैयार है। वे। जब कोई कुंजी प्रस्तुत की जाती है (यदि इसे पहले रिकॉर्ड नहीं किया गया है), तो इसका कोड EEPROM को लिखा जाता है। यहां यह ध्यान रखना आवश्यक है कि मिकरूहा की मेमोरी गैर-रबड़ है, और, उदाहरण के लिए, एटीमेगा 8 के लिए यह 512 बाइट्स है, जो आपको अधिकतम 255 कुंजी लिखने की अनुमति देता है (यदि 1 स्टोर करने के लिए 2 बाइट्स का उपयोग किया जाता है) कुंजी, जैसा कि हमारे मामले में है)। प्रस्तुत की गई पहली कुंजी मास्टर के रूप में दर्ज की गई है। बटन दबाने से लॉक को एक ओपन कमांड भी भेजा जाता है। डिस्प्ले सिस्टम हमारे प्रोजेक्ट को अधिक रंगीन और जानकारीपूर्ण बनाता है। यदि लाल डायोड चालू है, तो मार्ग अवरुद्ध है, यदि हरा है, तो आप जा सकते हैं! जब मास्टर प्रस्तुत किया जाता है, तो दोनों एलईडी जलती हैं।

यह ध्यान रखना महत्वपूर्ण है कि लॉक तब खुलता है जब उस पर एक तार्किक इकाई (यानी वोल्टेज) लागू की जाती है, और यदि कोई वोल्टेज लागू नहीं किया जाता है तो वह बंद स्थिति में होता है। यदि आप उपयोगिता बिलों का भुगतान करना भूल गए हैं और आपकी बिजली काट दी गई है तो यह आपको मार्ग को अवरुद्ध करने की अनुमति देता है।

पूरे उपकरण का स्वरूप चित्र 2 में दिखाया गया है। सब कुछ काफी साफ-सुथरा और सुंदर है।

आप स्रोत डाउनलोड कर सकते हैं

इलेक्ट्रॉनिक लॉक में एक्चुएटर, जिसकी योजना अंजीर में दिखाई गई है। 1, इलेक्ट्रोमैकेनिकल लॉक ZNEM-1-2 का उपयोग किया जाता है, जो तब खुलता है जब इसमें निर्मित इलेक्ट्रोमैकेनिकल Y1 पर 12 V का निरंतर वोल्टेज लगाया जाता है। इलेक्ट्रॉनिक लॉक का तार्किक भाग PIC16F630-I / R माइक्रोकंट्रोलर पर बनाया गया है। बटन SB1 और SB2 इसे खोलने वाले कोड को दर्ज करने के लिए डिज़ाइन किए गए हैं। चमक के विभिन्न रंगों के एलईडी HL1-HL3 स्थिति और संचालन के तरीके का संकेत देते हैं। क्षेत्र-प्रभाव ट्रांजिस्टर VT1, RSZ के आउटपुट पर माइक्रोकंट्रोलर द्वारा उत्पन्न सिग्नल के अनुसार, इलेक्ट्रोमैग्नेट Y1 को नियंत्रित करता है।

चावल। 1

डिवाइस 12 वी के वोल्टेज के साथ गैल्वेनिक या रिचार्जेबल बैटरी द्वारा संचालित होता है। यह वोल्टेज इलेक्ट्रोमैग्नेट Y1 के विश्वसनीय संचालन के लिए आवश्यक है। इसकी आपूर्ति गैल्वेनिक या रिचार्जेबल बैटरी और मुख्य बिजली आपूर्ति दोनों से की जा सकती है। बैटरी मुख्य वोल्टेज की अनुपस्थिति में लॉक खोलने की क्षमता की गारंटी देती है, लेकिन आपको इसके चार्ज की लगातार निगरानी करनी होगी।

एकीकृत नियामक DA1 का उपयोग करके 12 V से 5 V (माइक्रोकंट्रोलर को बिजली देने के लिए आवश्यक) का वोल्टेज प्राप्त किया जाता है। यदि आप एक अलग वोल्टेज या एक अलग पावर स्रोत के लिए एक्चुएटर का उपयोग करते हैं, तो स्टेबलाइजर के इनपुट को आपूर्ति किए गए वोल्टेज को 7 वी तक कम किया जा सकता है या 15 वी तक बढ़ाया जा सकता है।

बंद होने पर लॉक द्वारा खपत किया गया करंट बहुत छोटा होता है और कुछ मिलीमीटर से अधिक नहीं होता है। कोड टाइप करने की प्रक्रिया में, यह एलईडी की संख्या के आधार पर दसियों मिलीएम्प्स तक बढ़ जाता है, और जब इलेक्ट्रोमैग्नेट चालू होता है, तो यह लगभग 1 ए तक बढ़ जाता है।

चावल। 2ए. घटक पार्श्व दृश्य

चावल। 2बी. रास्तों से देखें

लॉक को एक मुद्रित सर्किट बोर्ड पर इकट्ठा किया गया है। तत्वों का स्थान और उस पर मुद्रित कंडक्टरों का चित्र अंजीर में दिखाया गया है। 2. LED HL1-HL3 और बटन SB1, SB2 बंद दरवाजे के फ्रेम पर अलग से लगाए गए हैं। ताला खोलने वाले व्यक्ति को एलईडी दिखाई देनी चाहिए और बटन दबाने के लिए उपलब्ध होने चाहिए। एल ई डी, जिनके प्रकार आरेख में दर्शाए गए हैं, का आवास व्यास 10 मिमी और बढ़ी हुई चमक है। हालाँकि, आप अन्य, उपयुक्त चमक वाले रंग लगा सकते हैं।

माइक्रोकंट्रोलर प्रोग्राम "PIC सिम्युलेटर IDE v6.91" वातावरण में बनाया गया था। प्रारंभिक कोड बटन SB1 और SB2 पर एक निश्चित क्रम में आठ प्रेस का संयोजन है। प्रोग्राम में, SB1 बटन दबाने को दबाने की क्रम संख्या के अनुरूप मेमोरी सेल के बिट में एक तार्किक शून्य द्वारा दर्शाया जाता है, और SB2 बटन दबाने पर ऐसे बिट में एक तार्किक इकाई द्वारा दर्शाया जाता है। संभावित संयोजनों की कुल संख्या 256 है।
किसी भी बटन को दबाने की पुष्टि HL1 LED को चालू करके की जाती है, जो आपको उन्हें दृष्टिगत रूप से नियंत्रित करने की अनुमति देती है। कोड डायल करते समय दोनों बटन एक साथ न दबाएं। यह डायलिंग प्रयास को रद्द कर देगा और लॉक को 4 सेकंड के लिए ब्लॉक कर देगा। बटन दबाने के बीच बहुत लंबे समय तक रुकने या बटन को बहुत लंबे समय तक (3 सेकंड से अधिक) दबाए रखने की स्थिति में, प्रोग्राम HL3 LED को चालू कर देता है और प्रवेश के प्रयास को भी रद्द कर देता है, जिससे लॉक 4 सेकंड के लिए अवरुद्ध हो जाता है।

यदि कोड अंत तक डायल किया गया है, लेकिन माइक्रोकंट्रोलर की मेमोरी में संग्रहीत नमूने से मेल नहीं खाता है, तो लॉक 4 एस के लिए अवरुद्ध है, लेकिन एचएल 3 एलईडी चमक रहा है। तीन गलत कोड प्रविष्टियाँ एक मिनट के लिए लॉक को ब्लॉक कर देंगी, जिसके साथ तीनों एलईडी भी शामिल हो जाएंगी। किसी भी कारण से हुआ अवरोध समाप्त होने तक बटन दबाने से कोई प्रभाव नहीं पड़ता।

एक अनुकरणीय कोड संयोजन पते 1 पर माइक्रोकंट्रोलर के EEPROM में संग्रहीत किया जाता है। अपने काम की शुरुआत में, प्रोग्राम इस सेल की सामग्री को पढ़ता है और इसे कोड वेरिएबल को असाइन करता है। प्रारंभ में, कोड को माइक्रोकंट्रोलर प्रोग्रामिंग के चरण में EEPROM में दर्ज किया जाता है। इसके लिए साधन किसी भी प्रोग्रामर के सॉफ्टवेयर में उपलब्ध हैं। उदाहरण के लिए, प्रोग्रामिंग वातावरण की मुख्य विंडो "PIC सिम्युलेटर IDE v6.91" में प्रोग्राम को माइक्रोकंट्रोलर में और EEPROM छवि के साथ विंडो में लोड करने से पहले मेनू आइटम "टूल्स- * EEPROM मेमोरी एडिटर" को खोलने के लिए पर्याप्त है। उपरोक्त पते पर सेल में वांछित कोड लिखें। मेमोरी की सामग्री यहां हेक्साडेसिमल में दर्शाई गई है, इसलिए, उदाहरण के लिए, कोड 00110011 33 जैसा दिखता है।

लॉक के संचालन के दौरान, आप माइक्रोकंट्रोलर को रीप्रोग्राम किए बिना कोड बदल सकते हैं। ऐसा करने के लिए, लॉक चालू करें और सही कोड दर्ज करें जो इस समय मान्य है। HL2 LED चालू होनी चाहिए और लॉक खुल जाना चाहिए। जब यह खुला हो, तो दोनों बटन एक साथ दबाएँ।

HL2 LED झपकने लगेगी और HL3 चालू हो जाएगा। बटन छोड़ें और HL3 LED के बुझने के बाद, एक नया संयोजन दर्ज करना शुरू करें - यदि बटन दबाने की अवधि और प्रवेश करते समय उनके बीच रुकने की आवश्यकताओं का उल्लंघन नहीं किया जाता है, तो HL2 LED झपकती रहेगी, और HL3 LED चालू रहेगी। फिर से चालू करें - HL3 LED के फिर से बंद होने के बाद (ऐसा करने के लिए, दोनों बटन जारी होने चाहिए), फिर से उसी संयोजन को डायल करें। यदि यह पहले वाले के समान है, तो प्रोग्राम इसे स्वीकार करेगा और इसे EEPROM पर लिखेगा।

लेख से जुड़े बेसिक प्रोग्राम के स्रोत पाठ में उपयोग किए गए सभी चरों का विवरण और सबसे महत्वपूर्ण पंक्तियों पर टिप्पणियाँ शामिल हैं। माइक्रोकंट्रोलर का TMR0 टाइमर लगभग 65.5 एमएस की अवधि के साथ ओवरफ्लो करने के लिए कॉन्फ़िगर किया गया है, जो हर बार एक रुकावट अनुरोध उत्पन्न करता है। इन अनुरोधों को संसाधित करते हुए, माइक्रोकंट्रोलर बटनों की स्थिति निर्धारित करता है और आवश्यक समय अंतराल की गणना करता है। उदाहरण के लिए, लगभग एक मिनट का लॉक ब्लॉकिंग 1000 रुकावटों की गिनती पर आधारित है। इस मामले में उनकी गिनती den_p वेरिएबल में रखी गई है। चूँकि यह long प्रकार का है और मेमोरी के चार बाइट लेता है, यह 0 से 232-1 (4294967295) तक मान ले सकता है। यदि, उदाहरण के लिए, आप गणना परिणाम सीमा 3600/0.0655^56000 पर सेट करते हैं, तो अवरोधन समय एक घंटे तक बढ़ जाएगा।

माइक्रोकंट्रोलर पर कोड लॉकएक काफी सरल AVR ATtiny13 माइक्रोकंट्रोलर पर असेंबल किया गया। इसका उपयोग विभिन्न भंडारण क्षेत्रों तक पहुंच को प्रतिबंधित करने, गेराज दरवाजे और घर के दरवाजे को बंद करने के साथ-साथ विभिन्न उपकरणों को चालू करने के लिए किया जा सकता है जिन्हें चालू करने की आवश्यकता होती है।

संचालन का सिद्धांत

माइक्रोकंट्रोलर पर लॉक का संचालन तीन नंबरों के अनुक्रमिक इनपुट पर आधारित है। प्रत्येक संख्या का आकार 0 से 255 तक की सीमा में हो सकता है। यह बदले में अन्य तालों की तुलना में संयोजन लॉक की सुरक्षा के स्तर को बढ़ाता है, जिसमें प्रत्येक गुप्त संख्या का आकार 0 से 9 तक होता है।

इस घटना में कि इन तीन नंबरों का दर्ज किया गया क्रम संयोजन लॉक के माइक्रोकंट्रोलर की मेमोरी में दर्ज किए गए तीन नंबरों से मेल खाता है, तो आउटपुट (पिन 3), एचएल 4 पर एक नियंत्रण संकेत (लॉग.1) दिखाई देगा। एलईडी 15 सेकंड के लिए जलेगी, जो इनपुट की शुद्धता का संकेत देगी और लॉक के एक्चुएटर को नियंत्रित करने वाले रिले K1 के काम करेगी। 15 सेकंड के बाद, माइक्रोकंट्रोलर के पिन 4 पर एक लॉग दिखाई देगा। 0 और लॉक प्रारंभिक प्रतीक्षा स्थिति में वापस आ जाएगा।

कोड लॉक का संचालन केवल दो बटनों द्वारा नियंत्रित किया जाता है, जो केवल एलईडी के संकेत द्वारा निर्देशित होता है। इसके अलावा, गुप्त कोड केवल एक बटन SB2 के साथ दर्ज किया जाता है, जो लॉक के बाहरी पैनल पर स्थित होता है। दूसरा बटन SB1 प्रोग्रामिंग के लिए है, और यह बोर्ड पर ही स्थित है।

कोड लॉक प्रबंधित करने के चरण

  • माइक्रोकंट्रोलर की गैर-वाष्पशील मेमोरी में तीन कोड नंबर दर्ज करना।

आइए इसे एक विशिष्ट उदाहरण से देखें। मान लीजिए कि हमें निम्नलिखित गुप्त कोड सेट करने की आवश्यकता है: पहला अंक 8 है, दूसरा अंक 12 है, तीसरा अंक 9 है। ऐसा करने के लिए, हम डिवाइस को बिजली की आपूर्ति करते हैं, फिर दोनों बटन (SB1 और SB2) दबाकर रखें ). उसके बाद, SB1 बटन को छोड़ दें, और जैसे ही HL1 LED चमकने लगे, SB2 बटन को छोड़ दें। इन जोड़तोड़ों के बाद, HL1 LED लगातार चालू रहेगी, और HL2 और HL3 LED नहीं जलेंगी। एल ई डी की यह स्थिति इंगित करती है कि डिवाइस प्रोग्रामिंग मोड में प्रवेश कर चुका है।

अब, पहला नंबर लिखने के लिए, हमें SB2 बटन को दबाकर रखना होगा, जबकि तीनों एलईडी चमकने लगेंगी। आपको फ्लैश की आवश्यक संख्या गिननी होगी (हमारे मामले में यह 8 है) और बटन को छोड़ दें। उसके बाद, दर्ज संख्या की शुद्धता की पुष्टि करने के लिए, एलईडी समान संख्या में (8 बार) चमकेंगी। सब कुछ, पहला नंबर लिखा हुआ है। इसके बाद, HL2 LED जलती है - हमें याद दिलाती है कि हमें दूसरा नंबर लिखना है।

हम ठीक उसी तरह आगे बढ़ते हैं जैसे पहला नंबर लिखते समय: हम SB2 बटन को दबाए रखते हैं और एलईडी फ्लैश की आवश्यक संख्या गिनते हैं (हमारे उदाहरण में, यह 12 है), बटन को छोड़ दें और इनपुट की शुद्धता की जांच करें बार-बार चमकना। फिर HL3 LED तीसरे नंबर के लिए जलती है, और हम तीसरे नंबर (नंबर 9) के लिए भी यही प्रक्रिया दोहराते हैं।

उसके बाद, हमने सभी तीन नंबरों को माइक्रोकंट्रोलर की मेमोरी में लिख लिया है और प्रोग्रामिंग मोड से बाहर निकलने के लिए, आपको SB1 बटन दबाना होगा।

  • गुप्त कोड सेट

आइए एक उदाहरण से इस पर भी विचार करें. उससे पहले, हमने गुप्त कोड 8-12-9 लिखा था। प्रवेश करने के लिए, पहले SB1 बटन दबाएं और HL1 LED के जलने के तुरंत बाद इसे छोड़ दें, जिससे हमारा लॉक कोड एंट्री मोड में स्थानांतरित हो जाएगा। HL1 LED की चमक इंगित करती है कि आपको पहला अंक दर्ज करने की आवश्यकता है। संख्याओं को दर्ज करने की प्रक्रिया प्रोग्रामिंग करते समय संख्याओं को दर्ज करने की प्रक्रिया के समान है। अर्थात्, SB1 बटन दबाकर, हम आवश्यक राशि की गणना करते हैं, जिसके बाद हम बटन छोड़ते हैं और LED को फ्लैश करके डायल किए गए अंक की पुष्टि का निरीक्षण करते हैं। फिर हम दूसरे और तीसरे अंक की ओर बढ़ते हैं।

इस घटना में कि गुप्त कोड के सभी तीन अंक सही ढंग से दर्ज किए गए हैं, रिले काम करेगा और HL4 LED 15 सेकंड के लिए चालू हो जाएगी, HL1, HL2, HL3 LED रनिंग लाइट मोड में चमकेंगी।

गुप्त कोड दर्ज करने के लिए आपके पास तीन प्रयास हैं। यदि तीसरी बार कोड गलत दर्ज किया गया है, तो प्रवेश करने की क्षमता 2.5 मिनट के लिए अवरुद्ध हो जाती है। इस समय के बाद, लॉक फिर से कोड दर्ज करने के लिए तैयार हो जाएगा।

माइक्रोकंट्रोलर की प्रोग्रामिंग करते समय, निम्नलिखित फ़्यूज़ सेट किए जाने चाहिए:

  • सीकेडीआईवी8 = 0
  • बोडलेवल0 = 0
  • एसपीएमईएन = 0

(1.3 एमबी, डाउनलोड: 1 566)

एक कोड लॉक क़ीमती सामान वाले कमरों में अनधिकृत व्यक्तियों की पहुंच को प्रतिबंधित करने में मदद करेगा। PIC16F628A माइक्रोकंट्रोलर पर कोड लॉक लागू करने के विकल्पों में से एक इस आलेख में दिया गया है।

नीचे दिया गया चित्र एक कोड लॉक का आरेख दिखाता है। सर्किट का मुख्य भाग PIC16F628A माइक्रोकंट्रोलर है। मुख्य आदेशों को निष्पादित करने के लिए एल्गोरिदम चित्र 2 में दिखाया गया है। प्रोग्राम कोड असेंबली भाषा में लिखा गया है, प्रोजेक्ट के साथ संग्रह के CL \ 16F628ATEMP.ASM फ़ोल्डर में सूची देखें। डिवाइस को एक बटन से नियंत्रित किया जाता है। बटन दबाने से डिवाइस के ऑपरेटिंग मोड में क्रमिक परिवर्तन प्राप्त होता है। बटन दबाने की ध्वनि संगत एक पीजो ध्वनि उत्सर्जक द्वारा प्रदान की जाती है। सूचना के दृश्य प्रदर्शन के लिए अंतर्निर्मित नियंत्रक वाले डिस्प्ले का उपयोग किया जाता है।

PIC16F628A माइक्रोकंट्रोलर की इन-सर्किट प्रोग्रामिंग और डिबगिंग का एक पूरा चक्र MPLAB IDE v8.15 (एकीकृत विकास वातावरण), MPASM v5.22 कंपाइलर (MPLAB IDE v8.15 में शामिल) और MPLAB ICD 2 (इन-) का उपयोग करके किया गया था। सर्किट डिबगर)। उन लोगों के लिए जिनके पास उपरोक्त उपकरण नहीं हैं, लेकिन HEX फ़ाइलों और किसी अन्य प्रोग्रामर के साथ काम करने के लिए उनका अपना प्रोग्राम है, आप संबंधित प्रोजेक्ट में 16F628ATEMP.HEX फ़ाइल पा सकते हैं।

DD1 माइक्रोकंट्रोलर में कार्यात्मक आउटपुट RA0, RB0 - RB7, CCP1 हैं, जिनका उपयोग जानकारी इनपुट और आउटपुट करने के लिए किया जाता है। DD1 माइक्रोकंट्रोलर में फोर्स्ड रीसेट फ़ंक्शन नहीं होता है, रीसेट पिन एक अवरोधक R1 के माध्यम से सकारात्मक पावर क्षमता से जुड़ा होता है। घड़ी की आवृत्ति उत्पन्न करने के लिए एक ऑन-चिप आरसी ऑसिलेटर का उपयोग किया जाता है।

क्लॉक बटन SB1 वर्तमान-सीमित अवरोधक R3 के माध्यम से आउटपुट RA0 से जुड़ा है। क्लॉक बटन SB1 की दबी हुई स्थिति में, रोकनेवाला R7 निम्न तर्क स्तर का अनुकरण करता है। DD1 माइक्रोकंट्रोलर SB1 क्लॉक बटन की तीन स्थितियों को पहचानता है:

  1. दबाया नहीं गया;
  2. संक्षेप में दबाया गया (1 सेकंड से कम);
  3. दबाया और रखा गया (1 सेकंड से अधिक)।

पीजो ध्वनि उत्सर्जक P1 स्पर्श बटन SB1 की स्थिति को अलग करने में मदद करता है। तो, अवस्था 1 में, कोई ध्वनि उत्पन्न नहीं होती है, अवस्था 2 में, तब तक ध्वनि उत्पन्न होती है जब तक कि माइक्रोकंट्रोलर अवस्था 3 को पहचान नहीं लेता है, और अवस्था 3 में, कोई ध्वनि उत्पन्न नहीं होती है।

जानकारी प्रदर्शित करने के लिए लिक्विड क्रिस्टल डिस्प्ले HG1 का उपयोग किया जाता है। डिस्प्ले की तकनीकी विशिष्टता वेबसाइट पर पाई जा सकती है। इसमें एक नियंत्रक है जो चरित्र निर्माण फ़ंक्शन को कार्यान्वित करता है। प्रत्येक सोलह वर्णों की दो पंक्तियाँ प्रदर्शित करता है। डिस्प्ले को माइक्रोकंट्रोलर पिन RB0, RB1, RB4 - RB7 के माध्यम से नियंत्रित किया जाता है। डेटा लोडिंग निबल्स में, पिन RB4 - RB7 के माध्यम से होती है। "कुंडी" - आरबी1. सिग्नल रजिस्टर का चुनाव आउटपुट RB0 पर बनता है। रेसिस्टर्स R5 और R6 डिस्प्ले HG1 का कंट्रास्ट सेट करते हैं। डिस्प्ले की बैकलाइट वर्तमान-सीमित अवरोधक आर 4 के माध्यम से बिजली की आपूर्ति से जुड़ी हुई है। HG1 डिस्प्ले को 3 x 15 मिमी पीतल के स्टैंडऑफ़ और 3 x 6 मिमी स्क्रू के साथ बोर्ड पर पेंच किया गया है।

आरबी2 पर तर्क बनाकर, वे क्षेत्र प्रभाव ट्रांजिस्टर वीटी1 को खोलने या बंद करने को प्राप्त करते हैं, जो एक्स1 टर्मिनल ब्लॉक से जुड़े इलेक्ट्रिक लॉक को चालू और बंद करता है। इलेक्ट्रिक लॉक को 9-15 वी के ऑपरेटिंग वोल्टेज के लिए डिज़ाइन किया जाना चाहिए और 1 ए से अधिक की धारा का उपभोग नहीं करना चाहिए। जब ​​इलेक्ट्रिक लॉक पर वोल्टेज लगाया जाता है, तो इसे खुलना चाहिए, वोल्टेज की अनुपस्थिति में यह ब्लॉक (बंद) हो जाता है।

वर्तमान-सीमित अवरोधक R2 के माध्यम से CCP1 (PWM का हार्डवेयर कार्यान्वयन, आवृत्ति 4 kHz, कर्तव्य चक्र 2) के आउटपुट के लिए, 4 kHz की ध्वनि उत्पादन की ऑपरेटिंग आवृत्ति के साथ एक पीजो ध्वनि उत्सर्जक P1 जुड़ा हुआ है।

डिवाइस कनेक्टर X2 से जुड़े एसी या डीसी वोल्टेज स्रोत द्वारा संचालित है। बिजली आपूर्ति का रेटेड वोल्टेज 9 - 15 वी है। बिजली आपूर्ति का रेटेड वर्तमान 1 ए है। बिजली आपूर्ति को स्थिर करने के लिए, डायोड ब्रिज वीडी1, एक रैखिक स्टेबलाइजर डीए1, फिल्टर कैपेसिटर सी1 से एक पारंपरिक सर्किट का उपयोग किया जाता है। सी4.

डिवाइस को -20 डिग्री सेल्सियस से +70 डिग्री सेल्सियस तक के तापमान रेंज में संचालित किया जा सकता है।
माइक्रोकंट्रोलर को इस तरह से प्रोग्राम किया गया है कि इसमें ग्यारह ऑपरेटिंग स्टेट्स हैं।

  1. जब डिवाइस चालू होता है, तो गैर-वाष्पशील डेटा मेमोरी EEPROM पढ़ी जाती है, जहां लॉक स्थिति और कोड का डेटा अपलोड किया जाता है। डिवाइस लॉक के रीड स्टेटस रजिस्टर के अनुसार इलेक्ट्रिक लॉक को खोलता या बंद करता है। डिवाइस उस स्थिति में चला जाता है जहां यह एन्कोडिंग आँकड़े प्रदर्शित करता है, अर्थात। 2.
  2. इस स्थिति में, ऊपरी पंक्ति में डिवाइस शिलालेख "स्टेट" प्रदर्शित करता है। स्टेट।" और निचली पंक्ति पर एन्कोडिंग आँकड़े प्रदर्शित होते हैं, अर्थात् एन्कोडिंग की संख्या और डिकोडिंग की संख्या*। टैक्ट बटन को थोड़ी देर या देर तक दबाने के बाद, लॉक स्टेट रजिस्टर द्वारा निर्देशित डिवाइस, लॉक खुला होने पर कोडिंग स्थिति में प्रवेश करता है, यानी। 3 और लॉक बंद होने पर डिकोडिंग स्थिति में प्रवेश करता है, यानी। 4.
  3. डिवाइस डिस्प्ले की ऊपरी पंक्ति में शिलालेख "कोड कोड" प्रदर्शित करता है और उस स्थिति में स्विच करता है जहां कोड दर्ज किया गया है (उपप्रोग्राम "कोड एंट्री"), यानी। 5. एन्कोडिंग की संख्या का काउंटर बढ़ाएँ। डिवाइस एक ऐसी स्थिति में चला जाता है जहां यह लॉक की स्थिति को बदल देता है, उसे बंद कर देता है, यानी। 9.
  4. डिवाइस डिस्प्ले की ऊपरी पंक्ति में शिलालेख "डीकोड डी.कोड" प्रदर्शित करता है और उस स्थिति में जाता है जहां कोड दर्ज किया गया है (उपप्रोग्राम "कोड एंट्री"), यानी। 5. डिकोड की संख्या का काउंटर बढ़ाएँ। डिवाइस दर्ज किए गए कोड की तुलना गैर-वाष्पशील EEPROM मेमोरी में संग्रहीत कोड से करता है। यदि कोड मेल खाता है, तो डिवाइस एक ऐसी स्थिति में चला जाता है जहां यह लॉक खोलने, उसकी स्थिति को बदल देता है, यानी। 10, और यदि कोड मेल नहीं खाता है, तो यह उस स्थिति में चला जाता है जहां यह त्रुटि के बारे में जानकारी प्रदर्शित करता है, अर्थात। ग्यारह।
  5. चार अंकों वाले कोड का पहला अंक डिस्प्ले की निचली रेखा पर वर्गाकार कोष्ठक में हाइलाइट किया गया है। घड़ी बटन को संक्षेप में दबाने से, दर्ज अंक का रजिस्टर बढ़ जाता है**। यदि टैक बटन को 1 सेकंड से अधिक समय तक दबाकर रखा जाता है, तो डिवाइस उस स्थिति में स्विच हो जाता है जहां कोड का दूसरा अंक चुना जाता है, यानी। 6.
  6. चार अंकों वाले कोड का दूसरा अंक डिस्प्ले की निचली रेखा पर वर्गाकार कोष्ठक में हाइलाइट किया गया है। घड़ी बटन को संक्षेप में दबाने से, दर्ज अंक का रजिस्टर बढ़ जाता है**। यदि टैक बटन को 1 सेकंड से अधिक समय तक दबाकर रखा जाता है, तो डिवाइस उस स्थिति में स्विच हो जाता है जहां कोड का तीसरा अंक चुना जाता है, यानी। 7.
  7. चार अंकों के कोड का तीसरा अंक डिस्प्ले की निचली रेखा पर वर्गाकार कोष्ठक में हाइलाइट किया गया है। घड़ी बटन को संक्षेप में दबाने से, दर्ज अंक का रजिस्टर बढ़ जाता है**। यदि टैक बटन को 1 सेकंड से अधिक समय तक दबाकर रखा जाता है, तो डिवाइस उस स्थिति में स्विच हो जाता है जहां कोड का चौथा अंक चुना जाता है, यानी। 8.
  8. चार अंकों के कोड का चौथा अंक डिस्प्ले की निचली रेखा पर वर्गाकार कोष्ठक में हाइलाइट किया गया है। घड़ी बटन को संक्षेप में दबाने से, दर्ज अंक का रजिस्टर बढ़ जाता है**। यदि टैक्ट बटन को 1 सेकंड से अधिक समय तक दबाकर रखा जाता है, तो डिवाइस उस स्थिति में स्विच हो जाता है जहां से "कोड एंट्री" सबरूटीन का अनुरोध किया गया था, यानी। 3 या 4.
  9. डिवाइस लॉक बंद कर देता है और लॉक की स्थिति और कोड को सेव कर लेता है। शीर्ष पंक्ति में शिलालेख "सेविंग सेविंग" प्रदर्शित होता है। और निचली पंक्ति पर चार अंकों का कोड। इसके बाद, डिवाइस उस स्थिति में चला जाता है जहां यह एन्कोडिंग आँकड़े प्रदर्शित करता है, अर्थात। 2.
  10. डिवाइस लॉक खोलता है और लॉक स्थिति और कोड सहेजता है। शीर्ष पंक्ति में शिलालेख "सेविंग सेविंग" प्रदर्शित होता है। और निचली पंक्ति पर चार अंकों का कोड। इसके बाद, डिवाइस उस स्थिति में चला जाता है जहां यह एन्कोडिंग आँकड़े प्रदर्शित करता है, अर्थात। 2.
  11. शीर्ष पंक्ति में शिलालेख "त्रुटि त्रुटि" और निचली पंक्ति में चार अंकों का कोड प्रदर्शित होता है। (फोटो 4) टैक्ट बटन को थोड़ी देर या देर तक दबाने के बाद, डिवाइस उस स्थिति में स्विच हो जाता है जहां यह एन्कोडिंग आँकड़े प्रदर्शित करता है, यानी। 2.

*काउंटर ओवरफ्लो (65535 से अधिक) के बाद, यह शून्य पर रीसेट हो जाता है और गिनती फिर से शुरू हो जाती है, जिससे आंकड़ों में विफलता होती है, इस अर्थ में कि एन्कोडिंग की संख्या डिकोडिंग की संख्या से अधिक हो सकती है। इसलिए, काउंटरों को रीसेट करने के लिए डिवाइस को डी-एनर्जेट करने की अनुशंसा की जाती है।

** संख्या 9 को बढ़ाने पर शून्यकरण होता है।

चूंकि EEPROM मेमोरी (कॉन्फ़िगरेशन में सेट) माइक्रोकंट्रोलर के इन-सर्किट रीडिंग से सुरक्षित है, इसलिए इन-सर्किट पासवर्ड को पढ़ना और पता लगाना संभव नहीं होगा, और इसलिए इलेक्ट्रिक लॉक को चालू करना संभव नहीं होगा। इसे खोलने का एक आसान तरीका रहता है - सीधे विद्युत लॉक पर सीधे वोल्टेज लागू करें। मैं यह निष्कर्ष निकालता हूं कि "कॉम्बिनेशन लॉक" डिवाइस और इलेक्ट्रिक लॉक को अनधिकृत व्यक्तियों के प्रवेश से विश्वसनीय रूप से संरक्षित किया जाना चाहिए। बटन और डिस्प्ले स्वतंत्र रूप से पहुंच योग्य होने चाहिए।

यह ध्यान दिया जाना चाहिए कि डिवाइस को डी-एनर्जीकृत किया जा सकता है, वैसे भी, कोड दर्ज करने के बाद, लॉक की स्थिति और कोड गैर-वाष्पशील ईईपीरोम मेमोरी में संग्रहीत होते हैं। गैर-वाष्पशील EEPROM मेमोरी में कोड को सहेजते समय डिवाइस को डी-एनर्जेट करना निषिद्ध है।

डिवाइस के संचालन में एक महत्वपूर्ण विवरण पर ध्यान देना उचित है। जब डिवाइस चालू होता है, तो यह थोड़े समय के लिए (1 सेकंड से कम समय के लिए) इलेक्ट्रिक लॉक खोल सकता है, इस तथ्य के बावजूद कि इलेक्ट्रिक लॉक की बंद स्थिति गैर-वाष्पशील EEPROM मेमोरी में संग्रहीत होती है। MPLAB IDE वातावरण में प्रोग्राम कोड के निष्पादन का अनुकरण करते समय, मुझे यह त्रुटि नहीं मिली। EEPROM मेमोरी में कोड को सेव करते समय डिवाइस की अप्रत्याशित बिजली विफलता की स्थिति में, कोड को गलत तरीके से सेव किया जा सकता है और इसे पुनर्स्थापित करना संभव नहीं होगा, जिससे माइक्रोकंट्रोलर की पुन: प्रोग्रामिंग हो जाएगी। इससे डिवाइस के लिए एक स्थिर और (या) बैकअप बिजली आपूर्ति की आवश्यकता के बारे में सिफारिश की जाती है। GB1 - बैकअप पावर।

फ़ोल्डर में मुद्रित सर्किट बोर्डों के निर्माण के लिए फ़ाइलें देखें।

इस इकाई पर निम्नलिखित भागों को बदला जा सकता है। DIP18 पैकेज में 20 मेगाहर्ट्ज की ऑपरेटिंग क्लॉक आवृत्ति के साथ PIC16F628A-I / P-xxx श्रृंखला से माइक्रोकंट्रोलर DD1। HG1 डिस्प्ले WH1602x श्रृंखला में से किसी में भी फिट होगा। वोल्टेज स्टेबलाइजर DA1 घरेलू KR142EN5A (5 V, 1.5 A)। I-Pak पैकेज (TO-251AA) में फ़ील्ड MOSFET ट्रांजिस्टर VT1 (N-चैनल), आरेख पर दर्शाई गई रेटिंग का एक एनालॉग उपयुक्त है। 4 kHz की ध्वनि उत्पादन की ऑपरेटिंग आवृत्ति के साथ पीजो ध्वनि उत्सर्जक P1। डायोड ब्रिज VD1 को 2Wxx श्रृंखला में से किसी पर भी लागू किया जा सकता है। पावर कनेक्टर X2 केंद्रीय संपर्क d=2.1 मिमी के साथ चित्र में दिखाए गए के समान है। गैर-ध्रुवीय कैपेसिटर C1 और C2 जिनका नाममात्र मान 0.01 - 0.47 μF x 50 V है। इलेक्ट्रोलाइटिक कैपेसिटर C3 और C4 की कैपेसिटिव रेटिंग समान है, और वोल्टेज आरेख में दर्शाए गए से कम नहीं है।

कोड लॉक प्रोजेक्ट के साथ संग्रह डाउनलोड करें: 16F628Code_Lock.rar

लोड हो रहा है...लोड हो रहा है...