बाइनरी कलाई घड़ी. DS1307 DIY बाइनरी घड़ी के साथ AVR माइक्रोकंट्रोलर पर घड़ी

यह सब AVR माइक्रोकंट्रोलर पर कुछ पूरी तरह से तैयार डिवाइस बनाने की इच्छा से शुरू हुआ।

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

बाइनरी घड़ी क्या है?

उन लोगों के लिए जो नहीं जानते कि बाइनरी घड़ी क्या है और इससे समय का निर्धारण कैसे किया जाता है, मैं एक छोटा सा विषयांतर करूँगा। बाइनरी घड़ी बस एक ऐसी घड़ी है जो दशमलव संख्या प्रणाली के बजाय बाइनरी (या बाइनरी) संख्या प्रणाली में समय दिखाती है जिसके हम आदी हैं।

बाइनरी घड़ियाँ विभिन्न किस्मों में आती हैं (बिल्कुल सामान्य घड़ियों की तरह) - विभिन्न संख्याओं और संकेतकों के स्थानों के साथ, सेकंड के साथ या बिना सेकंड के, 24 या 12 घंटे के समय प्रारूप के साथ, आदि। मैंने उस विकल्प के साथ जाने का निर्णय लिया जो केडीई के उपर्युक्त प्लास्मोइड के जितना संभव हो उतना समान हो:


घड़ी में छह लंबवत कॉलम होते हैं - दो कॉलम घंटों के लिए, दो मिनट के लिए, और दो सेकंड के लिए (बाएं से दाएं)। प्रत्येक कॉलम अनिवार्य रूप से एक अंक (यानी, घंटे, मिनट और सेकंड के लिए दो अंक) का प्रतिनिधित्व करता है।

घड़ी में चार क्षैतिज रेखाएँ होती हैं, क्योंकि हमें शून्य से नौ तक के अंकों को दिखाने में सक्षम होने की आवश्यकता होती है (कम से कम सबसे महत्वपूर्ण अंक के लिए), और नौ का द्विआधारी प्रतिनिधित्व है 1001 , में चार अंक (बिट्स) होते हैं। सबसे कम महत्वपूर्ण अंक सबसे नीचे है.

यह समझने का सबसे आसान तरीका है कि कोई घड़ी किस समय दिखाती है, बाएं से दाएं, नीचे से ऊपर तक "डायल" का विश्लेषण करना है। आइए ऊपर चित्र में दिखाई गई घड़ी के सबसे बाएं कॉलम द्वारा दर्शाए गए बाइनरी नंबर का मान लिखें (यह मानते हुए कि एक जले हुए संकेतक का मतलब एक है, और एक बुझे हुए संकेतक का मतलब शून्य है): 0010 बाइनरी संख्या प्रणाली में यह है 2 - दशमलव में. आइए दूसरे कॉलम का मान इसी प्रकार लिखें: 0001 बाइनरी संख्या प्रणाली में (जैसे दशमलव में), या बस एक। यानी घड़ी पर 21 घंटा। इसी तरह आप घड़ी जो दिखाती है उसे पढ़ सकते हैं 35 मिनट और 28 सेकंड थोड़े से अभ्यास से, आप बाइनरी घड़ी से लगभग उतनी ही तेजी से समय पढ़ने में सक्षम होंगे जितनी किसी नियमित घड़ी से।

कार्यान्वयन

तो, विचार स्पष्ट है, आइए कार्यान्वयन के लिए आगे बढ़ें।

आइए संकेतक ("डायल") से शुरू करें - जो एलईडी की एक जाली है।

चूंकि घड़ी में 4 क्षैतिज और 6 ऊर्ध्वाधर पंक्तियाँ हैं, इसलिए आवश्यक एलईडी की कुल संख्या 6 * 4 = 24 है। वास्तव में, आप कम एलईडी के साथ काम चला सकते हैं, क्योंकि सभी अंकों का उपयोग नहीं किया जाएगा - उदाहरण के लिए, घड़ी का सबसे महत्वपूर्ण अंक (सबसे बायां स्तंभ) दो से अधिक संख्या नहीं दिखा सकता है (बीस घंटे के समय प्रारूप के साथ), जिसका अर्थ है कि आप अधिकतम दो अंक बचा सकते हैं एल.ई.डी. लेकिन मैंने ऐसा नहीं किया और सभी 24 एलईडी लगा दीं, क्योंकि... मैं (भविष्य में) सरल पाठ संदेश दिखाने के लिए इस घड़ी का उपयोग करना चाहता था।

समय निर्धारित करने के लिए आपको बटनों की आवश्यकता होगी। उनमें से तीन हैं: पहला बटन घड़ी को समय सेटिंग मोड और वापस स्विच करता है। दूसरा बटन, अंक चयन, उस कॉलम को स्विच करता है जिसमें वर्तमान में समय समायोजित किया जा रहा है। और अंत में, तीसरा चयनित कॉलम में समय को एक से बढ़ा देता है।

एटीएमेगा32 का उपयोग माइक्रोकंट्रोलर के रूप में किया जाता है। निस्संदेह, इतने सरल कार्य के लिए इतने शक्तिशाली माइक्रोकंट्रोलर का उपयोग करना आवश्यक नहीं है, लेकिन मेरे पास पहले से ही एक था, इसलिए मैंने इसका उपयोग किया।

योजनाबद्ध और पीसीबी

सर्किट काफी मानक है: प्रोग्रामर को जोड़ने के लिए माइक्रोकंट्रोलर, बिजली की आपूर्ति, रीसेट, कनेक्टर। एक क्लॉक क्वार्ट्ज़ TOSC1 और TOSC2 से जुड़ा है जिससे घड़ी टिक जाएगी। समय सेटिंग बटन आपूर्ति वोल्टेज से जुड़े हुए हैं। दस एलईडी आउटपुट (6 कॉलम + 4 पंक्तियाँ)। एलईडी के माध्यम से करंट को सीमित करने के लिए प्रत्येक क्षैतिज पंक्ति से एक अवरोधक जुड़ा हुआ है।

मुद्रित सर्किट बोर्ड एक तरफा निकला, लेकिन फिर भी दूसरी तरफ दो जंपर्स (लाल रंग में चिह्नित) के साथ, जो पतले तांबे के तार से बनाना काफी सरल है।

चौखटा

यह संभवतः सबसे अरुचिकर भाग है। लेकिन साथ ही, वह ही थी जिसने अधिकांश समय लिया।

शरीर स्वयं कीलों और गोंद से बंधे लकड़ी के तख्तों से बना है। संयोजन के बाद, बोर्डों को सावधानी से रेत दिया गया, दाग और फर्नीचर वार्निश की कई परतों से ढक दिया गया।

एलईडी को एक ग्रिड में विभाजन के साथ स्थापित किया गया है, जो एक आरा का उपयोग करके लकड़ी के शासकों से बनाया गया है। साधारण ट्रेसिंग पेपर का एक टुकड़ा (जिसका उपयोग चित्र या पैटर्न के लिए किया जाता है) प्रकाश को फैलाने के लिए एक एलईडी के साथ प्रत्येक सेल में डाला जाता है।

घड़ी के सामने दो तरफा फ्रॉस्टेड ग्लास चिपका हुआ है। पिछला हिस्सा एक स्क्रू-माउंटेड ढक्कन से ढका हुआ है, जिसमें से समय-समय पर सेटिंग बटन बाहर निकलते हैं।

सॉफ्टवेयर भाग

मैंने प्रोग्राम को असेंबलर में लिखने का निर्णय लिया। इसलिए नहीं कि यह सबसे सुविधाजनक विकास भाषा है, बल्कि केवल शैक्षिक उद्देश्यों के लिए है। स्रोत कोड नीचे "फ़ाइलें" अनुभाग में पाए जा सकते हैं।

मैं संपूर्ण कोड का वर्णन नहीं करूंगा, क्योंकि... इस पर पर्याप्त विस्तार से टिप्पणी की गई है। मैं केवल मुख्य बिंदुओं का वर्णन करूंगा।

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

टाइमर/काउंटर2 बाधित होने पर समय परिवर्तन प्रति सेकंड एक बार होता है। चूँकि क्रिस्टल आवृत्ति 32768 हर्ट्ज है और टाइमर प्रीस्केलर 128 पर सेट है, एक-बाइट टाइमर प्रति सेकंड एक बार ओवरफ्लो होगा ( 32768 / (128 * 256) = 1 ), जो बहुत सुविधाजनक है।

बटन क्लिक की प्रोसेसिंग बटन के लिए घड़ी को सेटिंग मोड में और वापस स्विच करने के लिए बटन_स्टॉप_प्रेस्ड प्रक्रियाओं में होती है, समय सेटिंग बटन के लिए बटन_सेट_प्रेस्ड और कॉलम स्विच बटन के लिए बटन_स्विच_प्रेस्ड प्रक्रियाओं में होती है। ध्यान दें कि बटन_स्टॉप_प्रेस्ड प्रक्रिया में वर्तमान समय EEPROM में संग्रहीत होता है। ऐसा इसलिए किया जाता है ताकि यदि आवश्यक हो तो समय रीसेट न हो, उदाहरण के लिए, घड़ी को दूसरे सॉकेट पर स्विच करना (जब घड़ी चालू होती है, तो समय EEPROM से पढ़ा जाता है)।

सभी मुख्य "कार्य", जैसे बटनों की स्थिति को मतदान करना, सक्रिय स्कैन कॉलम को स्विच करना और समय प्रदर्शित करना, मुख्य में होता है . आरंभिक आरंभीकरण में किया जाता हैरीसेट।

परिणाम

परिणाम नीचे दिए गए वीडियो में देखा जा सकता है। विनिर्माण प्रक्रिया के कुछ चरणों को भी वहां कैद किया गया है।

फ़ाइलें

फ़र्मवेयर, स्कीमैटिक्स और वायरिंग बोर्ड के स्रोत कोड GitLab पर इस रिपॉजिटरी में स्थित हैं।

एक निष्कर्ष के रूप में

सामान्य तौर पर, पहले डिवाइस के लिए, मुझे लगता है कि यह काफी अच्छा निकला।

यदि आपको इस लेख में कोई अशुद्धि मिलती है, या यदि आपको लगता है कि किसी चीज़ का अधिक विस्तार से वर्णन किया जाना चाहिए, तो कृपया टिप्पणियों में लिखें।

शुभ दोपहर, प्रिय रेडियो शौकीनों। मैं आपके ध्यान में बाइनरी प्रस्तुत करता हूं, मुझे राडोकोट पर सर्किट मिला, मैंने 7.2 मेगाहर्ट्ज क्वार्ट्ज रेज़ोनेटर के लिए फर्मवेयर को बदल दिया (क्योंकि यह लंबे समय से शेल्फ पर धूल पकड़ रहा था और यह नहीं पता था कि इसका उपयोग कहां करना है, मैंने बोर्ड को दोबारा बनाया, चूंकि लेखक ने इसे विकसित किया था, इसलिए मेरी राय में मैंने इसे बिल्कुल सही तरीके से वायर्ड नहीं किया था (मुझे आशा है कि वह मेरे शब्दों से नाराज नहीं होंगे), पावर लाइन में एक आयनिस्टर जोड़ा - यह एक उच्च क्षमता वाला कैपेसिटर है, 0.47 बिजली की एक विशेष नाप

(फोटो में यह काला है, आकार में आयताकार है, किसी प्रकार के कार रेडियो से बंद है), ताकि यूपीएस रिले स्विच करने पर समय रीसेट न हो (यही वह जगह है जहां मैं यह घड़ी बनाने जा रहा हूं), और एक 78एल05 स्टेबलाइजर, क्योंकि मेरी निर्बाध बिजली आपूर्ति में 5वी वोल्टेज नहीं है (इसमें सभी तर्क 12वी द्वारा संचालित हैं)। और क्या? किसी तरह यूपीएस बहुत सरल लग रहा था, और अब दिखाने का समय होगा और बाइनरी कोड में सोचने में भी मदद मिलेगी, जो मस्तिष्क को क्षीण होने से रोकेगा।


मुझे आशा है कि हर कोई जानता है कि संख्याओं को दशमलव से बाइनरी में कैसे परिवर्तित किया जाए? मैं इसे किसी भी स्थिति में दोहराऊंगा। चार बिट्स के साथ आप 1 से 15 तक एक संख्या संचारित कर सकते हैं, बिट्स की कीमत दाएं से बाएं ओर गणना की जाती है, यानी 8_4_2_1, जैसा कि आप देख सकते हैं, उच्च बिट की कीमत निचले बिट की कीमत के दोगुने के बराबर है। उदाहरण: आइए 5 को दशमलव प्रणाली से बाइनरी में बदलें, हमें 0_1_0_1 मिलता है, यानी, हम तार्किक के बराबर बिट्स की कीमत जोड़ते हैं। और अब, इसके विपरीत, 1_0_0_1 8+1=9 होगा. समझ गया? महान।


इस घड़ी में, एक चमकदार एलईडी का मतलब एक है, और एक गैर-चमकदार एलईडी का मतलब शून्य है। मैं लेख के साथ उस डिवाइस की एक तस्वीर संलग्न कर रहा हूं जिसे मैंने दोहराया था।

घड़ी की कार्यप्रणाली का आधे मिनट का एक छोटा वीडियो

बाइनरी घड़ी को असेंबल करने की चाहत के कारण, मुझे इंटरनेट पर कभी भी कोई स्वीकार्य रेडीमेड डिज़ाइन नहीं मिला। अधिकांश घड़ियों में एक गंभीर खामी थी - जब बिजली बंद कर दी गई, तो समय सेटिंग्स खो गईं। सौभाग्य से, इससे कुछ ही समय पहले, मैंने सी भाषा और एवीआर माइक्रोकंट्रोलर्स में महारत हासिल करना शुरू कर दिया था। इसलिए, अर्जित ज्ञान को व्यावहारिक अनुभव के साथ सुदृढ़ करने और साथ ही पहिये का पुन: आविष्कार करने का निर्णय लिया गया। मुझे हरे रंग की चमकती एलईडी भी बहुत पसंद हैं।



योजना



आरटीसी

वर्तमान सेटिंग्स को सहेजने की समस्या वास्तविक समय घड़ी (आरटीसी) द्वारा पूरी तरह से हल हो गई है। मेरी पसंद DS1307 चिप पर पड़ी।

निर्माता के अनुसार, यदि बिजली बंद कर दी जाती है, तो यह केवल CR2032 लिथियम बैटरी की ऊर्जा की खपत करते हुए, 10 वर्षों तक समय और तारीख बचा सकती है। अर्थात्, स्वीकार्य सटीकता बनाए रखते हुए, घड़ी टिक-टिक करती रहती है। समय नष्ट नहीं होता है; जब हम घड़ी को दोबारा चालू करते हैं, तो हमें डायल पर वास्तविक समय मिलता है, न कि उसे बंद करने के समय का समय। माइक्रोसर्किट "स्क्वायर बस" I 2 C के माध्यम से माइक्रोकंट्रोलर के साथ संचार करता है, सटीक समय की रिपोर्ट करता है और इसके नए मूल्यों को स्वीकार करता है।

डिवाइस का दिल

मेगा32ए माइक्रोकंट्रोलर का चुनाव निम्नलिखित कारकों द्वारा निर्धारित किया गया था:
डायनामिक डिस्प्ले का उपयोग करने से बचने के लिए पर्याप्त पोर्ट हैं, जो मुझे पसंद नहीं है, मुख्य रूप से क्योंकि यह आंखों में जलन पैदा करता है (उच्च आवृत्ति पर पलकें झपकाना वैसे भी अप्राकृतिक है)। प्रोटॉन PICBasic भाषा में PIC माइक्रोकंट्रोलर्स के साथ खेलते समय मैं इससे परिचित हुआ, और यदि डायनामिक डिस्प्ले का उपयोग नहीं करना संभव है, तो मैं ऐसा करना पसंद करूंगा।
130 रूबल की अपेक्षाकृत कम लागत (उदाहरण के लिए, मेगा16ए की लागत समान है), और छूट के साथ यह आम तौर पर 104 रूबल है।
सुविधाजनक पिनआउट के साथ QPF-44 पैकेज साफ़ करें


पोर्ट "ए" सेकंड प्रदर्शित करता है, पोर्ट "बी" मिनट प्रदर्शित करता है, और पोर्ट "सी" घंटे प्रदर्शित करता है। यह बहुत सुविधाजनक है कि आप DS1307 से लिए गए समय मानों को बिना किसी बदलाव के बंदरगाहों पर निर्दिष्ट कर सकते हैं। बटन पोर्ट "डी" (पिन 3 - 7) से जुड़े होते हैं, पिन 0 और 1 क्रमशः क्लॉक लाइन (एससीएल) और सीरियल डेटा लाइन (एसडीए) के रूप में काम करते हैं। आरटीसी चिप को इस तरह से कॉन्फ़िगर किया गया है कि यह अपने सातवें चरण पर 1 हर्ट्ज़ की आवृत्ति पर दालों का उत्पादन करती है। यह पैर पोर्ट "डी" के तीसरे पिन से जुड़ा है। यह पोर्ट स्वयं एक इनपुट के रूप में कॉन्फ़िगर किया गया है, और बस मामले में, बिजली की आपूर्ति के साथ-साथ आंतरिक पुल-अप भी शामिल हैं, जो बाहर की तरफ एसएमडी प्रतिरोधों के साथ डुप्लिकेट किए गए हैं। इस तरह की कार्रवाइयां किसी भी आश्चर्य से पूरी तरह बचाती हैं।

एल ई डी


मैंने कम चमक वाले मैट हाउसिंग में एलईडी को चुना। सबसे पहले, एक पारदर्शी मामले में उज्ज्वल डायोड का परीक्षण किया गया था, लेकिन 3 एमए की धारा के साथ भी वे बहुत उज्ज्वल और असमान रूप से चमकते थे, जिससे फिर से असुविधा हुई। 2 वोल्ट के डायोड पर वोल्टेज ड्रॉप, 5 वोल्ट की आपूर्ति वोल्टेज और 1 kOhm के अवरोधक के साथ, डायोड के माध्यम से बहने वाली धारा का मान (5 - 2)/1000 = 3 mA के बराबर होगा। यह मान अनुभवजन्य रूप से चुना गया था, और चमक की चमक मंद कमरे के लिए बिल्कुल सही है। यदि आप घड़ी को सीधी धूप में स्थापित करने की योजना बना रहे हैं, तो तेज चमक के लिए प्रतिरोधों का मान 200 ओम तक कम किया जाना चाहिए (धन्यवाद कैप)।

बटन

बटनों के साथ एक अलग बोर्ड पर, एक अन्य बीटी6 बटन के रूप में एक "फ्यूज" होता है (यह हमें सिर में आकस्मिक शॉट से बचाएगा)। समय को पहले दबाकर संपादित किया जा सकता है।

सॉफ़्टवेयर

कोड CodeVisionAvr वातावरण में लिखा गया है।
कार्यक्रम की शुरुआत हमारे द्वारा माइक्रोकंट्रोलर बाह्य उपकरणों को स्थापित करने से होती है।
पोर्ट कॉन्फ़िगर करें (ए, बी, सी - आउटपुट, डी - इनपुट)
बस मामले में, 300 एमएस का ठहराव प्रदान किया जाता है ताकि डीएस1307 को "अपने होश में आने" का समय मिल सके।
"स्क्वायर बस" आरंभ करना
हम आरटीसी चिप को कॉन्फ़िगर करते हैं ताकि यह एसक्यूडब्ल्यू/आउट पिन पर हर सेकंड आयताकार पल्स उत्पन्न करे
हम जांचते हैं कि सीएलआर बटन दबाया गया है या नहीं। यदि हां, तो सभी मानों को 0 पर रीसेट करें
वैश्विक व्यवधान सक्षम करें
हाँ, उनके बारे में कुछ शब्द। हम गिरते किनारे पर PD2 पर बाहरी इंटरप्ट INT0 का उपयोग करते हैं, अर्थात। हर सेकंड प्रोग्राम इंटरप्ट हैंडलर पर जाएगा, जिसमें हम DS1307 से समय मान पढ़ते हैं और उन्हें एलईडी संकेतक पर प्रदर्शित करते हैं।
हम एक अंतहीन लूप में जाते हैं, जहां हम बटन पोल करते हैं
यदि बटन दबाया जाता है, तो एक घंटा (मिनट) जोड़ें (घटाएँ) और I2C के माध्यम से नया मान भेजें
साथ ही, हम जाँचते हैं कि क्या नया समय मान 24-घंटे और 60-मिनट की सीमा में फिट बैठता है।

मुद्रित सर्किट बोर्ड

बोर्ड एक तरफा टेक्स्टोलाइट पर ग्रेट कॉस्मिक लेजर-आयरनिंग तकनीक का उपयोग करके बनाया गया है। शीर्ष बोर्ड बनाते समय सादे कागज का प्रयोग किया गया (असफल प्रयोग)।


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


बोर्ड पीबीएस और पीएलडी कनेक्टर का उपयोग करके एक दूसरे से जुड़े हुए हैं। पहले वाले एक पतले माउंटिंग तार का उपयोग करके शीर्ष बोर्ड से जुड़े होते हैं; इसे बाहर निकाला जा सकता है, उदाहरण के लिए, एक पुराने एलपीटी केबल या एडाप्टर से।


दूसरे को निचले बोर्ड में मिलाया जाता है, और कीबोर्ड तक जाने वाले पिन मुड़े हुए होते हैं (फोटो देखें)।

SprintLayout5.0 प्रारूप में मुद्रित सर्किट बोर्ड शामिल हैं। फ़ोटो में कुछ गलतियाँ हैं, लेकिन उन्हें संलग्न फ़ाइलों में पहले ही सुधार लिया गया है।

माइक्रोकंट्रोलर फर्मवेयर

इस उद्देश्य के लिए, एक USBasp प्रोग्रामर को असेंबल किया गया था, जिसे ऊपर फोटो में देखा जा सकता है। यह बहुत अच्छी चीज़ है, उपयोग में आसान है और आप इसे पूरे वर्ष अपनी जेब में रख सकते हैं (मुझे आशा है कि कोई भी ऐसा नहीं करेगा)। मेगा32 फर्मवेयर फ्लैश करने के लिए आपको "स्लो एससीके" जम्पर इंस्टॉल करना होगा।
फ़्यूज़:
निम्न फ़्यूज़ = 0xC4
उच्च फ़्यूज़ = 0xD9
हमारा माइक्रोकंट्रोलर 8 मेगाहर्ट्ज की आवृत्ति के साथ एक आंतरिक आरसी ऑसिलेटर से क्लॉक किया जाता है। मुझे पोर्टसी पर जेटीएजी इंटरफ़ेस को अक्षम करना पड़ा, अन्यथा कुछ एलईडी नहीं जलतीं।
तेज़ फ़्लैशिंग/डिबगिंग के लिए बोर्ड में ISP10 कनेक्टर है।

सामने का हिस्सा

एल्यूमीनियम प्लेट से बना, 40 मिमी चौड़ा और 1.5 मिमी मोटा। इसमें रैक जोड़ने के लिए 5 मिमी के व्यास के साथ 18 छेद और 3 मिमी के व्यास के साथ 4 छेद हैं।


सबसे पहले, टेम्पलेट को मुद्रित किया गया और प्लेट पर चिपकाया गया। इसके बाद, 1.5 मिमी ड्रिल के साथ पायलट छेद ड्रिल किए गए, जिसके बाद आवश्यक व्यास के ड्रिल के साथ मुख्य छेद ड्रिल किए गए।


अंत में, प्लेट को मोड़ा गया, महीन सैंडपेपर से रेत दिया गया और भारत सरकार के पेस्ट से पॉलिश किया गया।
टेम्प्लेट संलग्न फ़ाइलों के साथ लेआउट5.0 फ़ाइल के रूप में शामिल है

ऊपरी बाएँ कोने में लाल एलईडी

डीएस1307 द्वारा उत्पन्न दालों को 7वें चरण पर दोहराता है, अर्थात। हर सेकंड चमकता है. एक छोटा पी-चैनल MOSFET ट्रांजिस्टर स्विचिंग मोड में संचालित होता है, जो दालों के साथ समय पर खुलता और बंद होता है। सबसे पहले मैं एक बैकलाइट (एम्बिलाइट की तरह) बनाना चाहता था, जिसके लिए मैंने ट्रांजिस्टर की एक पूरक जोड़ी पर एक सीएमओएस इन्वर्टर बनाया (निश्चित रूप से)। लेकिन मुझे यह पसंद नहीं आया. एक एलईडी के लिए, एक ट्रांजिस्टर पर्याप्त है; आप pnp प्रकार bc857 का भी उपयोग कर सकते हैं। मैंने irlml6402 या irlml6302 ओपन-फ़्रेम मस्जिद का उपयोग किया।

फ़ाइलें

स्रोत, हेक्स फ़ाइल, मुद्रित सर्किट बोर्ड, योजनाबद्ध, प्रोटीस सर्किट और फ़्यूज़ इस छवि में एक संग्रह के रूप में शामिल हैं। मुझे फ़ाइल भंडारण पर भरोसा नहीं है, मेरे पास अभी तक अपना सर्वर नहीं है, इसलिए, मेरी शौकिया राय में, भंडारण के लिए सबसे विश्वसनीय स्थान Habr होगा। विंडोज़ उपयोगकर्ता WinRar का उपयोग करके सहेजी गई छवि को खोलकर फ़ाइलों तक पहुंच सकते हैं।
हाँ, यही तस्वीर है.

वीडियो

निष्कर्ष

आप 70 एमए की धारा पर 5 वोल्ट देने में सक्षम किसी भी बिजली स्रोत का उपयोग कर सकते हैं। एक USB पोर्ट इसके लिए काफी उपयुक्त है. मुख्य बात यह है कि बिजली "साफ" है और 5 वोल्ट से अधिक नहीं है। ~50 mV के शोर स्तर के साथ mc34063 चिप से DC-DC कनवर्टर से घड़ी को पावर देने पर, मैंने समय निर्धारित करते समय गड़बड़ियाँ देखीं। अब उपकरण पास में लटके एक स्विच से संचालित होता है। यह सख्ती से 5 वोल्ट का आउटपुट देता है। अच्छी बात यह है कि आपको डायोड और 3.3 - 5 वोल्ट के लिए किसी प्रकार के रैखिक स्टेबलाइज़र के रूप में अचूक सुरक्षा बनाने की भी आवश्यकता है।
घड़ी में अलार्म घड़ी और तारीख प्रदर्शन कार्यों की अनुपस्थिति काफी उचित है: दोनों फोन में मौजूद हैं, जिसका अर्थ है कि उच्च संभावना के साथ कोई भी उन्हें बाइनरी घड़ी में उपयोग नहीं करेगा (इस निष्कर्ष के लिए अंकल ओकैम को धन्यवाद) .

बाइनरी घड़ी को असेंबल करने की चाहत के कारण, मुझे इंटरनेट पर कभी भी कोई स्वीकार्य रेडीमेड डिज़ाइन नहीं मिला। अधिकांश घड़ियों में एक गंभीर खामी थी - जब बिजली बंद कर दी गई, तो समय सेटिंग्स खो गईं। सौभाग्य से, इससे कुछ ही समय पहले, मैंने सी भाषा और एवीआर माइक्रोकंट्रोलर्स में महारत हासिल करना शुरू कर दिया था। इसलिए, अर्जित ज्ञान को व्यावहारिक अनुभव के साथ सुदृढ़ करने और साथ ही पहिये का पुन: आविष्कार करने का निर्णय लिया गया। मुझे हरे रंग की चमकती एलईडी भी बहुत पसंद हैं।



योजना



आरटीसी

वर्तमान सेटिंग्स को सहेजने की समस्या वास्तविक समय घड़ी (आरटीसी) द्वारा पूरी तरह से हल हो गई है। मेरी पसंद DS1307 चिप पर पड़ी।

निर्माता के अनुसार, यदि बिजली बंद कर दी जाती है, तो यह केवल CR2032 लिथियम बैटरी की ऊर्जा की खपत करते हुए, 10 वर्षों तक समय और तारीख बचा सकती है। अर्थात्, स्वीकार्य सटीकता बनाए रखते हुए, घड़ी टिक-टिक करती रहती है। समय नष्ट नहीं होता है; जब हम घड़ी को दोबारा चालू करते हैं, तो हमें डायल पर वास्तविक समय मिलता है, न कि उसे बंद करने के समय का समय। माइक्रोसर्किट "स्क्वायर बस" I 2 C के माध्यम से माइक्रोकंट्रोलर के साथ संचार करता है, सटीक समय की रिपोर्ट करता है और इसके नए मूल्यों को स्वीकार करता है।

डिवाइस का दिल

मेगा32ए माइक्रोकंट्रोलर का चुनाव निम्नलिखित कारकों द्वारा निर्धारित किया गया था:
डायनामिक डिस्प्ले का उपयोग करने से बचने के लिए पर्याप्त पोर्ट हैं, जो मुझे पसंद नहीं है, मुख्य रूप से क्योंकि यह आंखों में जलन पैदा करता है (उच्च आवृत्ति पर पलकें झपकाना वैसे भी अप्राकृतिक है)। प्रोटॉन PICBasic भाषा में PIC माइक्रोकंट्रोलर्स के साथ खेलते समय मैं इससे परिचित हुआ, और यदि डायनामिक डिस्प्ले का उपयोग नहीं करना संभव है, तो मैं ऐसा करना पसंद करूंगा।
130 रूबल की अपेक्षाकृत कम लागत (उदाहरण के लिए, मेगा16ए की लागत समान है), और छूट के साथ यह आम तौर पर 104 रूबल है।
सुविधाजनक पिनआउट के साथ QPF-44 पैकेज साफ़ करें


पोर्ट "ए" सेकंड प्रदर्शित करता है, पोर्ट "बी" मिनट प्रदर्शित करता है, और पोर्ट "सी" घंटे प्रदर्शित करता है। यह बहुत सुविधाजनक है कि आप DS1307 से लिए गए समय मानों को बिना किसी बदलाव के बंदरगाहों पर निर्दिष्ट कर सकते हैं। बटन पोर्ट "डी" (पिन 3 - 7) से जुड़े होते हैं, पिन 0 और 1 क्रमशः क्लॉक लाइन (एससीएल) और सीरियल डेटा लाइन (एसडीए) के रूप में काम करते हैं। आरटीसी चिप को इस तरह से कॉन्फ़िगर किया गया है कि यह अपने सातवें चरण पर 1 हर्ट्ज़ की आवृत्ति पर दालों का उत्पादन करती है। यह पैर पोर्ट "डी" के तीसरे पिन से जुड़ा है। यह पोर्ट स्वयं एक इनपुट के रूप में कॉन्फ़िगर किया गया है, और बस मामले में, बिजली की आपूर्ति के साथ-साथ आंतरिक पुल-अप भी शामिल हैं, जो बाहर की तरफ एसएमडी प्रतिरोधों के साथ डुप्लिकेट किए गए हैं। इस तरह की कार्रवाइयां किसी भी आश्चर्य से पूरी तरह बचाती हैं।

एल ई डी


मैंने कम चमक वाले मैट हाउसिंग में एलईडी को चुना। सबसे पहले, एक पारदर्शी मामले में उज्ज्वल डायोड का परीक्षण किया गया था, लेकिन 3 एमए की धारा के साथ भी वे बहुत उज्ज्वल और असमान रूप से चमकते थे, जिससे फिर से असुविधा हुई। 2 वोल्ट के डायोड पर वोल्टेज ड्रॉप, 5 वोल्ट की आपूर्ति वोल्टेज और 1 kOhm के अवरोधक के साथ, डायोड के माध्यम से बहने वाली धारा का मान (5 - 2)/1000 = 3 mA के बराबर होगा। यह मान अनुभवजन्य रूप से चुना गया था, और चमक की चमक मंद कमरे के लिए बिल्कुल सही है। यदि आप घड़ी को सीधी धूप में स्थापित करने की योजना बना रहे हैं, तो तेज चमक के लिए प्रतिरोधों का मान 200 ओम तक कम किया जाना चाहिए (धन्यवाद कैप)।

बटन

बटनों के साथ एक अलग बोर्ड पर, एक अन्य बीटी6 बटन के रूप में एक "फ्यूज" होता है (यह हमें सिर में आकस्मिक शॉट से बचाएगा)। समय को पहले दबाकर संपादित किया जा सकता है।

सॉफ़्टवेयर

कोड CodeVisionAvr वातावरण में लिखा गया है।
कार्यक्रम की शुरुआत हमारे द्वारा माइक्रोकंट्रोलर बाह्य उपकरणों को स्थापित करने से होती है।
पोर्ट कॉन्फ़िगर करें (ए, बी, सी - आउटपुट, डी - इनपुट)
बस मामले में, 300 एमएस का ठहराव प्रदान किया जाता है ताकि डीएस1307 को "अपने होश में आने" का समय मिल सके।
"स्क्वायर बस" आरंभ करना
हम आरटीसी चिप को कॉन्फ़िगर करते हैं ताकि यह एसक्यूडब्ल्यू/आउट पिन पर हर सेकंड आयताकार पल्स उत्पन्न करे
हम जांचते हैं कि सीएलआर बटन दबाया गया है या नहीं। यदि हां, तो सभी मानों को 0 पर रीसेट करें
वैश्विक व्यवधान सक्षम करें
हाँ, उनके बारे में कुछ शब्द। हम गिरते किनारे पर PD2 पर बाहरी इंटरप्ट INT0 का उपयोग करते हैं, अर्थात। हर सेकंड प्रोग्राम इंटरप्ट हैंडलर पर जाएगा, जिसमें हम DS1307 से समय मान पढ़ते हैं और उन्हें एलईडी संकेतक पर प्रदर्शित करते हैं।
हम एक अंतहीन लूप में जाते हैं, जहां हम बटन पोल करते हैं
यदि बटन दबाया जाता है, तो एक घंटा (मिनट) जोड़ें (घटाएँ) और I2C के माध्यम से नया मान भेजें
साथ ही, हम जाँचते हैं कि क्या नया समय मान 24-घंटे और 60-मिनट की सीमा में फिट बैठता है।

मुद्रित सर्किट बोर्ड

बोर्ड एक तरफा टेक्स्टोलाइट पर ग्रेट कॉस्मिक लेजर-आयरनिंग तकनीक का उपयोग करके बनाया गया है। शीर्ष बोर्ड बनाते समय सादे कागज का प्रयोग किया गया (असफल प्रयोग)।


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


बोर्ड पीबीएस और पीएलडी कनेक्टर का उपयोग करके एक दूसरे से जुड़े हुए हैं। पहले वाले एक पतले माउंटिंग तार का उपयोग करके शीर्ष बोर्ड से जुड़े होते हैं; इसे बाहर निकाला जा सकता है, उदाहरण के लिए, एक पुराने एलपीटी केबल या एडाप्टर से।


दूसरे को निचले बोर्ड में मिलाया जाता है, और कीबोर्ड तक जाने वाले पिन मुड़े हुए होते हैं (फोटो देखें)।

SprintLayout5.0 प्रारूप में मुद्रित सर्किट बोर्ड शामिल हैं। फ़ोटो में कुछ गलतियाँ हैं, लेकिन उन्हें संलग्न फ़ाइलों में पहले ही सुधार लिया गया है।

माइक्रोकंट्रोलर फर्मवेयर

इस उद्देश्य के लिए, एक USBasp प्रोग्रामर को असेंबल किया गया था, जिसे ऊपर फोटो में देखा जा सकता है। यह बहुत अच्छी चीज़ है, उपयोग में आसान है और आप इसे पूरे वर्ष अपनी जेब में रख सकते हैं (मुझे आशा है कि कोई भी ऐसा नहीं करेगा)। मेगा32 फर्मवेयर फ्लैश करने के लिए आपको "स्लो एससीके" जम्पर इंस्टॉल करना होगा।
फ़्यूज़:
निम्न फ़्यूज़ = 0xC4
उच्च फ़्यूज़ = 0xD9
हमारा माइक्रोकंट्रोलर 8 मेगाहर्ट्ज की आवृत्ति के साथ एक आंतरिक आरसी ऑसिलेटर से क्लॉक किया जाता है। मुझे पोर्टसी पर जेटीएजी इंटरफ़ेस को अक्षम करना पड़ा, अन्यथा कुछ एलईडी नहीं जलतीं।
तेज़ फ़्लैशिंग/डिबगिंग के लिए बोर्ड में ISP10 कनेक्टर है।

सामने का हिस्सा

एल्यूमीनियम प्लेट से बना, 40 मिमी चौड़ा और 1.5 मिमी मोटा। इसमें रैक जोड़ने के लिए 5 मिमी के व्यास के साथ 18 छेद और 3 मिमी के व्यास के साथ 4 छेद हैं।


सबसे पहले, टेम्पलेट को मुद्रित किया गया और प्लेट पर चिपकाया गया। इसके बाद, 1.5 मिमी ड्रिल के साथ पायलट छेद ड्रिल किए गए, जिसके बाद आवश्यक व्यास के ड्रिल के साथ मुख्य छेद ड्रिल किए गए।


अंत में, प्लेट को मोड़ा गया, महीन सैंडपेपर से रेत दिया गया और भारत सरकार के पेस्ट से पॉलिश किया गया।
टेम्प्लेट संलग्न फ़ाइलों के साथ लेआउट5.0 फ़ाइल के रूप में शामिल है

ऊपरी बाएँ कोने में लाल एलईडी

डीएस1307 द्वारा उत्पन्न दालों को 7वें चरण पर दोहराता है, अर्थात। हर सेकंड चमकता है. एक छोटा पी-चैनल MOSFET ट्रांजिस्टर स्विचिंग मोड में संचालित होता है, जो दालों के साथ समय पर खुलता और बंद होता है। सबसे पहले मैं एक बैकलाइट (एम्बिलाइट की तरह) बनाना चाहता था, जिसके लिए मैंने ट्रांजिस्टर की एक पूरक जोड़ी पर एक सीएमओएस इन्वर्टर बनाया (निश्चित रूप से)। लेकिन मुझे यह पसंद नहीं आया. एक एलईडी के लिए, एक ट्रांजिस्टर पर्याप्त है; आप pnp प्रकार bc857 का भी उपयोग कर सकते हैं। मैंने irlml6402 या irlml6302 ओपन-फ़्रेम मस्जिद का उपयोग किया।

फ़ाइलें

स्रोत, हेक्स फ़ाइल, मुद्रित सर्किट बोर्ड, योजनाबद्ध, प्रोटीस सर्किट और फ़्यूज़ इस छवि में एक संग्रह के रूप में शामिल हैं। मुझे फ़ाइल भंडारण पर भरोसा नहीं है, मेरे पास अभी तक अपना सर्वर नहीं है, इसलिए, मेरी शौकिया राय में, भंडारण के लिए सबसे विश्वसनीय स्थान Habr होगा। विंडोज़ उपयोगकर्ता WinRar का उपयोग करके सहेजी गई छवि को खोलकर फ़ाइलों तक पहुंच सकते हैं।
हाँ, यही तस्वीर है.

वीडियो

निष्कर्ष

आप 70 एमए की धारा पर 5 वोल्ट देने में सक्षम किसी भी बिजली स्रोत का उपयोग कर सकते हैं। एक USB पोर्ट इसके लिए काफी उपयुक्त है. मुख्य बात यह है कि बिजली "साफ" है और 5 वोल्ट से अधिक नहीं है। ~50 mV के शोर स्तर के साथ mc34063 चिप से DC-DC कनवर्टर से घड़ी को पावर देने पर, मैंने समय निर्धारित करते समय गड़बड़ियाँ देखीं। अब उपकरण पास में लटके एक स्विच से संचालित होता है। यह सख्ती से 5 वोल्ट का आउटपुट देता है। अच्छी बात यह है कि आपको डायोड और 3.3 - 5 वोल्ट के लिए किसी प्रकार के रैखिक स्टेबलाइज़र के रूप में अचूक सुरक्षा बनाने की भी आवश्यकता है।
घड़ी में अलार्म घड़ी और तारीख प्रदर्शन कार्यों की अनुपस्थिति काफी उचित है: दोनों फोन में मौजूद हैं, जिसका अर्थ है कि उच्च संभावना के साथ कोई भी उन्हें बाइनरी घड़ी में उपयोग नहीं करेगा (इस निष्कर्ष के लिए अंकल ओकैम को धन्यवाद) .

बाइनरी घड़ी बनाना दुनिया के हर बेवकूफ का सपना है, है ना? (...या शायद लाइटसेबर के लिए नीले लेजर का उपयोग करें :))। स्कूल के अपने अंतिम वर्ष के दौरान मैंने इस विचार की कल्पना की और बाद में एक बाइनरी कलाई घड़ी डिजाइन करने और बनाने का फैसला किया।

