विषयसूची:

Arduino और DC मोटर के साथ गाने बनाना: 6 कदम
Arduino और DC मोटर के साथ गाने बनाना: 6 कदम

वीडियो: Arduino और DC मोटर के साथ गाने बनाना: 6 कदम

वीडियो: Arduino और DC मोटर के साथ गाने बनाना: 6 कदम
वीडियो: Speed Control DC Motor Project, Arduino Based Project 2024, नवंबर
Anonim
Arduino और DC मोटर के साथ गाने बनाना
Arduino और DC मोटर के साथ गाने बनाना

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

हालाँकि, जब मैंने इसे स्वयं आज़माया, तो मैंने पाया कि मेरे पास जो स्टेपर मोटर है वह एक स्वर बनाने के लिए पर्याप्त तेज़ी से नहीं घूम सकती है। इसके बजाय, मैंने एक डीसी मोटर का उपयोग किया, जो प्रोग्राम के लिए अपेक्षाकृत सरल है और एक Arduino से कनेक्ट होता है। एक सामान्य L293D IC का उपयोग Arduino PWM पिन से मोटर को आसानी से चलाने के लिए किया जा सकता है, और Arduino में मूल टोन () फ़ंक्शन आवश्यक आवृत्ति उत्पन्न कर सकता है। मेरे आश्चर्य के लिए, मुझे ऑनलाइन डीसी मोटर का उपयोग करने वाला कोई उदाहरण या प्रोजेक्ट नहीं मिला, और इसलिए यह निर्देश मेरे उपाय के लिए मेरी प्रतिक्रिया है। आएँ शुरू करें!

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

आपूर्ति

  • Arduino (मैंने एक UNO का उपयोग किया है लेकिन यदि आप चाहें तो आप एक भिन्न Arduino का उपयोग कर सकते हैं)
  • मानक 5 वी डीसी मोटर, अधिमानतः एक प्रशंसक संलग्न करने में सक्षम ("सर्किट को इकट्ठा करना" में चित्र देखें)
  • L293D आईसी
  • आप जितने गाने बजाना चाहते हैं उतने पुश बटन
  • ब्रेड बोर्ड
  • जम्पर तार

चरण 1: अवलोकन

यहां बताया गया है कि परियोजना कैसे काम करती है: Arduino एक निश्चित आवृत्ति पर एक वर्ग तरंग उत्पन्न करेगा, जिसे वह L293D को आउटपुट करता है। L293D एक बाहरी बिजली की आपूर्ति से जुड़ा हुआ है, जिसका उपयोग वह Arduino द्वारा दी गई आवृत्ति पर मोटर को बिजली देने के लिए करता है। डीसी मोटर के शाफ्ट को घूमने से रोककर, मोटर को आवृत्ति पर बंद और चालू करते हुए सुना जा सकता है, जो एक स्वर, या नोट उत्पन्न करता है। जब बटन दबाए जाते हैं, या स्वचालित रूप से उन्हें चलाने के लिए हम Arduino को नोट्स चलाने के लिए प्रोग्राम कर सकते हैं।

चरण 2: सर्किट को असेंबल करना

सर्किट को असेंबल करना
सर्किट को असेंबल करना
सर्किट को असेंबल करना
सर्किट को असेंबल करना

सर्किट को इकट्ठा करने के लिए, बस ऊपर दिए गए फ्रिटिंग आरेख का पालन करें।

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

चरण 3: सर्किट कैसे काम करता है

सर्किट कैसे काम करता है
सर्किट कैसे काम करता है

L293D एक IC है जिसका उपयोग अपेक्षाकृत उच्च वोल्टेज, रिले और मोटर्स जैसे उच्च वर्तमान उपकरणों को चलाने के लिए किया जाता है। Arduino अधिकांश मोटर्स को सीधे अपने आउटपुट से चलाने में असमर्थ है (और मोटर से पिछला EMF Arduino के संवेदनशील डिजिटल सर्किटरी को नुकसान पहुंचा सकता है), इसलिए L293D जैसे IC को DC मोटर को आसानी से चलाने के लिए बाहरी बिजली की आपूर्ति के साथ उपयोग किया जा सकता है। L293D में एक सिग्नल इनपुट करने से Arduino को नुकसान पहुंचाए बिना DC मोटर को वही सिग्नल आउटपुट होगा।

ऊपर इसके डेटाशीट से L293D का पिनआउट/कार्यात्मक योजनाबद्ध है। चूंकि हम केवल 1 मोटर चला रहे हैं (L293D 2 चला सकता है), हमें केवल IC के एक तरफ की आवश्यकता है। पिन 8 शक्ति है, पिन 4 और 5 GND हैं, पिन 1 Arduino से PWM आउटपुट है, और पिन 2 और 7 मोटर की दिशा को नियंत्रित करते हैं। जब पिन 2 उच्च होता है और पिन 7 कम होता है, तो मोटर एक तरफ घूमती है, और जब पिन 2 कम होती है और पिन 7 उच्च होती है, तो मोटर दूसरी तरफ घूमती है। चूंकि हमें परवाह नहीं है कि मोटर किस तरह से घूमती है, इससे कोई फर्क नहीं पड़ता कि पिन 2 और 7 कम या उच्च हैं, जब तक कि वे एक दूसरे से अलग हैं। पिन 3 और 6 मोटर से जुड़ते हैं। आप चाहें तो सब कुछ दूसरी तरफ (पिन 9-16) से जोड़ सकते हैं, लेकिन ध्यान रखें कि पावर और पीडब्लूएम पिन स्थान बदलते हैं।

नोट: यदि आप एक Arduino का उपयोग कर रहे हैं जिसमें प्रत्येक बटन के लिए पर्याप्त पिन नहीं है, तो आप सभी स्विच को एक एनालॉग पिन से जोड़ने के लिए प्रतिरोधों के एक नेटवर्क का उपयोग कर सकते हैं, जैसे कि इस निर्देश में। यह कैसे काम करता है यह इस परियोजना के दायरे से बाहर है, लेकिन अगर आपने कभी R-2R DAC का उपयोग किया है तो आपको यह परिचित होना चाहिए। ध्यान दें कि एनालॉग पिन का उपयोग करने के लिए कोड के बड़े हिस्से को फिर से लिखना होगा, क्योंकि बटन लाइब्रेरी का उपयोग एनालॉग पिन के साथ नहीं किया जा सकता है।

चरण 4: कोड कैसे काम करता है

सभी बटनों को संभालना आसान बनाने के लिए, मैंने मैडलीच द्वारा "बटन" नामक एक पुस्तकालय का उपयोग किया। मैंने सबसे पहले पुस्तकालय को शामिल किया। इसके बाद, 8-22 की पंक्तियों में, मैंने ट्विंकल, ट्विंकल, लिटिल स्टार (उदाहरण गीत), जिस पिन का उपयोग मैं L293D को चलाने के लिए करूंगा, और बटनों को चलाने के लिए आवश्यक नोट्स के लिए आवृत्तियों को परिभाषित किया।

सेटअप फ़ंक्शन में, मैंने सीरियल, बटन को इनिशियलाइज़ किया और L293D के लिए ड्राइवर पिन को आउटपुट मोड में सेट किया।

अंत में, मुख्य लूप में मैंने यह देखने के लिए जाँच की कि क्या कोई बटन दबाया गया है। यदि यह है, तो Arduino संबंधित नोट चलाता है और नोट नाम को सीरियल मॉनिटर पर प्रिंट करता है (यह जानने के लिए उपयोगी है कि आपके ब्रेडबोर्ड पर कौन से नोट हैं)। यदि कोई नोट जारी किया जाता है, तो arduino किसी भी ध्वनि को noTone () के साथ रोक देता है।

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

चरण 5: एक गाने की प्रोग्रामिंग

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

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

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

चरण 6: प्रतिक्रिया

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

सिफारिश की: