Search Code

પાઠ ૯૨: પોટેન્શિયોમીટર વડે દરેકને નિયંત્રિત કરતા બહુવિધ સર્વો | આર્ડુઇનો સ્ટેપ બાય સ્ટેપ કોર્સ

પાઠ ૯૨: પોટેન્શિયોમીટર વડે દરેકને નિયંત્રિત કરતા બહુવિધ સર્વો | આર્ડુઇનો સ્ટેપ બાય સ્ટેપ કોર્સ

આ પ્રોજેક્ટમાં, તમે Arduino Uno અને બે પોટેન્શિયોમીટરનો ઉપયોગ કરીને સ્વતંત્ર, મલ્ટિ-ચેનલ સર્વો કંટ્રોલર કેવી રીતે બનાવવું તે શીખશો. એક જ નોબને અનુસરતા એક જ સર્વોને બદલે, આ માર્ગદર્શિકા દર્શાવે છે કે દરેક સર્વોને તેનું પોતાનું સમર્પિત એનાલોગ ઇનપુટ કેવી રીતે આપવું, જેનાથી તમે બે—અને છ સુધીના—સર્વો મોટર્સને સ્વતંત્ર રીતે અને એકસાથે નિયંત્રિત કરી શકો છો. આ કોઈપણ પ્રોજેક્ટ માટે મૂળભૂત બિલ્ડિંગ બ્લોક છે જેને બહુવિધ ગતિશીલ ભાગોના ચોક્કસ, મેન્યુઅલ નિયંત્રણની જરૂર હોય છે.

sg90_servo

આ સેટઅપ અતિ બહુમુખી છે. અહીં કેટલીક વ્યવહારુ રીતો છે જેમાં તમે તેનો ઉપયોગ કરી શકો છો:

  • રોબોટિક્સ: કેમેરા ગિમ્બલના પાન અને ટિલ્ટ અથવા નાના રોબોટના બેઝ અને આર્મ સાંધાઓને નિયંત્રિત કરવું.
  • એનિમેટ્રોનિક્સ: કઠપૂતળી અથવા એનિમેટ્રોનિક પાત્રના માથા અને આંખોને સ્વતંત્ર રીતે નિયંત્રિત કરીને જીવંત હિલચાલ બનાવવી.
  • મોડેલ કંટ્રોલ: RC વાહનો અથવા મોડેલ એરક્રાફ્ટ માટે કસ્ટમ કંટ્રોલર બનાવવું જેથી ફ્લેપ્સ અને એલિરોન્સને ચોક્કસ રીતે સમાયોજિત કરી શકાય.
  • ઓટોમેશન: સોલર ટ્રેકર અથવા મલ્ટિ-એક્સિસ પોઝિશનિંગ જિગ માટે મેન્યુઅલ ઓવરરાઇડ સ્ટેશન બનાવવું.

જરૂરી હાર્ડવેર

  • Arduino Uno (અથવા કોઈપણ સુસંગત બોર્ડ)
  • 2x સર્વો મોટર્સ (અહીં સ્ટાન્ડર્ડ 180-ડિગ્રી સર્વોનો ઉપયોગ થાય છે)
  • 2x પોટેન્શિયોમીટર (10kΩ એ સામાન્ય પસંદગી છે)
  • બ્રેડબોર્ડ અને જમ્પર વાયર
  • બાહ્ય 5V પાવર સપ્લાય (બહુવિધ સર્વો માટે ભલામણ કરવામાં આવે છે)

 

વાયરિંગ માર્ગદર્શિકા

આ પ્રોજેક્ટને સિંગલ-સર્વો સેટઅપ કરતાં થોડું વધારે વાયરિંગની જરૂર છે, મુખ્યત્વે કારણ કે તમારે બહુવિધ ઘટકોમાં પાવર અને ગ્રાઉન્ડ વિતરિત કરવાની જરૂર છે. મુખ્ય વાત એ છે કે સામાન્ય 5V અને GND બસ બનાવવા માટે બ્રેડબોર્ડના પાવર રેલ્સનો ઉપયોગ કરવો. આ બિલ્ડ માટે વાયરિંગ ડાયાગ્રામ આવશ્યક છે.

Two_or_more_Servo_pot_bb

ચાલો કનેક્શન્સને સમજીએ, જેમ વિડિયોમાં સમજાવ્યું છે (વિડિયોમાં 02:23 પર). પ્રથમ, તમારા પાવર રેલ્સ સેટ કરો: Arduino ના 5V પિનને બ્રેડબોર્ડના પોઝિટિવ રેલ સાથે અને GND પિનને નેગેટિવ રેલ સાથે જોડો. આ તમને તમારા બધા ઘટકો માટે પાવરની સરળ ઍક્સેસ આપે છે.

પોટેન્શિયોમીટર: દરેક પોટેન્શિયોમીટર વોલ્ટેજ ડિવાઇડર તરીકે કાર્ય કરે છે. દરેક પોટનો જમણો પિન 5V રેલ સાથે અને ડાબો પિન GND રેલ સાથે જોડો. મધ્યમ પિન "વાઇપર" છે અને ચલ વોલ્ટેજ પ્રદાન કરે છે. પ્રથમ પોટેન્શિયોમીટરનો મધ્યમ પિન એનાલોગ ઇનપુટ A0 સાથે અને બીજાનો મધ્યમ પિન A1 સાથે જોડો (વિડિયોમાં 03:22 પર).

સર્વો મોટર્સ: દરેક સર્વોમાં ત્રણ વાયર હોય છે. ઘેરા રંગનો વાયર (સામાન્ય રીતે કાળો અથવા ભૂરો) GND રેલ સાથે જોડો. મધ્યમ વાયર (સામાન્ય રીતે લાલ) 5V રેલ સાથે જોડો. છેલ્લે, સિગ્નલ વાયર (સામાન્ય રીતે નારંગી અથવા પીળો) Arduino પર PWM-સક્ષમ પિન સાથે જોડો. પ્રથમ સર્વોનો સિગ્નલ વાયર પિન 3 પર જાય છે, અને બીજા સર્વોનો સિગ્નલ વાયર પિન 5 પર જાય છે (વિડિયોમાં 04:01 પર). યાદ રાખો, સર્વો નિયંત્રણ માટે તમારે PWM-સક્ષમ પિન (Uno પર ટિલ્ડ "~" સાથે ચિહ્નિત) નો ઉપયોગ કરવો આવશ્યક છે.

કોડ સમજૂતી

કોડ Arduino IDE ના સ્ટાન્ડર્ડ "Knob" ઉદાહરણ પર આધારિત છે પરંતુ બે સર્વોને સંભાળવા માટે સંશોધિત છે. તર્ક સરળ છે: પોટેન્શિયોમીટરમાંથી એનાલોગ મૂલ્ય વાંચો, તેને કોણમાં મેપ કરો, અને સર્વોને તે કોણ પર ખસેડવાનો આદેશ આપો. કોડની ટોચ પરનો રૂપરેખાંકન વિભાગ છે જ્યાં તમે તમારા બધા ગોઠવણો કરશો.

અહીં વપરાશકર્તા-રૂપરેખાંકિત વિભાગ છે જે પિન વ્યાખ્યાયિત કરે છે અને સર્વો ઑબ્જેક્ટ્સ બનાવે છે:


#include <Servo.h>

//**** સર્વો 1 સેટિંગ્સ
Servo servo1; 
const int servo1PotPin = A0;
const int servo1Pin = 3;// PWM સક્ષમ પિનનો ઉપયોગ કરવો આવશ્યક છે
int servo1Value;
//**** સર્વો 1 સેટિંગ્સ સમાપ્ત

//**** સર્વો 2 સેટિંગ્સ
Servo servo2; 
const int servo2PotPin = A1;
const int servo2Pin = 5;// PWM સક્ષમ પિનનો ઉપયોગ કરવો આવશ્યક છે
int servo2Value;
//**** સર્વો 1 સેટિંગ્સ સમાપ્ત

આ રૂપરેખાંકનનો મુખ્ય ભાગ છે. ત્રીજો સર્વો ઉમેરવા માટે, તમે "સર્વો 2 સેટિંગ્સ" બ્લોકની નકલ કરશો, બધા "2" ને "3" માં બદલશો, નવો એનાલોગ પિન (દા.ત., A2) અને નવો PWM પિન (દા.ત., 9) સોંપશો. Servo ક્લાસ Arduino IDE માં બિલ્ટ-ઇન છે, તેથી કોઈ વધારાની લાઇબ્રેરીની જરૂર નથી.

setup() ફંક્શનમાં, servo.attach(pin) આદેશ Arduino ને જણાવે છે કે દરેક સર્વોના સિગ્નલ વાયર સાથે કયો પિન જોડાયેલ છે. તમે ઉપયોગ કરી રહ્યાં છો તે દરેક સર્વો માટે તમારી પાસે એક લાઇન હોવી આવશ્યક છે.


void setup() {
  //Robojax.com બહુવિધ સર્વો
  servo1.attach(servo1Pin); 
  servo2.attach(servo2Pin);   
}

loop() માં, કોડ પોટેન્શિયોમીટર મૂલ્ય વાંચે છે, તેને 0-180 ડિગ્રી શ્રેણીમાં મેપ કરે છે, અને તે કોણ સર્વોને લખે છે. અંતે delay(5) એ ટ્યુનિંગ પરિમાણ છે. વિડિયોમાં દર્શાવ્યા મુજબ, આ મૂલ્યને 15 થી ઘટાડીને 5 મિલિસેકન્ડ કરવાથી સર્વોની હિલચાલ વધુ સરળ બને છે અને કંપન દૂર થાય છે (વિડિયોમાં 12:00 પર).

લાઇવ પ્રોજેક્ટ પ્રદર્શન

એકવાર તમે સર્કિટ વાયર કરી લો અને કોડ અપલોડ કરી લો, પ્રદર્શન તાત્કાલિક છે. જ્યારે તમે Arduino ને પાવર આપો છો, ત્યારે દરેક સર્વો તેના અનુરૂપ પોટેન્શિયોમીટરના વર્તમાન સેટિંગ દ્વારા નિર્ધારિત સ્થિતિ પર ખસેડશે. જેમ તમે નોબ ફેરવો છો, તેમ તેનો સર્વો સરળતાથી હિલચાલને અનુસરશે. વિડિયો દર્શાવે છે કે બે સર્વો સંપૂર્ણપણે સ્વતંત્ર રીતે કાર્ય કરે છે, જે જટિલ, એકસાથે હિલચાલને મંજૂરી આપે છે. જો તમને કોઈ ઝટકો અથવા કંપન દેખાય, તો લૂપમાં delay() મૂલ્યને સમાયોજિત કરવું એ પ્રથમ પ્રયાસ કરવાની વસ્તુ છે.

પ્રકરણો

  • [00:00] પરિચય અને પ્રોજેક્ટ વિહંગાવલોકન
  • [00:56] સર્વો મોટર્સને સમજવું
  • [02:23] બે સર્વો અને પોટેન્શિયોમીટર્સ માટે વાયરિંગ ડાયાગ્રામ
  • [04:15] વિગતવાર વાયરિંગ સમજૂતી
  • [06:49] કોડ સમજૂતી: રૂપરેખાંકન અને સેટઅપ
  • [09:15] કોડ સમજૂતી: નિયંત્રણ લોજિક અને મેપિંગ
  • [11:15] લાઇવ પ્રદર્શન અને ટ્યુનિંગ

Images

Multiple servo, one pot: Main setup
Multiple Servo one pot.: Main setup
Multiple servo, one pot: Main setup, top view
Multiple Servo one pot.: Main setup top view
Multiple servo one-pot: Creating extra 5V from an Arduino on a breadboard
Multiple Servo one pot.: Creating extra 5V from Arduino on breadboard
SG90 Mini Servo Motor
SG90 Mini Servo Motor
Two_or_more_Servo_pot_bb
Two_or_more_Servo_pot_bb
sg90_servo
sg90_servo
888-Lesson 92: Controlling Multiple servo motors
Language: C++
/*
 * Control two or more servo motors 
 * using potentiometers.
 * Modified by Ahmad Shamshiri on Oct 17, 2019 at 20:13
 * in Ajax, Ontario, Canada . www.Robojax.com
 * This code on robojax https://robojax.com/RJT766
 *  
 * Original code from Arduino IDE: File->Examples->Servo->knob
 *  
 Controlling a servo position using a potentiometer (variable resistor)
 by Michal Rinott <http://people.interaction-ivrea.it/m.rinott>

 modified on 8 Nov 2013
 by Scott Fitzgerald
 http://www.arduino.cc/en/Tutorial/Knob


 * Get this code and other Arduino codes from Robojax.com



 *  * This code is "AS IS" without warranty or liability. Free to be used as long as you keep this note intact.* 
 * This code has been download from Robojax.com
    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation, either version 3 of the License, or
    (at your option) any later version.

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with this program.  If not, see <https://www.gnu.org/licenses/>.
 */
#include <Servo.h>

//**** servo 1 settings
Servo servo1; 
const int servo1PotPin =A0;
const int servo1Pin = 3;// Must use PWM enabled pin
int servo1Value;
//**** servo 1 settings END

//**** servo 2 settings
Servo servo2; 
const int servo2PotPin =A1;
const int servo2Pin = 5;// Must use PWM enabled pin
int servo2Value;
//**** servo 1 settings END

void setup() {
  //Robojax.com multiple servo
  servo1.attach(servo1Pin); 
  servo2.attach(servo2Pin);   
}

void loop() {
  //Robojax.com multiple servo
  servo1Value = analogRead(servo1PotPin); 
  servo1Value = map(servo1Value, 0, 1023, 0, 180);
  servo1.write(servo1Value);

  servo2Value = analogRead(servo2PotPin); 
  servo2Value = map(servo2Value, 0, 1023, 0, 180);
  servo2.write(servo2Value);
  
  delay(5);
 //Robojax.com multiple servo  
}// loop end

Resources & references

No resources yet.

Files📁

Other files