फिलहाल मैं सिर्फ माइक्रोकंट्रोलर्स का अध्ययन कर रहा हूं, इसलिए इस प्रोजेक्ट के लिए मैंने लोकप्रिय को चुना PIC16F628.

घड़ी में समय दर्शाने के लिए, घंटों को प्रदर्शित करने के लिए 4 एलईडी और मिनटों को प्रदर्शित करने के लिए 6 एलईडी का उपयोग किया जाता है:

आप घंटों को इंगित करने के लिए हरी एलईडी और मिनटों के लिए लाल एलईडी का भी उपयोग कर सकते हैं:

समय की सटीकता कैसे सुधारें?

घड़ी की सटीकता बढ़ाने के लिए मैंने टाइमर 1 (टीएमआर1) का उपयोग किया, जो एसिंक्रोनस मोड में काम करता है, विचार इस प्रकार है:
बैटरी जीवन को बढ़ाने के लिए, जब कोई समय प्रदर्शित नहीं होता है तो माइक्रोकंट्रोलर स्लीप मोड में होता है, और दो बटनों में से एक को दबाने के बाद एलईडी केवल कुछ सेकंड के लिए जलेंगे। स्लीप मोड में, माइक्रोकंट्रोलर के लगभग सभी कार्य अक्षम हो जाते हैं, लेकिन TMR1 टाइमर/काउंटर एसिंक्रोनस मोड में काम करना जारी रखता है, ताकि PIC16F628 के स्लीप होने पर समय गिना जा सके।

