Search Code

ትምህርት 86፡ የሰርቮ ሞተርን አቀማመጥ በፖቴንሺዮሜትር መቆጣጠር

ትምህርት 86፡ የሰርቮ ሞተርን አቀማመጥ በፖቴንሺዮሜትር መቆጣጠር

ቀላል የሆነ እንዝርት ማዞር እና የሜካኒካል ክንድ እያንዳንዱን እንቅስቃሴዎን በትክክል ሲከተል ማየት ያስቡ። ይህ የፖቴንሺዮሜትር እና የሰርቮ ሞተርን የማጣመር አስማት ነው። ይህ ፕሮጀክት፣ የሮቦጃክስ የአርዱኖ ደረጃ በደረጃ ኮርስ አካል፣ በኤሌክትሮኒክስ ውስጥ መሠረታዊ እና እጅግ ጠቃሚ የሆነ ጽንሰ-ሐሳብን ያሳያል፡- የአናሎግ ግብዓትን ወደ ትክክለኛ አካላዊ እንቅስቃሴ መቀየር። ከፖቴንሺዮሜትር ተለዋዋጭ ቮልቴጅ እንዴት ማንበብ፣ ያንን እሴት ወደ ማዕዘኖች ክልል እንዴት ካርታ ማድረግ እና የሰርቮ ሞተርን ወደዚያ ትክክለኛ ቦታ እንዲሽከረከር ማዘዝ ይማራሉ። ይህ በእጅ ቁጥጥር እና አውቶሜሽን የሚገናኙበት ሊታወቅ የሚችል እና በይነተገናኝ ፕሮጀክቶችን ለመገንባት መግቢያዎ ነው።

የዚህ ክህሎት አፕሊኬሽኖች ሰፊ እና ተግባራዊ ናቸው። እነዚህን ለማነሳሳት ጥቂት ሀሳቦች እነሆ፡-

  • የሮቦቲክ ክንድ ቁጥጥር፡- ለትክክለኛ የመልቀም እና የማስቀመጥ ስራዎች የሮቦቲክ ክንድ እያንዳንዱን መገጣጠሚያ በእጅ ለማስቀመጥ ፖቴንሺዮሜትር ይጠቀሙ።
  • የካሜራ ፓን እና ቲልት ሲስተም፡- ለጊዜ-ላፕስ ወይም ለክትትል በርቀት የሚቆጣጠር የካሜራ መቀመጫ ይገንቡ፣ በመደወያ ማዞር በተቀላጠፈ ሁኔታ ፓን እና ቲልት ያደርጋል።
  • የአናሎግ መለኪያ ቅጂ፡- በሴንሰር መረጃ ላይ ተመስርቶ የሚንቀሳቀስ አካላዊ የዳሽቦርድ መለኪያ (እንደ የፍጥነት መለኪያ ወይም የሙቀት መደወያ) ይፍጠሩ፣ ፖቴንሺዮሜትሩ እንደ በእጅ መቆጣጠሪያ ወይም የመለኪያ መሳሪያ ሆኖ ያገለግላል።
  • በይነተገናኝ የጥበብ ጭነቶች፡- ለተመልካች ግብዓት ምላሽ የሚሰጡ ኪነቲክ ቅርጻ ቅርጾችን ይፍጠሩ፣ መደወያ ማዞር የሚንቀሳቀሱ ክፍሎችን ቦታ ይቀይራል።
  • የሞዴል ተሽከርካሪ መሪ፡- የሞዴል መኪና ወይም ጀልባ የመሪ አንግል በርቀት ይቆጣጠሩ፣ ከዲጂታል አዝራሮች የበለጠ ሊታወቅ የሚችል እና የአናሎግ ስሜት ይሰጣል።

ይህ መመሪያ በሮቦጃክስ የቪዲዮ ትምህርት ትምህርት 86፡ የሰርቮ ሞተርን ቦታ ፖቴንሺዮሜትር በመጠቀም መቆጣጠር (በቪዲዮው በ00፡00) ላይ የተመሠረተ ነው። ከሽቦ አያያዝ መረዳት ጀምሮ ሁሉንም ነገር እንዲሰራ የሚያደርገውን ኮድ እስከማብራራት ድረስ ሙሉውን ሂደት ይመራዎታል። እንጀምር።

ሃርድዌር እና ክፍሎች

ከዚህ ፕሮጀክት ጋር ለመከታተል የሚከተሉትን ክፍሎች ያስፈልግዎታል፡-

  • የአርዱኖ ቦርድ (ለምሳሌ፣ Uno፣ Nano)
  • መደበኛ የሰርቮ ሞተር (ለምሳሌ፣ SG90 ወይም MG996R)
  • ፖቴንሺዮሜትር (ተለዋዋጭ ተከላካይ፣ በተለምዶ 10kΩ)
  • መዝለያ ሽቦዎች
  • ብሬድቦርድ (አማራጭ፣ ለቀላል ግንኙነቶች)

የሽቦ አያያዝን መረዳት

የዚህ ፕሮጀክት ሽቦ አያያዝ ቀላል ነው። ቁልፉ ለሁለቱም ሰርቮ እና ፖቴንሺዮሜትር ትክክለኛ የኃይል እና የምልክት ግንኙነቶችን መስጠት ነው። ሰርቮው ብዙ ኃይል የሚፈልግ መሳሪያ ነው፣ ስለዚህ ኃይሉን በቀጥታ ከአርዱኖው 5V ፒን ያገኛል። ፖቴንሺዮሜትሩ እንደ ቮልቴጅ ከፋፋይ ሆኖ ይሰራል፣ እና ቦታውን ለመወሰን በዊፐር (መካከለኛው ፒን) ላይ ያለውን ቮልቴጅ እናነባለን። (በቪዲዮው በ01፡05)

ይህ ፕሮጀክት የሚጠቀምበት አንድ ብልህ ዘዴ ፖቴንሺዮሜትሩን ለማብራት በዲጂታል ፒን ላይ ተጨማሪ 5V ምንጭ መፍጠር ነው፣ ምክንያቱም አንዳንድ የአርዱኖ ቦርዶች አንድ የተወሰነ 5V ፒን ብቻ አላቸው። ይህ በኮዱ ውስጥ ዲጂታል ፒን (ፒን 8) ወደ HIGH በማዘጋጀት ይከናወናል፣ ይህም 5V ያወጣል። (በቪዲዮው በ00፡39)

በቪዲዮው ውስጥ የተጠቀሰው የሽቦ አያያዝ ሥዕላዊ መግለጫ ይህ ነው፡-

Arduino wiring or servo motor with pot
የአርዱኖ ሽቦ ወይም የሰርቮ ሞተር ከፖቴንሺዮሜትር ጋር

ግንኙነቶቹን እንከፋፍላቸው፡-

  • የሰርቮ ሞተር፡-
    • ኃይል (ቀይ ሽቦ) → የአርዱኖ 5V ፒን
    • መሬት (ቡናማ/ጥቁር ሽቦ) → የአርዱኖ GND ፒን
    • ምልክት (ብርቱካናማ/ቢጫ ሽቦ) → የአርዱኖ ፒን 3 (PWM አቅም ያለው ፒን)
  • ፖቴንሺዮሜትር፡-
    • ግራ ፒን → የአርዱኖ GND ፒን
    • መካከለኛ ፒን (ዊፐር) → የአርዱኖ አናሎግ ፒን A0
    • ቀኝ ፒን → የአርዱኖ ፒን 8 (በኮዱ ውስጥ እንደ VCC2 ይገለጻል)

የኮድ ማብራሪያ

የዚህ ፕሮጀክት ኮድ በሚያስደንቅ ሁኔታ ቀላል ነው። ፖቴንሺዮሜትሩን ለማንበብ እና ሰርቮውን ለመቆጣጠር ጥቂት ቁልፍ የአርዱኖ ተግባራትን ይጠቀማል። ለራስዎ ፕሮጀክቶች ሊያስተካክሏቸው በሚችሏቸው በተጠቃሚ ሊዋቀሩ በሚችሉ ክፍሎች ላይ እናተኩር። (በቪዲዮው በ03፡00)

በስኬቹ አናት ላይ ፒኖቹን ይገልጻሉ እና የሰርቮ ነገሩን ይፈጥራሉ። እነዚህ በሽቦ አያያዝዎ ላይ ተመስርተው የሚቀይሯቸው ዋና ተለዋዋጮች ናቸው፡-

#include <Servo.h>

Servo myservo;  // ሰርቮውን ለመቆጣጠር የሰርቮ ነገር ይፍጠሩ

int potpin = A0;  // ፖቴንሺዮሜትሩን ለማገናኘት የሚያገለግል አናሎግ ፒን
int servoPin = 3; // ለሰርቮ ዲጂታል ፒን (ከPWM ጋር) ይግለጹ። ፒን 3፣ 5፣ 6፣ 9፣ 10፣ 11 ብቻ መጠቀም ይቻላል
int VCC2 = 8;// ለፖቴንሺዮሜትር ተጨማሪ VCC ይግለጹ
int val;    // ከአናሎግ ፒን የሚገኘውን እሴት ለማንበብ ተለዋዋጭ

እያንዳንዱ ክፍል የሚሰራው ይህ ነው፡-

  • Servo myservo;፡- ይህ መስመር የተወሰነውን የሰርቮ ሞተር ለመቆጣጠር የምንጠቀምበትን myservo የተባለ ነገር ይፈጥራል። እንደገና ሊሰይሙት ይችላሉ፣ ግን በኋላ በኮዱ ውስጥ ተመሳሳይ ስም መጠቀም አለብዎት።
  • int potpin = A0;፡- ይህ የፖቴንሺዮሜትሩ ዊፐር የተገናኘበትን የአናሎግ ፒን ይገልጻል። ሽቦውን ወደ ሌላ የአናሎግ ፒን ካዛወሩት፣ ይህንን ቁጥር ማዘመን አለብዎት።
  • int servoPin = 3;፡- ይህ ለሰርቮው የምልክት ሽቦ ዲጂታል ፒኑን ያዘጋጃል። PWM አቅም ያለው ፒን (ብዙውን ጊዜ በቦርዱ ላይ በ'~' ምልክት የተደረገባቸው) መጠቀም ወሳኝ ነው። አስተያየቱ ለአብዛኛዎቹ አርዱኖዎች ትክክለኛ ፒኖችን ይዘረዝራል።
  • int VCC2 = 8;፡- ይህ ለፖቴንሺዮሜትሩ እንደ ሁለተኛ ደረጃ 5V ምንጭ የምንጠቀምበት ፒን ነው። ብዙ 5V ፒኖች ያሉት ቦርድ ካለዎት፣ በቀጥታ ማገናኘት እና ይህንን የኮድ ክፍል ማስወገድ ይችላሉ።

setup() ተግባር ውስጥ፣ ኮዱ ሰርቮውን ያስጀምራል እና ተጨማሪ የኃይል ፒን ያዘጋጃል። የmyservo.attach(servoPin) ተግባር አስፈላጊ ነው ምክንያቱም የትኛው ፒን ከሰርቮው የሲግናል ሽቦ ጋር እንደተገናኘ ለአርዱኖ ይነግራልና።

void setup() {
  Serial.begin(9600);          //  ሰሪያል አዘጋጅ
  myservo.attach(servoPin);  // ሰርቮውን በፒን 3 ላይ ከሰርቮ ነገሩ ጋር ያያይዛል

  pinMode(VCC2, OUTPUT);// ፒን 8 እንደ ውጤት አዘጋጅ
  digitalWrite(VCC2, HIGH);// ፒን 8 ከፍተኛ አድርግ ስለዚህ እንደ 5V ፒን ይሠራል
}

ዋናው አመክንዮ በloop() ተግባር ውስጥ ነው። የፖቴንሺዮሜትሩን እሴት ያነባል፣ ወደ አንግል ይቀይረዋል፣ እና ሰርቮው እንዲንቀሳቀስ ያዛል። እዚህ ላይ ሁለቱ ወሳኝ ተግባራት analogRead() እና map() ናቸው። (በቪዲዮው በ04:27)

void loop() {
  val = analogRead(potpin);            // የፖቴንሺዮሜትሩን እሴት ያነባል (እሴቱ በ0 እና 1023 መካከል)
  val = map(val, 0, 1023, 0, 180);     // ከሰርቮው ጋር ለመጠቀም ይለካዋል (እሴቱ በ0 እና 180 መካከል)
  myservo.write(val);                  // ሰርቮውን በተሰላው እሴት መሠረት ያስቀምጣል
  Serial.print(val);
  Serial.println();
  delay(50);                           // ሰርቮው እዚያ እስኪደርስ ይጠብቃል
}

እንዴት እንደሚሠራ እነሆ፡

  • analogRead(potpin): ይህ ተግባር ከፖቴንሺዮሜትሩ መቆጣጠሪያ የሚመጣውን ቮልቴጅ ያነባል እና በ0 (0V) እና 1023 (5V) መካከል ያለ እሴት ይመልሳል።
  • map(val, 0, 1023, 0, 180): ይህ የፕሮጀክቱ ቁልፍ ነው። ከፖቴንሺዮሜትሩ የተገኘውን ጥሬ እሴት (0 እስከ 1023) ወስዶ በተመጣጣኝ ሁኔታ ወደ ሰርቮ አንግል (0 እስከ 180 ዲግሪ) ይቀይረዋል። ለምሳሌ፣ ፖቴንሺዮሜትሩ 511 (ግማሽ ያህል) ቢያነብ፣ የmap() ተግባር 90 ይመልሳል፣ ሰርቮውን ወደ መሃል ቦታው ያንቀሳቅሰዋል።
  • myservo.write(val): ይህ ተግባር የተሰላውን አንግል (አሁን በval ውስጥ የተከማቸ) ወስዶ ሰርቮው ወደዚያ ቦታ እንዲሽከረከር ይነግረዋል።
  • delay(50): ይህ በእ প্রতিটি loop መጨረሻ ላይ ትንሽ ቆም ያደርጋል። የማዘመን ፍጥነቱን ይቆጣጠራል። ትልቅ መዘግየት (እንደ 200ms) ሰርቮው በደረጃ እንዲንቀሳቀስ ያደርጋል፣ ትንሽ መዘግየት (እንደ 50ms) ደግሞ እንቅስቃሴውን በጣም ለስላሳ ያደርገዋል። ምላሽ ሰጪነቱን ለመቀየር ይህንን ማስተካከል ይችላሉ። (በቪዲዮው በ07:26)

የቀጥታ ፕሮጀክት ማሳያ

በቪዲዮው ውስጥ፣ ፕሮጀክቱ በሚሠራበት ጊዜ ማየት ይችላሉ። የፖቴንሺዮሜትሩ እጀታ ሲዞር፣ የሰርቮ ሞተሩ ክንድ ቦታውን በተመጣጣኝ ሁኔታ ይከተላል። ሰሪያል መቆጣጠሪያው የአሁኑን አንግል ያትማል፣ ይህም ካርታው በትክክል እየሠራ መሆኑን ያረጋግጣል። ፖቴንሺዮሜትሩ በዝቅተኛ ቦታው ላይ ሲሆን፣ ሰርቮው በ0 ዲግሪ ላይ ነው። እጀታውን ወደ ከፍተኛው ሲዞሩ፣ ሰርቮው በተቀላጠፈ ሁኔታ ወደ 180 ዲግሪ ይሽከረከራል። (በቪዲዮው በ06:33)

ይህ የእውነተኛ ጊዜ ግብረመልስ ዑደት የአናሎግ ዳሳሽ ከዲጂታል አንቀሳቃሽ ጋር እንከን የለሽ ውህደትን ያሳያል፣ ምላሽ ሰጪ እና ሊታወቅ የሚችል የቁጥጥር ሥርዓት ይፈጥራል።

ምዕራፎች

  • [00:00] መግቢያ እና የፕሮጀክት አጠቃላይ እይታ
  • [01:05] ስዕላዊ መግለጫ እና የሽቦ አያያዥ ዲያግራም
  • [02:07] የአካላዊ ሽቦ ማሳያ
  • [03:00] የኮድ ማብራሪያ
  • [06:33] የቀጥታ ማሳያ እና ሙከራ
  • [07:26] የሰርቮ ምላሽ ፍጥነትን ማስተካከል

ምስሎች

Arduino wiring or servo motor with pot
Arduino wiring or servo motor with pot
SG90_servo_motor-1
SG90_servo_motor-1
SG90_servo_motor-0
SG90_servo_motor-0
892-Lesson 86: Controlling a servo position using a potentiometer (variable resistor)
ቋንቋ: C++
/*
 * Lesson 88: Controlling Servo motor a with Potentiometer
 * 📚⬇️ Download and resource page https://robojax.com/RJT763
 watch full video tutroial: https://www.youtube.com/watch?v=ntRW77mNFFk
 
 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

 Update by Ahmad Shamshiri on Jan 01, 2019  in Ajax, Ontario, Canada


*/

#include <Servo.h>

Servo myservo;  // create servo object to control a servo

int potpin = A0;  // analog pin used to connect the potentiometer
int servoPin = 3; // define a digital pin (with PWM) for servo. Can use only pin 3, 5, 6,9, 10, 11
int VCC2 = 8;// define extra VCC for potentiometer
int val;    // variable to read the value from the analog pin

void setup() {
  //
  Serial.begin(9600);          //  setup serial
  myservo.attach(servoPin);  // attaches the servo on pin 3 to the servo object

  pinMode(VCC2, OUTPUT);// set pin 8 as output
  digitalWrite(VCC2, HIGH);// set pin 8 HIGH so it acts as 5V pin
}

void loop() {
  
  val = analogRead(potpin);            // reads the value of the potentiometer (value between 0 and 1023)
  val = map(val, 0, 1023, 0, 180);     // scale it to use it with the servo (value between 0 and 180)
  myservo.write(val);                  // sets the servo position according to the scaled value
  Serial.print(val);
  Serial.println();
  delay(50);                           // waits for the servo to get there
}
 

እንደሚያስፈልግዎት ይችላል

ምንጮች እና ምንጮች

ፋይሎች📁

ሌላ ፋይሎች