This tutorial is part of: Серво мотори
Сите видеа поврзани со серво мотори што се поврзани со нив се наведени овде. Линкови до други видеа се под оваа статија.
Контрола на сервомотор со Arduino користејќи потенциометар
Во оваа туторијал, ќе истражуваме како да контролираме сервомотор користејќи потенциометар со Arduino. Целта е да создадеме едноставен круг каде што позицијата на сервото се прилагодува врз основа на ротацијата на потенциометарот. До крајот на овој проект, ќе имате работен модел кој мазно варира под аголот на сервото од 0 до 180 степени додека го вртење потенциометарот. Ова е одличен начин да се разберат основите на аналогниот влез и контрола на сервото во Arduino.
За да го постигнеме ова, ќе користиме Arduino плоча, серво мотор и потенциометар. Потенциометарот функционира како променлив отпор, обезбедувајќи аналоген влез на Arduino, кој потоа ќе ја одреди позицијата на серво моторот соодветно. Овој проект не е само забавен туку и образовен, бидејќи демонстрира клучни концепти во електрониката и програмирањето. За подетално објаснување, бидете сигурни да го погледнете видеото (во видеото на 00:00).
Објаснување на хардверот
Во овој проект, главните компоненти се Arduino платката, серво моторот и потенциометарот. Arduino е мозокот на операцијата, обработувајќи влезови и контролирајќи излези. Серво моторот е оној што физички ќе се движи врз основа на командите што ги добива од Arduino. Потенциометарот може да биде од 1k ома до 1M ома и им овозможува на корисниците да обезбедат променлив влез што се преведува во движење на серво.
Серво моторот работи со примање на PWM (Модулација на ширина на пулс) сигнал кој укажува на посакуваната позиција. Потенциометарот, кога ќе се сврти, ја менува својата отпорност, која ја чита Arduino како аналогно напон. Серво моторот работи со 5V. Не работи со 3.3V. Овој напон потоа се мапира на опсегот на движење на серво моторот, овозможувајќи глатко движење од 0 степени до 180 степени.
Технички податоци за SG90 серво мотор
| Производител | Паралакс |
|---|---|
| Број на делови | SG90 |
| Логика/IO напон | 5 V |
| Напон на напојување | 4.8-6 V |
| Излезна струја (по канал) | ~500 мА |
| Пиков тековен (по канал) | 1 А |
| Упатство за PWM фреквенција | 50 Hz |
| Влезни логички прагови | 0.5 V (ниско), 2.5 V (високо) |
| Напонска пад / RДС(вкл)/ заситеност | 0.5 V при 500 mA |
| Термални ограничувања | 0°C до 60°C |
| Пакет | Стандард 9г серво |
| Забелешки / варијанти | Често се користи во RC апликации |
- Осигурајте дека сервото не ја надминува својата максимална струјна оценка.
- Користете топлински разменувач ако сервото работи континуирано под високи оптоварувања.
- Поврзете го потенциометарот на аналоген пин за точни мерења.
- Внимавајте на времето на PWM сигналот за контрола на сервото.
- Проверете го опсегот на движење на серво за да избегнете физички пречки.
Инструкции за поврзување


За оваа конфигурација, ќе треба да ги поврзете компонентите на следниов начин:
Поврзете ја средната пин на потенциометарот (брисач) на аналогниот пин на Ардуиното.A0. Другите две игли на потенциометарот треба да бидат поврзани со5VиGNDна Arduino. За серво моторот, поврзете го црвениот жица на5V, црниот жица наGND, и жолтата или белата жица на дигитален пин9на Arduino. Оваа распоредба му овозможува на потенциометарот да обезбеди аналоген влез на 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 и создававме објект на серво наречен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 степени). Тhemyservo.write(pos)командата потоа го поместува серво моторот на посакуваната позиција врз основа на ротацијата на потенциометарот.
Демонстрација / Што да очекувате
Кога ќе го стартувате овој програм, треба да видите како серво моторот глатко се движи од 0 до 180 степени додека го вртење потенциометарот. Ако серво моторот не се движи како што се очекува, проверете ја жичената инсталација и осигурајте се дека потенциометарот функционира правилно. Дополнително, осигурајте се дека Ардуиното е правилно напојувано и дека кодот е пренесен без грешки. Можете да очекувате да видите како серво моторот ја одразува позицијата на потенциометарот во реално време (во видеото на 02:00).
Видеозаписи
- 00:00- Вовед во проектот
- 01:30- Објаснување за поставување на хардверот
- 03:45- Упатства за жици
- 05:00- Процес на преглед на кодот
- 07:30- Демонстрација на завршениот проект
This tutorial is part of: Серво мотори
- Controlling a Servo with Push Buttons Using Arduino
- 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)
- Controlling a Servo with a Potentiometer Using Arduino
- Controlling a Servo with Potentiometer and LCD1602 using Arduino
- Controlling Servo Motors Using an Infrared Remote with Arduino
- Контролирање на позицијата на серво со рачни гестови за Arduino
- Controlling Two or More Servos with Potentiometers Using an Arduino
- How to Control a 360° Servo with Three Push-Button Switches
- Како да се користи континуиран 360° серво со Arduino
- Arduino Code and Video for PCA9685 16-Channel 12-Bit Servo Controller V1
- Build an Arduino Servo Toggle Switch with a Push Button
/**
*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
}
}
Resources & references
No resources yet.
Files📁
Datasheet (pdf)
-
sg90_serveo_motor_datasheet
sg90_serveo_motor_datasheet.pdf0.13 MB