विषयसूची:

बेसिस 3 बोर्ड का उपयोग कर डिमेबल एलईडी: 5 कदम
बेसिस 3 बोर्ड का उपयोग कर डिमेबल एलईडी: 5 कदम

वीडियो: बेसिस 3 बोर्ड का उपयोग कर डिमेबल एलईडी: 5 कदम

वीडियो: बेसिस 3 बोर्ड का उपयोग कर डिमेबल एलईडी: 5 कदम
वीडियो: Diode Working, Symbol, Types, & Uses || Forward & Reverse bias diode Practical 2024, जुलाई
Anonim
बेसिस 3 बोर्ड का उपयोग करके डिमेबल एलईडी
बेसिस 3 बोर्ड का उपयोग करके डिमेबल एलईडी

इस गाइड में हम बाहरी एलईडी डिमिंग सिस्टम बनाने और नियंत्रित करने जा रहे हैं। उपलब्ध बटनों के साथ, उपयोगकर्ता एलईडी बल्ब को किसी भी वांछित चमक में मंद कर सकता है। सिस्टम बेसिस 3 बोर्ड का उपयोग करता है, और यह एक ब्रेडबोर्ड से जुड़ा होता है जिसमें एक रोकनेवाला और एलईडी बल्ब होता है। निर्दिष्ट "ऊपर" बटन को दबाने से चमक बढ़ जाएगी, और "नीचे" बटन दबाने से चमक पूरी तरह से शून्य हो जाएगी। यह न केवल उपयोगकर्ता को उज्ज्वल-जैसे-सूरज प्रकाश बल्बों से अंधा होने से रोकता है बल्कि यह ऊर्जा को भी बचाता है!

चरण 1: इनपुट काउंटर बनाएं

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

इकाई updown_counter is

पोर्ट (वर्तमान_राज्य: एसटीडी_LOGIC_VECTOR से बाहर (3 डाउनटू 0); पिछला_स्टेट: STD_LOGIC_VECTOR (3 डाउनटू 0) में; अगला_स्टेट: STD_LOGIC_VECTOR (3 डाउनटू 0) में; क्लर्क: STD_LOGIC में; डाउन_इनेबल: STD_LOGIC में; STD_LOGIC में; up_enable:); अंत updown_counter; वास्तुकला updown_counter का व्यवहार प्रारंभ फ्लॉप है: प्रक्रिया (नेक्स्ट_स्टेट, clk, up_enable, down_enable, पिछला_स्टेट) प्रारंभ करें यदि (राइजिंग_एज (clk)) तो यदि (up_enable = '1' और नहीं (next_state = "0000")) तो present_state <= अगला_राज्य; elsif (down_enable = '1' और नहीं (पिछला_स्टेट = "1111")) तो present_state <= पिछला_स्टेट; अगर अंत; अगर अंत; अंतिम प्रक्रिया फ्लॉप; अंत व्यवहार;

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

इकाई काउंटर_क्लकडिव है

पोर्ट (clk: std_logic में; sclk: आउट std_logic); अंत काउंटर_क्लकडिव; काउंटर_क्लकडिव का आर्किटेक्चर my_clk_div स्थिर है max_count: पूर्णांक:= (10000000); सिग्नल tmp_clk: std_logic: = '0'; my_div शुरू करें: प्रक्रिया (clk, tmp_clk) चर div_cnt: पूर्णांक: = 0; शुरू करें अगर (राइजिंग_एज (क्लक)) तो अगर (div_cnt >= MAX_COUNT) तो tmp_clk <= नहीं tmp_clk; div_cnt:= 0; अन्य div_cnt:= div_cnt + 1; अगर अंत; अगर अंत; स्केल <= tmp_clk; अंतिम प्रक्रिया my_div; my_clk_div समाप्त करें;

चरण 2: एलईडी क्लॉक डिवाइडर बनाएं

इस चरण के लिए हम तीव्रता के 16 विभिन्न स्तरों को निर्धारित करने के लिए एलईडी बल्ब के लिए एक घड़ी विभक्त बनाते हैं। अधिकतम ब्राइटनेस प्रदर्शित करने के लिए 0 से ऑफ 15 होने के साथ, क्लॉक डिवाइडर प्रत्येक बटन प्रेस को बढ़ाता है जिसे हम ब्राइटनेस के स्तर के रूप में सेट करते हैं। प्रत्येक बढ़ते स्तर का मतलब एलईडी बल्ब के लिए घड़ी में वृद्धि करना था। यह याद रखते हुए कि चमक रैखिक रूप से नहीं बढ़ती है, हमने घड़ी को उस उच्चतम तक क्रैंक किया जो वह जा सकती थी और तदनुसार हमारी घड़ियों को कम कर दिया।

नोट: हम एक नीली एलईडी का उपयोग कर रहे हैं। एक अलग रंग (लाल की तरह) का उपयोग करने के लिए पूरी तरह से अलग घड़ियों की आवश्यकता होगी; नीले रंग के लिए एक मध्यम चमक सेटिंग पहले से ही लाल के लिए अधिकतम चमक हो सकती है। ऐसा इसलिए होता है क्योंकि प्रकाश की विभिन्न तरंग दैर्ध्य के लिए अलग-अलग मात्रा में ऊर्जा की आवश्यकता होती है, बैंगनी और नीले जैसे ठंडे रंगों के लिए अधिक ऊर्जा की आवश्यकता होती है, जबकि लाल और नारंगी जैसे गर्म रंगों में कम ऊर्जा की आवश्यकता होती है।

इकाई led_clkDiv पोर्ट है (वर्तमान_राज्य: STD_LOGIC_VECTOR में (3 डाउनटू 0); clk: STD_LOGIC में; led_clk: STD_LOGIC से बाहर); अंत led_clkDiv; वास्तुकला led_clkDiv का व्यवहार संकेत है tmp_clk: std_logic:= '0'; साझा चर max_count: पूर्णांक; शुरू count_stuff: प्रक्रिया (वर्तमान_राज्य) प्रारंभ मामला present_state है जब "0000" => max_count: = 0; जब "0001" => max_count:= 2; जब "0010" => max_count:= 4; जब "0011" => max_count:= 6; जब "0100" => max_count:= 8; जब "०१०१" => max_count:= १०; जब "0110" => max_count:= 12; जब "०१११" => max_count:= १४; जब "1000" => max_count:= 16; जब "१००१" => max_count:= २५; जब "१०१०" => max_count:= ५०; जब "१०११" => max_count:= १००; जब "११००" => max_count:= १५०; जब "११०१" => max_count:= २००; जब "१११०" => max_count:= २५०; जब "११११" => max_count:= ३००; अंतिम मामला; अंतिम प्रक्रिया count_stuff; my_div: प्रक्रिया (clk, tmp_clk, present_state) चर div_cnt: पूर्णांक: = 0; शुरू करें अगर (राइजिंग_एज (क्लक)) तो अगर (div_cnt >= max_count) तो tmp_clk <= नहीं tmp_clk; div_cnt:= 0; अन्य div_cnt:= div_cnt + 1; अगर अंत; अगर अंत; एलईडी_क्लक <= tmp_clk; अंतिम प्रक्रिया my_div; अंत व्यवहार;

चरण 3: एलईडी नियंत्रक बनाना

अब जब हमने इसे बहुत दूर कर लिया है, तो अब तक हमारे द्वारा बनाए गए सभी घटकों को एलईडी नियंत्रक फ़ाइल में संयोजित करने का समय आ गया है।

संक्षेप में, उपयोग किए जाने वाले घटक निम्नलिखित हैं:

  • इनपुट काउंटर (updown_counter)
  • घड़ी विभक्त (काउंटर_क्लकडिव)
  • एलईडी घड़ी विभक्त (led_clkDiv)
  • सेवन-सेगमेंट डिस्प्ले ड्राइवर (sseg_dec) (संलग्न फ़ाइल)

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

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

