Komponen · 9 mnt baca

Servo 360 Derajat (FS90R): Kecepatan dan Arah dengan Arduino

Bagaimana cara kerja servo 360 derajat FS90R? Berhenti dengan write(90), kendali kecepatan dan arah, trimpot titik berhenti, penggunaan sebagai roda robot, serta kode PWM ESP32 dan Pico.

Servo 360 derajat memang disebut servo, tetapi sebenarnya merupakan motor kecil bergearbox yang terus berputar, alih-alih bergerak ke suatu sudut lalu berhenti di sana. Yang paling dikenal adalah FEETECH FS90R: ukuran dan tiga kabelnya sama dengan SG90, tetapi sinyal yang kamu kirim menentukan kecepatan dan arah putarannya, bukan sudut. Karena bisa langsung dihubungkan ke pin Arduino tanpa driver motor, servo ini sangat praktis untuk roda robot kecil, meja putar, dan perangkat seperti pemberi makan hewan peliharaan.

Dalam panduan ini kamu akan mempelajari perbedaan bagian dalam FS90R dengan servo biasa, alasan perintah write(90) menghentikan motor, cara mengatur kecepatan dan arah melalui lebar pulsa, serta cara memakai trimpot titik berhenti untuk mengatasi servo yang terus berputar pelan. Lalu kamu akan menggerakkan robot kecil dengan dua FS90R, mengendalikan kecepatan dengan potensiometer, dan mencoba hal yang sama pada ESP32 dan Raspberry Pi Pico. Terakhir, kamu akan memahami mengapa servo ini tidak bisa mengendalikan posisi dan apa yang sebaiknya dipilih sebagai gantinya.

Servo putaran kontinu 360 derajat FS90R
Servo putaran kontinu FS90R: seukuran SG90, berat 9 gram. Sinyal menentukan kecepatan dan arah putaran, bukan sudut.

Apa itu servo 360 derajat dan apa bedanya dengan servo biasa?

Servo biasa berisi motor DC kecil, gearbox, rangkaian kendali, dan potensiometer yang terhubung ke poros output. Rangkaian kendali membandingkan sudut yang diminta oleh pulsa masuk dengan sudut sebenarnya yang dibaca dari potensiometer, lalu memutar motor hingga selisihnya nol; begitu poros mencapai target, motor berhenti. Pada servo putaran kontinu, hubungan umpan balik ini diputus: potensiometer dilepas dari poros dan ditetapkan pada posisi tengahnya, sementara pembatas mekanis pada roda gigi dihilangkan. Rangkaian tetap menghitung “selisih antara posisi target dan posisi sebenarnya”, tetapi karena posisi sebenarnya tidak pernah berubah, selisih itu tidak pernah habis. Hasilnya, semakin besar selisihnya, semakin cepat motor berputar, dan tanda positif atau negatif selisih tersebut menentukan arahnya.

FiturSG90 (servo 180°)FS90R (putaran kontinu 360°)
Apa yang diatur oleh sinyal?Sudut poros (0–180°)Kecepatan dan arah putaran
Pulsa 1500 µsBergerak ke tengah (90°) dan tetap di sanaBerhenti
1000 µs / 2000 µsBergerak ke salah satu ujungKecepatan penuh ke salah satu arah
Umpan balik internalPotensiometer terhubung ke porosTidak ada; potensiometer hanya mengatur titik berhenti
Pembatas mekanisAdaTidak ada, berputar tanpa henti
Mempertahankan posisiMempertahankan sudutnya ketika dibebaniTidak bisa; tidak mengetahui posisi berhentinya
Penggunaan umumLengan, tutup, kemudiRoda, meja putar, pengumpan ulir

Spesifikasi FS90R

FiturNilai
Tegangan operasi4,8–6 V
Kecepatan tanpa bebanSekitar 100–110 rpm pada 4,8 V, sekitar 130 rpm pada 6 V
Torsi ketika macet (stall)Sekitar 1,3 kg·cm pada 4,8 V, sekitar 1,5 kg·cm pada 6 V
Arus100–130 mA tanpa beban, hingga 800 mA pada 6 V ketika macet
Sinyal kendaliPWM 50 Hz; berhenti pada 1500 µs, rentang yang bisa dipakai sekitar 900–2100 µs
Level sinyalBekerja dengan sinyal 5 V dan 3,3 V
ArahDi atas 1500 µs ke satu arah, di bawahnya ke arah sebaliknya (dilihat dari poros output, di atas 1500 µs berlawanan arah jarum jam)
Berat dan ukuran9 g, sekitar 23 × 12 × 22 mm (bodi sama dengan SG90)
KabelCokelat GND, merah VCC, oranye sinyal
Tidak semua produk yang disebut penjual sebagai “servo 360 derajat” adalah servo putaran kontinu. Beberapa servo mempertahankan posisi antara 0 dan 360° (atau 0–270°); servo ini tidak berputar tanpa henti seperti FS90R, tetapi bergerak ke sudut yang diminta lalu berhenti. Cari keterangan putaran kontinu pada deskripsi produk. Selain itu, memaksa FS90R dalam kondisi macet dalam waktu lama, baik ditahan dengan tangan maupun terhalang rintangan, akan merusak motor dan roda gigi plastiknya.

Pengkabelan FS90R: Arduino Uno, ESP32, dan Pico

Kabel servoFungsiArduino UnoESP32Raspberry Pi Pico
CokelatGNDGNDGNDGND
MerahCatu daya 4,8–6 V5V (satu servo) atau catu daya eksternal 5 VVIN / 5V atau catu daya eksternal 5 VVBUS (5 V) atau catu daya eksternal 5 V
OranyeSinyal PWMD9GPIO 18GP15

Pin 5V Uno cukup untuk menjalankan satu FS90R tanpa beban. Ketika roda servo menyentuh tanah atau dua servo mulai bergerak bersamaan, arus melonjak hingga beberapa ratus miliampere; tegangan USB turun, Arduino bisa reset atau servo bergetar. Jadi pada robot, beri daya servo dari sumber 5 V terpisah (4 sel NiMH, regulator 5 V, atau catu daya yang sesuai), selalu hubungkan GND catu daya servo ke GND Arduino, dan tambahkan kapasitor 470 µF di dekat kabel servo. Sinyal 3,3 V dari ESP32 dan Pico cukup untuk FS90R; servo itu sendiri tetap harus diberi daya 5 V, bukan dari pin 3.3V.

write(90) = berhenti: bagaimana lebar pulsa menentukan kecepatan?

Sinyal kendali servo berupa pulsa yang dikirim 50 kali per detik (setiap 20 ms), dan yang penting adalah durasi pulsa tersebut. Untuk FS90R, 1500 µs berarti “berhenti”. Ketika pulsa lebih panjang dari 1500 µs, servo semakin cepat ke satu arah; ketika lebih pendek, servo semakin cepat ke arah sebaliknya; kecepatan penuh tercapai sekitar 1000 µs dan 2000 µs, dan di luar itu kecepatannya hampir tidak bertambah. Karena itulah write(90) dalam library Servo Arduino berarti berhenti, sedangkan write(0) dan write(180) berarti kecepatan penuh ke masing-masing arah. Ada satu hal kecil yang perlu diperhatikan: secara default library memetakan 0–180 ke rentang 544–2400 µs, sehingga write(90) sebenarnya menghasilkan 1472 µs. Selisih itu bisa cukup untuk membuat servo tetap berputar pelan meski memakai write(90). Solusinya adalah mempersempit rentang dengan attach(9, 1000, 2000) atau langsung memakai writeMicroseconds(1500).

PulsaPadanan Servo.write (dengan attach(pin, 1000, 2000))Perilaku FS90R
1000 µswrite(0)Kecepatan penuh, searah jarum jam
1300 µswrite(54)Kecepatan sedang, searah jarum jam
1461 µswrite(83)Sangat pelan, searah jarum jam
1500 µswrite(90)Berhenti (jika trimpot diatur dengan benar)
1538 µswrite(97)Sangat pelan, berlawanan arah jarum jam
1700 µswrite(126)Kecepatan sedang, berlawanan arah jarum jam
2000 µswrite(180)Kecepatan penuh, berlawanan arah jarum jam

Sketch pertama: maju, berhenti, mundur

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}

Sketch menghubungkan servo ke D9 dan, dengan attach(9, 1000, 2000), memetakan skala write() ke rentang yang benar-benar dipakai FS90R, sehingga write(90) tepat 1500 µs. Kecepatan tidak mengikuti pulsa secara linear: di sekitar 1500 µs terdapat zona mati selebar beberapa puluh mikrodetik tempat servo tidak bergerak, dalam rentang 1500 ± 300 µs kecepatan naik dengan cepat, dan mendekati ujung rentang kecepatannya hampir tetap. Jika kamu menginginkan gerakan pelan dan presisi, gunakan nilai yang dekat dengan 1500 µs. Konsep umum lebar pulsa dibahas dalam Apa Itu PWM?, dan kendali sudut dengan servo biasa dalam Apa Itu Motor Servo?.

Mengatur trimpot titik berhenti (tengah)

  1. Upload sketch kalibrasi di bawah ini; servo menerima sinyal 1500 µs dan biasanya akan berhenti.
  2. Jika servo berputar pelan, cari lubang kecil di sisi casing dekat keluarnya kabel; di dalamnya terdapat trimpot yang mengatur titik berhenti.
  3. Putar trimpot sedikit saja dengan obeng pipih atau obeng Phillips kecil; jika servo melambat, arah putaranmu sudah benar.
  4. Lanjutkan sedikit demi sedikit hingga servo berhenti sepenuhnya dan dengung pelan pun menghilang. Trimpot sangat sensitif; bahkan seperempat putaran sudah terlalu banyak.
  5. Jika kamu tidak ingin menyentuh trimpot, kirim + dan - dari Serial Monitor untuk menemukan nilai pulsa yang membuat servo berhenti, lalu gunakan nilai tersebut sebagai pengganti 1500 dalam kodemu.
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}
Titik berhenti bisa bergeser beberapa mikrodetik akibat tegangan catu daya dan suhu; jangan heran jika servo mulai berputar pelan lagi ketika baterai melemah. Untuk jeda panjang ketika servo harus benar-benar diam, kamu bisa memutus sinyal sepenuhnya dengan detach(): FS90R tanpa sinyal berhenti dan hampir tidak menarik arus. Cukup panggil attach() lagi ketika servo perlu bergerak.

Kendali kecepatan dan arah dengan potensiometer

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}

Dengan potensiometer terhubung di antara 5V, A0, dan GND, posisi tengah berarti berhenti, memutar ke kanan berarti maju, dan memutar ke kiri berarti mundur. Kode menentukan zona mati sebesar ±40 langkah di tengah, sehingga servo tetap berhenti dengan andal meskipun potensiometer tidak tepat di tengah atau pembacaannya sedikit berfluktuasi. Di luar zona mati, nilai dipetakan ke 1540–2000 µs atau 1460–1000 µs, sehingga sedikit putaran kenop membuat servo berputar pelan dan putaran penuh menghasilkan kecepatan penuh. Kamu bisa menerapkan konsep yang sama dengan joystick; pengkabelan potensiometer ada dalam Apa Itu Potensiometer?.

FS90R sebagai roda robot kecil

FS90R sangat populer untuk robot karena sederhana: gearbox dan rangkaian driver sudah terpasang di dalamnya, jadi kamu tidak memerlukan driver motor, H-bridge, atau encoder terpisah; satu pin sinyal per roda sudah cukup. Kedua servo dipasang di kedua sisi sasis dengan posisi saling bercermin, sehingga untuk maju salah satunya harus berputar searah jarum jam dan yang lain berlawanan arah jarum jam. Kode di bawah menangani hal ini di dalam fungsi surus(); kamu cukup memberikan kecepatan antara -100 dan +100. Roda 60 mm yang berputar pada 130 rpm dengan 6 V menempuh sekitar 0,4 meter per detik; pada 4,8 V kecepatannya turun menjadi sekitar 0,3 m/dtk.

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}

Dua servo tidak pernah berputar dengan kecepatan yang persis sama; jika robotmu menyimpang ke satu sisi alih-alih bergerak lurus, kalibrasikan nilai berhenti setiap servo (DUR_SOL, DUR_SAG) secara terpisah dan kurangi sedikit faktor servo yang lebih cepat. Torsi FS90R sebesar 1,5 kg·cm cocok untuk robot kecil dengan berat tidak lebih dari beberapa ratus gram; untuk sasis lebih berat atau roda besar, motor DC dengan L298N atau motor bergearbox merupakan pilihan yang lebih baik. Untuk baterai, 4 sel NiMH (4,8 V) memberikan tegangan ideal; 4 sel alkalin baru bisa mencapai 6,4 V dan melampaui batas servo. Untuk pembuatan sasis dan pemasangan sensor yang lengkap, lihat Mobil Robot Arduino.

Kamu tidak bisa mengendalikan posisi dengan FS90R. Karena tidak ada lagi komponen di dalam servo yang mengukur posisi poros, kamu tidak bisa memerintahkan “putar 90 derajat lalu berhenti”; gerakan berbasis waktu seperti “putar selama 1 detik” juga memberikan hasil berbeda setiap kali, bergantung pada tegangan baterai, beban, dan suhu. Jika kamu perlu mencapai sudut tertentu, gunakan servo biasa, motor stepper untuk putaran presisi langkah demi langkah, atau tambahkan encoder ke roda untuk menghitung putarannya. Pemilihan motor dan kapan menggunakannya dibahas dalam Motor DC vs Servo vs Stepper.

FS90R dengan ESP32

Library Servo Arduino tidak bekerja pada ESP32; sebagai gantinya, instal library ESP32Servo dari Library Manager. Penggunaannya hampir sama, hanya saja kamu perlu mengatur 50 Hz secara eksplisit dengan setPeriodHertz(50). Hampir semua GPIO yang bisa menghasilkan PWM dapat dipakai untuk sinyal; hanya GPIO 34–39 yang khusus input yang tidak bisa digunakan untuk ini. Hubungkan kabel merah servo ke pin VIN (USB 5 V) ESP32 atau catu daya eksternal 5 V, bukan ke pin 3V3. Kode di bawah menaikkan kecepatan servo secara bertahap dari diam ke kecepatan penuh, lalu memperlambat dan membalik arahnya; Serial Monitor menampilkan durasi pulsa pada setiap langkah.

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}

FS90R dengan Raspberry Pi Pico dan MicroPython

Pada Pico kamu tidak memerlukan library tambahan: atur objek machine.PWM ke 50 Hz dan berikan durasi pulsa dalam nanodetik dengan duty_ns(). Fungsi hiz() dalam kode mengubah nilai antara -100 dan +100 menjadi 1000–2000 µs; cukup masukkan nilai berhenti yang kamu temukan ketika melakukan kalibrasi sendiri pada baris DUR_US. Ketika program dihentikan dengan Ctrl+C, servo juga dihentikan; jika tidak, PWM terus berjalan dengan nilai terakhir dan roda terus berputar. Beri daya servo dari pin VBUS Pico (5 V dari USB). Jika kamu baru mengenal MicroPython, baca dasar-dasar MicroPython terlebih dahulu.

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()

Ide proyek servo 360 derajat

  • Robot pengikut garis mini: Sasis ringan dengan dua FS90R dan dua sensor inframerah; logikanya dibahas dalam Robot Pengikut Garis.
  • Robot penghindar rintangan: Tambahkan HC-SR04 di bagian depan agar robot berputar di tempat dan berganti arah ketika mendeteksi rintangan.
  • Mobil yang dikendalikan ponsel: Kirim perintah dari ponselmu dengan Modul Bluetooth HC-05.
  • Pemberi makan hewan peliharaan: Biarkan FS90R memutar ulir pengumpan agar makanan jatuh pada waktu yang ditentukan oleh timer.
  • Meja putar pajangan: Platform yang berputar sangat pelan untuk foto produk atau pengambilan gambar time-lapse; atur kecepatan dengan nilai yang dekat dengan 1500 µs.
  • Kerekan kecil atau penarik tirai: Gulung tali ringan, dengan dua sakelar batas di kedua ujung untuk menghentikan motor pada posisi yang tepat.

Masalah umum dan solusinya

GejalaKemungkinan penyebabSolusi
Tetap berputar pelan meski memakai write(90)Skala default menghasilkan 1472 µs atau trimpot titik berhenti tidak tepatGunakan attach(pin, 1000, 2000) atau writeMicroseconds(1500), atur trimpot
Servo sama sekali tidak berputarPin sinyal salah, GND tidak disatukan, atau produknya sebenarnya servo posisiPeriksa nomor pin dan koneksi GND, pastikan servo tersebut adalah servo putaran kontinu
Servo bergetar dan Arduino resetDaya USB tidak mampu memenuhi lonjakan arusBeri daya servo dari catu daya eksternal 5 V, satukan GND, tambahkan kapasitor 470 µF
Mengubah pulsa dari 1000 µs ke 1200 µs hampir tidak mengubah kecepatanDi dekat ujung rentang servo sudah mencapai kecepatan penuh; kecepatan mencapai titik jenuhUntuk kendali kecepatan yang halus, gunakan rentang 1500 ± 300 µs
Robot tidak bergerak lurusKedua servo berbeda kecepatan dan titik berhentiKalibrasikan setiap servo secara terpisah, kurangi faktor servo yang lebih cepat
Servo panas dan mendengung tetapi tidak berputarPoros terhalang atau beban terlalu beratSingkirkan penghalang, kurangi beban; kondisi macet merusak roda gigi dan motor
Error kompilasi atau tidak ada sinyal pada ESP32Memakai library Servo khusus AVR atau memilih GPIO 34–39Instal library ESP32Servo, pilih GPIO yang bisa menjadi output

FS90R adalah cara termudah mengendalikan mekanisme yang berputar terus-menerus dengan satu pin tanpa driver motor: servo berhenti pada 1500 µs, berputar ke dua arah dengan kecepatan yang kamu inginkan, dan merupakan motor roda siap pakai untuk robot kecil. Atur titik berhenti sekali, ingat untuk beralih ke servo biasa atau motor stepper untuk pekerjaan yang membutuhkan kendali posisi, dan servo akan bekerja tanpa masalah dalam waktu lama. Dalam aplikasi BlueGrays kamu akan menemukan dasar-dasar servo, kendali servo dengan potensiometer dan joystick, pembuatan servo 360 derajat dari motor stepper, serta proyek mobil robot, lengkap dengan skema rangkaian langkah demi langkah dan kode siap pakai.

Pertanyaan umum

Bagaimana cara menghentikan servo 360 derajat?

Servo putaran kontinu seperti FS90R berhenti ketika menerima pulsa 1500 µs; pada Arduino kamu memakai writeMicroseconds(1500), atau write(90) setelah menghubungkannya dengan attach(pin, 1000, 2000). Jika servo masih berputar pelan pada nilai tersebut, atur trimpot kecil di casing dengan obeng atau gunakan nilai yang benar-benar membuat servomu berhenti dalam kode.

Apa perbedaan servo 360 derajat dengan servo biasa?

Servo biasa bergerak ke sudut tertentu sesuai sinyal dan tetap di sana, karena potensiometer di dalamnya mengukur posisi poros. Servo putaran kontinu 360 derajat tidak memiliki umpan balik semacam itu; sinyal menentukan kecepatan dan arah, bukan sudut, dan servo berputar tanpa henti.

Bisakah servo 360 derajat mengendalikan sudut?

Tidak. FS90R tidak mengetahui posisi porosnya, sehingga tidak bisa bergerak ke sudut tertentu lalu berhenti. Memutarnya selama waktu tertentu memberikan hasil perkiraan, tetapi hasilnya berubah mengikuti tegangan dan beban. Jika kamu membutuhkan sudut tertentu, gunakan servo biasa, motor stepper, atau motor dengan encoder.

Pada tegangan berapa FS90R bekerja?

FS90R bekerja pada 4,8–6 V; dalam proyek Arduino biasanya diberi daya 5 V. Jalur sinyalnya menerima level 5 V maupun 3,3 V, sehingga bisa langsung dipakai dengan ESP32 dan Raspberry Pi Pico, tetapi catu dayanya tetap harus 5 V.

Berapa banyak FS90R yang bisa kuhubungkan ke Arduino?

Library Servo mendukung hingga 12 servo pada Arduino Uno, tetapi batas sebenarnya adalah arus. Setiap FS90R bisa menarik beberapa ratus miliampere ketika dibebani dan hingga 800 mA ketika macet, jadi selalu beri daya lebih dari dua servo dari catu daya eksternal 5 V dan satukan GND-nya.

Bisakah SG90 diubah menjadi servo 360 derajat?

Bisa, tetapi perubahannya permanen. Kamu membuka servo, memotong pembatas mekanis pada roda gigi, dan melepaskan potensiometer dari poros, lalu menggantinya dengan dua resistor bernilai sama atau menetapkannya pada posisi tengah. Hasilnya bekerja seperti FS90R, tetapi garansi hilang dan servo tidak akan pernah bisa mempertahankan sudut lagi; membeli FS90R siap pakai biasanya lebih praktis.

Lihat semua proyek
Menggunakan Motor Servo
#35Pemula
Premium

Menggunakan Motor Servo

Lengan motor servo kecil berputar ke tiga posisi bergantian: penuh ke awal, tepat ke tengah, dan penuh ke akhir, menunggu dua detik di setiap perhentian. Arduino memberi tahu motor sudut mana yang har

4.7(48)
67
Menggerakkan Motor Servo dengan Potensiometer
#36Pemula
Premium

Menggerakkan Motor Servo dengan Potensiometer

Ketika kamu memutar kenop potensiometer, lengan motor servo ikut berputar: satu ujung kenop berarti nol derajat, ujung lainnya berarti setengah putaran. Arduino terus membaca posisi kenop dan servo la

4.6(37)
52
Motor Servo ESP32 (Kendali Potensiometer)
#118Menengah
Premium

Motor Servo ESP32 (Kendali Potensiometer)

Di proyek ini, kita mengendalikan motor servo SG90 memakai potensiometer. Kita mengatur sudut servo dengan memetakan nilai analog yang dibaca dari potensiometer ke rentang 0–180 derajat. Library ESP32Servo menghasilkan sinyal servo di pin GPIO ESP32 yang sesuai dan bisa menjadi output; proyek ini memakai GPIO 18. Ini metode kendali dasar untuk lengan robot, gimbal kamera, dan mekanisme pintu otomatis.

4.3(29)
42
Kendali Servo dengan Joystick
#60Menengah
Premium

Kendali Servo dengan Joystick

Arahkan dua motor dengan joystick, persis seperti memutar kamera keamanan. Dorong tuas ke kiri atau kanan dan servo bawah berputar perlahan, dorong ke atas atau bawah dan servo atas mendongak dan menu

4.7(42)
58
Servo 360 Derajat dari Motor Stepper
#68Menengah
Premium

Servo 360 Derajat dari Motor Stepper

Ajari motor stepper biasa untuk pergi ke sudut mana pun yang kamu mau, satu lingkaran penuh. Arduino menghitung berapa langkah yang dibutuhkan setiap sudut; motor bergerak ke 0, 90, 45, 180, 135, dan

4.5(22)
32
Mobil Kendali Bluetooth dengan L298N
#80Mahir
Premium

Mobil Kendali Bluetooth dengan L298N

Jadikan ponselmu remote dan kendarai mobil robotmu sendiri. Arduino menerima perintah dari aplikasi remote control di ponselmu lewat modul Bluetooth dan memutar roda dengan driver motor; mobil maju, m

5.0(38)
65
Robot Penghindar Rintangan
#81Mahir
Premium

Robot Penghindar Rintangan

Bagaimana kalau membuat kendaraan pintar yang mencari jalannya sendiri? Robot Penghindar Rintangan terus memindai sekelilingnya berkat sensor ultrasonik di depannya. Ketika menemui rintangan, robot be

5.0(38)
49