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 servo motora Arduino pomoću potenciometra
U ovom tutorijalu istražićemo kako kontrolisati servo motor koristeći potenciometar sa Arduinom. Cilj je stvoriti jednostavnu sklop gdje se pozicija serva podešava na osnovu rotacije potenciometra. Na kraju ovog projekta, imaćete funkcionalni model koji glatko menja ugao serva od 0 do 180 stepeni dok okrenete potenciometar. Ovo je odličan način da razumete osnove analognog ulaza i kontrole serva u Arduinu.
Da bismo to postigli, koristićemo Arduino ploču, servo motor i potenciometar. Potenciometar deluje kao promenljivi otpornik, pružajući analogni ulaz Arduino-u, koji će zatim odrediti poziciju servo motora u skladu s tim. Ovaj projekat nije samo zabavan, već i edukativan, jer prikazuje ključne koncepte u elektronici i programiranju. Za detaljnije objašnjenje, obavezno pogledajte video (u videu na 00:00).
Objašnjena oprema
U ovom projektu, glavni sastavni dijelovi su Arduino ploča, servo motor i potenciometar. Arduino je mozak operacije, obrađujući ulaze i kontrolirajući izlaze. Servo motor je ono što će fizički pomjerati na osnovu komandi koje prima od Arduina. Potenciometar može biti od 1k ohm do 1M ohm i omogućava korisnicima da pruže varijabilni ulaz koji se prevodi u kretanje serva.
Servo motor radi na osnovu PWM (modulacija širine impulsa) signala koji označava željenu poziciju. Potentiometar, kada se okrene, menja svoju otpornost, koju Arduino očitava kao analogni napon. Servo motor radi sa 5V. Ne radi sa 3.3V. Ovaj napon se zatim mapira na opseg kretanja servo motora, omogućavajući glatko kretanje od 0 stepeni do 180 stepeni.
Tehnički podaci za SG90 servo motor
| Proizvođač | Paralaksa |
|---|---|
| Broj dijela | SG90 |
| Logika/IO napon | 5 V |
| Napon napajanja | 4.8-6 V |
| Izlazna struja (po kanalu) | ~500 mA |
| Vrhunski trenutni (po kanalu) | 1 A |
| Upute za PWM frekvenciju | 50 Hz |
| Ulazne logičke granice | 0.5 V (nisko), 2.5 V (visoko) |
| Napon pada / RDS(on)/ zasićenje | 0,5 V pri 500 mA |
| Termalne granice | 0°C do 60°C |
| Pakovanje | Standard 9g servo |
| Napomene / varijante | Često se koristi u RC aplikacijama |
- Osigurajte da servo ne premaši svoju maksimalnu struju.
- Koristite hladnjak ako servo neprekidno radi pod visokim opterećenjima.
- Povežite potenciometar na analogni pin za tačna očitavanja.
- Budite oprezni s vremenom PWM signala za kontrolu serva.
- Provjerite opseg kretanja serva kako biste izbjegli fizičke prepreke.
Uputstva za povezivanje


Za ovu postavku, trebate povezati komponente na sljedeći način:
Povežite srednju pin potenciometra (brisač) na analogni pin Arduina.A0. Ostale dvije pinove potenciometra treba povezati na5ViGNDna Arduinu. Za servo motor, povežite crvenu žicu na5V, crna žica naGND, a žuta ili bijela žica na digitalni pin9na Arduinu. Ova postavka omogućava potenciometru da pruži analogni ulaz Arduinu, koji će kontrolisati položaj servo motora na osnovu tog ulaza.
Provjerite sve veze i osigurajte da servo nije blokiran u svom opsegu kretanja. Ako koristite drugi model Arduina, potvrdite da su dodijeljeni pinovi za analogni ulaz i servo izlaz kompatibilni.
Primjeri koda i vodič
Ispod je izvadak koda koji inicijalizuje servo i čita vrijednost potenciometra:
#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
}
U ovom kodu uključujemo Servo biblioteku i kreiramo servo objekat nazvanmyservoServo je priključen na pin9, što nam omogućava da njime upravljamo koristeći ovu iglu.
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
}
U funkciji petlje, čitamo vrijednost potenciometra sa pinaA0i mapirajte iz njegovog opsega (0-1023) u opseg servomotora (0-180 stepeni).myservo.write(pos)komanda zatim pomiče servo na željenu poziciju na osnovu rotacije potenciometra.
Demonstracija / Šta očekivati
Kada pokrenete ovaj program, trebali biste vidjeti servo motor kako glatko prelazi od 0 do 180 stepeni dok okrenete potenciometar. Ako se servo ne pomiče kako se očekuje, provjerite ožičenje i osigurajte da potenciometar ispravno radi. Također, provjerite je li Arduino ispravno napajan i je li kod učitan bez grešaka. Možete očekivati da će servo odražavati položaj potenciometra u stvarnom vremenu (u videu u 02:00).
Video vremenski oznaci
- 00:00- Uvod u projekat
- 01:30- Objašnjenje postavke hardvera
- 03:45- Uputstva za povezivanje
- 05:00- Prolazak kroz kod
- 07:30- Demonstracija završenog projekta
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 koristeći Arduino
- Kontrola serva pomoću potenciometra i LCD1602 ekrana koristeći Arduino
- Kontrola servo motora pomoću infracrvenog daljinskog upravljača s Arduinom
- 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
/**
*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
}
}
Resursi i reference
Još nema resursa.
Datoteke📁
Tehnički list (pdf)
-
sg90_serveo_motor_datasheet
sg90_serveo_motor_datasheet.pdf0.13 MB