रविवार, 26 फ़रवरी 2017

Control a Servo motor with a potentiometer in Hindi

( चित्र पर क्लिक करने पर आपको बड़ी इमेज दिखाई देगी )

 एक सर्व्हो मोटर को पोटेन्शिओमीटर के नॉब से कैसे कंट्रोल किया जाए ?


आज हम आर्डूइनो के बोर्ड पर प्रोग्रामिंग कर के एक मायक्रो सर्व्हो मोटर (9g) के शाफ़्ट को  10 किलो ओहम्स के पोटेन्शिओमीटर का नॉब घुमाकर कंट्रोल करेंगे.


इस एक्सपेरिमेंट के लिए जरूरी चीजें किसी भी आर्डूइनो उनोके स्टार्टर किट में मिल जाएँगी. इस पन्ने पर राईट साईड में आपको इन किट्स के विज्ञापन दिख जायेंगे.

अगर आपने यह किट खरीद लिया या फिर आपके पास पहले से मौजूद है तो हम आगे बढ़ सकते हैं. इस एक्सपेरिमेंट के लिए जरूरी कॉम्पोनंट नीचे दिखाए गए हैं.

ब्रेड बोर्ड पर कॉम्पोनंट कैसे बिठाये जाते हैं यह आपको नहीं मालूम हो तो उसे इस आर्टिकल में पढ़ें.

( चित्र पर क्लिक करने पर आपको बड़ी इमेज दिखाई देगी )
  • Arduino Uno Board
  • One Breadboard (small)
  • RC Servo motor ( Tower Pro Micro Servo 9g SG 90)
  • Potentiometer (B10K)
  • Male-Female jumper wires 3
  • Male-Male jumper wires 3
  • Small Jumper wires 4
आप किसी भी कलर के वायर चुन सकते हैं. आम तौर पर मैं इन एक्सपेरिमेंट्स  में इन रंगों का इस्तेमाल करता हूँ.
  • पॉजिटिव्ह सप्लाय के लिए लाल.
  • निगेटिव्ह सप्लाय ( ग्राउंड ) के लिए काला.
  • सिग्नल के पिन के लिए पीला.
नीचे इस एक्सपेरिमेंट का सर्किट डायग्राम दिया गया है. और साथ ही कॉम्पोनंट के फोटो भी दिखाए गए हैं
( चित्र पर क्लिक करने पर आपको बड़ी इमेज दिखाई देगी )


सर्व्हो मोटर और पोटेन्शिओमीटर दोनों को हम 5 व्होल्ट का सप्लाय देंगे.
सर्व्हो मोटर के वायरों के बारे में विस्तार से इस आर्टिकल में समझाया गया है.

सर्व्हो मोटर के लाल वायर और पोटेन्शिओमीटर को जोड़े गए लाल वायर को ब्रेड बोर्ड पर पॉवर लेन में जोड़ लें. किसी ब्रेड बोर्ड पर लाल और नीले रंग की लाईनें होती हैं, तो किसी पर नहीं होती. आप किसी भी एक लेन को पॉजिटिव्ह के तौर पर और उसके बगल वाले लेन को ग्राउंड के लिए इस्तेमाल कर सकते हैं. हाफ साईज के ब्रेडबोर्ड पर दोनों छोर पर दो दो लेन होते हैं.

पोटेन्शिओमीटर के तीन पिन होते हैं. हमने 10 किलो ओह्म्स का लिया है.  इस पर B10K लिखा होगा. इसकी बीच वाली पिन सिग्नल की होती है. और दो छोर पर किसी भी पिन को पॉजिटिव्ह या निगेटिव्ह कनेक्ट किया जा सकता है. इसके एक छोर पर एक नॉच , गड्ढा होता है. उस तरफ की पिन को हम निगेटिव्ह के लिए कली वायर जोड़ेंगे. इसे कनेक्ट करने के लिए डुपोंट (Dupont) वायर्स इस्तेमाल करेंगे.

आर्डूइनो के किट के साथ जम्पर वायर्स के अलावा तीन रिबन के शक्ल में डुपोंट के जम्पर वायर मिलते हैं. इन में मेल टू मेल, मेल टू फिमेल और फिमेल तो फिमेल वायर्स हैं. ये वायर अलग अलग रंगों में आते हैं, आपको इस रिबन नुमा जोड़ से एक एक वायर खींच कर अलग करनी होती है.

पोटेन्शिओमीटर के लिए 3 मेल टू फिमेल वायरें चाहिए. एक काली, एक लाल और एक पीली. काली वायर का फिमेल वाला हिस्सा पोटेन्शिओमीटर के नॉच वाले साईड के पिन से जोड़ेंगे, बीच वाली पिन में पीली वायर और दुसरे छोर पर पिन में लाल वायर जोड़ेंगे. लाल और काली वायर के दुसरे छोर ब्रेडबोर्ड के पॉजिटिव्ह और निगेटिव्ह लेन में जायेंगे. पीली वायर का दूसरा छोर ब्रेड बोर्ड पर किसी भी खाली जगह पर जोड़ दें, और उसके साथ एक और पीली वायर ( मेल टू मेल ) ब्रेडबोर्ड पर जोड़ दें, और उसका दुसरा छोर आर्डूइनो उनोके बोर्ड पर डिजिटल पिन नंबर 9 से जोड़ दें.

उसी प्रकार सर्व्हो मोटर के ऑरेंज/ नारंगी वायर को एक और नारंगी वायर ( फिमेल टू मेल ) से जोड़ दें. इस वायर का दुसरा छोर ब्रेडबोर्ड पर किसी खाली जगह पर जोड़ दें, और उसके साथ एक मेल टू मेल वायर जोड़ कर उसका दूसरा छोर  आर्डूइनो उनो के बोर्ड पर एनालॉग पिन नंबर A0 से जोड़ दें.

इस प्रकार सर्किट पूरा होने पर,  आर्डूइनो उनोके बोर्ड को कम्प्युटर के युएसबी पोर्ट से जोड़ दें. और आर्डूइनो का प्रोग्रामिंग सॉफ्टवेअर शुरू करें. और उसमें

File - Examples - Servo - Knob

इस प्रोग्राम को ओपन करें. अब अपलोड के बटन पर क्लिक कर के उसे अपलोड करें. अपलोड पूरा होने पर जब आप पोटेन्शिओमीटर का नॉब घुमाओगे तो सर्व्हो मोटर का शाफ़्ट भी उसी के साथ घूमता हुआ आपको दिखेगा.

इसका प्रोग्राम तो आप वहीँ पर पढ़ सकते हैं, लेकिन उसे समझने में आसानी हो इसलिए मैंने उसका एक संक्षिप्त संस्करण बनाया है जिसे आप नीचे देख सकते हो. 

( चित्र पर क्लिक करने पर आपको बड़ी इमेज दिखाई देगी )
प्रोग्राम तो इंग्लिश में लिखा हुआ है, इसलिए उसे मैंने इंग्लिश में ही समझाने का प्रयास किया है. इसे आप नीचे पढ़ सकते हो.

Here we are using a header library called Servo.h
We create an instance of the Servo object. 
We will require an integer variable, I have named it x.

The setup() function

myservo.attach(9);
Here 9 indicated the Digital pin number 9 on Arduino's board. You can use any PWM enabled pins instead. 

The loop() function

analogRead(0) function reads the output of the potentiometer and stores the value in variable x. This value is in the range of (0 to 1023) 

map() function
This will map the value of x from the range of (0 to 1023 to corresponding value (0 to 180) and return the mapped value to x. In fact you can use another variable to store it's value if you want to understand the program clearly.

Now at this moment x contains a value in the range of 0 to 180, which is the range of movement of the Servo motor's shaft. We can now move the shaft to that degree. 

myservo.write(x); 

will turn the shaft to (x) Degrees.

delay(15);

gives a 15 millisecond delay between iteration of the loop() function. This give the time required for actual movement of the shaft.