Серво моторды басқару: Толығымен ұсыныстар
Негізгі оқылымдар:
Серво моторды басқару анықталады: Серво моторды басқару - электрондык сигналдар арқылы мотордың орнын, жылдамдығын және үдеуін дәл басқаруға мүмкіндік береді.
Кері байланыс механизмі: Кері байланыс жүйесі, көбінесе потенциометр немесе кодировщик, мотордың шығысының басқару саналына дәл сәйкес болатын түрде етеді.
ШИМ сигналы: ШИМ (пульс-ширина модуляция) серводың орнын электр пульстарының узындығын өзгерту арқылы белгілеуге маңызды.
Arduino және серво моторлар: Arduino платасын қолдану - минималды техникалық құрылғымен серво моторларды программалау және басқарудың популярлық мен эффективті ықтималдығы.
Серво моторлардың қолданылуы: Серво моторлар - роботтастыру және автоматтық жүйелер сияқты дәл орнын басқару керек проекттерде маңызды.
Серво мотор - айналу үшін жоғары дәлдікке және тәуелсіздікке арналған мотор. Бұл мотор типті ДК мотордан өз орнын сақтау қабілетімен, әрі үнемі айналуымен айырмаланады. Бұл өзге қасиеттер серво моторларды роботика, автоматтастыру және хобби проекттері үшін ідеалды түрде жасайды.
Бұл мақала серво моторды басқарудың қалай ишлейтінін, серво моторлардың әртүрлі түрлерін, және әртүрлі басқару ықтималдылықтарын және құрылғыларын түсіндіреді. Мақалада серво моторлардың қолданылуы және проекттерінің мысалдары да берілген.
Серво мотор не?
Серво мотор - бұл орны (бұрыш), жылдамдығы және үдеуін дәл басқара алатын актуатор. Типтік серво мотор үш негізгі компоненттен тұрады: ДК мотор, басқару схемасы және кері байланыс құрылғысы.
ДК мотор серводы қуаттастырып, айналу жылдамдығын азайтып, шығыс валындағы моментты арттыратын жүйелерге қосылады.

Шығыс валы - серводың айналып, жүктерді қозғау өзінің бөлігі.
Басқару схемасы - сыртқы басқарушыдан келген саналдарды қабылдау және өңдеуге жоғары. Бұл саналдар серводың қандай орнына, жылдамдығына немесе бағытына қозғалуын айтады. Басқару схемасы ДК моторға қуат қосып, оны қозғайды.
Кері байланыс құрылғысы - көбінесе потенциометр немесе кодировщик, шығыс валының ағымдағы орнын өлшейді.

Кері байланыс құрылғысы орны туралы деректерді басқару схемасына қайтаратын, содан кейін басқару схемасы ДК моторға қуат қосып, ақырғы орнын саналдан алған орнына сәйкестендіреді.
Басқару схемасы мен кері байланыс құрылғысының арасындағы кері байланыс циклі серводың өзінің орнында дәл қозғалуын және сақтауын қамтамасыз етеді.
Серво моторды қалай басқаруға болады?
Серво моторларды басқару үшін серводың сигнал сызығына ШИМ (пульс-ширина модуляция) сигналы жіберіледі. ШИМ - бұл сигналды тез үнемі-туынды қосу арқылы әртүрлі ұзындықтағы пульстар жасау ықтималдылығы. Пульстардың ұзындығы шығыс валының орнын анықтайды.
Мисалы, егер сіз 1,5 миллисекунд (мс) пульс ұзындығына ШИМ сигналы жіберсеңіз, серво ортаншы орналасады (90 градус).

Егер сіз 1 мс пульс ұзындығына ШИМ сигналы жіберсеңіз, серво минималды орналасады (0 градус). Егер сіз 2 мс пульс ұзындығына ШИМ сигналы жіберсеңіз, серво максималды орналасады (180 градус).
ШИМ сигналының дауысқауы 50 Гц, бұл 20 мс сайын қайталанады. Пульс ұзындығы бұл уақыт ішінде 1 мс-ден 2 мс-ге дейін өзгеруі мүмкін.
Серво моторларға ШИМ сигналдарын жасау және жіберу үшін бірнеше ықтималдылықтар бар. Ең кең таралған ықтималдылықтар:
Arduino платасы немесе басқа микроконтроллерлер қолдану
Потенциометр немесе басқа аналогты датчик қолдану
Жойстик немесе басқа цифирлік енгізу құрылғысы қолдану
Арналған серво контроллері немесе драйвер қолдану
Келесі бөлімдерде біз бұл ықтималдылықтарды тереңірек зерттеңіз және олар қалай ишлейтінін көрсететін бірнеше мысалдарды көрсетеміз.
Arduino арқылы серво моторды басқару
Arduino - серво моторларды басқару үшін ең популярлық платформалардың бірі. Arduino платалары серволарға сигналдар жіберу үшін ШИМ шығыстарына қол жетімді. Arduino-да серво басқару үшін жазылуы қолайлы библиотекасы бар.
Arduino арқылы серво моторды басқару үшін сізге қажет:
Arduino плата (мысалы, Arduino UNO)
Стандартты серво мотор (мысалы, SG90)
Толқын проводтары
Хлебная плата (опционалды)
Серводан келген қызыл провод Arduino платасының 5V-ға қосылады. Серводан келген кара провод Arduino платасының GND-ға қосылады. Серводан келген ақ провод Arduino платасының 9-шы пиніне қосылады.
Arduino платасын программалау үшін сіз Arduino IDE (онлайн немесе офлайн) қолдануыңыз керек. Сіз Servo библиотекасының мысалдарынан бірін қолдануыңыз немесе өзіңіз код жазуыңыз мүмкін.
Төмендегі код серво моторды 0-ден 180 градусқа дейін орталап-орталап қозғау үшін for циклін қолданады:
#include <Servo.h> // Servo библиотекасын қосу
Servo myservo; // Servo объектін жасау
int pos = 0; // Орны үшін айнымалы
void setup() {
myservo.attach(9); // Servo объектін 9-шы пинге қосу
}
void loop() {
for (pos = 0; pos <= 180; pos += 1) { // 0-ден 180 градусқа дейін цикл
myservo.write(pos); // Орны Servo объектіне жазу
delay(15); // 15 мс күтемін
}
for (pos = 180; pos >= 0; pos -= 1) { // 180-ден 0 градусқа дейін цикл
myservo.write(pos); // Орны Servo объектіне жазу
delay(15); // 15 мс күтемін
}
}
Бұл код екі цикл қолданып, орны айнымалысын 0-ден 180 градусқа дейін және керісінше өзгертеді. Ол содан кейін myservo.write(pos) функциясы арқылы осы мәні Servo объектіне жазады. Аралықта 15 мс күтемін функциясын қосады, қозғалысты жауырту үшін.
Бұл коды Arduino платасына IDE-нің Upload кнопкасы арқылы жүктеп, серво мотордың 0-ден 180 градусқа дейін орталап-орталап қозғалуын көріңіз.
Потенциометр арқылы серво моторды басқару
Потенциометр - бұл айналуына байланысты өзінің қарсылығын өзгерту үшін қолданылатын аналогты датчик. Потенциометрді серво моторды басқару үшін енгізу құрылғысы ретінде қолдануға болады.
Потенциометр арқылы серво моторды басқару үшін сізге қажет:
Arduino плата (мысалы, Arduino UNO)
Стандартты серво мотор (мысалы, SG90)
Потенциометр (10k Ом)
Толқын проводтары
Хлебная плата
Потенциометр және серво моторды Arduino платасына қосу үшін қолданылатын схема төмендегідей:
Потенциометрден келген қызыл провод Arduino платасының 5V-ға қосылады. Потенциометрден келген кара провод Arduino платасының GND-ға қосылады. Потенциометрден келген жасыл провод Arduino платасының A0 пиніне қосылады.
Серводан келген қызыл провод хлебная платадағы басқа жолдың 5V-ға қосылады. Серводан келген кара провод хлебная платадағы басқа жолдың GND-ға қосылады. Серводан келген ақ провод хлебная платадағы басқа жолдың D9 пиніне қосылады.
Arduino платасын программалау үшін сіз өткен мысалдағы кодты қолдануыңыз керек, бірақ бірнеше жерін өзгерту керек:
#include <Servo.h> // Servo библиотекасын қосу
Servo myservo; // Servo объектін жасау
int potpin = A0; // Потенциометрге қосылған пин
int val = 0; // Потенциометр мәнін оқу үшін айнымалы
void setup() {
myservo.attach(9); // Servo объектін 9-шы пинге қосу
}
void loop() {
val = analogRead(potpin); // Потенциометрден мәнді оқу (0 -1023)
val = map(val,0,1023,0,180); // Мәнді ауыстыру (0 -180)
myservo.write(val); // Ауыстырылған мәнді Servo объектіне жазу
delay(15); // 15 мс күтемін
}
Бұл код analogRead(potpin) функциясын қолданып, A0 пиніне қосылған потенциометрден мәнді оқып, содан кейін map(val,0,1023,0,180) функциясы арқылы мәнді 0 -1023-тен 0 -180-ге ауыстырады. Содан кейін myservo.write(val) функциясы арқылы ауыстырылған мәнді Servo объектіне жазады. Аралықта 15 мс күтемін функциясын қосады, өткен мысалдағыдай.
Бұл коды IDE-нің Upload кнопкасы арқылы Arduino платасына жүктеп, серво мотордың потенциометрдің айналуына қарай қозғалуын көріңіз.
Жойстик арқылы серво моторды басқару