जब 16-बिट टीएमआर1 रजिस्टर ओवरफ्लो दर्ज करता है, तो इंटरप्ट सिग्नल माइक्रोकंट्रोलर को जगाने का कारण बनेगा, इस स्थिति में सेकंड काउंटर अपडेट हो जाएगा और माइक्रोकंट्रोलर स्लीप मोड में वापस चला जाएगा।

एसिंक्रोनस मोड में टीएमआर1 का उपयोग करने के लिए, आपको घड़ी स्रोत सेट करने की आवश्यकता है, यह पिन आरबी7 और आरबी6 के बीच 32.768 हर्ट्ज क्रिस्टल को जोड़कर किया जाता है।

समय कैसे दिखाएं?

दो बटनों में से एक को दबाने पर समय प्रदर्शित होता है। अब सवाल यह है कि यदि माइक्रोकंट्रोलर स्लीप मोड में है तो आप बटन की स्थिति कैसे निर्धारित कर सकते हैं? खैर, निश्चित रूप से, मैंने पिन आरबी4 और आरबी5 पर लेवल चेंज इंटरप्ट का उपयोग किया है, जब इन संपर्कों की स्थिति बदलती है, तो नियंत्रक जाग जाएगा। जब आप बटन दबाते हैं, तो TMR0 टाइमर एक मान के साथ लोड हो जाएगा जिसका उपयोग डिस्प्ले समय को मापने के लिए किया जाता है, और इंटरप्ट सक्रिय हो जाएगा; जब TMR0 ओवरफ्लो होता है, तो सभी एलईडी बंद हो जाएंगे और माइक्रोकंट्रोलर स्लीप मोड में वापस आ जाएगा।

घड़ी संचालन एल्गोरिदम:

प्रारंभ कार्यक्रम (आरंभीकरण);
- स्लीप मोड पर जाएं.

यदि TMR1 अतिप्रवाह होता है
- जगाना;
- अद्यतन करने का समय;
- स्लीप मोड पर जाएं.

यदि कोई बाहरी व्यवधान उत्पन्न होता है
- जगाना;
- एल ई डी का उपयोग कर समय संकेत;
- TMR0 के अतिप्रवाह की प्रतीक्षा में;
- एल ई डी बंद करें;
- स्लीप मोड पर जाएं.

समय कैसे निर्धारित करें?

इस मामले में, समय बटनों का उपयोग करके निर्धारित किया जाता है और केवल तब जब घड़ी पहली बार चालू होती है।

घड़ी आरेख

बॉडी प्लास्टिक से बनी है, CR2032 बैटरी के लिए बैटरी कम्पार्टमेंट को CNC मशीन का उपयोग करके काटा गया था। पट्टा बस केस के निचले भाग से चिपका हुआ है।

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

लेख के लिए पुरालेख "PIC16F628 पर बाइनरी कलाई घड़ी"
विवरण:कार्यक्रम का स्रोत कोड (असेम्बलर)
फ़ाइल का साइज़: 33.9 केबी डाउनलोड की संख्या: 610