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

Control a Servo motor with a Potentiometer in Marathi

(चित्र मोठे करून पाहण्यासाठी क्लिक करा) 
एका सर्व्हो मोटरला पोटेन्शिओमीटरच्या नॉब ने कसे कंट्रोल करावे ?

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

या प्रयोगासाठी लागणारे साहित्य आर्डूइनो उनोच्या कोणत्याही स्टार्टर किटमधे मिळेल. या पानावर उजव्या बाजूला दिसणाऱ्या लिंक वरून तुम्हाला हे किट्स विकत घेता येतील.

जर तुम्ही हे किट खरेदी केले आहे किंवा तुमच्याकडे यापूर्वीच हे किट घेतलेले असेल तर आपण या प्रयोगाची सुरवात करू या.

 या प्रयोगासाठी लागणारे कॉम्पोनंट्स खाली दाखवलेले आहेत.

 (चित्र मोठे करून पाहण्यासाठी क्लिक करा) 
  • Arduino Uno Board
  • Breadboard (small)
  • RC Servo motor ( Tower Pro Micro Servo 9g SG 90)
  • 10 Kilo Ohms Potentiometer (B10K)
  • Male-Female jumper wires 3
  • Male-Male jumper wires 3
  • Small M-M Jumper wires 4
या प्रयोगासाठी तुम्ही कोणत्याही रंगाच्या वायरी वापरू शकता. आपण समजावून सांगताना सोपे जावे म्हणून मी खालील रंगाच्या वायरींचा वापर करतो
  • पॉजिटिव्ह सप्लाय साठी लाल रंग
  • निगेटिव्ह सप्लाय ( ग्राउंड ) साठी काळा रंग
  • सिग्नलच्या  पिन साठी पिवळा रंग
खाली या प्रयोगाचे सर्किट डायग्राम दिसत आहे. त्याच बरोबर मूळ कॉम्पोनंट्सचे फोटो देखील दाखवले आहेत

(चित्र मोठे करून पाहण्यासाठी क्लिक करा)


सर्व्हो मोटर आणि पोटेन्शिओमीटरला  5 व्होल्ट चा सप्लाय द्यावा.
सर्व्हो मोटरच्या कनेक्शन बद्दल सविस्तर या मागील लेखामध्ये वाचता येईल.

सर्व्हो मोटारीच्या लाल वायरला ब्रेड बोर्ड च्या एका पॉवर लेनशी जोडावे, आणि ब्राऊन/ करड्या रंगाच्या वायरला दुसऱ्या लेनशी जोडावे. ब्रेड बोर्ड वर कनेक्शन कसे केले जाते हे जर तुम्हाला माहिती नसेल तर हा लेख वाचावा.
याच्या ऑरेंज/ नारंगी वायर ला ब्रेडबोर्ड वर एखाद्या रिकाम्या ओळीत जोडावे, आणि त्याच ओळीत एक मेल-मेल  डूपॉंट वायर किंवा जंपर वायर जोडून त्याचे दुसरे टोक आर्डूइनो उनोच्या बोर्डवर अॅनालॉग पिन क्रमांक A0 शी जोडावे. 

सर्व्हो मोटारीच्या वायरींना ब्रेड बोर्डशी जोडण्यासाठी मेल-मेल जंपर वायरींची आवश्यकता आहे. कारण सर्व्हो मोटारीच्या वायरींच्या पिना फिमेल असतात आणि त्यांना ब्रेड बोर्डवर जोडता येत नाही. त्यामुळे आपण मेल-मेल जंपर वायर वापरू, 

 पोटेन्शिओमीटरला तीन पिना असतात. त्याच्या एका बाजूला नॉच असतो, त्या बाजूच्या पिनला काळी वायर, मधले सिग्नलचे पिन, त्याला पिवळी वायर, आणि शेवटच्या पिनला लाल वायर जोडू. येथे आपल्याला फिमेल- मेल जंपर वायर पाहिजे.  पोटेन्शिओमीटरच्या पिनमधे वायरीचे फिमेल कनेक्टर बसेल, आणि ब्रेडबोर्ड वर मेल   कनेक्टर. 

  पोटेन्शिओमीटरची लाल वायर ब्रेडबोर्डच्या  पॉजिटिव्ह लेन मध्ये, आणि काळी वायर दुसऱ्या लेन मध्ये जोडावी. पिवळी वायर ब्रेड बोर्डच्या एखाद्या रिकाम्या ओळीत बसवावी, त्याच ओळीत एक मेल-मेल जंपर वायर जोडून त्याचे दुसरे टोक आर्डूइनो उनोच्या बोर्ड वर डिजिटल पिन क्रमांक 9 शी जोडावे.

कनेक्शन जोडून झाल्यानंतर आर्डूइनो उनोच्या बोर्डला यूएसबी केबल ने कॉम्प्युटरशी जोडून घ्यावे. आणि आर्डूइनोचे प्रोग्रामिंग चे सॉफ्टवेअर उघडावे. या प्रयोगासाठी आपण जो प्रोग्राम वापरणार आहोत तो या ठिकाणी मिळेल.

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.