मैं अपने माइक्रो पर सिर्फ कुछ पिन के साथ कई एल ई डी को कैसे नियंत्रित कर सकता हूं?


10

मैं एक Atmel ATtiny13 का उपयोग कर रहा हूं जिसमें 6-पिन I / O है। मैं लगभग 15 एल ई डी को नियंत्रित करना चाहता हूं लेकिन यह अनिश्चित है कि सब कुछ कैसे जोड़ा जाए। किसी भी प्रकार के मल्टीप्लेक्सिंग के बिना, ऐसा लगता है कि मैं केवल एक बार में 6 एलईडी को नियंत्रित करने में सक्षम हूं। क्या मैं माइक्रोकंट्रोलर के आकार के कारण केवल 6 एलईडी तक सीमित हूं?


मैंने नहीं देखा था। संभवतः डुप्लिकेट किया गया: Electronics.stackexchange.com/questions/9860/…
डैनियल ग्रिलो

3
थोड़ा पिन्नीयर माइक्रोकंट्रोलर खरीदने की लागत के खिलाफ अपने विकल्पों की तुलना करना न भूलें। प्रति-पोर्ट और कुल वर्तमान सीमाओं पर भी ध्यान दें।
जोफोरकर

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

1
@joeforker आप सही कह रहे हैं, मेरी परियोजना को एक बार बंद करने पर विचार करते हुए अधिक पिन वाले माइक्रो की लागत बहुत कम थी। मैंने एक बिंदु पर सोचा कि नौकरी पूरा करने के लिए लगभग 20 आईओ पिन के साथ एक माइक्रो का उपयोग कर रहा हूं, लेकिन मेरा एक लक्ष्य बहुत छोटा सर्किटबोर्ड पदचिह्न था। इसके अलावा, भयानक विशेषण pinnier !
जेल्टन

जवाबों:


18

कई तरीके हैं जो कुछ IO पिन से बड़ी संख्या में एल ई डी ड्राइव करने के लिए उपयोग किए जा सकते हैं।

सबसे सरल मानक पंक्ति / स्तंभ प्रदर्शन बहुसंकेतन है। इस तकनीक से, आप n IO पिन के साथ LED चला सकते हैं । गणितीय रूप से, कर्तव्य चक्र है:(n/2)2n

1मैंnमैंयू(अद्वितीय पंक्ति पैटर्न, अद्वितीय स्तंभ पैटर्न)

इसका मतलब है कि इस तकनीक में 100% का एक कर्तव्य चक्र होता है जब सभी एल ई डी जलाया जाता है (या सभी पंक्तियाँ या सभी कॉलम समान होते हैं) और का एक कर्तव्य चक्र जब एक विकर्ण रेखा को जलाया जाना चाहिए (या सभी पंक्तियाँ अलग-अलग हैं )। हर एलईडी या एक एलईडी (या शून्य एलईडी) को प्रकाश में लाने पर आपको केवल 100% कर्तव्य चक्र की गारंटी दी जाती है, लेकिन यह वास्तव में बहुत कुछ गिनता नहीं है)।1/n

थोड़ा और अधिक जटिल चार्लीप्लक्सिंग है । इस तकनीक के साथ, आप ड्राइव कर सकते हैं के साथ एल ई डी एन आईओ पिंस। इस तकनीक से केवल n - 1 LED को एक साथ जलाया जा सकता है। गणितीय रूप से, कर्तव्य चक्र है:n2-nnn-1

1न्यूनतम एक साथ सेट

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

अंतिम विधि जिसका मैं उल्लेख करता हूं वह है शिफ्ट रजिस्टर या आईओ विस्तारक का उपयोग करना। दो पिन (या तो कच्चे डेटा / घड़ी इंटरफ़ेस, I2C, या यूनिडायरेक्शनल SPI) के साथ, आप मनमाने ढंग से बड़ी संख्या में एल ई डी को नियंत्रित कर सकते हैं। किसी भी पैटर्न के लिए शुल्क चक्र 100% है, लेकिन अद्यतन दर एलईडी की संख्या के विपरीत आनुपातिक है। यह सबसे महंगी विधि है। 15 एल ई डी के लिए, यह शायद कई आईओ पिंस के साथ एक माइक्रो में अपग्रेड करना सस्ता होगा।


ड्यूटी चक्र पहलू के बारे में थोड़ा समझाने के लिए +1। चार्लीप्लक्सिंग के बारे में दूसरे वाक्य में, क्या आपका मतलब है "ड्राइव n ^ 2-n LED का n IO पिन के साथ ?
Jyelton

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

11

n×(n-1)n

उदाहरण के लिए:

3 पिन पर छह एलईडी:

PINS        LEDS
0 1 2   1 2 3 4 5 6
0 0 0   0 0 0 0 0 0
0 1 Z   1 0 0 0 0 0
1 0 Z   0 1 0 0 0 0
Z 0 1   0 0 1 0 0 0
Z 1 0   0 0 0 1 0 0
0 Z 1   0 0 0 0 1 0
1 Z 0   0 0 0 0 0 1
0 0 1   0 0 1 0 1 0
0 1 0   1 0 0 1 0 0
0 1 1   1 0 0 0 1 0
1 0 0   0 1 0 0 0 1
1 0 1   0 1 1 0 0 0
1 1 0   0 0 0 1 0 1
1 1 1   0 0 0 0 0 0

3 आउटपुट पिंस के साथ चार्लीप्लेक्सिंग की योजनाबद्ध


आउटपुट पिन डेटासेट के साथ-साथ एक सहायक योजनाबद्ध के लिए धन्यवाद।
येल्टन

1
योजनाबद्ध ड्राइंग का एक और तरीका NxN ग्रिड के रूप में है, लेकिन केवल कॉलम ड्राइविंग, और पंक्ति-स्तंभ शॉर्ट्स के साथ प्राथमिक विकर्ण की जगह।
सुपरकैट

इसका मतलब है कि मैं उन सभी को एक बार में चालू नहीं कर सकता हूं? क्या इसका मतलब है कि अगर मैं उन सभी को एक बार चालू करना चाहता हूं तो मुझे आंखों को बेवकूफ बनाने के लिए पर्याप्त समय देना होगा?
MaNyYaCk

@MaNyYaCk हां। आप सही हे।
डेनियल ग्रिलो

8

मल्टीप्लेक्सिंग (डायरेक्ट ड्राइव) के बिना आप 6 एलईडी तक सीमित हैं।

चार्लीप्लेक्सिंग के साथ आप n पिन से n * (n-1) LED चला सकते हैं।

I / O विस्तारकों या शिफ्ट रजिस्टरों के साथ आप लगभग असीमित संख्या में एल ई डी ड्राइव कर सकते हैं।
उदाहरण: MCP23008 8-बिट I2C I / O एक्सपैंडर


क्या आप विस्तार से बता सकते हैं कि I / O विस्तारक क्या होगा?
येल्टन

3
I / O विस्तारक बाहरी चिप है जिसमें I / O पिन और रजिस्टर होते हैं। आप उनके साथ संवाद करने के लिए I2C या SPI जैसी मानक संचार बस का उपयोग कर सकते हैं।
mjh2007

+1 आप TI की TLC594 (साथ एल ई डी का एक बहुत ड्राइव कर सकते हैं focus.ti.com/lit/ds/symlink/tlc5940.pdf ), लेकिन यह कई नौकरियों के लिए overkill हो सकता है। search.digikey.com/scripts/DkSearch/…
kenny

धन्यवाद - मुझे एक परियोजना डिजाइन करनी चाहिए जो I / O विस्तारकों को उनके उपयोग के बारे में सीखने के लिए मजबूर करती है।
जेल्टन


2

यहाँ चार्लीप्लेक्सिंग का एक उदाहरण है जो मैंने बनाया है।

यह एक लाइटहाउस बीम सिम्युलेटर है और एक डिस्क के चारों ओर प्रकाश की किरण को स्वीप करने के लिए 4 एलपीआईओ के लिए 12 एलईड चार्लीप्लेक्स की एक श्रृंखला का उपयोग करता है। इसका एक वीडियो यहाँ है

परियोजना PIC आधारित है, मैं एक PIC12f683 का उपयोग करता हूं जो कि एक 8pin यूपी भी है और इसे 8pin AVR के तुलनीय माना जा सकता है।

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

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

मेरी परियोजना में केवल 12 एलईडी नहीं 15 या अधिकतम 20 जीपीआईओ की अनुमति होगी क्योंकि मैं भविष्य के विकास के लिए एक जीपीआईओ को रखना चाहता था।

वैसे भी ... मुझे लगा कि आपके अनुरोध के समान काम करने के उदाहरण के लिए यह सहायक हो सकता है।

पूर्ण स्रोत कोड और योजनाबद्धता मेरे ब्लॉग पर उपलब्ध हैं


0

एक अन्य विकल्प निओपिक्सल एलईडी का उपयोग करना होगा। उनके पास एक अंतर्निहित नियंत्रण आईसी है और आपको केवल एक एल ई डी की आवश्यकता है ताकि आप जितने एलईडी का उपयोग कर सकें। बेशक आपको एक पर्याप्त अलग एलईडी पावर स्रोत की आवश्यकता होगी।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.