विषयसूची:

आरजीबी एलईडी मैट्रिक्स: 5 कदम
आरजीबी एलईडी मैट्रिक्स: 5 कदम

वीडियो: आरजीबी एलईडी मैट्रिक्स: 5 कदम

वीडियो: आरजीबी एलईडी मैट्रिक्स: 5 कदम
वीडियो: Scrolling Message With 5 x WS2812 RGB Led Matrix 32x8 & ESP32 2024, जुलाई
Anonim
Image
Image
हार्डवेयर डिजाइन
हार्डवेयर डिजाइन

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

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

मैंने Arduino को अपने ड्राइवर प्लेटफॉर्म के रूप में चुना क्योंकि यह व्यापक रूप से उपलब्ध है और इसमें ऑनलाइन बहुत सारे संदर्भ हैं। जबकि कैरियर के अनुभव ने मुझे अपने हार्डवेयर प्रयासों की तुलना में अधिक चालाकी से ड्राइवर के कार्यशील संस्करण को प्राप्त करने की अनुमति दी, फिर भी बहुत सारे पुनरावृत्तियों थे, जबकि मैंने ATMega माइक्रो कंट्रोलर के लिए ड्राइवर के प्रदर्शन को अनुकूलित किया और एक प्रोग्रामिंग एपीआई विकसित की जो मुझे पसंद आई।

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

चरण 1: हार्डवेयर डिजाइन

मेरे हार्डवेयर डिज़ाइन का प्राथमिक लक्ष्य आरजीबी एल ई डी की एक सरणी बनाना था जिसे मैं प्रोग्राम कर सकता था, लेकिन मैं भी बहुत पैसा खर्च नहीं करना चाहता था। मैंने जिस दृष्टिकोण पर समझौता किया, वह एल ई डी को नियंत्रित करने के लिए 74HC595 शिफ्ट रजिस्टरों का उपयोग करना था। आवश्यक शिफ्ट रजिस्टरों की संख्या को कम करने के लिए, मैंने आरजीबी एलईडी को एक मैट्रिक्स लेआउट में व्यवस्थित किया जहां आम एनोड को पंक्तियों में एक साथ बांधा गया था और लाल, हरे और नीले कैथोड लीड को कॉलम में एक साथ बांधा गया था। 4x4 मैट्रिक्स के लिए, सर्किट आरेख संलग्न सर्किट आरेख जैसा दिखता था।

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

चूंकि मैं सामान्य एनोड एलईडी का उपयोग कर रहा हूं, इसका मतलब है कि पंक्तियाँ सकारात्मक शक्ति प्रदान करती हैं और स्तंभ जमीन पर डूब जाते हैं। अच्छी खबर यह है कि 74HC595 शिफ्ट रजिस्टर बिजली स्रोत और सिंक दोनों कर सकते हैं, लेकिन बुरी खबर यह है कि उनकी एक सीमा है कि वे कितनी शक्ति का स्रोत या सिंक कर सकते हैं। 74HC595 के अलग-अलग पिनों में अधिकतम 70 mA का करंट ड्रॉ होता है, लेकिन 20 mA से कम रखना सबसे अच्छा है। हमारे आरजीबी एलईडी में अलग-अलग रंगों में से प्रत्येक में लगभग 20 एमए ड्रॉ होता है। इसका मतलब यह है कि अगर मैं उन सभी को चालू करना चाहता हूं तो 74HC595 एलईडी की पूरी पंक्ति को सीधे बिजली नहीं दे सकता है।

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

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

अंत में, मुझे यह निर्धारित करने की आवश्यकता थी कि आरजीबी एलईडी में प्रत्येक एल ई डी के लिए मैं किन प्रतिरोधों का उपयोग करूंगा। जब आप मानक सूत्र का उपयोग कर सकते हैं जो आवश्यक रोकनेवाला की गणना करने के लिए आगे वोल्टेज और वांछित वर्तमान को जोड़ता है, मैंने पाया कि प्रत्येक एलईडी के वर्तमान को 20 मिलीमीटर तक सेट करने के परिणामस्वरूप एक ऑफ-व्हाइट रंग होता है जब सभी लाल, हरे और नीले एल ई डी चालू होते हैं।. तो मैंने उस पर नज़र रखना शुरू कर दिया। सफेद रंग में बहुत अधिक लाल का मतलब है कि वर्तमान को कम करने के लिए लाल एलईडी के अवरोधक ओम को बढ़ाना। मैंने अलग-अलग ओम के प्रतिरोधों की अदला-बदली को दोहराया जब तक कि मुझे एक ऐसा संयोजन नहीं मिला जो एक सफेद रंग का उत्पादन करता था जो मुझे सही लगा। लाल एलईडी के लिए अंतिम संयोजन 180Ω, हरे एलईडी के लिए 220Ω और नीली एलईडी के लिए 100Ω था।

