ትምህርት 18/31፡ ሰርቮ ሞተርን ከአርዱኖ ጋር መጠቀም የሱንፋውንደር አርዱኖ ኪት
ሰርቮ ሞተሮች በብዙ የሮቦቲክስ እና የርቀት መቆጣጠሪያ ፕሮጀክቶች ውስጥ ዋና ሰራተኞች ናቸው፣ ለሁሉም ነገር ከመሪ ስርዓቶች እስከ ሮቦቲክ ክንዶች ድረስ ትክክለኛ የማዕዘን ቁጥጥር ይሰጣሉ። ይህ መመሪያ፣ በSunFounder Arduino Kit ኮርስ ትምህርት 18 ላይ የተመሰረተ፣ ሰርቮ ሞተርን ከአርዱኖ ጋር ስለመጠቀም መሰረታዊ ነገሮች ይመራዎታል። ሃርድዌሩን እንዴት ማገናኘት እና የሞተሩን አቀማመጥ በሁለት የተለያዩ ዘዴዎች መቆጣጠር ይማራሉ፡ ቀላል የመጥረግ እንቅስቃሴ እና በእጅ መዳፊት የሚቆጣጠር አቀማመጥ። እዚህ ያገኙት እውቀት በጣም ተግባራዊ ነው እና ለብዙ አይነት ፕሮጀክቶች ሊተገበር ይችላል፣ ከእነዚህም ውስጥ፡-
- እቃዎችን በትክክል መያዝ እና ማንቀሳቀስ የሚችል ሮቦቲክ ክንድ መገንባት።
- ለመሪነት ሰርቮ ያለው በርቀት የሚቆጣጠር መኪና ወይም ጀልባ መፍጠር።
- የፀሐይ ኃይል አሰባሰብን ከፍ ለማድረግ ፀሐይን የሚከተል የፀሐይ መከታተያ ማዘጋጀት።
- ለክትትል ወይም ለፎቶግራፍ የፓን-እና-ቲልት ካሜራ መጫኛ መገንባት።
- የሞዴል አውሮፕላን የመቆጣጠሪያ ክፍሎችን፣ እንደ መሪ ወይም አይሌሮን፣ በራስ-ሰር ማድረግ።


የሃርድዌር አጠቃላይ እይታ
ወደ ኮዱ ከመግባት በፊት፣ ሰርቮ ሞተሩን ራሱ መረዳት አስፈላጊ ነው። በቪዲዮው ላይ እንደታየው፣ ሰርቮ ሞተር እንደ መደበኛ የዲሲ ሞተር ያለማቋረጥ አይሽከረከርም። በምትኩ፣ ወደ አንድ የተወሰነ የማዕዘን አቀማመጥ፣ በተለምዶ በ0 እና 180 ዲግሪ መካከል፣ ይሽከረከራል። ይህ ትክክለኛ እንቅስቃሴ ለሚፈልጉ መተግበሪያዎች ተስማሚ ያደርገዋል። ቪዲዮው የRC መኪናን ከመምራት እስከ ሮቦቲክ ክንድ ውስብስብ መገጣጠሚያዎችን መቆጣጠር ድረስ ብዙ ምሳሌዎችን ያሳያል (በቪዲዮ 00:06)።
ሰርቮዎች በተለያዩ መጠኖች ይመጣሉ፣ አካላዊ መጠኑ እና የቶርክ ደረጃው ዋጋቸውን እና አጠቃቀማቸውን ይወስናሉ። ትንሽ ማይክሮ ሰርቮ ለቀላል ሞዴሎች ፍጹም ነው፣ ትልቅ እና የበለጠ ኃይለኛ ሰርቮ ደግሞ እንደ "በጣም ኃይለኛ ወይም ወፍራም መኪና" መምራት ላሉ ከባድ ስራዎች ያስፈልጋል (በቪዲዮ 01:59)።
አብዛኛዎቹ የትርፍ ጊዜ ማሳለፊያ ሰርቮዎች በመደበኛ ማገናኛ ውስጥ የተቀመጡ ሶስት ሽቦዎች አሏቸው። ቪዲዮው ብልህ የንድፍ ምርጫን ያብራራል፡ መካከለኛው ሽቦ ሁልጊዜ የኃይል ሽቦ (VCC) ነው፣ በተለምዶ 5V። ይህ ማገናኛው ወደ ኋላ ከተሰካ መሳሪያውን ከተሳሳተ የፖላሪቲ ጉዳት የሚከላከል የደህንነት ባህሪ ነው (በቪዲዮ 03:27)። ሌሎቹ ሁለት ሽቦዎች ለመሬት (GND) እና ለቁጥጥር ምልክት ናቸው።
የሽቦ አገናኝ መመሪያ
ሰርቮውን ከአርዱኖዎ ጋር ማገናኘት ቀላል ነው። ቪዲዮው ስለ ግንኙነቶቹ ግልጽ ማሳያ ይሰጣል (በቪዲዮ 04:48)። በሰርቮ ማገናኛ ላይ ያሉት ሶስት ፒኖች ከአርዱኖው ጋር እንደሚከተለው ይገናኛሉ፡-
- የምልክት ሽቦ (ብዙውን ጊዜ ብርቱካናማ ወይም ቢጫ)፡ ይህን በአርዱኖው ላይ ካለ ዲጂታል PWM ፒን ጋር ያገናኙ። ምሳሌው ፒን 9 ይጠቀማል።
- የኃይል ሽቦ (ብዙውን ጊዜ ቀይ)፡ ይህን በአርዱኖው ላይ ካለው 5V ፒን ጋር ያገናኙ።
- የመሬት ሽቦ (ብዙውን ጊዜ ቡናማ ወይም ጥቁር)፡ ይህን በአርዱኖው ላይ ካሉት GND ፒኖች አንዱ ጋር ያገናኙ።
በቪዲዮው ውስጥ፣ አቅራቢው በሰርቮው ላይ ያለውን የሴት ማገናኛ ከአርዱኖው ፒን ራሶች ጋር ለማገናኘት ወንድ-ወደ-ወንድ ዱፖንት መዝለያ ሽቦዎችን ይጠቀማል (በቪዲዮ 05:23)።
ፕሮግራም 1፡ የሰርቮ ሞተር መቆጣጠር (Sweep)
ይህ የመጀመሪያ ፕሮግራም ክላሲክ "sweep" ምሳሌ ነው። ሰርቮውን በ0 እና 180 ዲግሪ መካከል ወደ ኋላ እና ወደ ፊት በማንቀሳቀስ ሙሉ የእንቅስቃሴ ክልሉን ለማሳየት የተነደፈ ነው። ይህ የሽቦ አገናኝዎ ትክክል መሆኑን ለማረጋገጥ እና ሰርቮዎን ሲሰራ ለማየት ጥሩ መንገድ ነው። ቪዲዮው ይህን ኮድ መጫን እና ሰርቮው ወደ ኋላ እና ወደ ፊት ሲጠርግ መመልከትን ያሳያል (በቪዲዮ 09:21)።
ሰርቮውን ለመቆጣጠር፣ ኮዱ በመጀመሪያ አስፈላጊዎቹን የቁጥጥር ምልክቶች የማመንጨት ሂደትን የሚያቃልለውን አብሮ የተሰራውን Servo.h ቤተ-መጻሕፍት ያካትታል። ከዚያ የሰርቮ ነገር ይፈጥራሉ እና እንደ myservo ያለ ስም ይሰጡታል። በsetup() ተግባር ውስጥ፣ ይህን ነገር ከአንድ የተወሰነ ፒን ጋር myservo.attach(9) በመጠቀም ያያይዙታል፣ ይህም የሰርቮው የምልክት ሽቦ ከፒን 9 ጋር መገናኘቱን ለአርዱኖው ይነግራል።
አስማቱ የሚከሰተው በloop() ተግባር ውስጥ ነው፣ እሱም ሰርቮውን ለማንቀሳቀስ ሁለት for loops ይጠቀማል። የመጀመሪያው loop የአቀማመጥ ተለዋዋጭ posን ከ0 ወደ 180 ይጨምራል፣ ሰርቮውን በአንድ ጊዜ በአንድ ዲግሪ ያንቀሳቅሳል። ሁለተኛው loop ተቃራኒውን ያደርጋል፣ posን ከ180 ወደ 0 ይቀንሳል። ወሳኙ ክፍል በእያንዳንዱ loop ድግግሞሽ መጨረሻ ላይ ያለው delay(15) ነው። ይህ ቆም ለሰርቮው ቀጣዩ ትዕዛዝ ከመላኩ በፊት ወደ አዲሱ አቀማመጥ በአካል ለመንቀሳቀስ በቂ ጊዜ ይሰጣል። ያለዚህ መዘግየት፣ ሰርቮው መቀጠል አይችልም እና ይቆማል ወይም ይንቀጠቀጣል (በቪዲዮ 12:31)።
ይህ ምሳሌ ለመማር ፍጹም ነው፣ ግን በእውነተኛ አፕሊኬሽን ውስጥ፣ ሰርቮውን ወደ አንድ የተወሰነ ማዕዘን ማዘጋጀት ይፈልጋሉ። በቪዲዮው ላይ እንደታየው፣ for loopsን በአንድ ትዕዛዝ እንደ myservo.write(90) በመተካት ሰርቮውን ወደ 90 ዲግሪ ለማንቀሳቀስ እና እዚያው ለማቆየት ኮዱን ማሻሻል ይችላሉ (በቪዲዮ 10:09)።
ፕሮግራም 2፡ የሰርቮ ሞተር መቆጣጠር (Knob)
ይህ ሁለተኛ ፕሮግራም የሰርቮ ቁጥጥርን አንድ እርምጃ ወደፊት ይወስዳል፣ ይህም በሰርቮው አቀማመጥ ላይ የእውነተኛ ጊዜ፣ በእጅ ቁጥጥር ለመስጠት ፖቴንሺዮሜትር (እጀታ) በማስተዋወቅ ነው። ይህ የአናሎግ ግብዓት ወደ ትክክለኛ አካላዊ እንቅስቃሴ እንዴት እንደሚተረጎም ለመረዳት በጣም ጥሩ መንገድ ነው።
ይህ ፕሮግራም በቀዳሚው ላይ በመገንባት ፖቴንሺዮሜትር ይጨምራል። ፖቴንሺዮሜትር እንደ አናሎግ የቮልቴጅ መከፋፈያ የሚሰራ ተለዋዋጭ መቋቋሚያ ነው። እጀታውን ሲያዞሩ፣ በውጤት ፒኑ ላይ ያለውን የቮልቴጅ መጠን ይለውጣል። አርዱኖው ይህን የቮልቴጅ መጠን በአናሎግ-ወደ-ዲጂታል መቀየሪያ (ADC) በአንዱ አናሎግ ፒኖቹ ላይ በማንበብ፣ ወደ 0 እና 1023 መካከል ወዳለ እሴት ይቀይረዋል።
የዚህ ፕሮግራም ቁልፍ የmap() ተግባር ነው። ይህ ተግባር ቁጥርን ከአንድ ክልል ወደ ሌላ ክልል ያስተካክላል። በዚህ ሁኔታ፣ የፖቴንሺዮሜትሩን ጥሬ እሴት (0 እስከ 1023) ለሰርቮው ተስማሚ ወደሆነ እሴት (0 እስከ 180 ዲግሪ) ለመተርጎም ይጠቅማል። ኮዱ የፖቴንሺዮሜትሩን እሴት በanalogRead(potpin) ያነባል፣ በmap(val, 0, 1023, 0, 180) በመጠቀም ያስተካክለዋል፣ ከዚያም ያንን የተስተካከለ እሴት በmyservo.write(val) ወደ ሰርቮው ይልካል። ይህ እጀታውን ወደ መሃል ማዞር ሰርቮውን በ90 ዲግሪ ላይ ያስቀምጠዋል፣ እና ወዘተ የሚል ቀጥተኛ ትስስር ይፈጥራል።
ይህ የቁጥጥር ዘዴ በጣም ሊታወቅ የሚችል እና ከቀላል የርቀት መቆጣጠሪያዎች እስከ ውስብስብ የሮቦት መቆጣጠሪያዎች ድረስ ለብዙ የሰው-ማሽን መገናኛዎች መሰረት ነው።
የቀጥታ ፕሮጀክት ማሳያ
ቪዲዮው የሁለቱም ፕሮግራሞች የቀጥታ ማሳያ ይሰጣል። ለስዊፕ ፕሮግራሙ፣ የሰርቮ ክንድ ከ0 እስከ 180 ዲግሪ እና ወደ ኋላ ሲንቀሳቀስ ማየት ይችላሉ። አቅራቢው በfor ሉፕ ውስጥ ያለውን የደረጃ መጠን (ለምሳሌ ከ1 ዲግሪ ወደ 20 ዲግሪ) እና የመዘግየት ጊዜን ማስተካከል የሰርቮውን ባህሪ እንዴት እንደሚለውጥ ያሳያል፣ እንቅስቃሴውን ፈጣን ነገር ግን ለስላሳ ያደርገዋል (በቪዲዮ 11:19)።
ለእጀታው ፕሮግራም፣ ማሳያው ፖቴንሺዮሜትሩን ማዞር የሰርቮውን አቀማመጥ በቅጽበት እንዴት እንደሚቆጣጠር ያሳያል። ይህ የእይታ ግብረመልስ በአናሎግ ግብዓት እና በአካላዊ ውጤት መካከል ያለውን ግንኙነት ለመረዳት በጣም ጥሩ ነው።
ምዕራፎች
- [00:00] የሰርቮ ሞተሮች መግቢያ
- [01:07] የሰርቮ ሞተሮች አፕሊኬሽኖች
- [02:57] የሰርቮ ሞተር አካላት
- [04:48] ሰርቮውን ከአርዱኖ ጋር ማገናኘት
- [06:06] የስዊፕ ምሳሌ ኮድን መመርመር
- [09:21] የስዊፕ ፕሮግራሙን ማሳየት
- [10:04] ብጁ የሰርቮ አንግል ማዘጋጀት
- [11:19] የስዊፕ ፍጥነት እና የደረጃ መጠን ማሻሻል
- [13:15] የሌላ ሰርቮ ሞተር ምሳሌ
/*
Lesson 18/31: Controlling servo motor (sweep)
Get this code and watch video Download and resource page https://robojax.com/RJT601
YouTube video https://www.youtube.com/watch?v=KAt1WUWpHLQ
* 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 myservo; // create Servo object to control a servo
// twelve Servo objects can be created on most boards
int pos = 0; // variable to store the servo position
void setup() {
myservo.attach(9); // attaches the servo on pin 9 to the Servo object
}
void loop() {
for (pos = 0; pos <= 180; pos += 1) { // goes from 0 degrees to 180 degrees
// in steps of 1 degree
myservo.write(pos); // tell servo to go to position in variable 'pos'
delay(15); // waits 15 ms for the servo to reach the position
}
for (pos = 180; pos >= 0; pos -= 1) { // goes from 180 degrees to 0 degrees
myservo.write(pos); // tell servo to go to position in variable 'pos'
delay(15); // waits 15 ms for the servo to reach the position
}
}
/*
Lesson 18/31: Controlling servo motor (knob)
Get this code and watch video Download and resource page https://robojax.com/RJT601
YouTube video https://www.youtube.com/watch?v=KAt1WUWpHLQ
* 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 myservo; // create servo object to control a servo
int potpin = 0; // analog pin used to connect the potentiometer
int val; // variable to read the value from the analog pin
void setup() {
myservo.attach(9); // attaches the servo on pin 9 to the servo object
}
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
delay(15); // waits for the servo to get there
}
Common Course Links
Common Course Files
እንደሚያስፈልግዎት ይችላል
-
አማዞንSunFounder Arduino Learning Kit on AliExpresss.click.aliexpress.com
-
አማዞን
-
አማዞን
-
አማዞን
ምንጮች እና ምንጮች
-
ሰነዶችDocumentation for SunFounder 3 in 1 IoT/Smart Car/Learning Kitdocs.sunfounder.com
-
ውስጥPurchase SunFounder's 3-in-1 Smart car learning kitsunfounder.com
ፋይሎች📁
Arduino ቤተ መዝገቦች (zip)
-
SunFounder's 3-in-1 Smart Car learning kit source code
3in1-kit-main-v2.zip12.80 MB