Parçalar · 7 dk okuma

360 Derece Servo (FS90R): Arduino ile Hız ve Yön Kontrolü

360 derece servo FS90R nasıl çalışır? write(90) ile durdurma, hız ve yön kontrolü, durma trimpotu ayarı, robot tekerleği kullanımı, ESP32 ve Pico PWM kodları.

360 derece servo, adı servo olsa da aslında belli bir açıya gidip duran değil, sürekli dönen küçük bir redüktörlü motordur. En bilineni FEETECH FS90R'dir: SG90 ile aynı boyutta ve aynı üç kabloyla bağlanır, ama ona gönderdiğin sinyal bir açıyı değil dönüş hızını ve yönünü belirler. Motor sürücüsüne gerek kalmadan doğrudan Arduino pinine bağlanabildiği için küçük robot tekerlekleri, dönen platformlar ve mama makinesi gibi projelerde çok pratiktir.

Bu rehberde FS90R'nin içinde normal bir servodan neyin farklı olduğunu, write(90) komutunun neden motoru durdurduğunu, darbe genişliğiyle hızı ve yönü nasıl ayarlayacağını ve kendi kendine dönmeye devam eden bir servoyu durma trimpotuyla nasıl ayarlayacağını öğreneceksin. Ardından iki FS90R ile küçük bir robot sürecek, potansiyometreyle hız kontrolü yapacak ve aynı işi ESP32 ile Raspberry Pi Pico'da deneyeceksin. Son olarak bu servonun neden konum kontrolü yapamadığını ve onun yerine neyi seçmen gerektiğini göreceksin.

FS90R 360 derece sürekli dönüş servo motor
FS90R sürekli dönüş servosu: SG90 boyutunda, 9 gram. Sinyal açıyı değil dönüş hızını ve yönünü belirler.

360 derece servo nedir, normal servodan farkı ne?

Normal bir servonun içinde küçük bir DC motor, dişli kutusu, kontrol devresi ve çıkış miline bağlı bir potansiyometre bulunur. Kontrol devresi gelen darbenin istediği açı ile potansiyometrenin gösterdiği gerçek açıyı karşılaştırır ve fark sıfır olana kadar motoru döndürür; mil hedefe varınca durur. Sürekli dönüş servosunda bu geri besleme bağı koparılmıştır: potansiyometre milden ayrılmış ve orta konumda sabitlenmiştir, dişlilerdeki mekanik durdurucu da yoktur. Devre hâlâ "hedef ile gerçek konum arasındaki farkı" hesaplar, ama gerçek konum hiç değişmediği için fark hiç kapanmaz. Sonuçta fark ne kadar büyükse motor o kadar hızlı döner, farkın işareti de yönü belirler.

ÖzellikSG90 (180° servo)FS90R (360° sürekli dönüş)
Sinyal neyi belirler?Milin açısını (0–180°)Dönüş hızını ve yönünü
1500 µs darbeOrta konuma (90°) gider ve orada kalırDurur
1000 µs / 2000 µsBir uca ya da diğer uca giderBir yöne ya da diğer yöne tam hız
İç geri beslemeMile bağlı potansiyometreYok; potansiyometre yalnızca durma noktası ayarıdır
Mekanik durdurucuVarYok, sınırsız döner
Konum tutmaYük altında açısını korurTutamaz; nerede durduğunu bilmez
Tipik kullanımKol, kapak, yönlendirmeTekerlek, döner tabla, vida besleyici

FS90R teknik özellikleri

ÖzellikDeğer
Çalışma gerilimi4,8–6 V
Yüksüz hız4,8 V'ta yaklaşık 100–110 dev/dk, 6 V'ta yaklaşık 130 dev/dk
Kilitlenme torku4,8 V'ta yaklaşık 1,3 kg·cm, 6 V'ta yaklaşık 1,5 kg·cm
AkımYüksüz 100–130 mA, kilitlenmede 6 V'ta 800 mA'e kadar
Kontrol sinyali50 Hz PWM; durma 1500 µs, kullanılan aralık yaklaşık 900–2100 µs
Sinyal seviyesi5 V ve 3,3 V sinyalle çalışır
Dönüş yönü1500 µs üzeri bir yöne, altı ters yöne (çıkış milinden bakınca 1500 µs üstü saat yönünün tersi)
Ağırlık ve boyut9 g, yaklaşık 23 × 12 × 22 mm (SG90 ile aynı gövde)
KablolarKahverengi GND, kırmızı VCC, turuncu sinyal
Satıcıların "360 derece servo" dediği her ürün sürekli dönüş servosu değildir. Bazı servolar 0–360° (ya da 0–270°) arasında konum tutar; bunlar FS90R gibi sürekli dönmez, istenen açıya gidip durur. Ürün açıklamasında continuous rotation ya da "sürekli dönüş" ifadesini ara. Ayrıca FS90R'yi elle ya da bir engel nedeniyle uzun süre kilitlenmiş hâlde zorlamak motoru ve plastik dişlileri bozar.

FS90R bağlantısı: Arduino Uno, ESP32 ve Pico

Servo kablosuGöreviArduino UnoESP32Raspberry Pi Pico
KahverengiGNDGNDGNDGND
KırmızıBesleme 4,8–6 V5V (tek servo) ya da harici 5 VVIN / 5V ya da harici 5 VVBUS (5 V) ya da harici 5 V
TuruncuPWM sinyaliD9GPIO 18GP15

Tek bir FS90R'yi yüksüz çalıştırırken Uno'nun 5V pini yeterlidir. Servo tekerleği yere bastığında ya da iki servo aynı anda kalkış yaptığında akım birkaç yüz miliampere çıkar; USB'nin gerilimi düşer, Arduino resetlenebilir ya da servolar titrer. Bu yüzden robotta servoları ayrı bir 5 V kaynaktan (4 adet NiMH pil, 5 V regülatör ya da bir uygun güç kaynağı) besle, servo beslemesinin GND'sini Arduino'nun GND'sine mutlaka bağla ve servo kablolarına yakın bir 470 µF kondansatör ekle. ESP32 ve Pico'nun 3,3 V'luk sinyali FS90R için yeterlidir; servoyu ise yine 5 V'tan beslemelisin, 3,3 V pininden değil.

write(90) = dur: darbe genişliği nasıl hıza dönüşür?

Servo kontrol sinyali, saniyede 50 kez (her 20 ms'de bir) gönderilen bir darbedir; önemli olan darbenin süresidir. FS90R için 1500 µs "dur" demektir. Darbe 1500 µs'den uzadıkça servo bir yönde hızlanır, kısaldıkça ters yönde hızlanır; yaklaşık 1000 µs ve 2000 µs civarında tam hıza ulaşır, bunun ötesinde hız pek artmaz. Arduino'nun Servo kütüphanesinde write(90) komutu bu yüzden dur anlamına gelir, write(0) ve write(180) ise iki yönde tam hızdır. Burada küçük bir tuzak vardır: kütüphane varsayılan olarak 0–180 değerini 544–2400 µs aralığına çevirir, yani write(90) aslında 1472 µs üretir. Bu fark, servonun write(90)'da bile yavaşça dönmesine yetebilir. Çözüm attach(9, 1000, 2000) ile aralığı daraltmak ya da doğrudan writeMicroseconds(1500) kullanmaktır.

DarbeServo.write karşılığı (attach(pin, 1000, 2000) ile)FS90R davranışı
1000 µswrite(0)Tam hız, saat yönünde
1300 µswrite(54)Orta hız, saat yönünde
1461 µswrite(83)Çok yavaş, saat yönünde
1500 µswrite(90)Dur (trimpot doğru ayarlıysa)
1538 µswrite(97)Çok yavaş, saat yönünün tersine
1700 µswrite(126)Orta hız, saat yönünün tersine
2000 µswrite(180)Tam hız, saat yönünün tersine

İlk kod: ileri, dur, geri

C++ (Arduino IDE)
1// FS90R ilk test: ileri, dur, geri / FS90R first test: forward, stop, backward
2#include <Servo.h>
3
4Servo teker;                         // sürekli dönüş servosu / continuous rotation servo
5
6void setup() {
7  teker.attach(9, 1000, 2000);       // write(0..180) artık 1000..2000 µs üretir / write(0..180) now outputs 1000..2000 µs
8}
9
10void loop() {
11  teker.write(180);                  // tam hız bir yöne / full speed one way
12  delay(2000);
13  teker.write(90);                   // 1500 µs: dur / 1500 µs: stop
14  delay(1000);
15  teker.write(0);                    // tam hız ters yöne / full speed the other way
16  delay(2000);
17  teker.write(110);                  // yavaş / slow
18  delay(2000);
19  teker.writeMicroseconds(1500);     // durmanın en kesin yolu / the most precise way to stop
20  delay(1000);
21}

Kod servoyu D9'a bağlar ve attach(9, 1000, 2000) ile write() ölçeğini FS90R'nin gerçekten kullandığı aralığa eşler; böylece write(90) tam 1500 µs olur. Hızın darbeyle ilişkisi doğrusal değildir: 1500 µs'nin hemen çevresinde birkaç on mikrosaniyelik bir ölü bölge vardır ve orada servo kıpırdamaz, 1500 ± 300 µs aralığında hız hızla artar, uçlara doğru ise neredeyse sabit kalır. Yavaş ve hassas bir hareket istiyorsan değerleri 1500 µs'ye yakın tutmalısın. Darbe genişliğinin genel mantığı PWM nedir, normal servoların açı kontrolü ise servo motor nedir yazısında.

Durma noktası (merkez) trimpotu ayarı

  1. Aşağıdaki kalibrasyon kodunu yükle; servo 1500 µs sinyal alır ve normalde durmalıdır.
  2. Servo yavaşça dönüyorsa gövdenin yan tarafında, kablo çıkışına yakın küçük deliği bul; içinde durma noktasını belirleyen trimpot vardır.
  3. Küçük bir düz ya da yıldız uçlu tornavidayla trimpotu çok az çevir; servo yavaşlarsa doğru yöndesin.
  4. Servo tamamen durana ve hafif uğultu bile kesilene kadar küçük adımlarla devam et. Trimpot çok hassastır, çeyrek tur bile fazladır.
  5. Trimpotu ayarlamak istemiyorsan Serial Monitor'den + ve - göndererek servonun durduğu darbe değerini bul ve kodunda 1500 yerine bu değeri kullan.
C++ (Arduino IDE)
1// Durma noktası ayarı: Serial Monitor'den µs değeri gönder
2// Stop point calibration: send a µs value from the Serial Monitor
3#include <Servo.h>
4
5Servo teker;
6int darbe = 1500;                    // başlangıç: teorik durma noktası / start: theoretical stop point
7
8void setup() {
9  Serial.begin(9600);
10  teker.attach(9);
11  teker.writeMicroseconds(darbe);
12  Serial.println(F("Sayi yaz (900-2100) ya da + / - gonder"));
13  Serial.println(F("Type a number (900-2100) or send + / -"));
14}
15
16void loop() {
17  if (Serial.available()) {
18    char c = Serial.peek();
19    if (c == '+') { Serial.read(); darbe += 5; }          // 5 µs artır / add 5 µs
20    else if (c == '-') { Serial.read(); darbe -= 5; }     // 5 µs azalt / subtract 5 µs
21    else if (isDigit(c)) darbe = Serial.parseInt();       // doğrudan değer / direct value
22    else { Serial.read(); return; }                       // satır sonu vb. atla / skip line endings etc.
23
24    darbe = constrain(darbe, 900, 2100);
25    teker.writeMicroseconds(darbe);
26    Serial.print(F("Darbe / pulse: "));
27    Serial.print(darbe);
28    Serial.println(F(" us"));
29  }
30}
Durma noktası besleme gerilimi ve sıcaklıkla birkaç mikrosaniye kayabilir; pil azaldıkça servo yeniden hafifçe dönmeye başlarsa şaşırma. Servonun tamamen hareketsiz kalması gereken uzun beklemelerde detach() ile sinyali tamamen kesebilirsin: sinyal almayan FS90R durur ve neredeyse hiç akım çekmez. Hareket edeceği zaman yeniden attach() çağırman yeterlidir.

Potansiyometreyle hız ve yön kontrolü

C++ (Arduino IDE)
1// Potansiyometreyle hız ve yön: ortada dur, sağa ileri, sola geri
2// Speed and direction with a pot: centre = stop, right = forward, left = backward
3#include <Servo.h>
4
5const int POT_PIN = A0;
6const int OLU_BOLGE = 40;            // ortadaki ±40 adım: kesin dur / ±40 steps in the middle: solid stop
7Servo teker;
8
9void setup() {
10  teker.attach(9);
11}
12
13void loop() {
14  int okuma = analogRead(POT_PIN) - 512;                   // -512 ... +511
15  int darbe = 1500;                                        // varsayılan: dur / default: stop
16  if (okuma > OLU_BOLGE) {
17    darbe = map(okuma, OLU_BOLGE, 511, 1540, 2000);        // ileri, yavaştan hızlıya / forward, slow to fast
18  } else if (okuma < -OLU_BOLGE) {
19    darbe = map(okuma, -OLU_BOLGE, -512, 1460, 1000);      // geri / backward
20  }
21  teker.writeMicroseconds(darbe);
22  delay(20);                                               // servo periyodu kadar / one servo period
23}

Potansiyometreyi 5V, A0 ve GND arasına bağladığında orta konum dur, sağa çevirmek ileri, sola çevirmek geri anlamına gelir. Kod ortadaki ±40 adımlık bir ölü bölge tanımlar; potansiyometre tam ortada olmasa ya da okumalar biraz oynasa bile servo kesin olarak durur. Ölü bölgenin dışında değer 1540–2000 µs ya da 1460–1000 µs aralığına eşlenir, böylece potansiyometreyi az çevirdiğinde servo yavaş, sonuna kadar çevirdiğinde tam hızla döner. Aynı fikri bir joystick ile de uygulayabilirsin; potansiyometrenin bağlantısı potansiyometre nedir yazısında.

Küçük robot tekerleği olarak FS90R

FS90R'nin robotlarda bu kadar sevilmesinin sebebi basitliktir: içinde redüktör ve sürücü devresi olduğu için ayrı bir motor sürücüye, H köprüsüne ya da enkodere gerek yoktur; her teker için tek bir sinyal pini yeter. İki servo gövdenin iki yanına ayna gibi takılır, bu yüzden ileri gitmek için biri saat yönünde, diğeri tersine dönmelidir. Aşağıdaki kod bu tersliği surus() fonksiyonunun içinde çözer; sen yalnızca -100 ile +100 arasında hız verirsin. 60 mm çaplı bir teker, 6 V'ta 130 dev/dk dönerken saniyede yaklaşık 0,4 metre yol alır; 4,8 V'ta bu değer 0,3 m/s civarına düşer.

C++ (Arduino IDE)
1// İki FS90R ile küçük robot: tekerlekler ayna gibi takılır
2// A small robot with two FS90Rs: the wheels are mounted as mirror images
3#include <Servo.h>
4
5Servo sol, sag;
6const int DUR_SOL = 1500;            // kalibrasyonla bulduğun değerler / values you found during calibration
7const int DUR_SAG = 1500;
8
9// hiz: -100 (tam geri) ... +100 (tam ileri) / speed: -100 (full back) ... +100 (full forward)
10void surus(int hizSol, int hizSag) {
11  sol.writeMicroseconds(DUR_SOL + hizSol * 5);             // sol teker normal yönde / left wheel normal direction
12  sag.writeMicroseconds(DUR_SAG - hizSag * 5);             // sağ teker ters takılı / right wheel is mounted reversed
13}
14
15void setup() {
16  sol.attach(9);
17  sag.attach(10);
18  surus(0, 0);
19  delay(1000);
20}
21
22void loop() {
23  surus(80, 80);    delay(1500);     // ileri / forward
24  surus(0, 0);      delay(500);      // dur / stop
25  surus(-60, 60);   delay(600);      // yerinde sola dön / spin left in place
26  surus(60, 60);    delay(1000);
27  surus(30, 80);    delay(1500);     // sola doğru yay çiz / curve to the left
28  surus(-80, -80);  delay(1000);     // geri / backward
29  surus(0, 0);      delay(2000);
30}

İki servo hiçbir zaman birebir aynı hızda dönmez; robot düz gitmek yerine hafifçe bir yana kayıyorsa her servonun durma değerini (DUR_SOL, DUR_SAG) ayrı ayrı kalibre et, hızlı olanın katsayısını biraz azalt. FS90R'nin 1,5 kg·cm'lik torku, toplam ağırlığı birkaç yüz gramı geçmeyen küçük robotlar için uygundur; daha ağır bir şasi ya da büyük tekerlekler için DC motor ve L298N ya da redüktörlü motorlar daha doğru seçimdir. Pille beslerken 4 adet NiMH pil (4,8 V) ideal gerilim verir; yeni 4 adet alkalin pil 6,4 V'a kadar çıkabildiği için servonun sınırını aşabilir. Tam bir şasi ve sensör kurulumu için Arduino robot araba yapımı yazısına bakabilirsin.

FS90R ile konum kontrolü yapamazsın. Servonun içinde milin nerede olduğunu ölçen bir şey kalmadığı için "90 derece dön ve dur" diyemezsin; "1 saniye dön" gibi süreye dayalı hareketler de pil gerilimi, yük ve sıcaklıkla her seferinde farklı sonuç verir. Belirli bir açıya gitmen gerekiyorsa normal bir servo, adım adım hassas dönüş için bir step motor kullan ya da tekerleğe bir enkoder ekleyerek dönüşü say. Hangi motorun ne zaman seçileceği DC, servo ve step motor farkı yazısında.

ESP32 ile FS90R

Arduino'nun Servo kütüphanesi ESP32'de çalışmaz; onun yerine Kütüphane Yöneticisi'nden ESP32Servo kütüphanesini kur. Kullanımı neredeyse aynıdır, ek olarak setPeriodHertz(50) ile 50 Hz'i açıkça belirtirsin. Sinyal için PWM verebilen hemen her GPIO uygundur; yalnızca giriş olarak çalışan GPIO 34–39 bu iş için kullanılamaz. Servonun kırmızı kablosunu ESP32'nin 3V3 pinine değil, VIN (USB 5 V) pinine ya da harici 5 V kaynağa bağla. Aşağıdaki kod servoyu durmadan tam hıza yavaşça çıkarır, sonra yavaşlatıp ters yöne geçirir; Serial Monitor'de her adımdaki darbe süresini görürsün.

C++ (Arduino IDE)
1// ESP32 + FS90R: ESP32Servo kütüphanesiyle hız rampası
2// ESP32 + FS90R: a speed ramp with the ESP32Servo library
3#include <ESP32Servo.h>
4
5const int SERVO_PIN = 18;            // PWM verebilen herhangi bir GPIO / any PWM-capable GPIO
6Servo teker;
7
8void setup() {
9  Serial.begin(115200);
10  teker.setPeriodHertz(50);          // standart servo frekansı / standard servo frequency
11  teker.attach(SERVO_PIN, 1000, 2000);
12  teker.writeMicroseconds(1500);     // dur / stop
13  delay(1000);
14}
15
16void loop() {
17  for (int us = 1500; us <= 2000; us += 25) {   // yavaşça hızlan / speed up gently
18    teker.writeMicroseconds(us);
19    Serial.println(us);
20    delay(200);
21  }
22  for (int us = 2000; us >= 1000; us -= 25) {   // yavaşla, dur, ters yöne hızlan / slow down, stop, reverse
23    teker.writeMicroseconds(us);
24    Serial.println(us);
25    delay(200);
26  }
27  teker.writeMicroseconds(1500);
28  delay(2000);
29}

Raspberry Pi Pico ve MicroPython ile FS90R

Pico'da ek kütüphaneye gerek yoktur: machine.PWM nesnesini 50 Hz'e ayarlar, darbe süresini duty_ns() ile nanosaniye cinsinden verirsin. Koddaki hiz() fonksiyonu -100 ile +100 arasındaki bir değeri 1000–2000 µs'ye çevirir; kendi kalibrasyonunda bulduğun durma değerini DUR_US satırına yazman yeterlidir. Program Ctrl+C ile durdurulduğunda servo da durdurulur; aksi hâlde PWM son değerle çalışmaya devam eder ve teker dönmeyi sürdürür. Servonun beslemesini Pico'nun VBUS pininden (USB'nin 5 V'u) al. MicroPython'a yeniysen önce MicroPython temelleri yazısına göz at.

MicroPython
1# Raspberry Pi Pico (MicroPython) + FS90R: hız -100 ... +100
2# Raspberry Pi Pico (MicroPython) + FS90R: speed -100 ... +100
3from machine import Pin, PWM
4import time
5
6servo = PWM(Pin(15))
7servo.freq(50)                        # 20 ms periyot / 20 ms period
8DUR_US = 1500                         # kalibrasyonla bulduğun durma noktası / your calibrated stop point
9
10def hiz(yuzde):
11    yuzde = max(-100, min(100, yuzde))
12    us = DUR_US + yuzde * 5           # -100 -> 1000 µs, +100 -> 2000 µs
13    servo.duty_ns(us * 1000)
14
15try:
16    while True:
17        for h in (50, 100, 0, -50, -100, 0):
18            hiz(h)
19            print("Hiz / speed:", h)
20            time.sleep(2)
21except KeyboardInterrupt:
22    hiz(0)                            # durdurunca teker dönmeye devam etmesin / stop the wheel on exit
23    servo.deinit()

360 derece servo ile proje fikirleri

  • Çizgi izleyen mini robot: İki FS90R ve iki kızılötesi sensörle hafif bir şasi; mantığı çizgi izleyen robot yazısında.
  • Engelden kaçan robot: Önüne bir HC-SR04 ekle, engel görünce yerinde dönüp yön değiştirsin.
  • Telefonla sürülen araç: Bir HC-05 Bluetooth modülü ile komutları telefondan gönder.
  • Mama ya da yem makinesi: FS90R bir helezon vidayı (auger) döndürsün, zamanlayıcıyla belli sürelerde mama düşsün.
  • Döner sergi tablası: Ürün fotoğrafı ya da zaman atlamalı çekim için çok yavaş dönen bir platform; hızı 1500 µs'ye yakın değerlerle ayarla.
  • Küçük vinç ya da perde çekici: Hafif bir ipi sar, uçlara iki sınır anahtarı koyarak motoru doğru yerde durdur.

Sık hatalar ve çözümleri

BelirtiOlası sebepÇözüm
write(90) verdiğim hâlde yavaşça dönüyorVarsayılan ölçek 1472 µs üretiyor ya da durma trimpotu ayarsızattach(pin, 1000, 2000) ya da writeMicroseconds(1500) kullan, trimpotu ayarla
Servo hiç dönmüyorSinyal pini yanlış, GND ortak değil ya da ürün aslında konum servosuPin numarasını ve GND bağlantısını kontrol et, ürünün continuous rotation olduğundan emin ol
Servo titriyor, Arduino resetleniyorUSB beslemesi akım tepelerini karşılayamıyorServoları harici 5 V'tan besle, GND'leri birleştir, 470 µF kondansatör ekle
Darbeyi 1000 µs'den 1200 µs'ye çekince hız neredeyse değişmiyorUçlara yakın bölgede servo zaten tam hızdadır, hız doyuma giderHassas hız için 1500 ± 300 µs aralığını kullan
Robot düz gitmiyorİki servonun hızı ve durma noktası farklıHer servoyu ayrı kalibre et, hızlı olanın katsayısını azalt
Servo ısınıyor, vınlıyor ama dönmüyorMil kilitli ya da yük çok ağırEngeli kaldır, yükü azalt; kilitlenme dişlileri ve motoru bozar
ESP32'de derleme hatası ya da sinyal yokAVR'ye özel Servo kütüphanesi kullanılmış ya da GPIO 34–39 seçilmişESP32Servo kütüphanesini kur, çıkış verebilen bir GPIO seç

FS90R, sürekli dönen bir mekanizmayı motor sürücüsüne uğraşmadan tek bir pinle kontrol etmenin en kolay yoludur: 1500 µs'de durur, iki yöne istediğin hızda döner ve küçük robotlar için hazır bir tekerlek motorudur. Durma noktasını bir kez ayarlayıp konum kontrolü gerektiren işlerde normal servoya ya da step motora geçmeyi unutmazsan uzun süre sorunsuz çalışır. BlueGrays uygulamasında servo kullanımı, potansiyometre ve joystick ile servo kontrolü, step motordan 360 derece servo yapımı ve robot araba projelerini devre şemaları ve hazır kodlarıyla adım adım bulabilirsin.

Sıkça sorulan sorular

360 derece servo nasıl durdurulur?

FS90R gibi sürekli dönüş servoları 1500 µs darbe aldığında durur; Arduino'da writeMicroseconds(1500) ya da attach(pin, 1000, 2000) ile bağladıktan sonra write(90) kullanılır. Bu değerde hâlâ yavaşça dönüyorsa gövdedeki küçük trimpotu tornavidayla ayarla ya da kodda servonun gerçekten durduğu değeri kullan.

360 derece servo ile normal servo arasındaki fark nedir?

Normal servo gelen sinyale göre belli bir açıya gider ve orada kalır, çünkü içindeki potansiyometre milin konumunu ölçer. 360 derece sürekli dönüş servosunda bu geri besleme yoktur; sinyal açıyı değil dönüş hızını ve yönünü belirler ve servo sınırsız döner.

360 derece servo ile açı kontrolü yapılabilir mi?

Hayır. FS90R milin nerede olduğunu bilmez, bu yüzden belirli bir açıya gidip duramaz. Süreye göre döndürmek yaklaşık sonuç verir ama gerilim ve yükle değişir. Açı gerekiyorsa normal bir servo, step motor ya da enkoderli bir motor kullanmalısın.

FS90R kaç volt ile çalışır?

FS90R 4,8–6 V arasında çalışır; Arduino projelerinde genellikle 5 V ile beslenir. Sinyal hattı hem 5 V hem 3,3 V seviyesini kabul ettiği için ESP32 ve Raspberry Pi Pico ile de doğrudan kullanılabilir, ancak besleme yine 5 V olmalıdır.

Arduino'ya kaç tane FS90R bağlanabilir?

Servo kütüphanesi Arduino Uno'da 12 servoya kadar destekler, ama asıl sınır akımdır. Her FS90R yük altında birkaç yüz miliamper, kilitlenmede 800 mA'e kadar çekebileceği için ikiden fazla servoyu mutlaka harici bir 5 V kaynaktan besle ve GND'leri birleştir.

SG90 servo 360 derece dönen servoya çevrilebilir mi?

Evet, ama kalıcı bir değişikliktir. Servoyu açıp dişlideki mekanik durdurucuyu keser ve potansiyometreyi iki eşit dirençle ya da orta konumda sabitlenmiş hâliyle milden ayırırsın. Sonuç FS90R gibi çalışır, ancak garanti biter ve servo bir daha açı tutamaz; hazır bir FS90R almak genellikle daha zahmetsizdir.

Tüm projeleri gör
Servo Motor Kullanım
#35Başlangıç
Premium

Servo Motor Kullanım

Küçük bir servo motorun kolu sırayla üç konuma döner: en başa, tam ortaya ve en sona, her durakta iki saniye bekleyerek. Arduino motora hangi açıda durması gerektiğini söyler, motor da oraya gidip ora

4.7(48)
67
Potansiyometre İle Servo Motor Kullanım
#36Başlangıç
Premium

Potansiyometre İle Servo Motor Kullanım

Potansiyometrenin düğmesini çevirdikçe servo motorun kolu da onunla birlikte döner; düğmenin bir ucu sıfır dereceye, öbür ucu yarım tura karşılık gelir. Arduino düğmenin konumunu sürekli okur ve servo

4.6(37)
52
ESP32 Servo Motor (Potansiyometre Kontrolü)
#118Orta
Premium

ESP32 Servo Motor (Potansiyometre Kontrolü)

Bu projede potansiyometre ile SG90 servo motoru kontrol ediyoruz. Potansiyometreden okunan analog değeri 0-180 derece aralığına map'leyerek servo açısını ayarlıyoruz. ESP32Servo kütüphanesi, ESP32'nin çıkış verebilen uygun GPIO'larında servo sinyali üretir; bu projede GPIO 18 kullanılır. Bu, robotik kollar, kamera gimbal'ları ve otomatik kapı mekanizmaları için temel bir kontrol yöntemidir.

4.3(29)
42
Joystick İle Servo Kontrol
#60Orta
Premium

Joystick İle Servo Kontrol

Bir oyun kolu çubuğuyla iki motoru yönet, tıpkı bir güvenlik kamerasını çevirir gibi. Çubuğu sağa sola ittiğinde alttaki servo motor yavaşça döner, yukarı aşağı ittiğinde üstteki servo başını kaldırıp

4.7(42)
58
Step Motordan 360 Derecelik Servo Motor Yapımı
#68Orta
Premium

Step Motordan 360 Derecelik Servo Motor Yapımı

Sıradan bir step motora istediğin açıya gitmeyi öğret, üstelik tam bir tur boyunca. Arduino hangi açıya kaç adım düştüğünü hesaplar; motor sırayla 0, 90, 45, 180, 135 ve 360 dereceye gider, her durakt

4.5(22)
32
L298N ile Bluetooth Kontrollü Araba
#80İleri
Premium

L298N ile Bluetooth Kontrollü Araba

Telefonunu kumandaya çevirip kendi robot arabanı sür. Arduino, Bluetooth modülü üzerinden telefondaki bir kumanda uygulamasından gelen komutları alır ve motor sürücüyle tekerlekleri döndürür; araba il

5.0(38)
65
Engelden Kaçan Robot
#81İleri
Premium

Engelden Kaçan Robot

Kendi yolunu bulan akıllı bir araç yapmaya ne dersin? Engelden Kaçan Robot, önündeki ultrasonik sensör sayesinde çevresini sürekli tarar. Bir engelle karşılaştığında durur, servo motoruyla sağına ve s

5.0(38)
49