Бұл оқулық бөлігі болып табылады: Servo Motors
All videos related to servo motors that are related, listed here. Links to other videos are below this article.
Arduino сервомоторын потенциометр арқылы басқару
Бұл оқулықта біз Arduino көмегімен потенциометрді пайдаланып сервомоторды қалай басқаруға болатынын зерттейміз. Мақсат - потенциометрдің айналдыруына негізделген сервомотордың позициясын реттейтін қарапайым схеманы жасау. Осы жобаның соңында сіз потенциометрді айналдырған кезде сервомотордың бұрышын 0-ден 180 градусқа дейін тегіс өзгертуге мүмкіндік беретін жұмыс істейтін модельге ие боласыз. Бұл Arduino-да аналогтық кіріс пен сервоконтрольдің негіздерін түсінудің тамаша тәсілі.
Бұл мақсатқа жету үшін біз Arduino тақтасын, сервомоторды және потенциометрді қолданамыз. Потенциометр айнымалы резистор ретінде қызмет етеді, Arduino-ға аналогтық кіріс береді, ол сервомотордың орнын сәйкесінше анықтайды. Бұл жоба тек көңілді ғана емес, сонымен қатар білім беретін, өйткені ол электроника мен бағдарламалаудағы негізгі ұғымдарды көрсетеді. Толығырақ түсінік алу үшін бейнені қарауды ұмытпаңыз (бейне 00:00-де).
Аппараттық құралдар түсіндірілді
Бұл жобада негізгі компоненттер Arduino тақтасы, сервомотор және потенциометр болып табылады. Arduino операцияның миы, кірістерді өңдеп, шығыстарды басқарады. Сервомотор Arduino-дан алған командаларға сәйкес физикалық түрде қозғалады. Потенциометр 1k омнан 1M омға дейін болуы мүмкін, ол пайдаланушыларға сервомотор қозғалысына айналатын өзгермелі кіріс беруге мүмкіндік береді.
Серво моторы PWM (Импульстық Кеңдік Модуляциясы) сигналы арқылы жұмыс істейді, ол қажетті позицияны көрсетеді. Потенциометрді айналдырғанда, оның кедергісі өзгереді, бұл Arduino-да аналогтық кернеу ретінде оқылады. Серво мотор 5В-мен жұмыс істейді. 3.3В-мен жұмыс істемейді. Бұл кернеу серво моторының қозғалыс диапазонына сәйкес келеді, 0 градусдан 180 градусқа дейін тегіс қозғалыс жасауға мүмкіндік береді.
SG90 сервомоторының деректер парағының мәліметтері
| Өндіруші | Параллакс |
|---|---|
| Бөлшек нөмірі | SG90 |
| Логика/Кернеу | 5 В |
| Жабдықтау кернеуі | 4.8-6 В |
| Шығыс токы (арна бойынша) | ~500 мА |
| Шың ток (арна бойынша) | 1 A |
| PWM жиілігі бойынша нұсқаулық | 50 Гц |
| Кіріс логика шектер | 0.5 В (төмен), 2.5 В (жоғары) |
| Кернеу түсуі / RDS(қосулы)/ қанығу | 0.5 В 500 мА |
| Жылу шектеулері | 0°C-тан 60°C-қа дейін |
| Пакет | Стандартты 9г сервомотор |
| Ескертпелер / нұсқалар | RC қолданбаларында жиі пайдаланылады |
- Сервоның максималды ток рейтингінен аспауын қамтамасыз етіңіз.
- Серво жоғары жүктемелерде үздіксіз жұмыс істесе, жылу алмасушыны пайдаланыңыз.
- Потенциометрді дәл өлшемдер үшін аналогтық пинге қосыңыз.
- Серво басқару үшін PWM сигналдарының уақытын бақылаңыз.
- Сервоның қозғалыс диапазонын физикалық кедергілерден аулақ болу үшін тексеріңіз.
Сымдарды қосу нұсқаулары


Бұл конфигурация үшін компоненттерді келесідей қосу қажет:
Потенциометрдің ортаңғы пинін (сүргі) Ардуиноның аналогтық пиніне қосыңыз.A0Потенциометрдің басқа екі пині қосылуы керек5VжәнеGNDArduino-да. Серво мотор үшін қызыл сымды қосыңыз5Vқара сымғаGND, және сары немесе ақ сымды цифрлық пинге9Arduino-да. Бұл құрылым потенциометрге Arduino-ға аналогтық кіріс беруге мүмкіндік береді, ол осы кіріс негізінде сервомотордың орнын басқарады.
Барлық қосылымдарды тексеріп, сервомотордың қозғалыс диапазонында кедергісіз екеніне көз жеткізіңіз. Егер басқа Arduino моделін қолдансаңыз, аналогтық кіріс пен сервомотордың шығысы үшін пин тағайындауларының үйлесімділігін растаңыз.
Код мысалдары мен нұсқаулықтар
Төменде сервоны іске қосатын және потенциометр мәнін оқитын кодтың үзіндісі берілген:
#include
Servo myservo; // create servo object to control a servo
int pos = 0; // variable to store the servo position
void setup() {
myservo.attach(9); // attaches the servo on pin 9 to the servo object
}
Бұл кодта біз Servo кітапханасын қосып, servo объектісін жасаймыз.myservoСерво пинге бекітілген.9, бұл бізге оны осы пин арқылы басқаруға мүмкіндік береді.
void loop() {
int sensorValue = analogRead(A0); // read the potentiometer
pos = map(sensorValue, 0, 1023, 0, 180); // map to servo position
myservo.write(pos); // move servo to position
delay(15); // waits 15ms for the servo to reach the position
}
Цикл функциясында біз потенциометрдің мәнін пиннен оқимыз.A0және оны диапазонынан (0-1023) сервомотордың диапазонына (0-180 градус) ауыстырыңыз.myservo.write(pos)команда содан кейін сервоны потенциометрдің айналуына негізделген қажетті позицияға жылжытады.
Көрсетілім / Не күту керек
Бұл бағдарламаны іске қосқанда, потенциометрді айналдырған кезде сервомотордың 0-ден 180 градусқа дейін тегіс қозғалуы керек. Егер сервомотор күтілгендей қозғалмаса, сымдарды тексеріп, потенциометрдің дұрыс жұмыс істеп тұрғанына көз жеткізіңіз. Сонымен қатар, Ардуиноның дұрыс қуатталғанына және кодтың қателерсіз жүктелгеніне көз жеткізіңіз. Сервомотордың потенциометрдің позициясын нақты уақыт режимінде (02:00 видеода) көрсететінін күтуге болады.
Бейне уақыт белгілері
- 00:00- Жобамен танысу
- 01:30- Аппараттық жабдықтау түсіндірмесі
- 03:45- Сымдарды қосу нұсқаулары
- 05:00- Кодты қарау
- 07:30- Дайын жобаның демонстрациясы
Бұл оқулық бөлігі болып табылады: Servo Motors
- Ардуино арқылы түймелермен сервоны басқару
- Control a Servo Motor with a Push Button: Move Servo and Return SPB-1
- Control a Servo Motor with a Push Button: Move Servo in One Direction SPB-2
- Controlling a Servo Motor with a Push Button: Move Servo While Button Is Pressed (SPB-3)
- Ардуино көмегімен потенциометр арқылы сервоны басқару
- Ардуино көмегімен потенциометр және LCD1602 арқылы сервоны басқару
- Ардуино арқылы инфрақызыл қашықтан басқару пультімен сервоқозғалтқыштарды басқару
- Arduino үшін қол қимылдарымен сервоприводтың орнын басқару
- Controlling Two or More Servos with Potentiometers Using an Arduino
- How to Control a 360° Servo with Three Push-Button Switches
- Үздіксіз 360° сервоны Arduino-мен қалай пайдалану керек
- Ардуино коды және PCA9685 16-арналы 12-биттік серво контроллері V1 бейнежазбасы
- Ардуино серво қосқышын итеру түймесімен жасаңыз
/**
*Original source: Arduino IDE
* Arduino Project: Controlling the servo position
* This code is used with a video tutorial for Robojax.com
* Published on April 24, 2017, from Ajax, ON, Canada.
* Written/Edited by Ahmad Shamshiri
* Watch the video on YouTube: https://youtu.be/kZ9b31gVemc
* View tutorial page for this code https://robojax.com/RJT8
* Controlling a servo position using a potentiometer (variable resistor)
*/
#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 15ms 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 15ms for the servo to reach the position
}
}
Ресурстар мен сілтемелер
Әлі ресурстар жоқ.
Файлдар📁
Техникалық сипаттама (pdf)
-
sg90_serveo_motor_datasheet
sg90_serveo_motor_datasheet.pdf0.13 MB