चरण 2: हार्डवेयर निर्माण - ब्रेडबोर्ड

हार्डवेयर निर्माण - ब्रेडबोर्ड
हार्डवेयर निर्माण - ब्रेडबोर्ड
हार्डवेयर निर्माण - ब्रेडबोर्ड
हार्डवेयर निर्माण - ब्रेडबोर्ड

हार्डवेयर कंस्ट्रक्टर का पहला चरण ब्रेड बोर्डिंग था। यहां मैंने RGB LED के साथ 4x4 मैट्रिक्स बनाया है। इस मैट्रिक्स को नियंत्रित करने के लिए 16 बिट्स, आरजीबी कॉलम के लिए 12 और प्रत्येक पंक्ति के लिए 4 की आवश्यकता होगी। दो 74HC595 शिफ्ट रजिस्टर यह सब संभाल सकते हैं। मैंने पहले एक सर्किट पर शोध किया और डिजाइन किया जो मुझे लगा कि यह काम करेगा, फिर इसे ब्रेडबोर्ड पर बनाया।

संभवतः ब्रेडबोर्ड निर्माण की सबसे बड़ी चुनौती सभी तारों का प्रबंधन करना था। मैंने ब्रेडबोर्ड के लिए एक पूर्वनिर्मित तार किट उठाई, लेकिन घटना तब थोड़ी बोझिल थी। एक तरकीब जो मुझे मददगार लगी, वह थी Arduino बोर्ड से जुड़ने के लिए एक "पोर्ट" बनाना। यही है, ब्रेडबोर्ड पर विभिन्न आईसी पिनों के लिए सीधे Arduino पर पिन को जोड़ने के बजाय, ब्रेडबोर्ड पर कुछ पंक्तियों को Arduino के लिए कनेक्शन बिंदु होने के लिए समर्पित करें, और फिर संबंधित आईडी पिन को उन पंक्तियों से कनेक्ट करें। इस प्रोजेक्ट के लिए, आपको Arduino से केवल पांच कनेक्शन चाहिए: +5V, ग्राउंड, डेटा, क्लॉक और लैच।

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

चरण 3: ड्राइवर सॉफ़्टवेयर डिज़ाइन

Image
Image

सॉफ्टवेयर विकास के साथ मेरे अपने करियर के अनुभव को देखते हुए, यह उस परियोजना का हिस्सा था जिसे लेने के लिए मैं शायद सबसे स्पष्ट था। मैंने कई अन्य Arduino- आधारित LED मैट्रिक्स ड्राइवरों का सर्वेक्षण किया। जबकि निश्चित रूप से अच्छे ड्राइवर उपलब्ध हैं, किसी के पास वह डिज़ाइन नहीं था जो मैं चाहता था। ड्राइवर के मेरे डिजाइन लक्ष्य थे:

  • छवियों और एनिमेशन को प्रोग्रामेटिक रूप से बनाने में सक्षम होने के लिए एक उच्च-स्तरीय एपीआई प्रदान करें। मैंने देखा कि अधिकांश ड्राइवर हार्ड-कोडेड छवियों पर अधिक केंद्रित थे। इसके अलावा, चूंकि मैं व्यापार से सी ++ प्रोग्रामर हूं, इसलिए मैं एलईडी मैट्रिक्स में ड्राइंग की गतिविधियों को लागू करने और प्रबंधित करने के लिए अच्छे ऑब्जेक्ट ओरिएंटेड डिज़ाइन का उपयोग करना चाहता था।
  • स्क्रीन पर छवि को प्रबंधित करने के लिए डबल-बफ़र्ड दृष्टिकोण का उपयोग करें। एक बफर वह है जो प्रोग्रामेटिक रूप से खींचा जाता है, जबकि दूसरा किसी भी समय मैट्रिक्स पिक्सल की स्थिति का प्रतिनिधित्व करता है। इस दृष्टिकोण का लाभ यह है कि आपको मल्टीप्लेक्सिंग के अद्यतन चक्रों के बीच स्क्रीन के लिए अगले फ्रेम अपडेट को पूरी तरह से प्रस्तुत करने की आवश्यकता नहीं है।
  • लाल, हरे और नीले तत्वों के सरल संयोजन के माध्यम से आरजीबी द्वारा प्रस्तुत सात से अधिक आदिम रंगों की अनुमति देने के लिए पीडब्लूएम का उपयोग करें।
  • ड्राइवर को इस तरह लिखें कि यह मेरे सामान्य मैट्रिक्स डिज़ाइन दृष्टिकोण का पालन करने वाले विभिन्न आकार के RGB LED मैट्रिसेस के साथ "बस काम करेगा"। ध्यान दें कि जब मेरा हार्डवेयर डिज़ाइन 74HC595 शिफ्ट रजिस्टर का उपयोग करता है, तो मैं अपने ड्राइवर से किसी भी शिफ्ट रजिस्टर शैली के साथ काम करने की अपेक्षा करता हूँ जो मेरे हार्डवेयर डिज़ाइन के समान बिट लेआउट का उपयोग करके निर्धारित किया गया है। उदाहरण के लिए, मैं अपने ड्राइवर से एक हार्डवेयर डिज़ाइन के साथ काम करने की अपेक्षा करता हूँ जो कॉलम को नियंत्रित करने के लिए DM13A चिप्स और पंक्तियों को नियंत्रित करने के लिए 74HC595 चिप का उपयोग करता है।

यदि आप ड्राइवर कोड को देखने के लिए सीधे जाना चाहते हैं, तो आप इसे यहाँ GitHub पर पा सकते हैं।

मेरे ड्राइवर का पहला पुनरावृत्ति Arduino प्लेटफ़ॉर्म की क्षमताओं पर सीखने की अवस्था का एक सा था। सबसे स्पष्ट सीमा RAM है, जो Arduino Uno और Nano के लिए 2K बाइट्स है। ऐसे परिदृश्य में C++ ऑब्जेक्ट्स का उपयोग करने की सलाह अक्सर ऑब्जेक्ट्स के मेमोरी ओवरहेड के कारण नहीं दी जाती है। हालांकि, मुझे लगा कि अगर सही किया जाए, तो सी ++ में वस्तुओं का लाभ उनकी लागत (रैम में) से अधिक हो गया।

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

चूंकि मुझे शिफ्ट रजिस्टर अपडेट को सहमति देने के लिए एक सुसंगत समय तंत्र की आवश्यकता थी, लेकिन Arduino औपचारिक रूप से थ्रेड का समर्थन नहीं करता है, मुझे अपना थ्रेडिंग-जैसी तंत्र बनाना था। इसका मेरा पहला पुनरावृत्ति केवल एक लूप टाइमर बनाने के लिए था जो कि Arduino लूप() फ़ंक्शन पर निर्भर करता था और एक क्रिया को आग लगा देता था जब एक निश्चित समय समाप्त हो गया था जब पिछली बार कार्रवाई को निकाल दिया गया था। यह "सहकारी मल्टीटास्किंग" का एक रूप है। अच्छा लगता है लेकिन व्यवहार में यह असंगत साबित हुआ जब फायरिंग दर को माइक्रोसेकंड में मापा गया। इसका कारण यह है कि अगर मेरे पास इनमें से दो लूप टाइमर चल रहे थे, तो उनके कार्यों में से एक में अक्सर इतना समय लग जाता था कि दूसरी क्रिया बाद में वांछित होने के कारण आग लग जाती थी।

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

बाकी ड्राइवर को डिजाइन करना वस्तु उन्मुख डिजाइन का अपेक्षाकृत सरल मामला था। उदाहरण के लिए, मैंने किसी भी स्क्रीन स्थिति के लिए शिफ्ट रजिस्टर बिट छवि को प्रबंधित करने के लिए एक ऑब्जेक्ट बनाया है। बिट छवि प्रबंधन से संबंधित कोड को इनकैप्सुलेट करके, उपरोक्त जुड़वां बफ़र्स दृष्टिकोण बनाना अपने आप में एक सीधा अभ्यास था। लेकिन मैंने यह निर्देश वस्तु उन्मुख डिजाइन के गुणों की प्रशंसा करने के लिए नहीं लिखा था। अन्य डिज़ाइन तत्वों में ग्लिफ़ और RGB छवि की अवधारणा शामिल है। एक ग्लिफ़ एक मूल छवि निर्माण है जिसमें कोई सहज रंग जानकारी नहीं होती है। आप इसे एक श्वेत-श्याम छवि के रूप में सोच सकते हैं। जब ग्लिफ़ को एलईडी स्क्रीन पर खींचा जाता है, तो यह इंगित करने के लिए रंग जानकारी दी जाती है कि "सफेद" पिक्सेल कैसे रंगीन होने चाहिए। RGB इमेज एक ऐसी इमेज होती है, जहां हर पिक्सेल की अपनी रंग जानकारी होती है।

मैं आपको Arduino स्केच उदाहरणों की समीक्षा करने और RGB LED मैट्रिक्स पर चित्र और एनिमेशन बनाने के लिए ड्राइवर का उपयोग करने के तरीके से परिचित होने के लिए ड्राइवर हेडर प्रलेखन की समीक्षा करने के लिए प्रोत्साहित करता हूं।

चरण 4: एलईडी घोस्टिंग

एलईडी घोस्टिंग
एलईडी घोस्टिंग
एलईडी घोस्टिंग
एलईडी घोस्टिंग

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

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

ट्रांजिस्टर संतृप्ति समस्या को ठीक करने के लिए, ट्रांजिस्टर को संतृप्त होने से रोकने के लिए, ट्रांजिस्टर चालू होने पर बेस और कलेक्टर के बीच ट्रांजिस्टर में एक Schottky डायोड जोड़ा जा सकता है। जब आधार से करंट हटा दिया जाता है तो यह बदले में ट्रांजिस्टर को और तेज़ी से बंद कर देगा। इस प्रभाव की गहराई से व्याख्या के लिए यह आलेख देखें। जैसा कि आप इस खंड में चित्र से देख सकते हैं, डायोड के बिना भूत काफी ध्यान देने योग्य है, लेकिन प्रत्येक पंक्ति के लिए डायोड को सर्किट में जोड़ने से भूत को काफी हद तक हटा दिया जाता है।

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

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

चरण 5: अंतिम विनिर्माण और अगले चरण

Image
Image

इस परियोजना का अंतिम चरण मेरे लिए एक मुद्रित सर्किट बोर्ड (पीसीबी) बनाना था। मैंने अपने पीसीबी को डिजाइन करने के लिए ओपन सोर्स प्रोग्राम फ्रिट्ज़िंग का इस्तेमाल किया। जबकि 10x10 बोर्ड पर 100 एल ई डी लेआउट को पूरा करने के लिए बहुत सारे दोहराव वाले कार्य थे, मुझे वास्तव में परियोजना का यह चरण अजीब तरह से संतोषजनक लगा। यह पता लगाना कि प्रत्येक विद्युत मार्ग कैसे निर्धारित किया जाएगा, एक पहेली की तरह था, और उस पहेली को हल करने से उपलब्धि की भावना पैदा हुई। चूंकि मैं सर्किट बोर्ड बनाने के लिए तैयार नहीं हूं, इसलिए मैंने कई ऑनलाइन संसाधनों में से एक का उपयोग किया है जो कस्टम पीसीबी के छोटे रन करते हैं। भागों को एक साथ मिलाना बहुत सीधा था क्योंकि मेरे डिजाइन ने सभी छेद वाले हिस्सों का उपयोग किया था।

इस निर्देश को लिखने के समय, मेरे पास मेरी RGB LED मैट्रिक्स परियोजनाओं के लिए निम्नलिखित योजनाएँ हैं:

  1. प्रोग्रामर के लिए अधिक उच्च-स्तरीय कार्यक्षमता को सक्षम करने के लिए एपीआई परत पर ड्राइवर में सुधार करना जारी रखें, विशेष रूप से टेक्स्ट स्क्रॉलिंग।
  2. 16x16 या 16x32 जैसे बड़े मैट्रिक्स डिज़ाइन बनाएं।
  3. पंक्ति पावर स्विचिंग के लिए BJTs के बजाय MOSFETs का उपयोग करके एक्सप्लोर करें
  4. कॉलम स्विचिंग के लिए 74HC595s के बजाय DM13As निरंतर चालू ड्राइवरों का उपयोग करके एक्सप्लोर करें
  5. अन्य माइक्रो कंट्रोल प्लेटफॉर्म के लिए ड्राइवर बनाएं, जैसे कि Teensy, ODROID C2, या रास्पबेरी पाई।

ध्यान दें कि इस GitHub रिपॉजिटरी में GPL v3 ओपन सोर्स लाइसेंस के तहत हार्डवेयर डिज़ाइन और ड्राइवर दोनों को रिलीज़ किया गया है। इसके अलावा, चूंकि पीसीबी मेरे पीसीबी डिजाइन के "छोटे रन" का निर्माण करता है, फिर भी मुझे व्यक्तिगत रूप से जरूरत से कहीं ज्यादा मिलता है। इसलिए मैं यहां अपनी वेबसाइट से अपने विभिन्न आरजीबी एलईडी मैट्रिक्स डिजाइन (पीसीबी और सभी भागों को शामिल) के लिए पूर्ण किट बेच रहा हूं।

सिफारिश की: