- आईसी PT2258
- कैसे PT2258 आईसी काम करता है
- योजनाबद्ध
- अवयव आवश्यक
- Arduino कोड
- डिजिटल ऑडियो वॉल्यूम कंट्रोल सर्किट का परीक्षण
- आगे की वृद्धि
एक पोटेंशियोमीटर एक यांत्रिक उपकरण है जिसके उपयोग से व्यक्ति वांछित मान के अनुसार प्रतिरोध सेट कर सकता है, इस प्रकार इसके माध्यम से गुजरने वाले वर्तमान को बदल सकता है। एक पोटेंशियोमीटर के लिए कई अनुप्रयोग मौजूद हैं, लेकिन ज्यादातर एक पोटेंशियोमीटर का उपयोग ऑडियो एम्पलीफायरों के लिए वॉल्यूम नियंत्रक के रूप में किया जाता है।
एक पोटेंशियोमीटर सिग्नल के लाभ को नियंत्रित नहीं करता है, लेकिन यह एक वोल्टेज विभक्त बनाता है और इसीलिए इनपुट सिग्नल को देखा जाता है। तो इस परियोजना में, मैं आपको दिखाने जा रहा हूं कि अपने डिजिटल वॉल्यूम नियंत्रक को IC PT2258 के साथ कैसे बनाया जाए और एक एम्पलीफायर सर्किट की मात्रा को नियंत्रित करने के लिए एक Arduino के साथ इंटरफ़ेस करें । आप यहां विभिन्न ऑडियो संबंधी सर्किट भी देख सकते हैं जिनमें VU मीटर, टोन कंट्रोल सर्किट आदि शामिल हैं।
आईसी PT2258
जैसा कि मैंने पहले उल्लेख किया है, PT2258 एक IC है जिसे 6 -चैनल इलेक्ट्रॉनिक वॉल्यूम कंट्रोलर के रूप में उपयोग करने के लिए बनाया गया है , यह आईसी विशेष रूप से मल्टी-चैनल ऑडियो-वीडियो अनुप्रयोगों के लिए डिज़ाइन की गई CMOS तकनीक का उपयोग करता है।
यह IC 1dB / स्टेप पर 0 से -79dB के क्षीणन रेंज के साथ I2C कंट्रोल इंटरफेस प्रदान करता है और 20-पिन DIP या SOP पैकेज में आता है।
कुछ मूलभूत सुविधाओं में शामिल हैं,
- 6-इनपुट और आउटपुट चैनल (5.1 होम ऑडियो सिस्टम के लिए)
- चयन योग्य I2C पता (डेज़ी-चेन एप्लिकेशन के लिए)
- उच्च चैनल पृथक्करण (कम शोर के लिए आवेदन)
- एस / एन अनुपात> 100 डीबी
- ऑपरेटिंग वोल्टेज 5 से 9 वी है
कैसे PT2258 आईसी काम करता है
यह आईसी SCL और SDA लाइनों के माध्यम से माइक्रोकंट्रोलर से डेटा प्रसारित और प्राप्त करता है। SDA और SCL बस इंटरफ़ेस बनाते हैं। स्थिर संचालन सुनिश्चित करने के लिए इन पंक्तियों को दो 4.7K प्रतिरोधों द्वारा उच्च खींचा जाना चाहिए।
इससे पहले कि हम वास्तविक हार्डवेयर ऑपरेशन पर जाएं, यहां आईसी का विस्तृत कार्यात्मक विवरण है। यदि आप यह सब नहीं जानना चाहते हैं, तो आप इस हिस्से को छोड़ सकते हैं क्योंकि सभी कार्यात्मक भाग को Arduino लाइब्रेरी द्वारा प्रबंधित किया जाता है।
डेटा मान्य
- एससीएल सिग्नल अधिक होने पर एसडीए लाइन पर डेटा स्थिर माना जाता है।
- SDA लाइन के हाई और लो स्टेट्स तभी बदल जाते हैं जब SCL कम हो।
शुरू और बंद करो हालत
जब एक प्रारंभ स्थिति सक्रिय होती है
- SCL हाई पर सेट है और
- SDA हाई से लो स्टेट में शिफ्ट हो जाता है।
स्टॉप कंडीशन कब एक्टिवेट होती है
- SCL हाई पर सेट है और
- एसडीए कम से उच्च राज्य में स्थानांतरित हो जाता है
ध्यान दें! संकेतों की डिबगिंग के लिए यह जानकारी बहुत उपयोगी है।
डेटा स्वरूप
एसडीए लाइन को प्रेषित प्रत्येक बाइट में 8 बिट होते हैं, जो एक बाइट बनाते हैं। प्रत्येक बाइट को एक Acknowledge Bit द्वारा फॉलो किया जाना चाहिए।
स्वीकृति
पावती स्थिर और उचित संचालन सुनिश्चित करती है। क्लॉक पल्स को स्वीकार करने के दौरान, माइक्रोकंट्रोलर एसडीए पिन हाई को इस सटीक समय पर परिधीय डिवाइस (ऑडियो प्रोसेसर) पुल-डाउन (एलओडब्ल्यू) एसडीए रेखा पर खींचता है।
परिधीय उपकरण (PT2258) अब पता चला है और इसे बाइट प्राप्त करने के बाद स्वीकार करना पड़ता है, अन्यथा, नौवीं (9 वीं) क्लॉक पल्स के दौरान एसडीए लाइन उच्च स्तर पर रहेगी। यदि ऐसा होता है, तो मास्टर ट्रांसमीटर स्थानांतरण को रोकने के लिए STOP सूचना उत्पन्न करेगा।
यह वैध डेटा हस्तांतरण के लिए जगह में होने की कोई आवश्यकता नहीं है।
पता चयन
इस IC का I2C पता CODE1 (Pin No.17) और CODE2 (पिन नंबर 4) की स्थिति पर निर्भर करता है।
CODE1 (पिन नंबर 17) |
CODE2 (पिन नंबर 4) |
हेक्स ADDRESS |
० |
० |
0X80 |
० |
1 |
0X84 |
1 |
० |
0X88 |
1 |
1 |
0X8C |
तर्क उच्च = १
तर्क कम = ०
इंटरफ़ेस प्रोटोकॉल
इंटरफ़ेस प्रोटोकॉल में निम्नलिखित शामिल हैं:
- ए स्टार्ट बिट
- एक चिप पता बाइट
- ACK = बिट स्वीकार करें
- एक डेटा बाइट
- एक स्टॉप बिट
थोड़ा हाउसकीपिंग
आईसी चालू होने के बाद, पहले डेटा बिट को संचारित करने से पहले कम से कम 200 मी इंतज़ार करना होगा, अन्यथा, डेटा-स्थानांतरण विफल हो सकता है।
देरी के बाद, पहली बात यह है कि I2C लाइन "0XC0" vi भेजकर रजिस्टर को साफ़ करें, यह उचित संचालन सुनिश्चित करता है।
उपरोक्त चरण पूरे रजिस्टर को साफ करता है, अब हमें रजिस्टर के लिए एक मूल्य निर्धारित करने की आवश्यकता है, अन्यथा, रजिस्टर कचरा मूल्य को संग्रहीत करता है और हमें एक फ्रीकल्ड आउटपुट मिलता है।
उचित मात्रा समायोजन सुनिश्चित करने के लिए, एक 1dB कोड के बाद 10dB के कई को अनुक्रम में एटेन्यूएटर को भेजना आवश्यक है, अन्यथा, आईसी असामान्य रूप से व्यवहार कर सकता है। नीचे दिए गए आरेख इसे और अधिक स्पष्ट करते हैं।
उपरोक्त दोनों विधियाँ ठीक से काम करेंगी।
उचित संचालन सुनिश्चित करने के लिए, सुनिश्चित करें कि I2C डेटा ट्रांसफर की गति कभी भी 100KHz से अधिक नहीं होती है।
इस तरह आप IC को बाइट ट्रांसमिट कर सकते हैं और इनपुट सिग्नल को अटेंड कर सकते हैं। उपरोक्त खंड यह जानने के लिए है कि आईसी कैसे कार्य करता है, लेकिन जैसा कि मैंने पहले कहा है, हम आईसी के साथ संवाद करने के लिए एक Arduino लाइब्रेरी का उपयोग करने जा रहे हैं जो सभी हार्ड कोड का प्रबंधन करता है, और हमें बस कुछ फ़ंक्शन कॉल करने की आवश्यकता है।
उपरोक्त सभी जानकारी डेटशीट से ली गई है, कृपया आगे की जानकारी के लिए इसे देखें।
योजनाबद्ध
उपरोक्त छवि PT2258 आधारित वॉल्यूम नियंत्रण सर्किट के परीक्षण योजनाबद्ध को दर्शाती है । यह डेटाशीट से लिया गया है और जरूरत के अनुसार संशोधित किया गया है।
प्रदर्शन के लिए, सर्किट को ऊपर दिखाए गए योजनाबद्ध की मदद से एक सोल्डरलेस ब्रेडबोर्ड पर बनाया गया है।
ध्यान दें! परजीवी समाई और प्रतिरोध को कम करने के लिए सभी घटकों को यथासंभव निकटता से रखा जाता है।
अवयव आवश्यक
- PT2258 आईसी - 1
- Arduino नैनो नियंत्रक - 1
- जेनेरिक ब्रेडबोर्ड - 1
- पेंच टर्मिनल 5 मिमी x 3 - 1
- पुश बटन - 1
- 4.7K रोकनेवाला, 5% - 2
- 150K रेसिस्टर, 5% - 4
- 10k रेसिस्टर, 5% - 2
- 10uF संधारित्र - 6
- 0.1uF संधारित्र - 1
- जम्पर तार - 10
Arduino कोड
सादगी के लिए, मैं GitHub से एक PT2258 पुस्तकालय का उपयोग करने जा रहा हूं, जो सनरूटकॉन द्वारा बनाया गया है।
यह एक बहुत अच्छी तरह से लिखा गया पुस्तकालय है इसलिए मैंने इसका उपयोग करने का निर्णय लिया है, लेकिन चूंकि यह बहुत पुराना है, इसलिए यह थोड़ा छोटा है और हमें इसका उपयोग करने से पहले इसे ठीक करने की आवश्यकता है।
सबसे पहले, GitHub रिपॉजिटरी से लाइब्रेरी को डाउनलोड करें और निकालें।
निष्कर्षण के बाद आपको उपरोक्त दो फाइलें मिलेंगी।
# अकेला छोड़ दो
अगला, अपने पसंदीदा पाठ संपादक के साथ PT2258.cpp फ़ाइल खोलें, मैं नोटपैड ++ का उपयोग कर रहा हूं।
आप देख सकते हैं कि वायर लाइब्रेरी का "w" छोटे अक्षरों में है, जो नवीनतम Arduino संस्करणों के साथ असंगत है, और आपको इसे "W" कैप के साथ बदलने की आवश्यकता है, बस।
इस खंड के अंत में PT2258 वॉल्यूम नियंत्रक के लिए पूरा कोड पाया जा सकता है । यहां कार्यक्रम के महत्वपूर्ण भागों को समझाया गया है।
हम सभी आवश्यक पुस्तकालयों फ़ाइलों को शामिल करके कोड शुरू करते हैं। द वायर लाइब्रेरी का उपयोग Arduino और PT2258 के बीच संवाद करने के लिए किया जाता है। PT2258 पुस्तकालय में सभी महत्वपूर्ण I2C समय की जानकारी और पावती है। EzButton पुस्तकालय धक्का-बटन के साथ इंटरफेस करने के लिए इस्तेमाल किया जाता है।
नीचे दिए गए कोड चित्रों का उपयोग करने के बजाय, कोड फ़ाइल से सभी कोड इंस्टेंस को कॉपी करें और उन्हें प्रारूपित करें जैसे हम अन्य परियोजनाओं में करते थे
#शामिल
इसके बाद, दो बटन और PT2258 लाइब्रेरी के लिए ऑब्जेक्ट बनाएं।
PT2258 pt2258; ezButton बटन_1 (2); ezButton बटन_2 (4);
अगला, वॉल्यूम स्तर को परिभाषित करें। यह डिफ़ॉल्ट वॉल्यूम स्तर है जिसे यह IC शुरू करेगा।
इंट वॉल्यूम = 40;
अगला, UART आरंभ करें, और I2C बस के लिए घड़ी की आवृत्ति सेट करें।
सीरियल.बेगिन (9600); वायर.सेटकॉक (100000);
I2C घड़ी को सेट करना बहुत महत्वपूर्ण है, अन्यथा, आईसी काम नहीं करेगा क्योंकि इस आईसी द्वारा समर्थित अधिकतम घड़ी आवृत्ति 100KHz है।
अगला, हम आईसी 2 बस के साथ ठीक से संवाद कर रहे हैं यह सुनिश्चित करने के लिए एक और बयान के साथ एक छोटे से हाउसकीपिंग करते हैं ।
अगर (pt2258.init ()) Serial.printIn ("PT2258 सफलतापूर्वक आरंभ हुआ"); Else Serial.printIn ("PT2258 शुरू करने में विफल");
इसके बाद, हमने पुशबटन के लिए डिब्यू की देरी को निर्धारित किया।
Button_1.setDebounceTime (50); Button_2.setDebounceTime (50);
अंत में, डिफ़ॉल्ट चैनल वॉल्यूम और पिन नंबर के साथ इसे सेट करके PT2258 IC शुरू करें।
/ * डिफ़ॉल्ट वॉल्यूम और पिन * / Pt2258.setChannelVolume (वॉल्यूम, 4) के साथ पीटी को सम्मिलित करना; Pt2258.setChannelVolume (वॉल्यूम, 5);
यह शून्य सेटअप () अनुभाग के अंत को चिह्नित करता है ।
में लूप खंड, हम बटन वर्ग से पाश समारोह कॉल करने के लिए की जरूरत है; यह एक पुस्तकालय मानदंड है।
Button_1.loop (); // लाइब्रेरी मानदंड Button_2.loop (); // लाइब्रेरी मानदंड
नीचे अगर खंड मात्रा को कम करना है।
/ * यदि बटन 1 दबाया जाता है यदि स्थिति सही है / / (बटन_1.इस्पायर्ड ()) {वॉल्यूम ++; // मात्रा काउंटर बढ़ाना। // यदि यह सुनिश्चित करता है कि वॉल्यूम 79 से ऊपर नहीं जाता है तो (वॉल्यूम> = 79) {वॉल्यूम = 79; } Serial.print ("वॉल्यूम:"); // वॉल्यूम स्तर मुद्रण Serial.printIn (वॉल्यूम); / * चैनल 4 के लिए वॉल्यूम सेट करें जो कि PT2558 IC * / Pt2558.setChannelVolume (वॉल्यूम, 4) के पिन 9 में है; / * चैनल 5 के लिए वॉल्यूम सेट करें जो कि PT2558 IC * / Pt2558.setChannelVolume (वॉल्यूम, 5) का पिन 10 है; }
नीचे अगर खंड मात्रा को बढ़ाने के लिए है।
// ऐसा ही होता है बटन 2 के लिए यदि (बटन_2.isPressed ()) {Volume--; // अगर यह सुनिश्चित करता है कि वॉल्यूम स्तर शून्य से नीचे नहीं जाता है। यदि (वॉल्यूम <= 0) वॉल्यूम = 0; Serial.print ("वॉल्यूम:"); Serial.printIn (मात्रा); Pt2258.setChannelVolume (वॉल्यूम, 4); Pt2558.setChannelVolume (वॉल्यूम, 5); }
डिजिटल ऑडियो वॉल्यूम कंट्रोल सर्किट का परीक्षण
सर्किट का परीक्षण करने के लिए, निम्नलिखित उपकरण का उपयोग किया गया था
- एक ट्रांसफार्मर जिसमें 13-0-13 टैप होता है
- लोड के रूप में 2 4 2 20W स्पीकर।
- ऑडियो स्रोत (फ़ोन)
पिछले लेख में, मैंने आपको TDA2050 IC के साथ एक सरल 2x32 वाट ऑडियो एम्पलीफायर बनाने का तरीका दिखाया है, मैं इस प्रदर्शन के लिए भी इसका उपयोग करने जा रहा हूं।
मैंने मैकेनिकल पोटेंशियोमीटर को अव्यवस्थित किया है और दो छोटे जम्पर केबल के साथ दो लीड को छोटा किया है।
अब, दो पुश-बटन की मदद से एम्पलीफायर की मात्रा को नियंत्रित किया जा सकता है।
आगे की वृद्धि
इसके प्रदर्शन को बेहतर बनाने के लिए सर्किट को और संशोधित किया जा सकता है। आईसी के डिजिटल खंड द्वारा उत्पन्न शोर को समाप्त करने के लिए सर्किट जैसे सुधार एक पीसीबी के लिए किए जा सकते हैं। उच्च आवृत्ति शोर को अस्वीकार करने के लिए हम एक अतिरिक्त फ़िल्टर भी जोड़ सकते हैं। इसके अलावा, अन्य ऑडियो एम्पलीफायर सर्किट और अन्य ऑडियो संबंधित परियोजनाओं की जांच करें।
मुझे उम्मीद है कि आपको यह लेख पसंद आया होगा और इसमें से कुछ नया सीखा जाएगा। यदि आपको कोई संदेह है, तो आप नीचे टिप्पणी में पूछ सकते हैं या विस्तृत चर्चा के लिए हमारे मंचों का उपयोग कर सकते हैं।