इस ट्यूटोरियल में हम FLEX सेंसर, Arduino Uno और सर्वो मोटर का उपयोग करके एक सर्किट विकसित करने जा रहे हैं। यह परियोजना एक सर्वो नियंत्रण प्रणाली है जहां सर्वो शाफ्ट की स्थिति फ्लेक्स सेंसर के फ्लेक्स या तुला या विचलन द्वारा निर्धारित की जाती है।
सबसे पहले सर्वो मोटर्स के बारे में बात करते हैं। सर्वो मोटर्स का उपयोग किया जाता है जहां सटीक शाफ्ट आंदोलन या स्थिति की आवश्यकता होती है। ये उच्च गति अनुप्रयोगों के लिए प्रस्तावित नहीं हैं। ये कम गति, मध्यम टोक़ और सटीक स्थिति आवेदन के लिए प्रस्तावित हैं। इन मोटर्स का उपयोग रोबोट आर्म मशीन, उड़ान नियंत्रण और नियंत्रण प्रणाली में किया जाता है। सर्वो मोटर्स का उपयोग एम्बेडेड सिस्टम जैसे वेंडिंग मशीन आदि में किया जाता है।
सर्वो मोटर्स विभिन्न आकारों और आकारों में उपलब्ध हैं। एक सर्वो मोटर में मुख्य रूप से तार होते हैं, एक सकारात्मक वोल्टेज के लिए होता है दूसरा जमीन के लिए होता है और अंतिम स्थिति के लिए होता है। RED तार बिजली से जुड़ा होता है, काला तार जमीन से जुड़ा होता है और YELLOW तार सिग्नल से जुड़ा होता है।
एक इमदादी मोटर डीसी मोटर, स्थिति नियंत्रण प्रणाली, गियर का एक संयोजन है। DC मोटर के शाफ्ट की स्थिति को सर्वो में नियंत्रण इलेक्ट्रॉनिक्स द्वारा समायोजित किया जाता है, जो PWM के कर्तव्य अनुपात के आधार पर संकेत पिन को दर्शाता है।
बस बोल नियंत्रण इलेक्ट्रॉनिक्स डीसी मोटर को नियंत्रित करके शाफ्ट की स्थिति को समायोजित करता है। शाफ्ट की स्थिति के बारे में यह डेटा SIGNAL पिन के माध्यम से भेजा जाता है। नियंत्रण के लिए स्थिति डेटा को इमदादी मोटर के सिग्नल पिन के माध्यम से पीडब्लूएम सिग्नल के रूप में भेजा जाना चाहिए।
पीडब्लूएम (पल्स चौड़ाई संशोधित) सिग्नल की आवृत्ति सर्वो मोटर के प्रकार के आधार पर भिन्न हो सकती है। यहाँ महत्वपूर्ण बात PWM सिग्नल की DUTY RATIO है। इस DUTY RATION के आधार पर नियंत्रण इलेक्ट्रॉनिक्स शाफ्ट को समायोजित करता है। शाफ्ट को 9o घड़ी में ले जाने के लिए TURN ON RATION 1 / 18.ie होना चाहिए। Time ऑन टाइम’का 1 मिली सेकेंड और 18 एमएस सिग्नल में 'ऑफ टाइम’ का 17 मिली सेकेंड।
शाफ्ट को 12o घड़ी में ले जाने के लिए सिग्नल के समय को 1.5ms और ऑफ का समय 16.5ms होना चाहिए। यह अनुपात सर्वो में नियंत्रण प्रणाली द्वारा डिकोड किया गया है और यह इसके आधार पर स्थिति को समायोजित करता है।
यहाँ यह PWM ARDUINO UNO का उपयोग करके बनाया गया है। तो अब हम जानते हैं कि, हम Arduino Uno द्वारा उत्पन्न PWM सिग्नल के कर्तव्य अनुपात को अलग करके सर्वो मोटर शाफ्ट को नियंत्रित कर सकते हैं। UNO का एक विशेष कार्य है जो हमें PWM सिग्नल को परेशान किए बिना सर्वो की स्थिति प्रदान करने में सक्षम बनाता है। हालांकि पीडब्ल्यूएम ड्यूटी राशन - सर्वो पोजिशन रिलेशन को जानना जरूरी है। हम इसके बारे में अधिक विवरण में बात करेंगे।
अब बात करते हैं फ्लेक्स सेंसर की । ARDUINO UNO के लिए एक फ्लेक्स सेंसर को इंटरफेस करने के लिए, हम काम करने के लिए 8 बिट एडीसी (एनालॉग से डिजिटल रूपांतरण) सुविधा का उपयोग करने जा रहे हैं। फ्लेक्स सेंसर एक ट्रांसड्यूसर है जो अपने आकार को बदलने पर इसके प्रतिरोध को बदल देता है। फ्लेक्स सेंसर 2.2 इंच लंबा या उंगली की लंबाई का होता है। इसे फिगर में दिखाया गया है।
फ्लेक्स सेंसर एक ट्रांसड्यूसर है जो रैखिक सतह को मोड़ने पर इसके प्रतिरोध को बदल देता है। इसलिए नाम फ्लेक्स सेंसर। बस बोलते समय सेंसर टर्मिनल प्रतिरोध बढ़ जाता है। यह नीचे दिए गए आंकड़े में दिखाया गया है।
प्रतिरोध में यह बदलाव तब तक अच्छा नहीं हो सकता जब तक कि हम उन्हें नहीं पढ़ सकते। हाथ में नियंत्रक केवल वोल्टेज में संभावनाओं को पढ़ सकता है और कुछ भी कम नहीं है, इसके लिए हम वोल्टेज विभक्त सर्किट का उपयोग करने जा रहे हैं, इसके साथ हम प्रतिरोध परिवर्तन को वोल्टेज परिवर्तन के रूप में प्राप्त कर सकते हैं।
वोल्टेज विभक्त एक प्रतिरोधक सर्किट है और इसे आकृति में दिखाया गया है। इस प्रतिरोधक नेटवर्क में हमारे पास एक निरंतर प्रतिरोध और अन्य चर प्रतिरोध है। जैसा कि चित्र में दिखाया गया है, आर 1 यहां एक निरंतर प्रतिरोध है और आर 2 फ्लेक्स सेंसर है जो प्रतिरोध का काम करता है।
शाखा का मध्यबिंदु मापन के लिए लिया जाता है। R2 परिवर्तन के साथ, हमारे पास Vout में परिवर्तन है। तो इसके साथ हमारे पास एक वोल्टेज है जो वजन के साथ बदलता है।
अब यहां ध्यान देने योग्य बात यह है कि ADC रूपांतरण के लिए नियंत्रक द्वारा लिया गया इनपुट 50µAmp जितना कम है। प्रतिरोध आधारित वोल्टेज विभक्त का यह लोडिंग प्रभाव महत्वपूर्ण है क्योंकि वाउट ऑफ वोल्टेज डिवाइडर से खींची गई वर्तमान में त्रुटि प्रतिशत बढ़ जाता है, अब हमें लोडिंग प्रभाव के बारे में चिंता करने की आवश्यकता नहीं है।
फ्लेक्स सेंसर जब इसके प्रतिरोध को बदल देता है। एक वोल्टेज विभक्त सर्किट से जुड़े इस ट्रांसड्यूसर के साथ, हमारे पास ट्रांसड्यूसर पर फ्लेक्स के साथ एक बदलते वोल्टेज होगा। यह चर वोल्टेज एडीसी चैनलों में से एक के लिए एफईडी है, हमारे पास फ्लेक्स से संबंधित एक डिजिटल मूल्य होगा।
हम इस डिजिटल वैल्यू को सर्वो पोजिशन से मिलाएंगे, इसी के साथ फ्लेक्स द्वारा हमारा सर्वो कंट्रोल होगा।
अवयव
हार्डवेयर: Arduino Uno , Power supply (5v), 1000 uF कैपेसिटर, 100nF कैपेसिटर (3 टुकड़े), 100K) रेसिस्टर, सर्वो मोटर (SG 90), 220Ω रोकनेवाला, फ्लेक्स सेंसर।
सॉफ्टवेयर: एटम स्टूडियो 6.2 या ऑर्डिनो रात में।
सर्किट आरेख और स्पष्टीकरण
FLEX संवेदक द्वारा इमदादी मोटर नियंत्रण के लिए सर्किट आरेख आंकड़ा नीचे में दिखाया गया है।
सेंसर के पार वोल्टेज पूरी तरह से रैखिक नहीं है; यह एक शोर होगा। शोर को छानने के लिए, कैपेसिटर को विभक्त सर्किट में प्रत्येक प्रतिरोधक के पार रखा जाता है जैसा कि चित्र में दिखाया गया है।
यहां हम विभक्त द्वारा प्रदान किए गए वोल्टेज (वोल्टेज जो रैखिक भार का प्रतिनिधित्व करते हैं) को लेने जा रहे हैं और इसे Arduino UNO के ADC चैनल में से एक में फ़ीड करते हैं। हम इसके लिए A0 का उपयोग करने जा रहे हैं। एडीसी आरंभीकरण के बाद, हमारे पास सेंसर पर तुला का प्रतिनिधित्व करने वाला डिजिटल मूल्य होगा। हम यह मान लेंगे और इसे सर्वो स्थिति के साथ मिलाएंगे।
इसके लिए हमें कार्यक्रम में कुछ निर्देश स्थापित करने की आवश्यकता है और हम उनके बारे में नीचे विस्तार से बात करेंगे।
ARDUINO में छह ADC चैनल हैं, जैसा कि चित्र में दिखाया गया है। उन में से किसी एक या सभी को एनालॉग वोल्टेज के इनपुट के रूप में उपयोग किया जा सकता है। यूएनओ एडीसी 10 बिट रिज़ॉल्यूशन का होता है (इसलिए पूर्णांक मान (0-2 (10 ^ 10) 1023)))। इसका मतलब है कि यह 0 और 5 वोल्ट के बीच के इनपुट वोल्टेज को 0 और 1023 के बीच पूर्णांक मानों में मैप करेगा। इसलिए प्रत्येक के लिए (5/1024 = 4.9mV) प्रति यूनिट।
यहां हम UNO के A0 का उपयोग करने जा रहे हैं।
हमें कुछ चीजें जानने की जरूरत है।
|
सबसे पहले UNO ADC चैनलों का डिफ़ॉल्ट संदर्भ मान 5V है। इसका मतलब है कि हम किसी भी इनपुट चैनल पर ADC रूपांतरण के लिए अधिकतम 5V का इनपुट वोल्टेज दे सकते हैं। चूंकि कुछ सेंसर 0-2.5V से वोल्टेज प्रदान करते हैं, 5V संदर्भ के साथ हमें कम सटीकता प्राप्त होती है, इसलिए हमारे पास एक निर्देश है जो हमें इस संदर्भ मूल्य को बदलने में सक्षम बनाता है। इसलिए हमारे पास संदर्भ मूल्य बदलने के लिए ("analogReference ();") अब के लिए हम इसे छोड़ देते हैं।
डिफ़ॉल्ट रूप से हमें अधिकतम बोर्ड एडीसी रिज़ॉल्यूशन मिलता है जो 10 बिट्स है, इस रिज़ॉल्यूशन को निर्देश ("analogReadResolution (बिट्स);") का उपयोग करके बदला जा सकता है। यह संकल्प परिवर्तन कुछ मामलों के लिए काम में आ सकता है। अभी के लिए हम इसे छोड़ देते हैं।
अब यदि उपरोक्त शर्तों को डिफ़ॉल्ट पर सेट किया गया है, तो हम सीधे '' analogRead (pin); "A0" होगा।
ADC से मान को पूर्णांक में "int SENSORVALUE = analogRead (A0) के रूप में लिया जा सकता है; ", इस निर्देश द्वारा ADC पूर्णांक" SENSORVALUE "में संग्रहीत होने के बाद मान।
अब हम सर्वो के बारे में बात करते हैं, UNO में एक विशेषता है जो हमें केवल डिग्री मान देकर सर्वो स्थिति को नियंत्रित करने में सक्षम बनाता है। यदि हम चाहते हैं कि सर्वो 30 पर हो, तो हम सीधे कार्यक्रम में मूल्य का प्रतिनिधित्व कर सकते हैं। सर्वो हेडर फ़ाइल आंतरिक रूप से सभी ड्यूटी अनुपात गणनाओं का ध्यान रखती है।
#शामिल
सर्वो सर्वो; servo.attach (3); servo.write (डिग्री); |
पहला बयान सर्वो मोटर को नियंत्रित करने के लिए हेडर फ़ाइल का प्रतिनिधित्व करता है।
दूसरा बयान सर्वो का नामकरण कर रहा है; हम इसे सर्वो के रूप में छोड़ देते हैं।
तीसरा कथन बताता है कि सर्वो सिग्नल पिन कहां से जुड़ा है; यह एक PWM पिन होना चाहिए। यहां हम PIN3 का उपयोग कर रहे हैं।
चौथा बयान इमदादी मोटर की स्थिति के लिए आदेश देता है और डिग्री में है। यदि इसे 30 दिया जाता है, तो सर्वो मोटर 30 डिग्री घूमती है।
अब sg90 0-180 डिग्री से आगे बढ़ सकता है, हमारे पास ADC परिणाम 0-1024 है
तो ADC लगभग छह गुना सर्वोपरि है। तो ADC परिणाम को 6 से विभाजित करके हम अनुमानित सर्वो पद प्राप्त करेंगे।
इसके साथ ही हमारे पास सर्वो मोटर, जो कि फ्लेक्स या बेंट के अनुपात में होती है, के लिए सर्वो पोजिशन वैल्यू होगी। जब यह फ्लेक्स सेंसर ग्लव पर लगाया जाता है, तो हम हाथ की गति से सर्वो स्थिति को नियंत्रित कर सकते हैं ।