इकाई काउंटर पोर्ट है (clk: STD_LOGIC में; up_enable: STD_LOGIC में; down_enable: STD_LOGIC में; SEGMENTS: STD_LOGIC_VECTOR (7 डाउन टू 0); DISP_EN: आउट STD_LOGIC_VECTOR (3 डाउनटू 0); STD_LOGIC आउट); अंत काउंटर; वास्तुकला काउंटर का व्यवहार घटक है updown_counter पोर्ट है (वर्तमान_राज्य: STD_LOGIC_VECTOR (3 डाउनटू 0); पिछला_स्टेट: STD_LOGIC_VECTOR (3 डाउनटू 0) में; अगला_स्टेट: STD_LOGIC_VECTOR (3 डाउनटू 0) में; clk: STD_LOGIC में; STD_LOGIC में; up_enable: STD_LOGIC में); अंत घटक updown_counter; घटक counter_clkDiv पोर्ट है (clk: std_logic में; sclk: std_logic से बाहर); अंत घटक काउंटर_क्लकडिव; घटक sseg_dec पोर्ट है (ALU_VAL: std_logic_vector में (7 डाउनटू 0); साइन: std_logic में; VALID: std_logic में; CLK: std_logic में; DISP_EN: आउट std_logic_vector (3 डाउनटू 0); सेगमेंट: आउट std_logic_vector 0) (7 डाउनटू 0)); अंत घटक sseg_dec; घटक led_clkDiv पोर्ट है (वर्तमान_स्टेट: STD_LOGIC_VECTOR में (3 डाउनटू 0); clk: STD_LOGIC में; led_clk: STD_LOGIC से बाहर); अंत घटक led_clkDiv; सिग्नल प्रेजेंट_स्टेट: STD_LOGIC_VECTOR (3 डाउनटू 0): = "0000"; सिग्नल नेक्स्ट_स्टेट: STD_LOGIC_VECTOR (3 डाउनटू 0): = "0000"; सिग्नल पिछला_स्टेट: STD_LOGIC_VECTOR (3 डाउनटू 0):= "0000"; सिग्नल Alu_Val: STD_LOGIC_VECTOR (7 डाउनटू 0); सिग्नल स्केल: STD_LOGIC; अलु_वैल शुरू करें (7 से 4 तक) <= "0000"; अलु_वैल(३ डाउनटू ०) <= वर्तमान_राज्य; अगला_स्टेट (0) <= नहीं (वर्तमान_स्टेट (0)); next_state(1) <= present_state(0) xor present_state(1); next_state(2) <= (वर्तमान_राज्य(0) और वर्तमान_राज्य(1)) xor present_state(2); next_state(3) <= (वर्तमान_राज्य(0) और वर्तमान_राज्य(1) और वर्तमान_राज्य(2)) xor present_state(3); पिछला_स्टेट (0) <= नहीं (वर्तमान_स्टेट (0)); पिछला_राज्य(1) <= वर्तमान_राज्य(0) xnor वर्तमान_राज्य(1); पिछला_राज्य(2) <= (वर्तमान_राज्य(0) और न ही वर्तमान_राज्य(1)) xor वर्तमान_राज्य(2); पिछला_स्टेट(३) स्केल, नेक्स्ट_स्टेट => नेक्स्ट_स्टेट, पिछला_स्टेट => पिछला_स्टेट, up_enable => up_enable, down_enable => down_enable, present_state => present_state); डिस्प्ले: sseg_dec पोर्ट मैप (ALU_VAL => Alu_Val, SIGN => '0', VALID => '1', CLK => clk, DISP_EN => DISP_EN, SEGMENTS => SEGMENTS); led_div:led_clkDiv पोर्ट मैप (clk => clk, present_state => present_state, led_clk => led_clk); clk_div: counter_clkDiv पोर्ट मैप (clk => clk, sclk => sclk); अंत व्यवहार;

चरण 4: बाधाओं और विधानसभा की स्थापना

प्रतिबंध

बेसिस 3 बोर्ड को ठीक से सेटअप और प्रोग्राम करने के लिए, हमें पहले अपनी बाधाओं की फाइल को सेटअप करना होगा जो इस चरण से जुड़ी हुई है। निम्नलिखित सेटिंग्स को समायोजित किया गया है:

बटन

  • T18 को "up_enable" में बदला गया (चमक बढ़ाएं)
  • U17 को "down_enable" में बदला गया (चमक कम करें)

7 खंड प्रदर्शन

  • W7, W6, U8, V8, U5, V5, U7, V7 एक डिस्प्ले के प्रत्येक सेगमेंट का प्रतिनिधित्व करते हैं
  • U2, U4, V4, W4 प्रदर्शित प्रत्येक एनोड का प्रतिनिधित्व करते हैं (केवल 2 सक्रिय हैं क्योंकि हमारी उच्चतम संख्या 15 है)

पीएमओडी हैडर जेसी

JC7 वह जगह है जहाँ हम LED बल्ब के तारों में से एक को जोड़ते हैं, और दूसरा तार GROUND की ओर जाता है।

यह सब सेट अप करने के बाद, आपको बस अपना बिटस्ट्रीम जेनरेट करना है (जो भी सॉफ़्टवेयर आप यानी विवाडो का उपयोग कर रहे हैं), अपने बोर्ड को प्रोग्राम करें, और बूम करें! आपने अपने आप को एक वर्किंग बोर्ड बना लिया है।

नोट: पिन मैपिंग को यहां बेसिस 3 डेटाशीट पर पाया जा सकता है।

सभा

चरण 5: अपने डिमर स्विच का उपयोग करना

यदि सब ठीक हो जाता है, तो आपके पास पूरी तरह से काम करने वाला डिमर सिस्टम होना चाहिए। संक्षेप में, शीर्ष बटन को दबाने से आपकी चमक बढ़ जाएगी (सभी तरह से 15), और नीचे के बटन को दबाने से आपकी चमक कम हो जाएगी (सभी तरह से 0)। आशा है कि आपकी अब आराम की दृष्टि के लिए सब ठीक हो जाएगा!

सिफारिश की: