Ovaj tutorijal je dio: Servo motori
Svi videozapisi vezani za servo motore navedeni su ovdje. Linkovi do drugih videozapisa nalaze se ispod ovog članka.
Kontrola serva pomoću potenciometra koristeći Arduino
U ovom tutorijalu naučit ćemo kako kontrolirati servo motor koristeći potenciometar s Arduinom. Potenciometar nam omogućava da glatko podešavamo ugao serva, dajući nam kontrolu u realnom vremenu nad njegovom pozicijom. Do kraja ovog projekta imat ćete funkcionalnu postavku koja prikazuje vrijednost potenciometra i odgovarajući ugao serva.

Kako se potenciometar okreće, ugao servo motora mijenja se od 0 do 180 stepeni. Koristit ćemo Arduino analogni ulaz za čitanje vrijednosti potenciometra, a zatim mapirati ovu vrijednost na opseg serva koristeći jednostavnu formulu. Ovaj projekat je odličan način da razumijete kako analogni ulazi rade i kako kontrolirati motore s njima (u videu na 01:45).
Objašnjenje hardvera
Za ovaj projekat trebamo Arduino ploču, servo motor i potenciometar. Potenciometar djeluje kao promjenjivi otpornik, pružajući naponski izlaz koji odgovara njegovoj poziciji. Ovaj izlaz čita Arduino analogni ulaz, omogućavajući nam da odredimo koliko treba okrenuti servo.
Servo motor je vrsta motora koji se može pozicionirati pod određenim uglom. Prima kontrolni signal koji mu govori željenu poziciju. Servo će se rotirati na taj ugao na osnovu ulaza koji prima od Arduina, što ga čini korisnim za različite primjene poput robotike i uređaja za daljinsko upravljanje.
Detalji iz tehničke dokumentacije
| Proizvođač | Razni |
|---|---|
| Broj dijela | Standardni servo |
| Logički/IO napon | 5 V |
| Napon napajanja | 4.8 – 6 V |
| Izlazna struja (po kanalu) | Do 1 A |
| Maksimalna struja (po kanalu) | Do 2 A |
| Smjernice za PWM frekvenciju | 50 Hz |
| Logički pragovi ulaza | 0.8 V (nisko) / 2.0 V (visoko) |
| Pad napona / RDS(on) / zasićenje | 0.5 V |
| Termalna ograničenja | 85 °C |
| Pakovanje | Standardna veličina |
| Napomene / varijante | Dostupno u različitim veličinama i s različitim obrtnim momentima |
- Osigurajte da je napajanje unutar granica (4.8 – 6 V).
- Koristite odgovarajuću vrijednost otpornika za potenciometar (preporučuje se 10 kΩ).
- Provjerite polaritet spojeva kako biste izbjegli obrnuti rad.
- Budite oprezni s toplinom; osigurajte da servo nije preopterećen.
- Držite žice kratke kako biste smanjili smetnje.
- Koristite decoupling kondenzatore preko naponskih ulaza ako je potrebno.
- Provjerite da je potenciometar pravilno spojen na analogni pin A0.
Upute za povezivanje

Za povezivanje komponenti, prvo spojite potenciometar. Srednji pin potenciometra treba spojiti na analogni pin A0 na Arduinu. Lijevi pin treba ići na 5V pin na Arduinu, a desni pin treba spojiti na masu (GND).
Zatim spojite servo motor. Žica za masu (obično crna ili smeđa) sa serva treba biti spojena na Arduino GND. Žica za napajanje (obično crvena) treba se spojiti na 5V pin na Arduinu. Na kraju, kontrolna žica (često žuta ili bijela) treba biti spojena na digitalni pin 9 na Arduinu. Ova postavka omogućit će Arduinu da kontrolira servo na osnovu pozicije potenciometra.

Primjeri koda i objašnjenje
Pogledajmo ključne dijelove koda. Prvo uključujemo Servo biblioteku i kreiramo servo objekat:
#include
Servo myservo; // kreiraj servo objekat za kontrolu serva
Ovaj kod inicijalizira servo i priprema ga za kontrolu. Sljedeći korak uključuje čitanje vrijednosti potenciometra:
int val = analogRead(potpin); // čita vrijednost potenciometra
Ovdje se vrijednost pročitana s potenciometra pohranjuje u varijablu val. Vrijednost će biti između 0 i 1023, što odgovara poziciji potenciometra. Zatim mapiramo ovu vrijednost na opseg serva:
val = map(val, 0, 1023, 0, 180); // skaliraj je za upotrebu sa servom
Ovaj red pretvara vrijednost potenciometra u opseg prikladan za servo motor. Na kraju, postavljamo servo na izračunatu poziciju:
myservo.write(val); // postavlja poziciju serva prema skaliranoj vrijednosti
Ova komanda govori servu da se pomakne na specificirani ugao na osnovu pozicije potenciometra. Kompletan kod možete pronaći učitan ispod članka.
Demonstracija / Šta očekivati
Kada pokrenete program, okretanje potenciometra će glatko podešavati ugao servo motora. Trebali biste vidjeti vrijednosti ugla koje se ispisuju u serijskom monitoru dok okrećete dugme. Ako se servo ponaša neočekivano, provjerite svoje povezivanje, posebno spojeve na potenciometar i servo (u videu na 04:30).
Servo bi trebao odmah reagirati na promjene u poziciji potenciometra. Ako primijetite kašnjenje ili trzaje, razmislite o smanjenju kašnjenja u kodu kako biste poboljšali odziv.
Ovaj tutorijal je dio: Servo motori
- Kontrola serva pomoću push dugmadi koristeći 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)
- Kontrola serva pomoću potenciometra i LCD1602 ekrana koristeći Arduino
- Kontrola servo motora pomoću infracrvenog daljinskog upravljača s Arduinom
- Kontrola servo motora Arduino pomoću potenciometra
- Kontrola pozicije serva pomoću rukovnih gesti za Arduino
- Controlling Two or More Servos with Potentiometers Using an Arduino
- How to Control a 360° Servo with Three Push-Button Switches
- Kako koristiti kontinuirani 360° servo s Arduinom
- Arduino kod i video za PCA9685 16-kanalni 12-bitni servo kontroler V1
- Napravi Arduino servo prekidač sa push button tasterom
/*
Controlling a servo position using a potentiometer (variable resistor)
by Michal Rinott <http://people.interaction-ivrea.it/m.rinott>
modified on 8 November 2013
by Scott Fitzgerald
http://www.arduino.cc/en/Tutorial/Knob
Update by Ahmad Shamshiri for Robojax.com in Ajax, Ontario, Canada
Watch video for this code at https://youtu.be/X_drE5tLbz0
This code is taken from http://robojax.com/learn/arduino
*/
#include <Servo.h>
Servo myservo; // create servo object to control a servo
int potpin = A0; // analog pin used to connect the potentiometer
int val; // variable to read the value from the analog pin
void setup() {
// Servo knob demo by Robojax.com
Serial.begin(9600); // setup serial
myservo.attach(9); // attaches the servo on pin 9 to the servo object
}
void loop() {
// Servo knob demo by Robojax.com
val = analogRead(potpin); // reads the value of the potentiometer (value between 0 and 1023)
Serial.print(val);
Serial.print(" ");
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
// Servo knob demo by Robojax.com
Serial.print(val);
Serial.println();
delay(200); // waits for the servo to get there
}
Stvari koje bi vam mogle zatrebati
-
AmazonServo motor on Amazonamzn.to
-
AliExpressPurchase SG90 servo motor 180 or 360 from AliExpresss.click.aliexpress.com
Resursi i reference
-
EksternoSG90 Servosamzn.to
Datoteke📁
Nema dostupnih datoteka.