360-Grad-Servo (FS90R): Geschwindigkeit und Richtung steuern
Wie funktioniert der 360-Grad-Servo FS90R? Stopp mit write(90), Tempo und Richtung, Stopp-Trimmer, Einsatz als Roboterrad, PWM-Code für ESP32 und Pico.
Ein 360-Grad-Servo heißt zwar Servo, ist aber in Wirklichkeit ein kleiner Getriebemotor, der sich dauerhaft dreht, statt einen Winkel anzufahren und dort stehen zu bleiben. Der bekannteste ist der FEETECH FS90R: Er hat dieselbe Größe und dieselben drei Kabel wie ein SG90, doch das Signal, das du sendest, legt nicht einen Winkel fest, sondern Drehgeschwindigkeit und Drehrichtung. Weil er ohne Motortreiber direkt an einen Arduino-Pin passt, ist er für kleine Roboterräder, Drehteller und Futterautomaten sehr praktisch.
In dieser Anleitung lernst du, was im FS90R anders ist als in einem normalen Servo, warum der Befehl write(90) den Motor anhält, wie du Geschwindigkeit und Richtung über die Pulsbreite einstellst und wie du mit dem Stopp-Trimmer einen Servo korrigierst, der von selbst weiterkriecht. Danach steuerst du mit zwei FS90R einen kleinen Roboter, regelst die Geschwindigkeit mit einem Potentiometer und probierst dasselbe mit ESP32 und Raspberry Pi Pico. Zum Schluss siehst du, warum dieser Servo keine Positionsregelung kann und was du stattdessen nimmst.

Was ist ein 360-Grad-Servo und was unterscheidet ihn vom normalen Servo?
Ein normaler Servo enthält einen kleinen Gleichstrommotor, ein Getriebe, eine Steuerschaltung und ein Potentiometer, das mit der Abtriebswelle verbunden ist. Die Steuerung vergleicht den vom Puls verlangten Winkel mit dem tatsächlichen Winkel des Potentiometers und dreht den Motor, bis die Differenz null ist; erreicht die Welle das Ziel, bleibt sie stehen. Beim Endlosservo ist diese Rückmeldung getrennt: Das Potentiometer ist von der Welle gelöst und in Mittelstellung fixiert, und der mechanische Anschlag im Getriebe fehlt. Die Schaltung berechnet weiterhin die „Differenz zwischen Soll- und Istposition“, doch weil sich die Istposition nie ändert, schließt sich die Differenz nie. Ergebnis: Je größer die Differenz, desto schneller dreht der Motor, und ihr Vorzeichen bestimmt die Richtung.
| Eigenschaft | SG90 (180°-Servo) | FS90R (360°-Endlosservo) |
|---|---|---|
| Was bestimmt das Signal? | Den Wellenwinkel (0–180°) | Drehgeschwindigkeit und Richtung |
| 1500-µs-Puls | Fährt in die Mitte (90°) und bleibt dort | Hält an |
| 1000 µs / 2000 µs | Fährt an das eine oder andere Ende | Volle Geschwindigkeit in die eine oder andere Richtung |
| Interne Rückmeldung | Mit der Welle verbundenes Potentiometer | Keine; das Potentiometer stellt nur den Stopppunkt ein |
| Mechanischer Anschlag | Ja | Nein, dreht endlos |
| Position halten | Hält seinen Winkel unter Last | Kann es nicht; weiß nicht, wo er angehalten hat |
| Typische Anwendung | Arme, Klappen, Lenkung | Räder, Drehteller, Schneckenförderer |
Technische Daten des FS90R
| Eigenschaft | Wert |
|---|---|
| Betriebsspannung | 4,8–6 V |
| Leerlaufdrehzahl | Bei 4,8 V etwa 100–110 U/min, bei 6 V etwa 130 U/min |
| Blockiermoment | Bei 4,8 V etwa 1,3 kg·cm, bei 6 V etwa 1,5 kg·cm |
| Strom | Im Leerlauf 100–130 mA, blockiert bei 6 V bis 800 mA |
| Steuersignal | 50-Hz-PWM; Stopp bei 1500 µs, nutzbarer Bereich etwa 900–2100 µs |
| Signalpegel | Funktioniert mit 5-V- und 3,3-V-Signalen |
| Drehrichtung | Über 1500 µs in die eine, darunter in die andere Richtung (von der Welle aus gesehen über 1500 µs gegen den Uhrzeigersinn) |
| Gewicht und Größe | 9 g, etwa 23 × 12 × 22 mm (gleiches Gehäuse wie der SG90) |
| Kabel | Braun GND, Rot VCC, Orange Signal |
FS90R anschließen: Arduino Uno, ESP32 und Pico
| Servokabel | Funktion | Arduino Uno | ESP32 | Raspberry Pi Pico |
|---|---|---|---|---|
| Braun | GND | GND | GND | GND |
| Rot | Versorgung 4,8–6 V | 5V (ein Servo) oder externe 5 V | VIN / 5V oder externe 5 V | VBUS (5 V) oder externe 5 V |
| Orange | PWM-Signal | D9 | GPIO 18 | GP15 |
Für einen einzelnen FS90R ohne Last genügt der 5V-Pin des Uno. Sobald das Rad den Boden berührt oder zwei Servos gleichzeitig anlaufen, steigt der Strom auf einige Hundert Milliampere; die USB-Spannung bricht ein, der Arduino startet womöglich neu oder die Servos zittern. Versorge die Servos im Roboter deshalb aus einer eigenen 5-V-Quelle (4 NiMH-Akkus, ein 5-V-Regler oder ein passendes Netzteil), verbinde die GND der Servoversorgung unbedingt mit der GND des Arduino und setz einen 470-µF-Kondensator nahe an die Servokabel. Das 3,3-V-Signal von ESP32 und Pico reicht für den FS90R; der Servo selbst braucht aber trotzdem 5 V, nicht den 3,3-V-Pin.
write(90) = Stopp: Wie wird aus der Pulsbreite Geschwindigkeit?
Das Servo-Steuersignal ist ein Puls, der 50-mal pro Sekunde (alle 20 ms) gesendet wird; entscheidend ist seine Länge. Beim FS90R bedeutet 1500 µs „Stopp“. Wird der Puls länger als 1500 µs, beschleunigt der Servo in die eine Richtung, wird er kürzer, in die andere; etwa bei 1000 µs und 2000 µs erreicht er volle Geschwindigkeit, darüber hinaus steigt sie kaum noch. Deshalb bedeutet write(90) in der Servo-Bibliothek des Arduino Stopp, write(0) und write(180) volle Geschwindigkeit in beide Richtungen. Hier lauert eine kleine Falle: Standardmäßig rechnet die Bibliothek 0–180 auf 544–2400 µs um, write(90) erzeugt also in Wahrheit 1472 µs. Diese Abweichung kann genügen, damit der Servo selbst bei write(90) langsam weiterkriecht. Abhilfe schafft attach(9, 1000, 2000), das den Bereich einengt, oder direkt writeMicroseconds(1500).
| Puls | Entsprechung in Servo.write (mit attach(pin, 1000, 2000)) | Verhalten des FS90R |
|---|---|---|
| 1000 µs | write(0) | Volle Geschwindigkeit, im Uhrzeigersinn |
| 1300 µs | write(54) | Mittlere Geschwindigkeit, im Uhrzeigersinn |
| 1461 µs | write(83) | Sehr langsam, im Uhrzeigersinn |
| 1500 µs | write(90) | Stopp (bei richtig eingestelltem Trimmer) |
| 1538 µs | write(97) | Sehr langsam, gegen den Uhrzeigersinn |
| 1700 µs | write(126) | Mittlere Geschwindigkeit, gegen den Uhrzeigersinn |
| 2000 µs | write(180) | Volle Geschwindigkeit, gegen den Uhrzeigersinn |
Erster Sketch: vorwärts, Stopp, rückwärts
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}Der Sketch hängt den Servo an D9 und bildet mit attach(9, 1000, 2000) die write()-Skala auf den Bereich ab, den der FS90R tatsächlich nutzt; so ergibt write(90) genau 1500 µs. Die Geschwindigkeit folgt dem Puls nicht linear: Direkt um 1500 µs liegt ein Totbereich von einigen zehn Mikrosekunden, in dem sich der Servo nicht bewegt, im Bereich 1500 ± 300 µs steigt die Geschwindigkeit schnell, zu den Enden hin bleibt sie fast konstant. Für langsame, feine Bewegungen bleibst du nahe an 1500 µs. Das Prinzip der Pulsbreite erklärt Was ist PWM, die Winkelsteuerung normaler Servos Was ist ein Servomotor.
Den Stopp-Trimmer (Mittelpunkt) einstellen
- Lade den Kalibrier-Sketch unten hoch; der Servo bekommt ein 1500-µs-Signal und sollte eigentlich stehen.
- Kriecht der Servo, suche das kleine Loch an der Gehäuseseite nahe dem Kabelausgang; darin sitzt der Trimmer, der den Stopppunkt festlegt.
- Dreh den Trimmer mit einem kleinen Schlitz- oder Kreuzschraubendreher nur ein winziges Stück; wird der Servo langsamer, stimmt die Richtung.
- Mach in kleinen Schritten weiter, bis der Servo ganz steht und selbst das leise Summen verschwindet. Der Trimmer ist sehr empfindlich, schon eine Vierteldrehung ist zu viel.
- Willst du den Trimmer nicht anfassen, sende + und - aus dem seriellen Monitor, finde den Pulswert, bei dem der Servo steht, und nutze ihn im Code statt 1500.
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}Geschwindigkeit und Richtung mit einem Potentiometer
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}Ist das Potentiometer zwischen 5V, A0 und GND angeschlossen, bedeutet die Mittelstellung Stopp, nach rechts drehen vorwärts und nach links rückwärts. Der Code legt in der Mitte eine Totzone von ±40 Schritten fest, damit der Servo sicher steht, auch wenn das Potentiometer nicht exakt mittig ist oder die Messwerte etwas schwanken. Außerhalb der Totzone wird der Wert auf 1540–2000 µs bzw. 1460–1000 µs abgebildet: Ein wenig gedreht läuft der Servo langsam, ganz aufgedreht mit voller Geschwindigkeit. Dieselbe Idee funktioniert mit einem Joystick; den Anschluss des Potentiometers zeigt Was ist ein Potentiometer.
Der FS90R als kleines Roboterrad
Der FS90R ist bei Robotern so beliebt, weil er einfach ist: Getriebe und Treiberschaltung sind eingebaut, du brauchst also keinen separaten Motortreiber, keine H-Brücke und keinen Encoder; ein Signalpin pro Rad genügt. Die beiden Servos sitzen spiegelbildlich an den Seiten des Chassis, daher muss sich für die Vorwärtsfahrt einer im und einer gegen den Uhrzeigersinn drehen. Der folgende Code erledigt das in der Funktion surus(); du gibst nur eine Geschwindigkeit zwischen -100 und +100 vor. Ein Rad mit 60 mm Durchmesser legt bei 130 U/min an 6 V etwa 0,4 Meter pro Sekunde zurück, bei 4,8 V sind es rund 0,3 m/s.
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}Zwei Servos drehen nie exakt gleich schnell; zieht dein Roboter zur Seite, statt geradeaus zu fahren, kalibriere den Stoppwert jedes Servos (DUR_SOL, DUR_SAG) einzeln und senke den Faktor des schnelleren etwas. Das Drehmoment von 1,5 kg·cm passt zu kleinen Robotern mit höchstens einigen Hundert Gramm Gesamtgewicht; für ein schwereres Chassis oder große Räder sind ein Gleichstrommotor mit L298N oder Getriebemotoren die bessere Wahl. Im Akkubetrieb liefern 4 NiMH-Zellen (4,8 V) die ideale Spannung; 4 frische Alkalibatterien kommen auf bis zu 6,4 V und können die Grenze des Servos überschreiten. Chassis und Sensoren komplett aufzubauen zeigt Arduino-Roboterauto bauen.
FS90R am ESP32
Die Servo-Bibliothek des Arduino läuft nicht auf dem ESP32; installiere stattdessen in der Bibliotheksverwaltung die Bibliothek ESP32Servo. Sie wird fast genauso benutzt, nur stellst du 50 Hz mit setPeriodHertz(50) ausdrücklich ein. Als Signalpin eignet sich nahezu jeder PWM-fähige GPIO; nur GPIO 34–39, die reine Eingänge sind, kommen nicht infrage. Schließ das rote Servokabel an den VIN-Pin (USB-5 V) des ESP32 oder an eine externe 5-V-Quelle an, nicht an 3V3. Der folgende Code beschleunigt den Servo sanft aus dem Stand auf volle Geschwindigkeit, bremst ihn dann ab und kehrt die Richtung um; im seriellen Monitor siehst du die Pulsdauer jedes Schritts.
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 mit Raspberry Pi Pico und MicroPython
Beim Pico brauchst du keine zusätzliche Bibliothek: Stell das Objekt machine.PWM auf 50 Hz und gib die Pulsdauer mit duty_ns() in Nanosekunden vor. Die Funktion hiz() im Code wandelt einen Wert zwischen -100 und +100 in 1000–2000 µs um; trag in die Zeile DUR_US nur den Stoppwert ein, den du bei deiner Kalibrierung ermittelt hast. Wird das Programm mit Strg+C beendet, hält auch der Servo an; sonst läuft die PWM mit dem letzten Wert weiter und das Rad dreht sich weiter. Versorge den Servo über den Pin VBUS des Pico (die 5 V vom USB). Bist du neu bei MicroPython, lies zuerst MicroPython-Grundlagen.
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()Projektideen mit dem 360-Grad-Servo
- Mini-Linienfolger: Ein leichtes Chassis mit zwei FS90R und zwei Infrarotsensoren; die Logik erklärt Linienfolger-Roboter.
- Hindernisvermeidender Roboter: Setz einen HC-SR04 vorn auf, damit er bei einem Hindernis auf der Stelle dreht und die Richtung wechselt.
- Per Handy gesteuertes Fahrzeug: Schick die Befehle über ein HC-05-Bluetooth-Modul vom Handy.
- Futterautomat: Der FS90R dreht eine Förderschnecke, und per Timer fällt zu festen Zeiten Futter heraus.
- Drehteller für Präsentationen: Eine sehr langsam drehende Plattform für Produktfotos oder Zeitraffer; die Geschwindigkeit stellst du mit Werten nahe 1500 µs ein.
- Kleine Seilwinde oder Vorhangzug: Eine leichte Schnur aufwickeln, zwei Endschalter an den Enden stoppen den Motor an der richtigen Stelle.
Häufige Fehler und Lösungen
| Symptom | Mögliche Ursache | Lösung |
|---|---|---|
| Er kriecht selbst bei write(90) langsam | Die Standardskala liefert 1472 µs oder der Stopp-Trimmer ist verstellt | attach(pin, 1000, 2000) oder writeMicroseconds(1500) verwenden, Trimmer einstellen |
| Der Servo dreht sich gar nicht | Falscher Signalpin, keine gemeinsame GND oder in Wahrheit ein Positionsservo | Pinnummer und GND-Verbindung prüfen, sicherstellen, dass es ein Endlosservo ist |
| Der Servo zittert, der Arduino startet neu | Die USB-Versorgung schafft die Stromspitzen nicht | Servos extern mit 5 V versorgen, GND verbinden, 470-µF-Kondensator ergänzen |
| Von 1000 µs auf 1200 µs ändert sich die Geschwindigkeit kaum | Nahe den Enden läuft der Servo schon mit voller Geschwindigkeit, sie geht in die Sättigung | Für feine Geschwindigkeit den Bereich 1500 ± 300 µs nutzen |
| Der Roboter fährt nicht geradeaus | Die beiden Servos unterscheiden sich in Geschwindigkeit und Stopppunkt | Jeden Servo einzeln kalibrieren, den Faktor des schnelleren senken |
| Der Servo wird warm und brummt, dreht aber nicht | Die Welle ist blockiert oder die Last zu schwer | Hindernis entfernen, Last verringern; Blockieren zerstört Zahnräder und Motor |
| Compilerfehler oder kein Signal am ESP32 | Die AVR-spezifische Servo-Bibliothek wurde genutzt oder GPIO 34–39 gewählt | Bibliothek ESP32Servo installieren, einen ausgabefähigen GPIO wählen |
Der FS90R ist der einfachste Weg, eine sich dauerhaft drehende Mechanik ohne Motortreiber mit einem einzigen Pin zu steuern: Bei 1500 µs steht er, er dreht in beide Richtungen mit beliebiger Geschwindigkeit und ist ein fertiger Radmotor für kleine Roboter. Stell den Stopppunkt einmal ein und nimm für Aufgaben mit Positionsregelung einen normalen Servo oder Schrittmotor, dann läuft er lange ohne Probleme. In der BlueGrays-App findest du Servo-Grundlagen, Servosteuerung mit Potentiometer und Joystick, einen 360-Grad-Servo aus einem Schrittmotor und Roboterauto-Projekte, jeweils mit Schaltplänen und fertigem Code Schritt für Schritt.
Häufige Fragen
Wie hält man einen 360-Grad-Servo an?
Endlosservos wie der FS90R halten bei einem 1500-µs-Puls an; am Arduino nutzt du writeMicroseconds(1500) oder write(90), nachdem du mit attach(pin, 1000, 2000) verbunden hast. Kriecht er bei diesem Wert noch, stell den kleinen Trimmer am Gehäuse mit einem Schraubendreher ein oder verwende im Code den Wert, bei dem dein Servo wirklich steht.
Was ist der Unterschied zwischen einem 360-Grad-Servo und einem normalen Servo?
Ein normaler Servo fährt je nach Signal einen bestimmten Winkel an und bleibt dort, weil sein internes Potentiometer die Wellenposition misst. Ein 360-Grad-Endlosservo hat diese Rückmeldung nicht; das Signal bestimmt Geschwindigkeit und Richtung statt eines Winkels, und der Servo dreht endlos.
Kann man mit einem 360-Grad-Servo Winkel ansteuern?
Nein. Der FS90R weiß nicht, wo seine Welle steht, und kann daher keinen bestimmten Winkel anfahren und halten. Zeitgesteuertes Drehen liefert nur ein ungefähres Ergebnis, das mit Spannung und Last schwankt. Brauchst du einen Winkel, nimm einen normalen Servo, einen Schrittmotor oder einen Motor mit Encoder.
Mit welcher Spannung läuft der FS90R?
Der FS90R arbeitet mit 4,8–6 V; in Arduino-Projekten wird er meist mit 5 V versorgt. Die Signalleitung akzeptiert sowohl 5-V- als auch 3,3-V-Pegel, daher funktioniert er direkt an ESP32 und Raspberry Pi Pico, die Versorgung muss aber trotzdem 5 V sein.
Wie viele FS90R kann ich an einen Arduino anschließen?
Die Servo-Bibliothek unterstützt am Arduino Uno bis zu 12 Servos, die eigentliche Grenze ist aber der Strom. Jeder FS90R zieht unter Last einige Hundert Milliampere und blockiert bis zu 800 mA, versorge mehr als zwei Servos daher immer aus einer externen 5-V-Quelle und verbinde die GND.
Kann man einen SG90 zum 360-Grad-Servo umbauen?
Ja, aber der Umbau ist dauerhaft. Du öffnest den Servo, entfernst den mechanischen Anschlag am Zahnrad und trennst das Potentiometer von der Welle, indem du es durch zwei gleiche Widerstände ersetzt oder in Mittelstellung fixierst. Danach arbeitet er wie ein FS90R, doch die Garantie ist weg und er kann nie wieder einen Winkel halten; ein fertiger FS90R ist meist weniger Aufwand.
Projekte, die du danach bauen kannst
Alle Projekte ansehen
Verwendung von Servomotoren
Der Arm eines kleinen Servomotors dreht sich nacheinander in drei Stellungen: ganz an den Anfang, genau in die Mitte und ganz ans Ende, mit jeweils zwei Sekunden Pause. Der Arduino sagt dem Motor, bei

Servomotorbetrieb mit Potentiometer
Während du am Knopf des Potentiometers drehst, dreht sich der Arm des Servomotors einfach mit: Das eine Ende des Knopfes bedeutet null Grad, das andere eine halbe Umdrehung. Der Arduino liest die Stel

ESP32-Servomotor (Steuerung über Potentiometer)
In diesem Projekt steuern wir einen SG90-Servomotor mit einem Potentiometer. Wir stellen den Servowinkel ein, indem wir den vom Potentiometer gelesenen Analogwert auf den Bereich von 0 bis 180 Grad abbilden. Die ESP32Servo-Bibliothek erzeugt Servosignale an geeigneten GPIO-Pins des ESP32, die als Ausgang verwendet werden können; in diesem Projekt wird GPIO 18 verwendet. Dies ist eine grundlegende Steuerungsmethode für Roboterarme, Kamera-Gimbals und automatische Türmechanismen.

Servo-Steuerung mit Joystick
Steuere zwei Motoren mit einem Joystick, genau wie beim Schwenken einer Überwachungskamera. Drückst du den Hebel nach links oder rechts, dreht sich der untere Servomotor langsam, nach oben oder unten,

360-Grad-Servo aus einem Schrittmotor bauen
Bring einem gewöhnlichen Schrittmotor bei, jeden gewünschten Winkel anzufahren, und zwar rund um den ganzen Kreis. Der Arduino berechnet, wie viele Schritte jeder Winkel braucht; der Motor fährt nache

Bluetooth-gesteuertes Auto mit L298N
Mach dein Handy zur Fernbedienung und steuere dein eigenes Roboterauto. Der Arduino empfängt über ein Bluetooth-Modul die Befehle einer Fernsteuer-App auf dem Handy und treibt die Räder über einen Mot

Roboter zur Hindernisvermeidung
Wie wäre es, ein intelligentes Fahrzeug zu bauen, das seinen Weg selbst findet? Der Obstacle Avoiding Robot scannt dank des Ultraschallsensors vor ihm ständig seine Umgebung. Wenn er auf ein Hindernis
Weitere Artikel
BlueGrays-App
Diese Schaltung Schritt für Schritt auf dem Handy nachbauen
Schaltplan, Code und Teileliste auf einem Bildschirm. Über 200 Arduino-, ESP32- und Pico-Projekte zum Nachbauen.
Mit dem Handy scannen
Richte die Kamera auf den Code, dann öffnet sich der App-Store deines Handys.
oder im Store öffnen

